gitextract_l0t6q8aw/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── github-actions.yml │ ├── pull-request-target.yml │ ├── pull-request.yml │ ├── scheduled.yml │ └── update-translations.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .python-version ├── .vscode/ │ ├── launch.json │ └── settings.json ├── Dockerfile ├── LICENSE ├── README.md ├── _typos.toml ├── codecov.yml ├── crowdin.yml ├── locale/ │ ├── af_ZA/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── am_ET/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ar_SA/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ca_ES/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── cs_CZ/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── da_DK/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── de_DE/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── el_GR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── en_GB/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── en_US/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── es_ES/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── fa_IR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── fi_FI/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── fr_FR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── he_IL/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── hi_IN/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── hu_HU/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── id_ID/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── it_IT/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ja_JP/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ko_KR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ky_KG/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ms_MY/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── nl_NL/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── no_NO/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── om_ET/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── pl_PL/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── pt_BR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── pt_PT/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ro_RO/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ru_RU/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── si_LK/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── sr_SP/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── sv_SE/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── ta_IN/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── tr_TR/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── uk_UA/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── uz_UZ/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── vi_VN/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── zh_CN/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ ├── zh_HK/ │ │ └── LC_MESSAGES/ │ │ └── pdf_bot.po │ └── zh_TW/ │ └── LC_MESSAGES/ │ └── pdf_bot.po ├── pdf_bot/ │ ├── __init__.py │ ├── __main__.py │ ├── account/ │ │ ├── __init__.py │ │ ├── account_repository.py │ │ └── account_service.py │ ├── analytics/ │ │ ├── __init__.py │ │ ├── analytics_repository.py │ │ ├── analytics_service.py │ │ └── models.py │ ├── cli/ │ │ ├── __init__.py │ │ ├── cli_service.py │ │ └── exceptions.py │ ├── command/ │ │ ├── __init__.py │ │ ├── command_handler.py │ │ └── command_service.py │ ├── compare/ │ │ ├── __init__.py │ │ ├── compare_handler.py │ │ └── compare_service.py │ ├── consts.py │ ├── containers.py │ ├── datastore/ │ │ ├── __init__.py │ │ └── datastore_client.py │ ├── error/ │ │ ├── __init__.py │ │ ├── error_callback_query_handler.py │ │ ├── error_handler.py │ │ └── error_service.py │ ├── errors.py │ ├── feedback/ │ │ ├── __init__.py │ │ ├── feedback_handler.py │ │ ├── feedback_repository.py │ │ └── feedback_service.py │ ├── file/ │ │ ├── __init__.py │ │ ├── file_handler.py │ │ └── file_service.py │ ├── file_processor/ │ │ ├── __init__.py │ │ ├── abstract_file_processor.py │ │ ├── abstract_file_task_processor.py │ │ ├── errors.py │ │ └── file_task_mixin.py │ ├── image/ │ │ ├── __init__.py │ │ └── image_service.py │ ├── image_handler/ │ │ ├── __init__.py │ │ ├── batch_image_handler.py │ │ └── batch_image_service.py │ ├── image_processor/ │ │ ├── __init__.py │ │ ├── abstract_image_processor.py │ │ ├── beautify_image_processor.py │ │ ├── image_task_processor.py │ │ └── image_to_pdf_processor.py │ ├── io_internal/ │ │ ├── __init__.py │ │ └── io_service.py │ ├── language/ │ │ ├── __init__.py │ │ ├── language_handler.py │ │ ├── language_repository.py │ │ ├── language_service.py │ │ └── models.py │ ├── log/ │ │ ├── __init__.py │ │ └── log_handler.py │ ├── merge/ │ │ ├── __init__.py │ │ ├── merge_handler.py │ │ └── merge_service.py │ ├── models.py │ ├── payment/ │ │ ├── __init__.py │ │ ├── models.py │ │ ├── payment_handler.py │ │ └── payment_service.py │ ├── pdf/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ ├── models.py │ │ └── pdf_service.py │ ├── pdf_processor/ │ │ ├── __init__.py │ │ ├── abstract_pdf_processor.py │ │ ├── abstract_pdf_select_and_text_processor.py │ │ ├── abstract_pdf_text_input_processor.py │ │ ├── compress_pdf_processor.py │ │ ├── crop_pdf_processor.py │ │ ├── decrypt_pdf_processor.py │ │ ├── encrypt_pdf_processor.py │ │ ├── extract_pdf_image_processor.py │ │ ├── extract_pdf_text_processor.py │ │ ├── grayscale_pdf_processor.py │ │ ├── ocr_pdf_processor.py │ │ ├── pdf_task_processor.py │ │ ├── pdf_to_image_processor.py │ │ ├── preview_pdf_processor.py │ │ ├── rename_pdf_processor.py │ │ ├── rotate_pdf_processor.py │ │ ├── scale_pdf_processor.py │ │ └── split_pdf_processor.py │ ├── settings.py │ ├── telegram_handler/ │ │ ├── __init__.py │ │ └── abstract_telegram_handler.py │ ├── telegram_internal/ │ │ ├── __init__.py │ │ ├── exceptions.py │ │ └── telegram_service.py │ ├── text/ │ │ ├── __init__.py │ │ ├── text_handler.py │ │ ├── text_repository.py │ │ └── text_service.py │ ├── watermark/ │ │ ├── __init__.py │ │ ├── watermark_handler.py │ │ └── watermark_service.py │ └── webpage/ │ ├── __init__.py │ ├── webpage_handler.py │ └── webpage_service.py ├── pyproject.toml ├── renovate.json └── tests/ ├── __init__.py ├── account/ │ ├── __init__.py │ ├── test_account_repository.py │ └── test_account_service.py ├── analytics/ │ ├── __init__.py │ ├── test_analytics_repository.py │ └── test_analytics_service.py ├── cli/ │ ├── __init__.py │ └── test_cli_service.py ├── command/ │ ├── __init__.py │ ├── test_command_handler.py │ └── test_command_service.py ├── compare/ │ ├── __init__.py │ ├── test_compare_handler.py │ └── test_compare_service.py ├── conftest.py ├── datastore/ │ ├── __init__.py │ └── test_datastore_client.py ├── error/ │ ├── __init__.py │ ├── test_error_callback_query_handler.py │ ├── test_error_handler.py │ └── test_error_service.py ├── feedback/ │ ├── __init__.py │ ├── test_feedback_handler.py │ ├── test_feedback_repository.py │ └── test_feedback_service.py ├── file/ │ ├── __init__.py │ ├── test_file_handler.py │ └── test_file_service.py ├── file_processor/ │ ├── __init__.py │ ├── test_abstract_file_processor.py │ ├── test_abstract_file_task_processor.py │ └── test_file_task_mixin.py ├── image/ │ ├── __init__.py │ └── test_image_service.py ├── image_handler/ │ ├── __init__.py │ ├── test_batch_image_handler.py │ └── test_batch_image_service.py ├── image_processor/ │ ├── __init__.py │ ├── test_abstract_image_processor.py │ ├── test_beautify_image_processor.py │ ├── test_image_task_processor.py │ └── test_image_to_pdf_processor.py ├── io_internal/ │ ├── __init__.py │ └── test_io_service.py ├── language/ │ ├── __init__.py │ ├── language_service_test_mixin.py │ ├── test_language_handler.py │ ├── test_language_repository.py │ └── test_language_service.py ├── merge/ │ ├── __init__.py │ ├── test_merge_handler.py │ └── test_merge_service.py ├── path_test_mixin.py ├── payment/ │ ├── __init__.py │ ├── test_payment_handler.py │ └── test_payment_service.py ├── pdf/ │ ├── __init__.py │ ├── test_compress_result.py │ └── test_pdf_service.py ├── pdf_processor/ │ ├── __init__.py │ ├── test_abstract_pdf_processor.py │ ├── test_abstract_pdf_select_and_text_processor.py │ ├── test_abstract_pdf_text_input_processor.py │ ├── test_compress_pdf_processor.py │ ├── test_crop_pdf_processor.py │ ├── test_decrypt_pdf_processor.py │ ├── test_encrypt_pdf_processor.py │ ├── test_extract_pdf_image_processor.py │ ├── test_extract_pdf_text_processor.py │ ├── test_grayscale_pdf_processor.py │ ├── test_ocr_pdf_processor.py │ ├── test_pdf_task_processor.py │ ├── test_pdf_to_image_processor.py │ ├── test_preview_pdf_processor.py │ ├── test_rename_pdf_processor.py │ ├── test_rotate_pdf_processor.py │ ├── test_scale_pdf_processor.py │ └── test_split_pdf_processor.py ├── telegram_internal/ │ ├── __init__.py │ ├── telegram_service_test_mixin.py │ ├── telegram_test_mixin.py │ └── test_telegram_service.py ├── test_containers.py ├── test_models.py ├── text/ │ ├── __init__.py │ ├── test_text_handler.py │ ├── test_text_repository.py │ └── test_text_service.py ├── watermark/ │ ├── __init__.py │ ├── test_watermark_handler.py │ └── test_watermark_service.py └── webpage/ ├── __init__.py ├── test_webpage_handler.py └── test_webpage_service.py