diff --git a/.gitignore b/.gitignore index e7f60d8..21ffadd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,62 +1,22 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions +# Go build artifacts +bin/ +*.exe +*.exe~ +*.dll *.so +*.dylib +*.test +*.out -# Distribution / packaging -.Python -env/ -build/ -develop-eggs/ -dist/ -eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg -.eggs/ - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt +# Go workspace and coverage +vendor/ +coverage.out -# Pycharm project files +# IDE/editor .idea/ - -# PyTest cache -.pytest_cache/ - -# Coverage -.coverage -coverage.xml - -# Tox -.tox/ -.cache/ -.python-version - -# VirtualEnv -.venv/ - -# Developers +.vscode/ *.sw* .DS_Store -# example database -drf_example - -db.sqlite3 -static/ -media/* - -celerybeat-schedule - -credentials/*.json - -.env \ No newline at end of file +# Environment +.env diff --git a/README.md b/README.md index 6cf63bc..fc1eb02 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,50 @@ -# Brscans Backend - -O **Brscans Backend** é uma aplicação baseada em **Django** que realiza o scraping de sites de mangás, clonando o conteúdo e integrando com o **Brscans Translator** para traduzir os balões de fala. Toda a estrutura é otimizada para escalabilidade, utilizando **AWS S3** para armazenamento, **AWS Lambda** para execução serverless e **Zappa** para implantação. - -## Funcionalidades - -- **Scraper de sites de mangá**: Coleta imagens e dados dos capítulos. -- **Clonagem de sites**: Replica a estrutura do site original. -- **Integração com o Brscans Translator**: Envia imagens para tradução automatizada. -- **Armazenamento em S3**: Gerencia os arquivos de forma escalável. -- **Execução Serverless**: Utiliza AWS Lambda e Zappa para rodar de forma eficiente. - -## Tecnologias utilizadas - -- **Django** e **Django REST Framework** -- **BeautifulSoup** e **Scrapy** para scraping -- **AWS S3** para armazenamento de imagens -- **AWS Lambda** para execução assíncrona -- **Zappa** para deploy serverless - \ No newline at end of file +# Brscans Backend (Go) + +Reescrita completa do backend em **Go**, substituindo integralmente a implementação anterior em Django. + +## Stack + +- Go 1.24+ +- net/http (roteamento HTTP) +- Armazenamento em memória para entidades de domínio + +## Executar localmente + +```bash +go run ./cmd/server +``` + +Servidor padrão em `http://localhost:8080`. + +## Endpoints principais + +- `GET /healthz` +- CRUD: + - `/manhwas` + - `/chapters` + - `/images` + - `/comments` + - `/notifications` +- Relacionamento: + - `GET /manhwas/{id}/chapters` +- Wrapper: + - `GET /wrapper?url=...` +- Auth/Favoritos: + - `POST /auth/register` + - `POST /auth/login` + - `GET /auth/me` + - `POST /auth/discord` + - `POST /manhwas/{id}/favorite` + - `DELETE /manhwas/{id}/favorite` + - `GET /manhwas/{id}/is-favorite` + - `GET /favorites` +- Schema/docs placeholders: + - `GET /api/schema/` + - `GET /api/swagger/` + - `GET /api/redoc/` + +## Testes + +```bash +go test ./... +``` diff --git a/__init__.py b/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/__init__.py b/brscans/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/__pycache__/__init__.cpython-310.pyc b/brscans/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 3a569ca..0000000 Binary files a/brscans/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/brscans/__pycache__/__init__.cpython-38.pyc b/brscans/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 63350ea..0000000 Binary files a/brscans/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/__pycache__/settings.cpython-310.pyc b/brscans/__pycache__/settings.cpython-310.pyc deleted file mode 100644 index 4a1c8b3..0000000 Binary files a/brscans/__pycache__/settings.cpython-310.pyc and /dev/null differ diff --git a/brscans/__pycache__/settings.cpython-38.pyc b/brscans/__pycache__/settings.cpython-38.pyc deleted file mode 100644 index 2cda819..0000000 Binary files a/brscans/__pycache__/settings.cpython-38.pyc and /dev/null differ diff --git a/brscans/__pycache__/storage_backends.cpython-38.pyc b/brscans/__pycache__/storage_backends.cpython-38.pyc deleted file mode 100644 index 0c9c381..0000000 Binary files a/brscans/__pycache__/storage_backends.cpython-38.pyc and /dev/null differ diff --git a/brscans/__pycache__/urls.cpython-310.pyc b/brscans/__pycache__/urls.cpython-310.pyc deleted file mode 100644 index 32dacef..0000000 Binary files a/brscans/__pycache__/urls.cpython-310.pyc and /dev/null differ diff --git a/brscans/__pycache__/urls.cpython-38.pyc b/brscans/__pycache__/urls.cpython-38.pyc deleted file mode 100644 index f5aa67d..0000000 Binary files a/brscans/__pycache__/urls.cpython-38.pyc and /dev/null differ diff --git a/brscans/__pycache__/wsgi.cpython-310.pyc b/brscans/__pycache__/wsgi.cpython-310.pyc deleted file mode 100644 index e65ca6d..0000000 Binary files a/brscans/__pycache__/wsgi.cpython-310.pyc and /dev/null differ diff --git a/brscans/__pycache__/wsgi.cpython-38.pyc b/brscans/__pycache__/wsgi.cpython-38.pyc deleted file mode 100644 index 8b31318..0000000 Binary files a/brscans/__pycache__/wsgi.cpython-38.pyc and /dev/null differ diff --git a/brscans/asgi.py b/brscans/asgi.py deleted file mode 100644 index 01bfbad..0000000 --- a/brscans/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for brscans project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'brscans.settings') - -application = get_asgi_application() diff --git a/brscans/authentication/__init__.py b/brscans/authentication/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/authentication/apps.py b/brscans/authentication/apps.py deleted file mode 100644 index 778028b..0000000 --- a/brscans/authentication/apps.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.apps import AppConfig - - -class AuthenticationConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "brscans.authentication" - label = "authentication" diff --git a/brscans/authentication/migrations/0001_initial.py b/brscans/authentication/migrations/0001_initial.py deleted file mode 100644 index f8598e3..0000000 --- a/brscans/authentication/migrations/0001_initial.py +++ /dev/null @@ -1,85 +0,0 @@ -# Generated by Django 4.2.9 on 2026-03-01 00:57 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("manhwa", "0026_chapter_created_at"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.CreateModel( - name="UserProfile", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("avatar", models.URLField(blank=True, null=True)), - ("bio", models.TextField(blank=True, default="")), - ( - "discord_id", - models.CharField(blank=True, max_length=64, null=True, unique=True), - ), - ( - "discord_username", - models.CharField(blank=True, max_length=128, null=True), - ), - ("created_at", models.DateTimeField(auto_now_add=True)), - ( - "user", - models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - related_name="profile", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.CreateModel( - name="Favorite", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("created_at", models.DateTimeField(auto_now_add=True)), - ( - "manhwa", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="favorites", - to="manhwa.manhwa", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="favorites", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-created_at"], - "unique_together": {("user", "manhwa")}, - }, - ), - ] diff --git a/brscans/authentication/migrations/__init__.py b/brscans/authentication/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/authentication/models.py b/brscans/authentication/models.py deleted file mode 100644 index 7d70aa7..0000000 --- a/brscans/authentication/models.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.conf import settings -from django.db import models - - -class UserProfile(models.Model): - user = models.OneToOneField( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="profile", - ) - avatar = models.URLField(blank=True, null=True) - bio = models.TextField(blank=True, default="") - discord_id = models.CharField( - max_length=64, unique=True, null=True, blank=True - ) - discord_username = models.CharField(max_length=128, blank=True, null=True) - created_at = models.DateTimeField(auto_now_add=True) - - def __str__(self): - return self.user.username - - -class Favorite(models.Model): - user = models.ForeignKey( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="favorites", - ) - manhwa = models.ForeignKey( - "manhwa.Manhwa", on_delete=models.CASCADE, related_name="favorites" - ) - created_at = models.DateTimeField(auto_now_add=True) - - class Meta: - unique_together = ("user", "manhwa") - ordering = ["-created_at"] - - def __str__(self): - return f"{self.user.username} -> {self.manhwa.title}" diff --git a/brscans/authentication/serializers.py b/brscans/authentication/serializers.py deleted file mode 100644 index e5fa9f4..0000000 --- a/brscans/authentication/serializers.py +++ /dev/null @@ -1,55 +0,0 @@ -from django.contrib.auth.models import User -from rest_framework import serializers - -from brscans.authentication.models import Favorite, UserProfile - - -class UserProfileSerializer(serializers.ModelSerializer): - class Meta: - model = UserProfile - fields = ( - "avatar", - "bio", - "discord_id", - "discord_username", - "created_at", - ) - read_only_fields = ("discord_id", "discord_username", "created_at") - - -class UserSerializer(serializers.ModelSerializer): - profile = UserProfileSerializer(read_only=True) - - class Meta: - model = User - fields = ("id", "username", "email", "profile") - read_only_fields = ("id",) - - -class RegisterSerializer(serializers.Serializer): - username = serializers.CharField(max_length=150) - password = serializers.CharField(min_length=6, write_only=True) - email = serializers.EmailField(required=False, allow_blank=True) - - def validate_username(self, value): - if User.objects.filter(username=value).exists(): - raise serializers.ValidationError( - "Esse nome de usuário já está em uso." - ) - return value - - -class LoginSerializer(serializers.Serializer): - username = serializers.CharField() - password = serializers.CharField() - - -class DiscordAuthSerializer(serializers.Serializer): - code = serializers.CharField() - - -class FavoriteSerializer(serializers.ModelSerializer): - class Meta: - model = Favorite - fields = ("id", "manhwa", "created_at") - read_only_fields = ("id", "created_at") diff --git a/brscans/authentication/urls.py b/brscans/authentication/urls.py deleted file mode 100644 index 81ae7b3..0000000 --- a/brscans/authentication/urls.py +++ /dev/null @@ -1,31 +0,0 @@ -from django.urls import path - -from brscans.authentication.views import ( - discord_auth_view, - favorite_view, - favorites_list_view, - is_favorited_view, - login_view, - me_view, - register_view, - unfavorite_view, -) - -urlpatterns = [ - path("auth/register/", register_view, name="register"), - path("auth/login/", login_view, name="login"), - path("auth/me/", me_view, name="me"), - path("auth/discord/", discord_auth_view, name="discord-auth"), - path("manhwas//favorite/", favorite_view, name="favorite"), - path( - "manhwas//unfavorite/", - unfavorite_view, - name="unfavorite", - ), - path( - "manhwas//is-favorited/", - is_favorited_view, - name="is-favorited", - ), - path("favorites/", favorites_list_view, name="favorites-list"), -] diff --git a/brscans/authentication/views.py b/brscans/authentication/views.py deleted file mode 100644 index 988f5c1..0000000 --- a/brscans/authentication/views.py +++ /dev/null @@ -1,210 +0,0 @@ -import os - -import requests -from django.contrib.auth import authenticate -from django.contrib.auth.models import User -from rest_framework import status -from rest_framework.authtoken.models import Token -from rest_framework.decorators import api_view, permission_classes -from rest_framework.permissions import AllowAny, IsAuthenticated -from rest_framework.response import Response - -from brscans.authentication.models import Favorite, UserProfile -from brscans.authentication.serializers import ( - DiscordAuthSerializer, - LoginSerializer, - RegisterSerializer, - UserSerializer, -) -from brscans.manhwa.serializers import ManhwaSerializer - -DISCORD_API_URL = "https://discord.com/api/v10" - - -@api_view(["POST"]) -@permission_classes([AllowAny]) -def register_view(request): - serializer = RegisterSerializer(data=request.data) - serializer.is_valid(raise_exception=True) - - user = User.objects.create_user( - username=serializer.validated_data["username"], - password=serializer.validated_data["password"], - email=serializer.validated_data.get("email", ""), - ) - UserProfile.objects.create(user=user) - token, _ = Token.objects.get_or_create(user=user) - - return Response( - {"token": token.key, "user": UserSerializer(user).data}, - status=status.HTTP_201_CREATED, - ) - - -@api_view(["POST"]) -@permission_classes([AllowAny]) -def login_view(request): - serializer = LoginSerializer(data=request.data) - serializer.is_valid(raise_exception=True) - - user = authenticate( - username=serializer.validated_data["username"], - password=serializer.validated_data["password"], - ) - - if user is None: - return Response( - {"error": "Credenciais inválidas."}, - status=status.HTTP_401_UNAUTHORIZED, - ) - - token, _ = Token.objects.get_or_create(user=user) - return Response({"token": token.key, "user": UserSerializer(user).data}) - - -@api_view(["GET"]) -@permission_classes([IsAuthenticated]) -def me_view(request): - return Response(UserSerializer(request.user).data) - - -@api_view(["POST"]) -@permission_classes([AllowAny]) -def discord_auth_view(request): - serializer = DiscordAuthSerializer(data=request.data) - serializer.is_valid(raise_exception=True) - - code = serializer.validated_data["code"] - redirect_uri = request.data.get( - "redirect_uri", os.environ.get("DISCORD_REDIRECT_URI", "") - ) - - # Exchange code for access token - token_response = requests.post( - f"{DISCORD_API_URL}/oauth2/token", - data={ - "client_id": os.environ.get("DISCORD_CLIENT_ID"), - "client_secret": os.environ.get("DISCORD_CLIENT_SECRET"), - "grant_type": "authorization_code", - "code": code, - "redirect_uri": redirect_uri, - }, - headers={"Content-Type": "application/x-www-form-urlencoded"}, - ) - - if token_response.status_code != 200: - return Response( - {"error": "Falha ao autenticar com Discord."}, - status=status.HTTP_400_BAD_REQUEST, - ) - - access_token = token_response.json().get("access_token") - - # Fetch Discord user info - user_response = requests.get( - f"{DISCORD_API_URL}/users/@me", - headers={"Authorization": f"Bearer {access_token}"}, - ) - - if user_response.status_code != 200: - return Response( - {"error": "Falha ao buscar dados do Discord."}, - status=status.HTTP_400_BAD_REQUEST, - ) - - discord_data = user_response.json() - discord_id = discord_data["id"] - discord_username = discord_data.get("username", "") - avatar_hash = discord_data.get("avatar") - avatar_url = ( - f"https://cdn.discordapp.com/avatars/{discord_id}/{avatar_hash}.png" - if avatar_hash - else None - ) - - # Find or create user - try: - profile = UserProfile.objects.get(discord_id=discord_id) - user = profile.user - # Update discord info - profile.discord_username = discord_username - if avatar_url: - profile.avatar = avatar_url - profile.save() - except UserProfile.DoesNotExist: - # Create new user with discord username - username = f"discord_{discord_id}" - user = User.objects.create_user(username=username) - UserProfile.objects.create( - user=user, - discord_id=discord_id, - discord_username=discord_username, - avatar=avatar_url, - ) - - token, _ = Token.objects.get_or_create(user=user) - return Response({"token": token.key, "user": UserSerializer(user).data}) - - -# ─── Favorites ──────────────────────────────────────────────── - - -@api_view(["POST"]) -@permission_classes([IsAuthenticated]) -def favorite_view(request, manhwa_id): - from brscans.manhwa.models import Manhwa - - try: - manhwa = Manhwa.objects.get(id=manhwa_id) - except Manhwa.DoesNotExist: - return Response( - {"error": "Mangá não encontrado."}, status=status.HTTP_404_NOT_FOUND - ) - - _, created = Favorite.objects.get_or_create( - user=request.user, manhwa=manhwa - ) - if not created: - return Response( - {"message": "Já favoritado."}, status=status.HTTP_200_OK - ) - - return Response({"message": "Favoritado!"}, status=status.HTTP_201_CREATED) - - -@api_view(["DELETE"]) -@permission_classes([IsAuthenticated]) -def unfavorite_view(request, manhwa_id): - deleted, _ = Favorite.objects.filter( - user=request.user, manhwa_id=manhwa_id - ).delete() - - if not deleted: - return Response( - {"error": "Não estava favoritado."}, - status=status.HTTP_404_NOT_FOUND, - ) - - return Response(status=status.HTTP_204_NO_CONTENT) - - -@api_view(["GET"]) -@permission_classes([IsAuthenticated]) -def favorites_list_view(request): - favorites = Favorite.objects.filter(user=request.user).select_related( - "manhwa__thumbnail" - ) - manhwas = [f.manhwa for f in favorites] - return Response(ManhwaSerializer(manhwas, many=True).data) - - -@api_view(["GET"]) -@permission_classes([AllowAny]) -def is_favorited_view(request, manhwa_id): - if not request.user.is_authenticated: - return Response({"is_favorited": False}) - - is_fav = Favorite.objects.filter( - user=request.user, manhwa_id=manhwa_id - ).exists() - return Response({"is_favorited": is_fav}) diff --git a/brscans/manhwa/__init__.py b/brscans/manhwa/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/__pycache__/__init__.cpython-310.pyc b/brscans/manhwa/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 5ee485d..0000000 Binary files a/brscans/manhwa/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/__init__.cpython-38.pyc b/brscans/manhwa/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 8d0b3eb..0000000 Binary files a/brscans/manhwa/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/admin.cpython-310.pyc b/brscans/manhwa/__pycache__/admin.cpython-310.pyc deleted file mode 100644 index 9ce03e9..0000000 Binary files a/brscans/manhwa/__pycache__/admin.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/admin.cpython-38.pyc b/brscans/manhwa/__pycache__/admin.cpython-38.pyc deleted file mode 100644 index 025a128..0000000 Binary files a/brscans/manhwa/__pycache__/admin.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/apps.cpython-310.pyc b/brscans/manhwa/__pycache__/apps.cpython-310.pyc deleted file mode 100644 index ffe608f..0000000 Binary files a/brscans/manhwa/__pycache__/apps.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/apps.cpython-38.pyc b/brscans/manhwa/__pycache__/apps.cpython-38.pyc deleted file mode 100644 index 236f3fe..0000000 Binary files a/brscans/manhwa/__pycache__/apps.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/models.cpython-310.pyc b/brscans/manhwa/__pycache__/models.cpython-310.pyc deleted file mode 100644 index 6b40ac1..0000000 Binary files a/brscans/manhwa/__pycache__/models.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/models.cpython-38.pyc b/brscans/manhwa/__pycache__/models.cpython-38.pyc deleted file mode 100644 index 5dd8f32..0000000 Binary files a/brscans/manhwa/__pycache__/models.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/serializers.cpython-310.pyc b/brscans/manhwa/__pycache__/serializers.cpython-310.pyc deleted file mode 100644 index 6b77ade..0000000 Binary files a/brscans/manhwa/__pycache__/serializers.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/serializers.cpython-38.pyc b/brscans/manhwa/__pycache__/serializers.cpython-38.pyc deleted file mode 100644 index 1579ba1..0000000 Binary files a/brscans/manhwa/__pycache__/serializers.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/views.cpython-310.pyc b/brscans/manhwa/__pycache__/views.cpython-310.pyc deleted file mode 100644 index 6ca2ec4..0000000 Binary files a/brscans/manhwa/__pycache__/views.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/__pycache__/views.cpython-38.pyc b/brscans/manhwa/__pycache__/views.cpython-38.pyc deleted file mode 100644 index 21a6901..0000000 Binary files a/brscans/manhwa/__pycache__/views.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/admin.py b/brscans/manhwa/admin.py deleted file mode 100644 index 6366044..0000000 --- a/brscans/manhwa/admin.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.contrib import admin - -from brscans.manhwa.models import Chapter, ImageVariants, Manhwa - -admin.site.register(Manhwa) -admin.site.register(Chapter) -admin.site.register(ImageVariants) - -# # 2790 49716 diff --git a/brscans/manhwa/apps.py b/brscans/manhwa/apps.py deleted file mode 100644 index 1e7acd7..0000000 --- a/brscans/manhwa/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class manhwaConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "brscans.manhwa" diff --git a/brscans/manhwa/management/__init__.py b/brscans/manhwa/management/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/management/commands/__init__.py b/brscans/manhwa/management/commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/management/commands/cap_19.py b/brscans/manhwa/management/commands/cap_19.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/management/commands/data.json b/brscans/manhwa/management/commands/data.json deleted file mode 100644 index f36c2b9..0000000 --- a/brscans/manhwa/management/commands/data.json +++ /dev/null @@ -1,54566 +0,0 @@ -[ - { - "blk_list": [ - { - "text_bbox": [ - 168, - 284, - 393, - 345 - ], - "bubble_bbox": [ - 115, - 192, - 458, - 432 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 265, - 298, - 277, - 307 - ], - [ - 181, - 322, - 192, - 331 - ], - [ - 233, - 322, - 246, - 333 - ], - [ - 208, - 294, - 226, - 312 - ], - [ - 221, - 293, - 241, - 313 - ], - [ - 237, - 294, - 255, - 312 - ], - [ - 262, - 294, - 280, - 312 - ], - [ - 277, - 293, - 324, - 312 - ], - [ - 319, - 293, - 340, - 312 - ], - [ - 338, - 294, - 356, - 312 - ], - [ - 177, - 318, - 195, - 336 - ], - [ - 193, - 318, - 212, - 336 - ], - [ - 209, - 317, - 231, - 336 - ], - [ - 230, - 318, - 250, - 337 - ], - [ - 248, - 317, - 269, - 336 - ], - [ - 265, - 317, - 284, - 336 - ], - [ - 279, - 318, - 297, - 336 - ], - [ - 304, - 318, - 323, - 336 - ], - [ - 319, - 317, - 340, - 336 - ], - [ - 336, - 317, - 386, - 336 - ], - [ - 367, - 332, - 373, - 337 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 359, - 473, - 567, - 570 - ], - "bubble_bbox": [ - 298, - 392, - 645, - 634 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 406, - 493, - 424, - 508 - ], - [ - 432, - 494, - 454, - 511 - ], - [ - 456, - 485, - 490, - 517 - ], - [ - 489, - 485, - 501, - 500 - ], - [ - 400, - 487, - 430, - 516 - ], - [ - 427, - 487, - 459, - 518 - ], - [ - 499, - 487, - 529, - 517 - ], - [ - 535, - 524, - 554, - 547 - ], - [ - 374, - 526, - 403, - 556 - ], - [ - 395, - 526, - 425, - 555 - ], - [ - 420, - 526, - 458, - 557 - ], - [ - 472, - 525, - 508, - 556 - ], - [ - 506, - 526, - 535, - 555 - ], - [ - 530, - 549, - 538, - 556 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 178, - 1956, - 487, - 2107 - ], - "bubble_bbox": [ - 118, - 1831, - 542, - 2242 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 382, - 1981, - 403, - 2000 - ], - [ - 365, - 1983, - 372, - 1991 - ], - [ - 309, - 2022, - 328, - 2034 - ], - [ - 223, - 2023, - 249, - 2042 - ], - [ - 333, - 2023, - 353, - 2041 - ], - [ - 288, - 2025, - 295, - 2034 - ], - [ - 404, - 2025, - 411, - 2034 - ], - [ - 454, - 2025, - 462, - 2034 - ], - [ - 321, - 2065, - 346, - 2083 - ], - [ - 415, - 1974, - 443, - 2005 - ], - [ - 194, - 1976, - 208, - 2005 - ], - [ - 205, - 1976, - 233, - 2005 - ], - [ - 244, - 1975, - 273, - 2007 - ], - [ - 266, - 1975, - 296, - 2005 - ], - [ - 306, - 1975, - 335, - 2007 - ], - [ - 327, - 1975, - 357, - 2005 - ], - [ - 351, - 1975, - 378, - 2005 - ], - [ - 377, - 1976, - 408, - 2006 - ], - [ - 405, - 1976, - 419, - 2005 - ], - [ - 439, - 1975, - 470, - 2005 - ], - [ - 201, - 2017, - 230, - 2048 - ], - [ - 218, - 2018, - 254, - 2047 - ], - [ - 256, - 2017, - 288, - 2048 - ], - [ - 276, - 2017, - 300, - 2047 - ], - [ - 300, - 2017, - 333, - 2049 - ], - [ - 327, - 2018, - 359, - 2048 - ], - [ - 370, - 2018, - 398, - 2047 - ], - [ - 392, - 2017, - 417, - 2047 - ], - [ - 415, - 2017, - 449, - 2047 - ], - [ - 443, - 2017, - 467, - 2047 - ], - [ - 376, - 2058, - 399, - 2081 - ], - [ - 395, - 2057, - 412, - 2079 - ], - [ - 260, - 2059, - 293, - 2088 - ], - [ - 289, - 2059, - 319, - 2089 - ], - [ - 317, - 2059, - 350, - 2088 - ], - [ - 347, - 2059, - 376, - 2089 - ], - [ - 389, - 2082, - 397, - 2089 - ], - [ - 372, - 2083, - 381, - 2090 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 217, - 3783, - 491, - 3858 - ], - "bubble_bbox": [ - 175, - 3677, - 530, - 3961 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 261, - 3802, - 270, - 3809 - ], - [ - 420, - 3802, - 435, - 3814 - ], - [ - 256, - 3828, - 271, - 3840 - ], - [ - 286, - 3828, - 295, - 3833 - ], - [ - 348, - 3828, - 357, - 3835 - ], - [ - 364, - 3828, - 372, - 3836 - ], - [ - 378, - 3828, - 392, - 3840 - ], - [ - 400, - 3828, - 409, - 3833 - ], - [ - 328, - 3830, - 331, - 3836 - ], - [ - 286, - 3835, - 296, - 3840 - ], - [ - 400, - 3835, - 409, - 3841 - ], - [ - 290, - 3797, - 298, - 3811 - ], - [ - 228, - 3798, - 239, - 3819 - ], - [ - 240, - 3798, - 257, - 3818 - ], - [ - 259, - 3799, - 273, - 3818 - ], - [ - 274, - 3798, - 287, - 3818 - ], - [ - 306, - 3799, - 322, - 3818 - ], - [ - 323, - 3798, - 335, - 3818 - ], - [ - 337, - 3799, - 341, - 3818 - ], - [ - 342, - 3799, - 358, - 3818 - ], - [ - 368, - 3799, - 371, - 3818 - ], - [ - 373, - 3799, - 389, - 3818 - ], - [ - 398, - 3799, - 417, - 3817 - ], - [ - 418, - 3799, - 438, - 3818 - ], - [ - 446, - 3798, - 458, - 3817 - ], - [ - 459, - 3799, - 477, - 3817 - ], - [ - 440, - 3800, - 443, - 3818 - ], - [ - 288, - 3813, - 293, - 3817 - ], - [ - 240, - 3825, - 256, - 3844 - ], - [ - 253, - 3825, - 274, - 3844 - ], - [ - 283, - 3825, - 299, - 3844 - ], - [ - 300, - 3825, - 315, - 3844 - ], - [ - 323, - 3824, - 336, - 3844 - ], - [ - 345, - 3825, - 360, - 3844 - ], - [ - 361, - 3825, - 375, - 3844 - ], - [ - 375, - 3825, - 395, - 3844 - ], - [ - 397, - 3825, - 412, - 3844 - ], - [ - 414, - 3825, - 424, - 3843 - ], - [ - 426, - 3825, - 440, - 3844 - ], - [ - 441, - 3824, - 457, - 3844 - ], - [ - 459, - 3839, - 463, - 3843 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 109, - 4308, - 295, - 4363 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 148, - 4339, - 152, - 4344 - ], - [ - 156, - 4338, - 161, - 4343 - ], - [ - 263, - 4345, - 281, - 4352 - ], - [ - 176, - 4310, - 202, - 4314 - ], - [ - 216, - 4310, - 226, - 4312 - ], - [ - 243, - 4311, - 256, - 4312 - ], - [ - 122, - 4312, - 132, - 4316 - ], - [ - 147, - 4312, - 168, - 4315 - ], - [ - 215, - 4315, - 234, - 4320 - ], - [ - 237, - 4315, - 262, - 4320 - ], - [ - 115, - 4317, - 175, - 4356 - ], - [ - 264, - 4317, - 273, - 4323 - ], - [ - 184, - 4318, - 225, - 4355 - ], - [ - 237, - 4323, - 287, - 4355 - ], - [ - 136, - 4325, - 143, - 4330 - ], - [ - 168, - 4325, - 183, - 4328 - ], - [ - 121, - 4327, - 128, - 4332 - ], - [ - 230, - 4326, - 237, - 4329 - ], - [ - 257, - 4328, - 290, - 4356 - ], - [ - 229, - 4331, - 238, - 4335 - ], - [ - 176, - 4333, - 182, - 4337 - ], - [ - 192, - 4335, - 214, - 4346 - ], - [ - 240, - 4334, - 248, - 4337 - ], - [ - 228, - 4338, - 240, - 4342 - ], - [ - 230, - 4346, - 238, - 4349 - ], - [ - 115, - 4351, - 125, - 4356 - ], - [ - 188, - 4353, - 212, - 4357 - ], - [ - 135, - 4354, - 142, - 4357 - ], - [ - 140, - 4358, - 146, - 4362 - ], - [ - 212, - 4359, - 257, - 4362 - ], - [ - 260, - 4359, - 266, - 4361 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/12a24c26286046ba8e0d238e09ac1440.jpeg", - "context_path": "contexts/183/context.json", - "id": 86408 - }, - { - "blk_list": [ - { - "text_bbox": [ - 232, - 133, - 396, - 203 - ], - "bubble_bbox": [ - 167, - 66, - 459, - 261 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 309, - 156, - 332, - 183 - ], - [ - 348, - 158, - 359, - 172 - ], - [ - 370, - 141, - 388, - 178 - ], - [ - 336, - 143, - 366, - 194 - ], - [ - 240, - 144, - 279, - 193 - ], - [ - 275, - 144, - 309, - 194 - ], - [ - 304, - 145, - 338, - 194 - ], - [ - 365, - 181, - 374, - 193 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 270, - 424, - 536, - 543 - ], - "bubble_bbox": [ - 214, - 260, - 590, - 716 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 346, - 448, - 354, - 455 - ], - [ - 440, - 447, - 457, - 460 - ], - [ - 334, - 476, - 346, - 482 - ], - [ - 472, - 476, - 484, - 482 - ], - [ - 451, - 479, - 459, - 485 - ], - [ - 330, - 484, - 342, - 490 - ], - [ - 468, - 484, - 480, - 490 - ], - [ - 357, - 507, - 368, - 514 - ], - [ - 336, - 440, - 359, - 465 - ], - [ - 362, - 439, - 391, - 465 - ], - [ - 385, - 440, - 408, - 465 - ], - [ - 416, - 440, - 439, - 465 - ], - [ - 459, - 440, - 487, - 465 - ], - [ - 301, - 441, - 324, - 465 - ], - [ - 317, - 441, - 343, - 465 - ], - [ - 436, - 441, - 461, - 465 - ], - [ - 485, - 441, - 509, - 464 - ], - [ - 303, - 471, - 329, - 495 - ], - [ - 326, - 472, - 351, - 495 - ], - [ - 348, - 472, - 371, - 495 - ], - [ - 368, - 472, - 383, - 496 - ], - [ - 383, - 471, - 407, - 495 - ], - [ - 402, - 472, - 425, - 495 - ], - [ - 426, - 471, - 447, - 496 - ], - [ - 441, - 471, - 464, - 496 - ], - [ - 463, - 472, - 488, - 495 - ], - [ - 484, - 472, - 499, - 496 - ], - [ - 500, - 472, - 523, - 495 - ], - [ - 282, - 473, - 307, - 495 - ], - [ - 309, - 502, - 332, - 527 - ], - [ - 392, - 502, - 418, - 526 - ], - [ - 415, - 502, - 440, - 526 - ], - [ - 458, - 502, - 484, - 527 - ], - [ - 482, - 501, - 496, - 519 - ], - [ - 333, - 503, - 356, - 526 - ], - [ - 350, - 503, - 373, - 527 - ], - [ - 371, - 503, - 394, - 526 - ], - [ - 442, - 503, - 465, - 526 - ], - [ - 477, - 521, - 484, - 527 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 78, - 1790, - 415, - 1919 - ], - "bubble_bbox": [ - 40, - 1701, - 453, - 2014 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 198, - 1808, - 207, - 1816 - ], - [ - 275, - 1810, - 279, - 1815 - ], - [ - 145, - 1834, - 154, - 1842 - ], - [ - 261, - 1835, - 276, - 1847 - ], - [ - 293, - 1834, - 302, - 1842 - ], - [ - 377, - 1837, - 381, - 1842 - ], - [ - 113, - 1861, - 128, - 1873 - ], - [ - 247, - 1861, - 256, - 1873 - ], - [ - 336, - 1861, - 346, - 1868 - ], - [ - 386, - 1861, - 401, - 1873 - ], - [ - 178, - 1863, - 182, - 1869 - ], - [ - 220, - 1863, - 223, - 1869 - ], - [ - 272, - 1863, - 276, - 1869 - ], - [ - 309, - 1863, - 312, - 1869 - ], - [ - 352, - 1864, - 356, - 1869 - ], - [ - 142, - 1888, - 157, - 1900 - ], - [ - 194, - 1888, - 204, - 1895 - ], - [ - 293, - 1888, - 308, - 1900 - ], - [ - 316, - 1888, - 325, - 1895 - ], - [ - 345, - 1888, - 355, - 1900 - ], - [ - 140, - 1804, - 152, - 1825 - ], - [ - 154, - 1804, - 169, - 1824 - ], - [ - 177, - 1804, - 194, - 1824 - ], - [ - 195, - 1804, - 210, - 1824 - ], - [ - 211, - 1804, - 224, - 1824 - ], - [ - 226, - 1805, - 238, - 1824 - ], - [ - 235, - 1804, - 249, - 1824 - ], - [ - 258, - 1804, - 270, - 1825 - ], - [ - 271, - 1804, - 283, - 1824 - ], - [ - 284, - 1805, - 301, - 1824 - ], - [ - 310, - 1804, - 326, - 1824 - ], - [ - 327, - 1804, - 340, - 1824 - ], - [ - 342, - 1804, - 357, - 1824 - ], - [ - 106, - 1830, - 110, - 1839 - ], - [ - 127, - 1831, - 141, - 1850 - ], - [ - 142, - 1831, - 157, - 1851 - ], - [ - 158, - 1831, - 173, - 1850 - ], - [ - 175, - 1831, - 187, - 1850 - ], - [ - 188, - 1831, - 207, - 1850 - ], - [ - 205, - 1831, - 222, - 1851 - ], - [ - 223, - 1830, - 236, - 1851 - ], - [ - 245, - 1831, - 262, - 1851 - ], - [ - 259, - 1831, - 280, - 1850 - ], - [ - 290, - 1831, - 304, - 1851 - ], - [ - 306, - 1831, - 317, - 1850 - ], - [ - 318, - 1831, - 331, - 1851 - ], - [ - 349, - 1830, - 364, - 1850 - ], - [ - 372, - 1831, - 385, - 1850 - ], - [ - 101, - 1833, - 107, - 1842 - ], - [ - 111, - 1832, - 128, - 1850 - ], - [ - 332, - 1832, - 348, - 1850 - ], - [ - 92, - 1857, - 109, - 1877 - ], - [ - 133, - 1857, - 146, - 1877 - ], - [ - 148, - 1857, - 160, - 1877 - ], - [ - 173, - 1857, - 186, - 1877 - ], - [ - 194, - 1857, - 206, - 1877 - ], - [ - 215, - 1857, - 228, - 1877 - ], - [ - 230, - 1857, - 242, - 1877 - ], - [ - 268, - 1857, - 281, - 1877 - ], - [ - 282, - 1857, - 295, - 1877 - ], - [ - 304, - 1857, - 317, - 1877 - ], - [ - 318, - 1857, - 331, - 1877 - ], - [ - 348, - 1857, - 361, - 1877 - ], - [ - 111, - 1858, - 131, - 1877 - ], - [ - 161, - 1858, - 176, - 1877 - ], - [ - 188, - 1858, - 191, - 1877 - ], - [ - 244, - 1858, - 259, - 1877 - ], - [ - 333, - 1858, - 349, - 1878 - ], - [ - 369, - 1858, - 386, - 1877 - ], - [ - 383, - 1858, - 404, - 1877 - ], - [ - 365, - 1883, - 369, - 1892 - ], - [ - 368, - 1883, - 374, - 1893 - ], - [ - 123, - 1885, - 139, - 1904 - ], - [ - 140, - 1885, - 161, - 1904 - ], - [ - 162, - 1884, - 175, - 1904 - ], - [ - 175, - 1884, - 190, - 1904 - ], - [ - 191, - 1884, - 207, - 1905 - ], - [ - 216, - 1884, - 233, - 1904 - ], - [ - 234, - 1884, - 246, - 1904 - ], - [ - 248, - 1884, - 263, - 1904 - ], - [ - 273, - 1884, - 291, - 1904 - ], - [ - 290, - 1885, - 311, - 1904 - ], - [ - 312, - 1884, - 328, - 1905 - ], - [ - 330, - 1885, - 341, - 1903 - ], - [ - 342, - 1885, - 358, - 1904 - ], - [ - 359, - 1899, - 364, - 1904 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 107, - 2335, - 450, - 2448 - ], - "bubble_bbox": [ - 64, - 2233, - 489, - 2538 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 169, - 2357, - 179, - 2369 - ], - [ - 185, - 2357, - 200, - 2369 - ], - [ - 365, - 2359, - 369, - 2364 - ], - [ - 124, - 2384, - 133, - 2391 - ], - [ - 138, - 2384, - 153, - 2396 - ], - [ - 201, - 2384, - 211, - 2389 - ], - [ - 391, - 2384, - 401, - 2391 - ], - [ - 408, - 2386, - 412, - 2391 - ], - [ - 201, - 2391, - 212, - 2397 - ], - [ - 200, - 2411, - 210, - 2418 - ], - [ - 334, - 2411, - 349, - 2423 - ], - [ - 308, - 2413, - 312, - 2419 - ], - [ - 220, - 2351, - 224, - 2360 - ], - [ - 390, - 2351, - 395, - 2360 - ], - [ - 144, - 2353, - 156, - 2373 - ], - [ - 166, - 2353, - 182, - 2373 - ], - [ - 182, - 2353, - 203, - 2373 - ], - [ - 205, - 2352, - 218, - 2372 - ], - [ - 225, - 2353, - 242, - 2373 - ], - [ - 251, - 2353, - 268, - 2373 - ], - [ - 269, - 2352, - 282, - 2373 - ], - [ - 284, - 2353, - 287, - 2373 - ], - [ - 290, - 2352, - 302, - 2372 - ], - [ - 304, - 2352, - 319, - 2372 - ], - [ - 328, - 2353, - 345, - 2373 - ], - [ - 346, - 2352, - 359, - 2373 - ], - [ - 360, - 2352, - 374, - 2372 - ], - [ - 373, - 2353, - 389, - 2373 - ], - [ - 394, - 2353, - 412, - 2373 - ], - [ - 319, - 2379, - 334, - 2400 - ], - [ - 121, - 2380, - 136, - 2400 - ], - [ - 135, - 2380, - 156, - 2400 - ], - [ - 158, - 2381, - 174, - 2400 - ], - [ - 175, - 2380, - 192, - 2400 - ], - [ - 193, - 2381, - 197, - 2400 - ], - [ - 199, - 2381, - 215, - 2400 - ], - [ - 216, - 2380, - 227, - 2400 - ], - [ - 229, - 2380, - 244, - 2400 - ], - [ - 254, - 2380, - 272, - 2400 - ], - [ - 274, - 2381, - 277, - 2400 - ], - [ - 278, - 2380, - 295, - 2400 - ], - [ - 296, - 2380, - 309, - 2401 - ], - [ - 333, - 2380, - 347, - 2400 - ], - [ - 349, - 2381, - 365, - 2400 - ], - [ - 364, - 2380, - 379, - 2400 - ], - [ - 388, - 2380, - 405, - 2401 - ], - [ - 403, - 2380, - 416, - 2400 - ], - [ - 417, - 2380, - 436, - 2400 - ], - [ - 182, - 2407, - 213, - 2428 - ], - [ - 214, - 2407, - 230, - 2427 - ], - [ - 231, - 2407, - 244, - 2427 - ], - [ - 262, - 2407, - 280, - 2427 - ], - [ - 280, - 2407, - 294, - 2428 - ], - [ - 303, - 2407, - 316, - 2427 - ], - [ - 354, - 2407, - 367, - 2427 - ], - [ - 369, - 2407, - 384, - 2427 - ], - [ - 166, - 2408, - 183, - 2427 - ], - [ - 245, - 2408, - 264, - 2427 - ], - [ - 318, - 2408, - 330, - 2427 - ], - [ - 331, - 2408, - 352, - 2427 - ], - [ - 385, - 2422, - 389, - 2427 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 70, - 3146, - 230, - 3186 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 165, - 3155, - 173, - 3180 - ], - [ - 175, - 3155, - 183, - 3180 - ], - [ - 190, - 3155, - 197, - 3179 - ], - [ - 199, - 3155, - 207, - 3179 - ], - [ - 209, - 3155, - 220, - 3179 - ], - [ - 78, - 3157, - 87, - 3181 - ], - [ - 88, - 3156, - 96, - 3181 - ], - [ - 98, - 3156, - 106, - 3180 - ], - [ - 107, - 3156, - 115, - 3180 - ], - [ - 117, - 3156, - 124, - 3180 - ], - [ - 126, - 3156, - 134, - 3180 - ], - [ - 136, - 3156, - 143, - 3180 - ], - [ - 145, - 3156, - 153, - 3180 - ], - [ - 154, - 3156, - 163, - 3180 - ], - [ - 202, - 3158, - 204, - 3176 - ], - [ - 91, - 3160, - 93, - 3177 - ], - [ - 101, - 3160, - 103, - 3167 - ], - [ - 157, - 3162, - 160, - 3172 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 382, - 3319, - 619, - 3393 - ], - "bubble_bbox": [ - 336, - 3241, - 663, - 3471 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 466, - 3334, - 476, - 3340 - ], - [ - 502, - 3334, - 518, - 3347 - ], - [ - 453, - 3336, - 457, - 3342 - ], - [ - 466, - 3341, - 477, - 3348 - ], - [ - 449, - 3362, - 459, - 3369 - ], - [ - 465, - 3363, - 481, - 3375 - ], - [ - 531, - 3363, - 542, - 3368 - ], - [ - 531, - 3370, - 542, - 3376 - ], - [ - 416, - 3329, - 422, - 3338 - ], - [ - 393, - 3331, - 397, - 3351 - ], - [ - 398, - 3331, - 416, - 3351 - ], - [ - 421, - 3331, - 439, - 3351 - ], - [ - 448, - 3330, - 461, - 3351 - ], - [ - 463, - 3331, - 480, - 3351 - ], - [ - 481, - 3330, - 498, - 3351 - ], - [ - 499, - 3331, - 521, - 3351 - ], - [ - 536, - 3331, - 550, - 3351 - ], - [ - 551, - 3331, - 569, - 3351 - ], - [ - 570, - 3330, - 585, - 3351 - ], - [ - 597, - 3331, - 611, - 3351 - ], - [ - 523, - 3332, - 535, - 3351 - ], - [ - 587, - 3332, - 599, - 3351 - ], - [ - 422, - 3359, - 425, - 3379 - ], - [ - 427, - 3358, - 445, - 3379 - ], - [ - 446, - 3359, - 462, - 3379 - ], - [ - 463, - 3359, - 485, - 3379 - ], - [ - 486, - 3359, - 503, - 3379 - ], - [ - 504, - 3359, - 521, - 3379 - ], - [ - 523, - 3359, - 526, - 3379 - ], - [ - 547, - 3359, - 558, - 3379 - ], - [ - 560, - 3359, - 576, - 3379 - ], - [ - 529, - 3360, - 545, - 3380 - ], - [ - 577, - 3374, - 582, - 3379 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/ecb7e143c3c1406588a2f5f6036399eb.jpeg", - "context_path": "contexts/183/context.json", - "id": 86424 - }, - { - "blk_list": [ - { - "text_bbox": [ - 82, - 101, - 411, - 217 - ], - "bubble_bbox": [ - 19, - 13, - 480, - 296 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 181, - 123, - 192, - 137 - ], - [ - 226, - 123, - 244, - 137 - ], - [ - 149, - 125, - 154, - 132 - ], - [ - 307, - 125, - 312, - 132 - ], - [ - 155, - 154, - 167, - 163 - ], - [ - 205, - 155, - 217, - 169 - ], - [ - 232, - 155, - 244, - 169 - ], - [ - 276, - 155, - 293, - 168 - ], - [ - 140, - 157, - 145, - 164 - ], - [ - 210, - 186, - 228, - 201 - ], - [ - 144, - 119, - 159, - 142 - ], - [ - 161, - 118, - 175, - 141 - ], - [ - 178, - 119, - 196, - 142 - ], - [ - 207, - 119, - 221, - 143 - ], - [ - 223, - 119, - 247, - 142 - ], - [ - 249, - 118, - 271, - 142 - ], - [ - 282, - 119, - 301, - 142 - ], - [ - 302, - 119, - 317, - 141 - ], - [ - 319, - 118, - 333, - 141 - ], - [ - 336, - 119, - 351, - 142 - ], - [ - 102, - 151, - 117, - 174 - ], - [ - 118, - 150, - 134, - 174 - ], - [ - 135, - 150, - 150, - 173 - ], - [ - 151, - 151, - 170, - 174 - ], - [ - 171, - 151, - 190, - 173 - ], - [ - 202, - 151, - 220, - 174 - ], - [ - 223, - 151, - 226, - 173 - ], - [ - 229, - 151, - 247, - 174 - ], - [ - 259, - 150, - 275, - 174 - ], - [ - 273, - 150, - 296, - 172 - ], - [ - 297, - 151, - 313, - 173 - ], - [ - 325, - 151, - 342, - 173 - ], - [ - 343, - 150, - 358, - 174 - ], - [ - 359, - 151, - 377, - 173 - ], - [ - 378, - 150, - 393, - 173 - ], - [ - 191, - 181, - 205, - 205 - ], - [ - 309, - 181, - 325, - 198 - ], - [ - 171, - 183, - 189, - 205 - ], - [ - 207, - 182, - 231, - 205 - ], - [ - 233, - 182, - 255, - 205 - ], - [ - 266, - 182, - 280, - 206 - ], - [ - 283, - 183, - 286, - 205 - ], - [ - 288, - 182, - 308, - 205 - ], - [ - 313, - 200, - 319, - 205 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 219, - 365, - 559, - 492 - ], - "bubble_bbox": [ - 152, - 269, - 621, - 581 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 398, - 382, - 413, - 395 - ], - [ - 421, - 382, - 431, - 390 - ], - [ - 283, - 409, - 293, - 417 - ], - [ - 487, - 410, - 502, - 422 - ], - [ - 270, - 412, - 274, - 417 - ], - [ - 452, - 412, - 456, - 417 - ], - [ - 357, - 437, - 367, - 444 - ], - [ - 474, - 437, - 489, - 449 - ], - [ - 497, - 437, - 507, - 444 - ], - [ - 527, - 437, - 537, - 449 - ], - [ - 508, - 464, - 518, - 472 - ], - [ - 281, - 466, - 285, - 472 - ], - [ - 345, - 465, - 355, - 477 - ], - [ - 455, - 465, - 470, - 477 - ], - [ - 238, - 378, - 249, - 399 - ], - [ - 276, - 378, - 289, - 399 - ], - [ - 291, - 378, - 306, - 398 - ], - [ - 307, - 378, - 326, - 399 - ], - [ - 335, - 378, - 348, - 399 - ], - [ - 355, - 378, - 372, - 398 - ], - [ - 418, - 378, - 434, - 399 - ], - [ - 461, - 378, - 479, - 398 - ], - [ - 480, - 378, - 495, - 398 - ], - [ - 496, - 378, - 509, - 398 - ], - [ - 259, - 379, - 275, - 399 - ], - [ - 350, - 379, - 353, - 398 - ], - [ - 383, - 379, - 396, - 398 - ], - [ - 395, - 379, - 416, - 398 - ], - [ - 443, - 379, - 460, - 399 - ], - [ - 510, - 379, - 539, - 399 - ], - [ - 316, - 404, - 324, - 419 - ], - [ - 431, - 404, - 439, - 419 - ], - [ - 236, - 406, - 250, - 426 - ], - [ - 251, - 406, - 265, - 426 - ], - [ - 265, - 405, - 278, - 426 - ], - [ - 279, - 406, - 296, - 427 - ], - [ - 297, - 406, - 313, - 425 - ], - [ - 333, - 406, - 349, - 426 - ], - [ - 350, - 405, - 368, - 425 - ], - [ - 369, - 406, - 384, - 426 - ], - [ - 386, - 405, - 398, - 426 - ], - [ - 400, - 406, - 414, - 426 - ], - [ - 415, - 406, - 429, - 426 - ], - [ - 447, - 405, - 460, - 426 - ], - [ - 484, - 406, - 505, - 426 - ], - [ - 507, - 405, - 520, - 426 - ], - [ - 521, - 406, - 540, - 425 - ], - [ - 471, - 407, - 483, - 426 - ], - [ - 314, - 421, - 319, - 426 - ], - [ - 429, - 421, - 434, - 426 - ], - [ - 236, - 433, - 253, - 454 - ], - [ - 254, - 434, - 257, - 453 - ], - [ - 259, - 433, - 276, - 453 - ], - [ - 278, - 433, - 293, - 453 - ], - [ - 303, - 433, - 321, - 453 - ], - [ - 322, - 433, - 335, - 454 - ], - [ - 338, - 433, - 353, - 453 - ], - [ - 353, - 433, - 370, - 454 - ], - [ - 371, - 433, - 386, - 453 - ], - [ - 395, - 433, - 412, - 453 - ], - [ - 413, - 433, - 426, - 454 - ], - [ - 428, - 433, - 444, - 453 - ], - [ - 453, - 433, - 472, - 453 - ], - [ - 471, - 434, - 492, - 453 - ], - [ - 494, - 433, - 510, - 454 - ], - [ - 512, - 434, - 523, - 453 - ], - [ - 525, - 434, - 540, - 454 - ], - [ - 263, - 460, - 276, - 481 - ], - [ - 277, - 460, - 290, - 481 - ], - [ - 292, - 460, - 304, - 480 - ], - [ - 368, - 460, - 403, - 481 - ], - [ - 475, - 460, - 488, - 481 - ], - [ - 524, - 459, - 532, - 474 - ], - [ - 245, - 461, - 261, - 480 - ], - [ - 306, - 461, - 325, - 480 - ], - [ - 326, - 461, - 341, - 481 - ], - [ - 343, - 461, - 359, - 481 - ], - [ - 405, - 461, - 408, - 481 - ], - [ - 410, - 461, - 425, - 480 - ], - [ - 427, - 461, - 442, - 481 - ], - [ - 452, - 461, - 473, - 481 - ], - [ - 488, - 461, - 503, - 481 - ], - [ - 504, - 461, - 521, - 481 - ], - [ - 522, - 475, - 527, - 480 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 173, - 1276, - 443, - 1381 - ], - "bubble_bbox": [ - 127, - 1188, - 490, - 1464 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 307, - 1293, - 317, - 1306 - ], - [ - 330, - 1293, - 340, - 1305 - ], - [ - 260, - 1295, - 264, - 1301 - ], - [ - 208, - 1320, - 222, - 1332 - ], - [ - 339, - 1322, - 343, - 1328 - ], - [ - 310, - 1347, - 320, - 1354 - ], - [ - 326, - 1348, - 341, - 1360 - ], - [ - 349, - 1347, - 359, - 1355 - ], - [ - 210, - 1350, - 213, - 1355 - ], - [ - 380, - 1349, - 383, - 1355 - ], - [ - 359, - 1288, - 364, - 1297 - ], - [ - 239, - 1289, - 258, - 1309 - ], - [ - 256, - 1289, - 269, - 1309 - ], - [ - 271, - 1290, - 274, - 1309 - ], - [ - 276, - 1289, - 292, - 1310 - ], - [ - 304, - 1290, - 320, - 1310 - ], - [ - 322, - 1290, - 325, - 1309 - ], - [ - 328, - 1290, - 343, - 1310 - ], - [ - 345, - 1289, - 357, - 1309 - ], - [ - 365, - 1289, - 382, - 1309 - ], - [ - 288, - 1303, - 293, - 1312 - ], - [ - 249, - 1316, - 263, - 1337 - ], - [ - 334, - 1316, - 348, - 1336 - ], - [ - 347, - 1316, - 362, - 1336 - ], - [ - 394, - 1316, - 411, - 1336 - ], - [ - 192, - 1317, - 206, - 1337 - ], - [ - 205, - 1317, - 224, - 1336 - ], - [ - 225, - 1317, - 239, - 1337 - ], - [ - 263, - 1317, - 276, - 1337 - ], - [ - 278, - 1317, - 295, - 1336 - ], - [ - 293, - 1317, - 308, - 1336 - ], - [ - 317, - 1317, - 334, - 1336 - ], - [ - 370, - 1317, - 388, - 1337 - ], - [ - 389, - 1317, - 392, - 1336 - ], - [ - 412, - 1317, - 428, - 1336 - ], - [ - 251, - 1342, - 256, - 1351 - ], - [ - 188, - 1343, - 207, - 1364 - ], - [ - 205, - 1343, - 218, - 1363 - ], - [ - 219, - 1344, - 236, - 1364 - ], - [ - 237, - 1343, - 250, - 1364 - ], - [ - 257, - 1344, - 274, - 1364 - ], - [ - 284, - 1344, - 287, - 1364 - ], - [ - 289, - 1343, - 306, - 1364 - ], - [ - 308, - 1344, - 323, - 1364 - ], - [ - 323, - 1344, - 344, - 1364 - ], - [ - 346, - 1344, - 362, - 1364 - ], - [ - 363, - 1344, - 377, - 1364 - ], - [ - 375, - 1343, - 388, - 1363 - ], - [ - 390, - 1343, - 402, - 1363 - ], - [ - 403, - 1343, - 432, - 1364 - ], - [ - 422, - 1359, - 427, - 1364 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 201, - 1697, - 475, - 1802 - ], - "bubble_bbox": [ - 145, - 1609, - 526, - 1879 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 258, - 1716, - 275, - 1728 - ], - [ - 383, - 1717, - 399, - 1729 - ], - [ - 407, - 1716, - 416, - 1724 - ], - [ - 342, - 1744, - 357, - 1756 - ], - [ - 236, - 1746, - 239, - 1751 - ], - [ - 266, - 1771, - 275, - 1783 - ], - [ - 304, - 1771, - 319, - 1784 - ], - [ - 353, - 1771, - 368, - 1784 - ], - [ - 238, - 1773, - 242, - 1779 - ], - [ - 335, - 1711, - 343, - 1726 - ], - [ - 256, - 1712, - 277, - 1732 - ], - [ - 278, - 1713, - 292, - 1733 - ], - [ - 294, - 1713, - 298, - 1733 - ], - [ - 300, - 1713, - 315, - 1732 - ], - [ - 315, - 1713, - 332, - 1733 - ], - [ - 352, - 1713, - 369, - 1733 - ], - [ - 367, - 1713, - 382, - 1732 - ], - [ - 381, - 1713, - 402, - 1733 - ], - [ - 404, - 1713, - 419, - 1733 - ], - [ - 333, - 1727, - 338, - 1732 - ], - [ - 216, - 1740, - 234, - 1760 - ], - [ - 231, - 1740, - 244, - 1760 - ], - [ - 246, - 1741, - 258, - 1760 - ], - [ - 260, - 1740, - 274, - 1760 - ], - [ - 276, - 1741, - 279, - 1760 - ], - [ - 281, - 1740, - 294, - 1760 - ], - [ - 295, - 1740, - 315, - 1760 - ], - [ - 325, - 1740, - 338, - 1760 - ], - [ - 339, - 1740, - 360, - 1760 - ], - [ - 363, - 1740, - 375, - 1760 - ], - [ - 377, - 1740, - 393, - 1760 - ], - [ - 394, - 1740, - 409, - 1760 - ], - [ - 411, - 1740, - 424, - 1760 - ], - [ - 425, - 1740, - 441, - 1760 - ], - [ - 442, - 1740, - 458, - 1760 - ], - [ - 233, - 1767, - 246, - 1787 - ], - [ - 248, - 1767, - 261, - 1787 - ], - [ - 373, - 1767, - 392, - 1788 - ], - [ - 401, - 1767, - 418, - 1788 - ], - [ - 263, - 1768, - 279, - 1788 - ], - [ - 289, - 1768, - 302, - 1788 - ], - [ - 301, - 1768, - 322, - 1787 - ], - [ - 324, - 1769, - 336, - 1788 - ], - [ - 337, - 1768, - 349, - 1787 - ], - [ - 350, - 1768, - 371, - 1787 - ], - [ - 420, - 1768, - 435, - 1787 - ], - [ - 436, - 1782, - 441, - 1787 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 69, - 2493, - 225, - 2527 - ], - "bubble_bbox": [ - 71, - 2482, - 250, - 2547 - ], - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 136, - 2497, - 143, - 2522 - ], - [ - 145, - 2497, - 153, - 2522 - ], - [ - 165, - 2497, - 173, - 2522 - ], - [ - 175, - 2497, - 183, - 2522 - ], - [ - 190, - 2497, - 197, - 2521 - ], - [ - 199, - 2497, - 207, - 2521 - ], - [ - 209, - 2497, - 220, - 2521 - ], - [ - 78, - 2498, - 87, - 2523 - ], - [ - 88, - 2498, - 96, - 2523 - ], - [ - 98, - 2498, - 106, - 2522 - ], - [ - 108, - 2498, - 115, - 2522 - ], - [ - 117, - 2498, - 124, - 2522 - ], - [ - 126, - 2498, - 134, - 2522 - ], - [ - 154, - 2498, - 163, - 2522 - ], - [ - 202, - 2500, - 204, - 2518 - ], - [ - 91, - 2502, - 93, - 2519 - ], - [ - 101, - 2502, - 103, - 2509 - ], - [ - 157, - 2504, - 160, - 2514 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 53, - 2750, - 339, - 2815 - ], - "bubble_bbox": [ - 14, - 2649, - 385, - 2914 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 88, - 2766, - 101, - 2777 - ], - [ - 145, - 2768, - 149, - 2773 - ], - [ - 83, - 2790, - 91, - 2797 - ], - [ - 129, - 2790, - 137, - 2800 - ], - [ - 152, - 2790, - 161, - 2796 - ], - [ - 196, - 2790, - 209, - 2801 - ], - [ - 276, - 2790, - 284, - 2800 - ], - [ - 305, - 2790, - 313, - 2801 - ], - [ - 128, - 2762, - 140, - 2781 - ], - [ - 141, - 2762, - 153, - 2780 - ], - [ - 168, - 2761, - 172, - 2769 - ], - [ - 210, - 2762, - 222, - 2781 - ], - [ - 246, - 2762, - 263, - 2780 - ], - [ - 278, - 2762, - 290, - 2780 - ], - [ - 299, - 2762, - 314, - 2780 - ], - [ - 69, - 2763, - 84, - 2780 - ], - [ - 85, - 2763, - 104, - 2780 - ], - [ - 112, - 2763, - 128, - 2780 - ], - [ - 152, - 2763, - 167, - 2780 - ], - [ - 171, - 2763, - 187, - 2780 - ], - [ - 195, - 2763, - 210, - 2781 - ], - [ - 224, - 2763, - 238, - 2780 - ], - [ - 264, - 2763, - 276, - 2780 - ], - [ - 315, - 2763, - 327, - 2781 - ], - [ - 260, - 2786, - 271, - 2804 - ], - [ - 317, - 2786, - 329, - 2799 - ], - [ - 67, - 2787, - 79, - 2805 - ], - [ - 80, - 2787, - 94, - 2805 - ], - [ - 95, - 2787, - 98, - 2804 - ], - [ - 100, - 2787, - 112, - 2805 - ], - [ - 114, - 2787, - 125, - 2804 - ], - [ - 127, - 2787, - 141, - 2805 - ], - [ - 149, - 2787, - 163, - 2805 - ], - [ - 164, - 2787, - 192, - 2805 - ], - [ - 193, - 2787, - 212, - 2804 - ], - [ - 212, - 2787, - 227, - 2804 - ], - [ - 228, - 2787, - 244, - 2804 - ], - [ - 245, - 2787, - 259, - 2804 - ], - [ - 273, - 2787, - 287, - 2805 - ], - [ - 287, - 2787, - 301, - 2804 - ], - [ - 302, - 2787, - 316, - 2805 - ], - [ - 320, - 2800, - 325, - 2805 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 331, - 2852, - 620, - 2968 - ], - "bubble_bbox": [ - 282, - 2768, - 667, - 3053 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 529, - 2870, - 542, - 2880 - ], - [ - 421, - 2893, - 434, - 2903 - ], - [ - 440, - 2893, - 448, - 2899 - ], - [ - 446, - 2916, - 454, - 2922 - ], - [ - 385, - 2939, - 398, - 2949 - ], - [ - 403, - 2939, - 415, - 2948 - ], - [ - 421, - 2939, - 429, - 2949 - ], - [ - 580, - 2939, - 588, - 2949 - ], - [ - 426, - 2865, - 431, - 2873 - ], - [ - 472, - 2866, - 483, - 2883 - ], - [ - 483, - 2866, - 494, - 2884 - ], - [ - 416, - 2867, - 426, - 2884 - ], - [ - 432, - 2868, - 442, - 2883 - ], - [ - 443, - 2867, - 453, - 2883 - ], - [ - 461, - 2867, - 471, - 2884 - ], - [ - 494, - 2867, - 507, - 2883 - ], - [ - 515, - 2867, - 529, - 2884 - ], - [ - 526, - 2867, - 544, - 2884 - ], - [ - 359, - 2890, - 373, - 2907 - ], - [ - 374, - 2890, - 387, - 2906 - ], - [ - 388, - 2889, - 400, - 2907 - ], - [ - 408, - 2890, - 420, - 2907 - ], - [ - 419, - 2890, - 436, - 2906 - ], - [ - 438, - 2890, - 451, - 2907 - ], - [ - 460, - 2889, - 474, - 2907 - ], - [ - 475, - 2890, - 487, - 2907 - ], - [ - 487, - 2890, - 501, - 2907 - ], - [ - 502, - 2890, - 515, - 2906 - ], - [ - 516, - 2890, - 526, - 2906 - ], - [ - 527, - 2890, - 539, - 2906 - ], - [ - 547, - 2890, - 550, - 2906 - ], - [ - 552, - 2890, - 563, - 2907 - ], - [ - 572, - 2890, - 582, - 2907 - ], - [ - 583, - 2890, - 586, - 2906 - ], - [ - 588, - 2890, - 602, - 2907 - ], - [ - 370, - 2912, - 383, - 2929 - ], - [ - 431, - 2912, - 443, - 2929 - ], - [ - 478, - 2912, - 489, - 2929 - ], - [ - 580, - 2912, - 591, - 2929 - ], - [ - 355, - 2913, - 369, - 2929 - ], - [ - 384, - 2913, - 387, - 2929 - ], - [ - 388, - 2913, - 398, - 2929 - ], - [ - 400, - 2913, - 409, - 2929 - ], - [ - 410, - 2913, - 424, - 2929 - ], - [ - 443, - 2913, - 457, - 2930 - ], - [ - 458, - 2913, - 471, - 2929 - ], - [ - 490, - 2913, - 504, - 2929 - ], - [ - 504, - 2913, - 516, - 2929 - ], - [ - 517, - 2913, - 528, - 2929 - ], - [ - 529, - 2913, - 541, - 2929 - ], - [ - 542, - 2913, - 552, - 2929 - ], - [ - 554, - 2913, - 563, - 2929 - ], - [ - 561, - 2913, - 573, - 2930 - ], - [ - 592, - 2913, - 606, - 2929 - ], - [ - 365, - 2935, - 381, - 2952 - ], - [ - 383, - 2936, - 400, - 2952 - ], - [ - 401, - 2936, - 417, - 2952 - ], - [ - 419, - 2936, - 432, - 2953 - ], - [ - 440, - 2935, - 451, - 2952 - ], - [ - 452, - 2936, - 466, - 2952 - ], - [ - 474, - 2935, - 485, - 2953 - ], - [ - 486, - 2936, - 499, - 2952 - ], - [ - 506, - 2936, - 520, - 2952 - ], - [ - 521, - 2936, - 530, - 2952 - ], - [ - 531, - 2935, - 542, - 2952 - ], - [ - 543, - 2936, - 546, - 2953 - ], - [ - 548, - 2935, - 562, - 2952 - ], - [ - 563, - 2936, - 576, - 2952 - ], - [ - 577, - 2936, - 591, - 2953 - ], - [ - 591, - 2948, - 596, - 2952 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 149, - 4019, - 493, - 4184 - ], - "bubble_bbox": [ - 92, - 3923, - 545, - 4245 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 314, - 4043, - 318, - 4049 - ], - [ - 386, - 4043, - 391, - 4048 - ], - [ - 379, - 4070, - 390, - 4078 - ], - [ - 187, - 4071, - 204, - 4083 - ], - [ - 338, - 4071, - 354, - 4083 - ], - [ - 405, - 4099, - 415, - 4108 - ], - [ - 462, - 4100, - 471, - 4112 - ], - [ - 203, - 4102, - 207, - 4108 - ], - [ - 305, - 4102, - 309, - 4108 - ], - [ - 264, - 4129, - 274, - 4143 - ], - [ - 305, - 4129, - 322, - 4142 - ], - [ - 358, - 4131, - 363, - 4137 - ], - [ - 204, - 4036, - 209, - 4046 - ], - [ - 294, - 4036, - 308, - 4058 - ], - [ - 210, - 4037, - 228, - 4059 - ], - [ - 229, - 4037, - 243, - 4059 - ], - [ - 245, - 4037, - 261, - 4058 - ], - [ - 272, - 4037, - 287, - 4058 - ], - [ - 288, - 4038, - 292, - 4058 - ], - [ - 309, - 4037, - 323, - 4058 - ], - [ - 324, - 4038, - 337, - 4058 - ], - [ - 348, - 4037, - 363, - 4058 - ], - [ - 364, - 4037, - 380, - 4058 - ], - [ - 380, - 4037, - 396, - 4058 - ], - [ - 397, - 4038, - 415, - 4058 - ], - [ - 414, - 4037, - 429, - 4058 - ], - [ - 199, - 4039, - 206, - 4049 - ], - [ - 445, - 4064, - 450, - 4075 - ], - [ - 210, - 4066, - 224, - 4088 - ], - [ - 255, - 4066, - 269, - 4088 - ], - [ - 270, - 4066, - 287, - 4088 - ], - [ - 288, - 4065, - 293, - 4074 - ], - [ - 321, - 4066, - 336, - 4088 - ], - [ - 359, - 4066, - 374, - 4088 - ], - [ - 375, - 4066, - 393, - 4088 - ], - [ - 395, - 4066, - 408, - 4088 - ], - [ - 410, - 4066, - 426, - 4088 - ], - [ - 427, - 4066, - 442, - 4087 - ], - [ - 450, - 4065, - 456, - 4076 - ], - [ - 185, - 4067, - 207, - 4088 - ], - [ - 234, - 4067, - 247, - 4088 - ], - [ - 249, - 4067, - 253, - 4088 - ], - [ - 292, - 4067, - 311, - 4088 - ], - [ - 335, - 4067, - 358, - 4088 - ], - [ - 439, - 4082, - 445, - 4087 - ], - [ - 231, - 4094, - 236, - 4104 - ], - [ - 164, - 4096, - 182, - 4117 - ], - [ - 183, - 4095, - 197, - 4118 - ], - [ - 198, - 4095, - 213, - 4117 - ], - [ - 212, - 4096, - 230, - 4117 - ], - [ - 235, - 4096, - 254, - 4117 - ], - [ - 264, - 4095, - 284, - 4117 - ], - [ - 285, - 4095, - 299, - 4118 - ], - [ - 300, - 4095, - 315, - 4117 - ], - [ - 314, - 4096, - 332, - 4117 - ], - [ - 342, - 4095, - 360, - 4117 - ], - [ - 362, - 4096, - 376, - 4117 - ], - [ - 387, - 4096, - 401, - 4117 - ], - [ - 402, - 4096, - 418, - 4117 - ], - [ - 420, - 4096, - 424, - 4117 - ], - [ - 426, - 4095, - 441, - 4117 - ], - [ - 443, - 4095, - 456, - 4117 - ], - [ - 458, - 4096, - 475, - 4117 - ], - [ - 208, - 4125, - 222, - 4146 - ], - [ - 224, - 4126, - 242, - 4146 - ], - [ - 243, - 4125, - 259, - 4146 - ], - [ - 261, - 4126, - 278, - 4147 - ], - [ - 288, - 4125, - 306, - 4147 - ], - [ - 303, - 4125, - 326, - 4146 - ], - [ - 336, - 4126, - 353, - 4146 - ], - [ - 354, - 4125, - 368, - 4146 - ], - [ - 369, - 4126, - 382, - 4146 - ], - [ - 384, - 4125, - 396, - 4146 - ], - [ - 407, - 4126, - 411, - 4146 - ], - [ - 412, - 4125, - 430, - 4147 - ], - [ - 426, - 4141, - 431, - 4146 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 107, - 4938, - 166, - 4972 - ], - "bubble_bbox": [ - 32, - 4880, - 248, - 5019 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 126, - 4956, - 131, - 4962 - ], - [ - 137, - 4956, - 143, - 4962 - ], - [ - 148, - 4956, - 154, - 4962 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/1b6635a63b634cc19f29402efc0fc17a.jpeg", - "context_path": "contexts/183/context.json", - "id": 86422 - }, - { - "blk_list": [ - { - "text_bbox": [ - 61, - 168, - 462, - 271 - ], - "bubble_bbox": [ - 30, - 59, - 494, - 367 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 197, - 186, - 207, - 194 - ], - [ - 214, - 186, - 224, - 194 - ], - [ - 174, - 187, - 189, - 199 - ], - [ - 79, - 214, - 88, - 226 - ], - [ - 95, - 214, - 110, - 226 - ], - [ - 305, - 213, - 314, - 220 - ], - [ - 179, - 216, - 183, - 222 - ], - [ - 139, - 241, - 153, - 253 - ], - [ - 181, - 241, - 191, - 249 - ], - [ - 237, - 241, - 252, - 253 - ], - [ - 258, - 241, - 272, - 253 - ], - [ - 358, - 241, - 373, - 253 - ], - [ - 381, - 241, - 391, - 248 - ], - [ - 122, - 181, - 127, - 190 - ], - [ - 126, - 182, - 143, - 203 - ], - [ - 335, - 182, - 352, - 203 - ], - [ - 380, - 182, - 398, - 203 - ], - [ - 110, - 183, - 121, - 203 - ], - [ - 153, - 183, - 170, - 203 - ], - [ - 171, - 183, - 192, - 203 - ], - [ - 194, - 183, - 210, - 203 - ], - [ - 212, - 183, - 227, - 203 - ], - [ - 228, - 183, - 242, - 203 - ], - [ - 255, - 183, - 258, - 203 - ], - [ - 260, - 183, - 277, - 203 - ], - [ - 286, - 183, - 303, - 203 - ], - [ - 304, - 183, - 319, - 202 - ], - [ - 320, - 183, - 334, - 203 - ], - [ - 354, - 183, - 370, - 202 - ], - [ - 399, - 183, - 415, - 203 - ], - [ - 239, - 197, - 244, - 202 - ], - [ - 129, - 208, - 134, - 218 - ], - [ - 115, - 210, - 128, - 230 - ], - [ - 135, - 210, - 152, - 230 - ], - [ - 162, - 210, - 174, - 231 - ], - [ - 175, - 210, - 188, - 230 - ], - [ - 188, - 210, - 201, - 230 - ], - [ - 201, - 210, - 217, - 230 - ], - [ - 226, - 210, - 243, - 230 - ], - [ - 244, - 210, - 257, - 231 - ], - [ - 259, - 210, - 274, - 230 - ], - [ - 302, - 210, - 317, - 230 - ], - [ - 318, - 210, - 333, - 230 - ], - [ - 357, - 210, - 370, - 230 - ], - [ - 419, - 210, - 432, - 230 - ], - [ - 433, - 210, - 450, - 230 - ], - [ - 76, - 211, - 91, - 230 - ], - [ - 92, - 211, - 113, - 230 - ], - [ - 284, - 211, - 301, - 230 - ], - [ - 334, - 211, - 349, - 230 - ], - [ - 351, - 211, - 354, - 230 - ], - [ - 371, - 211, - 375, - 230 - ], - [ - 376, - 211, - 392, - 230 - ], - [ - 401, - 211, - 417, - 230 - ], - [ - 172, - 236, - 177, - 245 - ], - [ - 124, - 237, - 138, - 258 - ], - [ - 137, - 238, - 156, - 257 - ], - [ - 157, - 238, - 171, - 257 - ], - [ - 178, - 238, - 194, - 258 - ], - [ - 195, - 238, - 211, - 257 - ], - [ - 221, - 238, - 233, - 257 - ], - [ - 234, - 238, - 255, - 257 - ], - [ - 256, - 238, - 275, - 257 - ], - [ - 277, - 238, - 292, - 258 - ], - [ - 294, - 238, - 297, - 257 - ], - [ - 300, - 237, - 312, - 257 - ], - [ - 314, - 238, - 333, - 257 - ], - [ - 343, - 238, - 356, - 257 - ], - [ - 355, - 238, - 376, - 257 - ], - [ - 378, - 238, - 394, - 258 - ], - [ - 395, - 252, - 400, - 257 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 169, - 353, - 219, - 669 - ], - "bubble_bbox": [ - 2, - 330, - 245, - 696 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 182, - 356, - 192, - 367 - ], - [ - 204, - 360, - 210, - 370 - ], - [ - 185, - 368, - 191, - 372 - ], - [ - 203, - 371, - 212, - 384 - ], - [ - 184, - 375, - 190, - 381 - ], - [ - 180, - 381, - 188, - 389 - ], - [ - 206, - 385, - 212, - 390 - ], - [ - 185, - 392, - 192, - 397 - ], - [ - 203, - 393, - 210, - 398 - ], - [ - 200, - 398, - 209, - 406 - ], - [ - 179, - 400, - 187, - 403 - ], - [ - 182, - 404, - 187, - 418 - ], - [ - 202, - 409, - 213, - 414 - ], - [ - 203, - 416, - 209, - 419 - ], - [ - 177, - 420, - 188, - 432 - ], - [ - 203, - 421, - 209, - 434 - ], - [ - 180, - 433, - 186, - 438 - ], - [ - 199, - 436, - 209, - 448 - ], - [ - 179, - 440, - 185, - 446 - ], - [ - 176, - 446, - 184, - 454 - ], - [ - 202, - 449, - 208, - 453 - ], - [ - 178, - 456, - 189, - 462 - ], - [ - 198, - 462, - 206, - 471 - ], - [ - 179, - 464, - 185, - 468 - ], - [ - 180, - 469, - 186, - 481 - ], - [ - 199, - 473, - 211, - 478 - ], - [ - 201, - 481, - 207, - 484 - ], - [ - 178, - 483, - 187, - 496 - ], - [ - 201, - 485, - 210, - 513 - ], - [ - 181, - 498, - 187, - 503 - ], - [ - 178, - 505, - 185, - 511 - ], - [ - 176, - 511, - 184, - 519 - ], - [ - 180, - 521, - 188, - 527 - ], - [ - 175, - 529, - 184, - 533 - ], - [ - 179, - 534, - 184, - 546 - ], - [ - 206, - 536, - 217, - 542 - ], - [ - 208, - 545, - 214, - 548 - ], - [ - 176, - 548, - 185, - 561 - ], - [ - 209, - 549, - 216, - 563 - ], - [ - 178, - 562, - 185, - 567 - ], - [ - 210, - 564, - 218, - 577 - ], - [ - 177, - 570, - 184, - 575 - ], - [ - 179, - 586, - 186, - 591 - ], - [ - 174, - 594, - 182, - 597 - ], - [ - 176, - 599, - 183, - 611 - ], - [ - 172, - 612, - 180, - 625 - ], - [ - 208, - 624, - 217, - 640 - ], - [ - 174, - 626, - 180, - 631 - ], - [ - 173, - 634, - 179, - 639 - ], - [ - 205, - 653, - 212, - 659 - ], - [ - 198, - 659, - 206, - 667 - ], - [ - 210, - 673, - 214, - 677 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 508, - 336, - 535, - 668 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 523, - 348, - 531, - 352 - ], - [ - 526, - 353, - 532, - 365 - ], - [ - 523, - 367, - 532, - 379 - ], - [ - 525, - 381, - 532, - 385 - ], - [ - 525, - 388, - 530, - 393 - ], - [ - 520, - 393, - 528, - 402 - ], - [ - 521, - 404, - 532, - 409 - ], - [ - 520, - 412, - 528, - 416 - ], - [ - 522, - 417, - 529, - 430 - ], - [ - 518, - 432, - 528, - 444 - ], - [ - 520, - 445, - 527, - 450 - ], - [ - 518, - 453, - 525, - 458 - ], - [ - 515, - 458, - 523, - 467 - ], - [ - 516, - 469, - 527, - 474 - ], - [ - 515, - 477, - 522, - 480 - ], - [ - 517, - 481, - 523, - 494 - ], - [ - 517, - 496, - 525, - 508 - ], - [ - 519, - 509, - 525, - 514 - ], - [ - 518, - 517, - 525, - 523 - ], - [ - 515, - 523, - 524, - 532 - ], - [ - 522, - 534, - 529, - 539 - ], - [ - 520, - 542, - 526, - 545 - ], - [ - 521, - 547, - 527, - 560 - ], - [ - 520, - 561, - 528, - 573 - ], - [ - 522, - 575, - 529, - 579 - ], - [ - 519, - 588, - 527, - 596 - ], - [ - 526, - 598, - 533, - 604 - ], - [ - 523, - 606, - 530, - 610 - ], - [ - 525, - 611, - 531, - 624 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 542, - 336, - 570, - 674 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 560, - 344, - 567, - 349 - ], - [ - 559, - 351, - 564, - 354 - ], - [ - 559, - 355, - 565, - 370 - ], - [ - 556, - 371, - 565, - 383 - ], - [ - 559, - 385, - 565, - 389 - ], - [ - 557, - 392, - 563, - 397 - ], - [ - 553, - 397, - 561, - 405 - ], - [ - 557, - 408, - 565, - 413 - ], - [ - 552, - 415, - 561, - 420 - ], - [ - 555, - 421, - 562, - 433 - ], - [ - 551, - 435, - 561, - 447 - ], - [ - 554, - 448, - 560, - 453 - ], - [ - 553, - 456, - 558, - 460 - ], - [ - 549, - 461, - 557, - 470 - ], - [ - 551, - 472, - 562, - 478 - ], - [ - 552, - 480, - 558, - 483 - ], - [ - 553, - 484, - 559, - 497 - ], - [ - 552, - 499, - 560, - 511 - ], - [ - 555, - 513, - 561, - 517 - ], - [ - 554, - 520, - 560, - 526 - ], - [ - 551, - 526, - 559, - 535 - ], - [ - 556, - 537, - 564, - 542 - ], - [ - 553, - 544, - 561, - 548 - ], - [ - 556, - 549, - 562, - 561 - ], - [ - 555, - 564, - 563, - 576 - ], - [ - 558, - 577, - 564, - 581 - ], - [ - 558, - 585, - 564, - 590 - ], - [ - 555, - 590, - 563, - 599 - ], - [ - 560, - 601, - 568, - 607 - ], - [ - 555, - 609, - 564, - 613 - ], - [ - 558, - 614, - 564, - 626 - ], - [ - 556, - 628, - 565, - 640 - ], - [ - 558, - 641, - 565, - 646 - ], - [ - 555, - 655, - 559, - 659 - ], - [ - 549, - 661, - 560, - 666 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 578, - 336, - 606, - 677 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 591, - 343, - 597, - 348 - ], - [ - 587, - 350, - 595, - 354 - ], - [ - 588, - 355, - 595, - 367 - ], - [ - 588, - 369, - 597, - 381 - ], - [ - 591, - 383, - 597, - 387 - ], - [ - 587, - 396, - 595, - 404 - ], - [ - 592, - 407, - 599, - 412 - ], - [ - 588, - 413, - 596, - 417 - ], - [ - 590, - 419, - 596, - 431 - ], - [ - 587, - 433, - 596, - 446 - ], - [ - 590, - 447, - 596, - 452 - ], - [ - 589, - 454, - 595, - 460 - ], - [ - 587, - 471, - 598, - 476 - ], - [ - 588, - 478, - 594, - 482 - ], - [ - 589, - 483, - 595, - 495 - ], - [ - 587, - 497, - 596, - 509 - ], - [ - 589, - 511, - 596, - 516 - ], - [ - 589, - 519, - 594, - 523 - ], - [ - 586, - 524, - 594, - 533 - ], - [ - 588, - 535, - 599, - 540 - ], - [ - 587, - 542, - 595, - 546 - ], - [ - 591, - 547, - 596, - 560 - ], - [ - 590, - 562, - 598, - 574 - ], - [ - 593, - 575, - 599, - 580 - ], - [ - 592, - 584, - 599, - 588 - ], - [ - 589, - 589, - 597, - 597 - ], - [ - 595, - 599, - 603, - 605 - ], - [ - 593, - 607, - 598, - 611 - ], - [ - 591, - 612, - 599, - 625 - ], - [ - 589, - 627, - 598, - 639 - ], - [ - 591, - 641, - 597, - 646 - ], - [ - 588, - 649, - 595, - 654 - ], - [ - 583, - 658, - 593, - 663 - ], - [ - 580, - 339, - 605, - 669 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 171, - 1324, - 445, - 1406 - ], - "bubble_bbox": [ - 126, - 1218, - 487, - 1497 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 261, - 1344, - 271, - 1357 - ], - [ - 285, - 1344, - 295, - 1357 - ], - [ - 367, - 1344, - 383, - 1357 - ], - [ - 196, - 1346, - 200, - 1352 - ], - [ - 218, - 1372, - 228, - 1380 - ], - [ - 274, - 1373, - 290, - 1385 - ], - [ - 307, - 1372, - 317, - 1378 - ], - [ - 402, - 1374, - 407, - 1379 - ], - [ - 307, - 1380, - 317, - 1386 - ], - [ - 315, - 1339, - 320, - 1348 - ], - [ - 192, - 1340, - 205, - 1361 - ], - [ - 207, - 1340, - 219, - 1362 - ], - [ - 236, - 1340, - 248, - 1361 - ], - [ - 258, - 1341, - 274, - 1361 - ], - [ - 276, - 1341, - 279, - 1361 - ], - [ - 282, - 1341, - 298, - 1361 - ], - [ - 300, - 1340, - 313, - 1361 - ], - [ - 320, - 1340, - 338, - 1361 - ], - [ - 347, - 1341, - 363, - 1361 - ], - [ - 365, - 1341, - 386, - 1361 - ], - [ - 386, - 1340, - 404, - 1361 - ], - [ - 405, - 1340, - 421, - 1361 - ], - [ - 221, - 1354, - 225, - 1364 - ], - [ - 184, - 1368, - 196, - 1390 - ], - [ - 198, - 1369, - 213, - 1389 - ], - [ - 214, - 1369, - 231, - 1390 - ], - [ - 232, - 1369, - 248, - 1389 - ], - [ - 257, - 1369, - 275, - 1389 - ], - [ - 271, - 1369, - 293, - 1389 - ], - [ - 304, - 1369, - 320, - 1389 - ], - [ - 322, - 1369, - 336, - 1389 - ], - [ - 337, - 1368, - 352, - 1389 - ], - [ - 361, - 1368, - 379, - 1389 - ], - [ - 381, - 1369, - 396, - 1389 - ], - [ - 396, - 1369, - 412, - 1389 - ], - [ - 411, - 1369, - 428, - 1389 - ], - [ - 425, - 1384, - 430, - 1389 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 211, - 2428, - 494, - 2500 - ], - "bubble_bbox": [ - 173, - 2337, - 533, - 2600 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 262, - 2445, - 275, - 2455 - ], - [ - 303, - 2445, - 312, - 2456 - ], - [ - 324, - 2445, - 333, - 2456 - ], - [ - 397, - 2445, - 412, - 2456 - ], - [ - 469, - 2445, - 482, - 2456 - ], - [ - 252, - 2470, - 261, - 2474 - ], - [ - 338, - 2471, - 341, - 2476 - ], - [ - 253, - 2476, - 262, - 2481 - ], - [ - 351, - 2440, - 355, - 2448 - ], - [ - 222, - 2442, - 225, - 2459 - ], - [ - 227, - 2441, - 239, - 2460 - ], - [ - 248, - 2441, - 260, - 2460 - ], - [ - 260, - 2441, - 277, - 2459 - ], - [ - 278, - 2441, - 291, - 2460 - ], - [ - 300, - 2442, - 315, - 2460 - ], - [ - 317, - 2442, - 320, - 2460 - ], - [ - 322, - 2442, - 336, - 2460 - ], - [ - 338, - 2441, - 349, - 2460 - ], - [ - 356, - 2442, - 371, - 2460 - ], - [ - 379, - 2442, - 394, - 2460 - ], - [ - 395, - 2442, - 414, - 2460 - ], - [ - 414, - 2441, - 430, - 2460 - ], - [ - 431, - 2441, - 445, - 2459 - ], - [ - 453, - 2441, - 469, - 2460 - ], - [ - 466, - 2442, - 486, - 2459 - ], - [ - 266, - 2466, - 278, - 2485 - ], - [ - 280, - 2466, - 292, - 2484 - ], - [ - 301, - 2466, - 317, - 2485 - ], - [ - 318, - 2466, - 332, - 2484 - ], - [ - 345, - 2466, - 361, - 2485 - ], - [ - 370, - 2466, - 386, - 2485 - ], - [ - 387, - 2466, - 399, - 2485 - ], - [ - 400, - 2466, - 414, - 2484 - ], - [ - 416, - 2466, - 427, - 2484 - ], - [ - 445, - 2465, - 458, - 2479 - ], - [ - 250, - 2467, - 265, - 2485 - ], - [ - 332, - 2467, - 346, - 2484 - ], - [ - 357, - 2479, - 361, - 2487 - ], - [ - 429, - 2480, - 433, - 2484 - ], - [ - 434, - 2480, - 439, - 2484 - ], - [ - 440, - 2480, - 444, - 2484 - ], - [ - 448, - 2480, - 453, - 2485 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 205, - 2886, - 588, - 2978 - ], - "bubble_bbox": [ - 178, - 2759, - 619, - 3095 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 329, - 2904, - 338, - 2910 - ], - [ - 379, - 2904, - 387, - 2911 - ], - [ - 393, - 2904, - 406, - 2915 - ], - [ - 500, - 2906, - 503, - 2911 - ], - [ - 349, - 2928, - 357, - 2935 - ], - [ - 413, - 2928, - 421, - 2935 - ], - [ - 461, - 2928, - 475, - 2939 - ], - [ - 490, - 2928, - 498, - 2935 - ], - [ - 534, - 2928, - 542, - 2935 - ], - [ - 249, - 2930, - 252, - 2935 - ], - [ - 369, - 2953, - 377, - 2964 - ], - [ - 392, - 2953, - 400, - 2957 - ], - [ - 475, - 2952, - 484, - 2959 - ], - [ - 301, - 2954, - 304, - 2959 - ], - [ - 392, - 2959, - 401, - 2964 - ], - [ - 321, - 2899, - 325, - 2907 - ], - [ - 264, - 2901, - 279, - 2919 - ], - [ - 280, - 2900, - 292, - 2919 - ], - [ - 293, - 2901, - 307, - 2918 - ], - [ - 308, - 2900, - 320, - 2918 - ], - [ - 326, - 2901, - 341, - 2919 - ], - [ - 342, - 2901, - 355, - 2918 - ], - [ - 364, - 2901, - 376, - 2918 - ], - [ - 377, - 2901, - 390, - 2918 - ], - [ - 390, - 2901, - 409, - 2918 - ], - [ - 409, - 2900, - 424, - 2918 - ], - [ - 433, - 2901, - 448, - 2919 - ], - [ - 448, - 2900, - 460, - 2919 - ], - [ - 462, - 2901, - 476, - 2918 - ], - [ - 484, - 2900, - 495, - 2919 - ], - [ - 496, - 2900, - 507, - 2918 - ], - [ - 509, - 2900, - 520, - 2919 - ], - [ - 521, - 2901, - 533, - 2918 - ], - [ - 235, - 2925, - 245, - 2942 - ], - [ - 245, - 2925, - 257, - 2943 - ], - [ - 258, - 2925, - 269, - 2942 - ], - [ - 283, - 2925, - 299, - 2943 - ], - [ - 299, - 2925, - 311, - 2943 - ], - [ - 313, - 2925, - 326, - 2942 - ], - [ - 327, - 2924, - 339, - 2942 - ], - [ - 340, - 2924, - 345, - 2932 - ], - [ - 346, - 2925, - 360, - 2943 - ], - [ - 361, - 2925, - 375, - 2943 - ], - [ - 383, - 2925, - 394, - 2943 - ], - [ - 396, - 2925, - 409, - 2943 - ], - [ - 410, - 2925, - 424, - 2943 - ], - [ - 425, - 2925, - 439, - 2942 - ], - [ - 447, - 2925, - 462, - 2943 - ], - [ - 459, - 2925, - 478, - 2943 - ], - [ - 487, - 2925, - 501, - 2943 - ], - [ - 502, - 2925, - 515, - 2943 - ], - [ - 531, - 2925, - 545, - 2943 - ], - [ - 546, - 2925, - 558, - 2943 - ], - [ - 564, - 2925, - 579, - 2943 - ], - [ - 219, - 2926, - 233, - 2943 - ], - [ - 516, - 2926, - 530, - 2943 - ], - [ - 560, - 2926, - 563, - 2943 - ], - [ - 271, - 2938, - 275, - 2942 - ], - [ - 296, - 2949, - 308, - 2967 - ], - [ - 320, - 2948, - 324, - 2957 - ], - [ - 326, - 2949, - 336, - 2968 - ], - [ - 338, - 2949, - 351, - 2967 - ], - [ - 351, - 2949, - 364, - 2967 - ], - [ - 404, - 2949, - 417, - 2967 - ], - [ - 418, - 2949, - 433, - 2967 - ], - [ - 431, - 2949, - 445, - 2966 - ], - [ - 446, - 2949, - 457, - 2968 - ], - [ - 458, - 2949, - 471, - 2967 - ], - [ - 472, - 2949, - 487, - 2968 - ], - [ - 493, - 2948, - 497, - 2956 - ], - [ - 496, - 2948, - 502, - 2957 - ], - [ - 316, - 2951, - 322, - 2959 - ], - [ - 366, - 2950, - 380, - 2967 - ], - [ - 389, - 2950, - 403, - 2967 - ], - [ - 488, - 2962, - 492, - 2967 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 232, - 4168, - 541, - 4272 - ], - "bubble_bbox": [ - 194, - 4060, - 579, - 4376 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 289, - 4189, - 300, - 4196 - ], - [ - 344, - 4189, - 359, - 4201 - ], - [ - 403, - 4189, - 419, - 4201 - ], - [ - 425, - 4189, - 440, - 4201 - ], - [ - 276, - 4191, - 280, - 4197 - ], - [ - 283, - 4216, - 293, - 4224 - ], - [ - 259, - 4217, - 275, - 4229 - ], - [ - 309, - 4217, - 325, - 4229 - ], - [ - 346, - 4217, - 355, - 4228 - ], - [ - 446, - 4217, - 462, - 4229 - ], - [ - 391, - 4219, - 395, - 4224 - ], - [ - 271, - 4244, - 280, - 4252 - ], - [ - 288, - 4244, - 297, - 4252 - ], - [ - 477, - 4244, - 488, - 4252 - ], - [ - 340, - 4245, - 354, - 4256 - ], - [ - 403, - 4245, - 419, - 4257 - ], - [ - 271, - 4185, - 285, - 4205 - ], - [ - 286, - 4185, - 303, - 4206 - ], - [ - 304, - 4185, - 319, - 4205 - ], - [ - 329, - 4185, - 343, - 4206 - ], - [ - 342, - 4185, - 361, - 4204 - ], - [ - 362, - 4185, - 376, - 4205 - ], - [ - 387, - 4186, - 399, - 4205 - ], - [ - 400, - 4185, - 422, - 4205 - ], - [ - 423, - 4185, - 442, - 4204 - ], - [ - 444, - 4186, - 460, - 4205 - ], - [ - 462, - 4186, - 465, - 4205 - ], - [ - 467, - 4185, - 480, - 4205 - ], - [ - 482, - 4185, - 501, - 4205 - ], - [ - 369, - 4212, - 386, - 4233 - ], - [ - 402, - 4212, - 415, - 4233 - ], - [ - 499, - 4212, - 513, - 4234 - ], - [ - 244, - 4213, - 257, - 4233 - ], - [ - 256, - 4213, - 278, - 4233 - ], - [ - 279, - 4213, - 296, - 4234 - ], - [ - 306, - 4213, - 328, - 4233 - ], - [ - 330, - 4214, - 342, - 4233 - ], - [ - 343, - 4213, - 359, - 4233 - ], - [ - 387, - 4213, - 400, - 4233 - ], - [ - 425, - 4213, - 442, - 4233 - ], - [ - 443, - 4213, - 465, - 4233 - ], - [ - 481, - 4213, - 498, - 4233 - ], - [ - 515, - 4213, - 530, - 4233 - ], - [ - 466, - 4227, - 471, - 4236 - ], - [ - 318, - 4240, - 331, - 4261 - ], - [ - 424, - 4240, - 442, - 4261 - ], - [ - 443, - 4240, - 456, - 4261 - ], - [ - 474, - 4240, - 506, - 4262 - ], - [ - 268, - 4241, - 283, - 4261 - ], - [ - 285, - 4241, - 300, - 4261 - ], - [ - 301, - 4241, - 317, - 4261 - ], - [ - 332, - 4241, - 336, - 4261 - ], - [ - 337, - 4241, - 357, - 4260 - ], - [ - 358, - 4241, - 372, - 4261 - ], - [ - 373, - 4241, - 390, - 4261 - ], - [ - 400, - 4241, - 422, - 4261 - ], - [ - 458, - 4241, - 473, - 4261 - ], - [ - 495, - 4256, - 500, - 4261 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/e7fa04cb49984ceaae5c4a1f1c57f717.jpeg", - "context_path": "contexts/183/context.json", - "id": 86410 - }, - { - "blk_list": [ - { - "text_bbox": [ - 185, - 5075, - 389, - 5134 - ], - "bubble_bbox": [ - 123, - 5006, - 458, - 5193 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 266, - 5097, - 273, - 5108 - ], - [ - 199, - 5088, - 222, - 5122 - ], - [ - 235, - 5087, - 256, - 5122 - ], - [ - 258, - 5087, - 281, - 5122 - ], - [ - 323, - 5088, - 347, - 5123 - ], - [ - 225, - 5089, - 230, - 5123 - ], - [ - 284, - 5090, - 305, - 5123 - ], - [ - 307, - 5089, - 327, - 5122 - ], - [ - 343, - 5114, - 351, - 5122 - ], - [ - 354, - 5114, - 362, - 5122 - ], - [ - 365, - 5114, - 373, - 5122 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 5865, - 230, - 5905 - ], - "bubble_bbox": [ - 16, - 5856, - 269, - 5916 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 128, - 5874, - 137, - 5899 - ], - [ - 138, - 5874, - 146, - 5899 - ], - [ - 148, - 5874, - 156, - 5899 - ], - [ - 157, - 5874, - 165, - 5898 - ], - [ - 167, - 5874, - 176, - 5898 - ], - [ - 178, - 5874, - 186, - 5898 - ], - [ - 192, - 5873, - 200, - 5898 - ], - [ - 202, - 5873, - 209, - 5898 - ], - [ - 211, - 5873, - 222, - 5898 - ], - [ - 81, - 5875, - 89, - 5899 - ], - [ - 91, - 5875, - 98, - 5899 - ], - [ - 101, - 5875, - 109, - 5899 - ], - [ - 110, - 5875, - 118, - 5899 - ], - [ - 120, - 5875, - 127, - 5899 - ], - [ - 187, - 5894, - 190, - 5898 - ], - [ - 93, - 5878, - 96, - 5896 - ], - [ - 103, - 5878, - 106, - 5885 - ], - [ - 204, - 5877, - 207, - 5894 - ], - [ - 160, - 5882, - 162, - 5890 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/18a97c2fd5df4493b1473ac9b3f5fefd.jpeg", - "context_path": "contexts/183/context.json", - "id": 86405 - }, - { - "blk_list": [ - { - "text_bbox": [ - 81, - 973, - 373, - 1072 - ], - "bubble_bbox": [ - 36, - 886, - 418, - 1149 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 224, - 990, - 234, - 998 - ], - [ - 254, - 992, - 258, - 998 - ], - [ - 205, - 1018, - 220, - 1030 - ], - [ - 301, - 1018, - 311, - 1023 - ], - [ - 251, - 1020, - 255, - 1025 - ], - [ - 301, - 1025, - 311, - 1030 - ], - [ - 307, - 1044, - 317, - 1052 - ], - [ - 129, - 1045, - 138, - 1053 - ], - [ - 195, - 1045, - 205, - 1057 - ], - [ - 221, - 1045, - 231, - 1052 - ], - [ - 238, - 1045, - 247, - 1053 - ], - [ - 252, - 1045, - 268, - 1057 - ], - [ - 275, - 1045, - 284, - 1052 - ], - [ - 146, - 1047, - 150, - 1052 - ], - [ - 270, - 986, - 283, - 1006 - ], - [ - 150, - 987, - 162, - 1008 - ], - [ - 164, - 987, - 179, - 1007 - ], - [ - 188, - 988, - 204, - 1007 - ], - [ - 205, - 987, - 220, - 1007 - ], - [ - 221, - 987, - 237, - 1007 - ], - [ - 238, - 987, - 252, - 1007 - ], - [ - 250, - 987, - 263, - 1007 - ], - [ - 265, - 988, - 268, - 1007 - ], - [ - 285, - 987, - 296, - 1006 - ], - [ - 294, - 987, - 307, - 1007 - ], - [ - 114, - 1014, - 129, - 1034 - ], - [ - 130, - 1014, - 144, - 1034 - ], - [ - 145, - 1014, - 162, - 1034 - ], - [ - 163, - 1014, - 179, - 1033 - ], - [ - 188, - 1014, - 205, - 1034 - ], - [ - 202, - 1014, - 223, - 1034 - ], - [ - 234, - 1014, - 246, - 1035 - ], - [ - 246, - 1014, - 259, - 1034 - ], - [ - 260, - 1013, - 272, - 1034 - ], - [ - 273, - 1014, - 289, - 1034 - ], - [ - 315, - 1014, - 330, - 1034 - ], - [ - 332, - 1014, - 345, - 1034 - ], - [ - 347, - 1014, - 360, - 1033 - ], - [ - 96, - 1015, - 113, - 1034 - ], - [ - 298, - 1015, - 314, - 1034 - ], - [ - 108, - 1041, - 125, - 1061 - ], - [ - 126, - 1041, - 141, - 1061 - ], - [ - 141, - 1041, - 155, - 1061 - ], - [ - 157, - 1042, - 160, - 1061 - ], - [ - 162, - 1041, - 174, - 1061 - ], - [ - 176, - 1041, - 191, - 1061 - ], - [ - 193, - 1042, - 208, - 1061 - ], - [ - 219, - 1041, - 233, - 1061 - ], - [ - 235, - 1041, - 250, - 1061 - ], - [ - 250, - 1041, - 271, - 1061 - ], - [ - 272, - 1041, - 287, - 1061 - ], - [ - 288, - 1041, - 303, - 1061 - ], - [ - 304, - 1041, - 320, - 1062 - ], - [ - 322, - 1042, - 333, - 1060 - ], - [ - 331, - 1041, - 345, - 1061 - ], - [ - 342, - 1056, - 347, - 1061 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 16, - 1763, - 33, - 1816 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 20, - 1767, - 31, - 1773 - ], - [ - 20, - 1774, - 32, - 1784 - ], - [ - 18, - 1793, - 23, - 1810 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 35, - 1764, - 51, - 1803 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 37, - 1780, - 40, - 1785 - ], - [ - 41, - 1780, - 45, - 1785 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 70, - 3718, - 300, - 3797 - ], - "bubble_bbox": [ - 30, - 3626, - 341, - 3875 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 189, - 3733, - 200, - 3741 - ], - [ - 225, - 3733, - 235, - 3747 - ], - [ - 249, - 3733, - 259, - 3739 - ], - [ - 249, - 3741, - 260, - 3747 - ], - [ - 220, - 3762, - 230, - 3776 - ], - [ - 114, - 3728, - 119, - 3737 - ], - [ - 82, - 3729, - 95, - 3751 - ], - [ - 97, - 3729, - 113, - 3750 - ], - [ - 118, - 3730, - 137, - 3750 - ], - [ - 148, - 3730, - 151, - 3750 - ], - [ - 154, - 3729, - 167, - 3750 - ], - [ - 168, - 3729, - 185, - 3750 - ], - [ - 186, - 3729, - 203, - 3751 - ], - [ - 204, - 3729, - 220, - 3750 - ], - [ - 222, - 3730, - 238, - 3751 - ], - [ - 240, - 3730, - 244, - 3750 - ], - [ - 246, - 3730, - 263, - 3751 - ], - [ - 265, - 3730, - 277, - 3750 - ], - [ - 275, - 3729, - 289, - 3751 - ], - [ - 149, - 3758, - 165, - 3779 - ], - [ - 199, - 3758, - 215, - 3779 - ], - [ - 130, - 3759, - 147, - 3779 - ], - [ - 166, - 3759, - 170, - 3779 - ], - [ - 172, - 3759, - 185, - 3779 - ], - [ - 186, - 3759, - 198, - 3779 - ], - [ - 217, - 3759, - 234, - 3780 - ], - [ - 235, - 3774, - 240, - 3779 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 374, - 3853, - 612, - 3933 - ], - "bubble_bbox": [ - 327, - 3755, - 656, - 4012 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 470, - 3869, - 481, - 3875 - ], - [ - 521, - 3869, - 538, - 3882 - ], - [ - 563, - 3869, - 573, - 3882 - ], - [ - 470, - 3877, - 482, - 3883 - ], - [ - 566, - 3899, - 577, - 3913 - ], - [ - 432, - 3863, - 438, - 3873 - ], - [ - 504, - 3864, - 520, - 3886 - ], - [ - 544, - 3864, - 558, - 3886 - ], - [ - 408, - 3865, - 412, - 3887 - ], - [ - 413, - 3865, - 432, - 3887 - ], - [ - 437, - 3865, - 456, - 3887 - ], - [ - 467, - 3866, - 485, - 3887 - ], - [ - 486, - 3865, - 503, - 3887 - ], - [ - 518, - 3865, - 542, - 3887 - ], - [ - 560, - 3865, - 577, - 3887 - ], - [ - 385, - 3894, - 401, - 3917 - ], - [ - 466, - 3894, - 471, - 3904 - ], - [ - 492, - 3894, - 508, - 3916 - ], - [ - 588, - 3893, - 593, - 3904 - ], - [ - 593, - 3894, - 599, - 3904 - ], - [ - 401, - 3895, - 416, - 3917 - ], - [ - 418, - 3896, - 437, - 3917 - ], - [ - 435, - 3895, - 451, - 3917 - ], - [ - 472, - 3896, - 491, - 3917 - ], - [ - 510, - 3896, - 514, - 3917 - ], - [ - 516, - 3896, - 529, - 3917 - ], - [ - 531, - 3895, - 543, - 3916 - ], - [ - 545, - 3895, - 561, - 3917 - ], - [ - 563, - 3896, - 581, - 3917 - ], - [ - 461, - 3897, - 467, - 3907 - ], - [ - 582, - 3911, - 587, - 3916 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 174, - 4708, - 595, - 4844 - ], - "bubble_bbox": [ - 119, - 4597, - 640, - 4963 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 266, - 4729, - 277, - 4742 - ], - [ - 290, - 4729, - 301, - 4742 - ], - [ - 368, - 4729, - 383, - 4741 - ], - [ - 194, - 4757, - 204, - 4763 - ], - [ - 239, - 4757, - 249, - 4770 - ], - [ - 301, - 4757, - 316, - 4770 - ], - [ - 324, - 4757, - 334, - 4765 - ], - [ - 448, - 4757, - 464, - 4770 - ], - [ - 226, - 4759, - 230, - 4765 - ], - [ - 194, - 4764, - 204, - 4770 - ], - [ - 227, - 4785, - 237, - 4793 - ], - [ - 288, - 4785, - 304, - 4798 - ], - [ - 510, - 4785, - 526, - 4798 - ], - [ - 214, - 4787, - 218, - 4793 - ], - [ - 370, - 4787, - 374, - 4792 - ], - [ - 464, - 4787, - 468, - 4793 - ], - [ - 305, - 4725, - 319, - 4746 - ], - [ - 320, - 4724, - 325, - 4733 - ], - [ - 326, - 4725, - 343, - 4746 - ], - [ - 353, - 4725, - 367, - 4746 - ], - [ - 366, - 4725, - 385, - 4745 - ], - [ - 387, - 4725, - 400, - 4746 - ], - [ - 429, - 4725, - 445, - 4745 - ], - [ - 446, - 4725, - 461, - 4746 - ], - [ - 471, - 4725, - 484, - 4747 - ], - [ - 264, - 4726, - 280, - 4746 - ], - [ - 282, - 4726, - 285, - 4745 - ], - [ - 288, - 4726, - 304, - 4746 - ], - [ - 411, - 4726, - 428, - 4745 - ], - [ - 486, - 4726, - 489, - 4745 - ], - [ - 491, - 4726, - 509, - 4745 - ], - [ - 221, - 4753, - 234, - 4774 - ], - [ - 254, - 4753, - 270, - 4774 - ], - [ - 279, - 4753, - 299, - 4774 - ], - [ - 321, - 4753, - 338, - 4774 - ], - [ - 340, - 4752, - 369, - 4773 - ], - [ - 380, - 4753, - 392, - 4775 - ], - [ - 426, - 4753, - 444, - 4774 - ], - [ - 469, - 4752, - 482, - 4774 - ], - [ - 483, - 4753, - 498, - 4774 - ], - [ - 499, - 4753, - 517, - 4774 - ], - [ - 519, - 4753, - 534, - 4774 - ], - [ - 535, - 4753, - 548, - 4773 - ], - [ - 550, - 4753, - 564, - 4774 - ], - [ - 191, - 4754, - 207, - 4774 - ], - [ - 209, - 4754, - 220, - 4773 - ], - [ - 236, - 4754, - 252, - 4774 - ], - [ - 298, - 4754, - 320, - 4774 - ], - [ - 394, - 4754, - 397, - 4774 - ], - [ - 399, - 4754, - 417, - 4774 - ], - [ - 446, - 4754, - 467, - 4774 - ], - [ - 563, - 4754, - 581, - 4774 - ], - [ - 359, - 4769, - 364, - 4774 - ], - [ - 209, - 4781, - 223, - 4802 - ], - [ - 224, - 4781, - 241, - 4802 - ], - [ - 242, - 4781, - 258, - 4802 - ], - [ - 348, - 4781, - 364, - 4802 - ], - [ - 364, - 4781, - 379, - 4802 - ], - [ - 381, - 4781, - 394, - 4801 - ], - [ - 410, - 4781, - 427, - 4802 - ], - [ - 428, - 4780, - 433, - 4789 - ], - [ - 459, - 4781, - 473, - 4802 - ], - [ - 487, - 4781, - 506, - 4802 - ], - [ - 546, - 4781, - 561, - 4802 - ], - [ - 267, - 4782, - 285, - 4802 - ], - [ - 286, - 4782, - 307, - 4802 - ], - [ - 317, - 4782, - 334, - 4802 - ], - [ - 335, - 4782, - 347, - 4801 - ], - [ - 405, - 4782, - 408, - 4802 - ], - [ - 432, - 4782, - 450, - 4802 - ], - [ - 474, - 4782, - 486, - 4802 - ], - [ - 507, - 4782, - 529, - 4802 - ], - [ - 530, - 4782, - 548, - 4802 - ], - [ - 347, - 4809, - 361, - 4830 - ], - [ - 401, - 4809, - 414, - 4830 - ], - [ - 329, - 4810, - 346, - 4830 - ], - [ - 363, - 4810, - 366, - 4830 - ], - [ - 369, - 4810, - 381, - 4830 - ], - [ - 382, - 4810, - 394, - 4829 - ], - [ - 396, - 4810, - 399, - 4830 - ], - [ - 416, - 4810, - 435, - 4829 - ], - [ - 436, - 4824, - 441, - 4830 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 72, - 6289, - 228, - 6323 - ], - "bubble_bbox": [ - 72, - 6285, - 232, - 6330 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 88, - 6295, - 96, - 6320 - ], - [ - 107, - 6295, - 115, - 6320 - ], - [ - 117, - 6295, - 124, - 6319 - ], - [ - 126, - 6295, - 134, - 6319 - ], - [ - 136, - 6295, - 143, - 6319 - ], - [ - 145, - 6295, - 153, - 6319 - ], - [ - 154, - 6295, - 163, - 6319 - ], - [ - 165, - 6294, - 173, - 6319 - ], - [ - 175, - 6294, - 183, - 6319 - ], - [ - 189, - 6294, - 197, - 6319 - ], - [ - 199, - 6294, - 207, - 6318 - ], - [ - 209, - 6294, - 220, - 6318 - ], - [ - 78, - 6296, - 87, - 6320 - ], - [ - 98, - 6296, - 106, - 6320 - ], - [ - 91, - 6299, - 93, - 6316 - ], - [ - 101, - 6299, - 103, - 6306 - ], - [ - 202, - 6298, - 204, - 6315 - ], - [ - 157, - 6302, - 160, - 6311 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/018dab0f9da34d3d81c8d7865b2e9895.jpeg", - "context_path": "contexts/183/context.json", - "id": 86423 - }, - { - "blk_list": [ - { - "text_bbox": [ - 289, - 817, - 514, - 874 - ], - "bubble_bbox": [ - 250, - 737, - 557, - 945 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 358, - 836, - 364, - 845 - ], - [ - 303, - 828, - 330, - 857 - ], - [ - 331, - 828, - 350, - 858 - ], - [ - 352, - 828, - 370, - 857 - ], - [ - 461, - 827, - 505, - 857 - ], - [ - 369, - 829, - 394, - 857 - ], - [ - 408, - 829, - 413, - 857 - ], - [ - 415, - 829, - 440, - 857 - ], - [ - 455, - 829, - 459, - 857 - ], - [ - 491, - 850, - 498, - 857 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 276, - 2222, - 639, - 2364 - ], - "bubble_bbox": [ - 230, - 2126, - 685, - 2454 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 385, - 2239, - 395, - 2248 - ], - [ - 399, - 2240, - 416, - 2253 - ], - [ - 439, - 2240, - 456, - 2253 - ], - [ - 546, - 2240, - 556, - 2246 - ], - [ - 371, - 2242, - 375, - 2248 - ], - [ - 546, - 2247, - 557, - 2254 - ], - [ - 491, - 2269, - 502, - 2278 - ], - [ - 550, - 2270, - 565, - 2282 - ], - [ - 596, - 2269, - 607, - 2278 - ], - [ - 313, - 2272, - 317, - 2278 - ], - [ - 375, - 2272, - 379, - 2278 - ], - [ - 331, - 2299, - 341, - 2308 - ], - [ - 347, - 2300, - 364, - 2313 - ], - [ - 432, - 2300, - 442, - 2312 - ], - [ - 551, - 2299, - 567, - 2312 - ], - [ - 591, - 2299, - 601, - 2308 - ], - [ - 401, - 2301, - 405, - 2308 - ], - [ - 498, - 2302, - 502, - 2308 - ], - [ - 331, - 2329, - 341, - 2335 - ], - [ - 542, - 2329, - 553, - 2337 - ], - [ - 331, - 2337, - 342, - 2343 - ], - [ - 321, - 2235, - 340, - 2258 - ], - [ - 341, - 2236, - 356, - 2258 - ], - [ - 365, - 2235, - 380, - 2257 - ], - [ - 382, - 2236, - 398, - 2258 - ], - [ - 397, - 2236, - 420, - 2257 - ], - [ - 436, - 2236, - 459, - 2257 - ], - [ - 461, - 2235, - 482, - 2257 - ], - [ - 484, - 2236, - 488, - 2257 - ], - [ - 490, - 2236, - 505, - 2258 - ], - [ - 506, - 2236, - 525, - 2257 - ], - [ - 561, - 2236, - 576, - 2257 - ], - [ - 577, - 2236, - 596, - 2258 - ], - [ - 422, - 2237, - 435, - 2257 - ], - [ - 542, - 2237, - 560, - 2258 - ], - [ - 526, - 2251, - 531, - 2261 - ], - [ - 586, - 2264, - 591, - 2274 - ], - [ - 289, - 2265, - 307, - 2287 - ], - [ - 308, - 2265, - 323, - 2287 - ], - [ - 322, - 2265, - 338, - 2287 - ], - [ - 348, - 2265, - 360, - 2287 - ], - [ - 370, - 2265, - 385, - 2287 - ], - [ - 386, - 2266, - 404, - 2287 - ], - [ - 406, - 2265, - 422, - 2287 - ], - [ - 432, - 2265, - 453, - 2287 - ], - [ - 454, - 2265, - 468, - 2288 - ], - [ - 470, - 2266, - 486, - 2287 - ], - [ - 487, - 2266, - 505, - 2288 - ], - [ - 506, - 2266, - 523, - 2287 - ], - [ - 533, - 2266, - 548, - 2288 - ], - [ - 547, - 2266, - 568, - 2286 - ], - [ - 569, - 2266, - 584, - 2287 - ], - [ - 592, - 2266, - 610, - 2288 - ], - [ - 611, - 2266, - 628, - 2287 - ], - [ - 312, - 2295, - 327, - 2317 - ], - [ - 328, - 2296, - 344, - 2317 - ], - [ - 344, - 2296, - 367, - 2317 - ], - [ - 367, - 2295, - 386, - 2317 - ], - [ - 396, - 2295, - 411, - 2317 - ], - [ - 412, - 2295, - 426, - 2317 - ], - [ - 428, - 2296, - 445, - 2317 - ], - [ - 456, - 2295, - 476, - 2317 - ], - [ - 477, - 2295, - 491, - 2318 - ], - [ - 493, - 2295, - 507, - 2317 - ], - [ - 506, - 2295, - 525, - 2317 - ], - [ - 535, - 2295, - 550, - 2318 - ], - [ - 548, - 2296, - 569, - 2316 - ], - [ - 571, - 2296, - 585, - 2317 - ], - [ - 587, - 2296, - 605, - 2318 - ], - [ - 574, - 2324, - 589, - 2341 - ], - [ - 328, - 2326, - 345, - 2347 - ], - [ - 347, - 2325, - 362, - 2347 - ], - [ - 363, - 2326, - 381, - 2347 - ], - [ - 383, - 2326, - 387, - 2347 - ], - [ - 389, - 2325, - 403, - 2347 - ], - [ - 405, - 2325, - 422, - 2347 - ], - [ - 422, - 2326, - 441, - 2347 - ], - [ - 442, - 2325, - 460, - 2346 - ], - [ - 471, - 2326, - 475, - 2347 - ], - [ - 476, - 2326, - 495, - 2347 - ], - [ - 506, - 2325, - 519, - 2348 - ], - [ - 521, - 2325, - 537, - 2347 - ], - [ - 538, - 2325, - 556, - 2348 - ], - [ - 557, - 2325, - 574, - 2347 - ], - [ - 578, - 2342, - 584, - 2347 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 96, - 2570, - 361, - 2643 - ], - "bubble_bbox": [ - 58, - 2485, - 398, - 2719 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 143, - 2586, - 155, - 2596 - ], - [ - 179, - 2586, - 187, - 2592 - ], - [ - 230, - 2586, - 243, - 2597 - ], - [ - 250, - 2586, - 258, - 2592 - ], - [ - 265, - 2586, - 272, - 2593 - ], - [ - 131, - 2610, - 139, - 2620 - ], - [ - 145, - 2610, - 158, - 2620 - ], - [ - 297, - 2609, - 305, - 2616 - ], - [ - 205, - 2611, - 208, - 2616 - ], - [ - 171, - 2582, - 175, - 2590 - ], - [ - 341, - 2582, - 351, - 2600 - ], - [ - 105, - 2583, - 108, - 2600 - ], - [ - 111, - 2583, - 122, - 2600 - ], - [ - 130, - 2583, - 142, - 2601 - ], - [ - 141, - 2583, - 157, - 2599 - ], - [ - 158, - 2583, - 170, - 2600 - ], - [ - 176, - 2583, - 190, - 2601 - ], - [ - 191, - 2583, - 204, - 2600 - ], - [ - 212, - 2583, - 227, - 2600 - ], - [ - 228, - 2583, - 246, - 2600 - ], - [ - 247, - 2583, - 261, - 2601 - ], - [ - 262, - 2583, - 275, - 2600 - ], - [ - 276, - 2583, - 288, - 2600 - ], - [ - 298, - 2583, - 313, - 2600 - ], - [ - 313, - 2583, - 325, - 2601 - ], - [ - 326, - 2583, - 339, - 2600 - ], - [ - 286, - 2594, - 290, - 2603 - ], - [ - 162, - 2606, - 173, - 2623 - ], - [ - 174, - 2605, - 179, - 2613 - ], - [ - 179, - 2606, - 194, - 2624 - ], - [ - 201, - 2606, - 212, - 2623 - ], - [ - 229, - 2606, - 242, - 2623 - ], - [ - 262, - 2606, - 277, - 2624 - ], - [ - 278, - 2606, - 293, - 2623 - ], - [ - 308, - 2606, - 320, - 2624 - ], - [ - 323, - 2605, - 330, - 2618 - ], - [ - 129, - 2607, - 142, - 2624 - ], - [ - 142, - 2607, - 160, - 2623 - ], - [ - 213, - 2607, - 228, - 2623 - ], - [ - 295, - 2607, - 307, - 2624 - ], - [ - 242, - 2613, - 254, - 2617 - ], - [ - 321, - 2619, - 325, - 2623 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 371, - 2751, - 603, - 2845 - ], - "bubble_bbox": [ - 328, - 2679, - 647, - 2904 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 446, - 2766, - 459, - 2777 - ], - [ - 522, - 2766, - 534, - 2777 - ], - [ - 542, - 2767, - 562, - 2783 - ], - [ - 430, - 2804, - 451, - 2820 - ], - [ - 433, - 2760, - 440, - 2772 - ], - [ - 385, - 2761, - 410, - 2789 - ], - [ - 411, - 2762, - 432, - 2788 - ], - [ - 441, - 2762, - 463, - 2789 - ], - [ - 464, - 2762, - 485, - 2788 - ], - [ - 499, - 2762, - 516, - 2788 - ], - [ - 518, - 2762, - 538, - 2788 - ], - [ - 538, - 2762, - 567, - 2788 - ], - [ - 567, - 2761, - 590, - 2788 - ], - [ - 458, - 2798, - 474, - 2826 - ], - [ - 498, - 2798, - 516, - 2826 - ], - [ - 519, - 2798, - 536, - 2825 - ], - [ - 403, - 2799, - 426, - 2825 - ], - [ - 427, - 2799, - 456, - 2825 - ], - [ - 477, - 2799, - 497, - 2825 - ], - [ - 538, - 2799, - 563, - 2825 - ], - [ - 565, - 2818, - 571, - 2825 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 258, - 3518, - 571, - 3621 - ], - "bubble_bbox": [ - 200, - 3430, - 626, - 3709 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 356, - 3536, - 366, - 3543 - ], - [ - 411, - 3536, - 426, - 3548 - ], - [ - 447, - 3536, - 456, - 3547 - ], - [ - 541, - 3536, - 551, - 3548 - ], - [ - 474, - 3538, - 477, - 3544 - ], - [ - 527, - 3538, - 531, - 3542 - ], - [ - 279, - 3563, - 289, - 3568 - ], - [ - 373, - 3563, - 383, - 3570 - ], - [ - 504, - 3563, - 513, - 3576 - ], - [ - 537, - 3563, - 547, - 3576 - ], - [ - 418, - 3565, - 422, - 3571 - ], - [ - 279, - 3570, - 290, - 3576 - ], - [ - 335, - 3590, - 345, - 3598 - ], - [ - 419, - 3590, - 428, - 3596 - ], - [ - 312, - 3591, - 328, - 3603 - ], - [ - 436, - 3592, - 440, - 3598 - ], - [ - 463, - 3591, - 478, - 3603 - ], - [ - 419, - 3597, - 429, - 3603 - ], - [ - 273, - 3532, - 292, - 3552 - ], - [ - 292, - 3532, - 308, - 3552 - ], - [ - 317, - 3532, - 336, - 3552 - ], - [ - 337, - 3532, - 352, - 3552 - ], - [ - 353, - 3532, - 369, - 3553 - ], - [ - 370, - 3532, - 385, - 3552 - ], - [ - 394, - 3532, - 411, - 3552 - ], - [ - 408, - 3532, - 429, - 3552 - ], - [ - 444, - 3532, - 460, - 3552 - ], - [ - 469, - 3532, - 482, - 3552 - ], - [ - 492, - 3532, - 504, - 3553 - ], - [ - 506, - 3532, - 521, - 3552 - ], - [ - 521, - 3532, - 536, - 3552 - ], - [ - 431, - 3533, - 443, - 3552 - ], - [ - 538, - 3533, - 554, - 3552 - ], - [ - 276, - 3560, - 292, - 3580 - ], - [ - 294, - 3560, - 307, - 3580 - ], - [ - 308, - 3560, - 325, - 3580 - ], - [ - 323, - 3559, - 339, - 3579 - ], - [ - 340, - 3559, - 352, - 3580 - ], - [ - 354, - 3560, - 369, - 3579 - ], - [ - 370, - 3560, - 386, - 3580 - ], - [ - 396, - 3559, - 415, - 3580 - ], - [ - 413, - 3559, - 426, - 3579 - ], - [ - 427, - 3560, - 444, - 3579 - ], - [ - 454, - 3559, - 467, - 3579 - ], - [ - 469, - 3560, - 484, - 3579 - ], - [ - 485, - 3559, - 499, - 3580 - ], - [ - 501, - 3560, - 517, - 3580 - ], - [ - 518, - 3560, - 533, - 3579 - ], - [ - 535, - 3560, - 550, - 3580 - ], - [ - 376, - 3586, - 389, - 3607 - ], - [ - 447, - 3586, - 459, - 3606 - ], - [ - 297, - 3587, - 311, - 3607 - ], - [ - 309, - 3587, - 331, - 3607 - ], - [ - 332, - 3587, - 348, - 3607 - ], - [ - 358, - 3587, - 375, - 3607 - ], - [ - 391, - 3587, - 406, - 3607 - ], - [ - 416, - 3588, - 432, - 3607 - ], - [ - 432, - 3587, - 445, - 3607 - ], - [ - 461, - 3587, - 480, - 3607 - ], - [ - 482, - 3587, - 495, - 3607 - ], - [ - 497, - 3587, - 511, - 3607 - ], - [ - 512, - 3587, - 529, - 3607 - ], - [ - 525, - 3601, - 530, - 3606 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/d1d396780e2b4eb987ea954139154c30.jpeg", - "context_path": "contexts/183/context.json", - "id": 86418 - }, - { - "blk_list": [ - { - "text_bbox": [ - 71, - 705, - 533, - 830 - ], - "bubble_bbox": [ - 44, - 562, - 566, - 964 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 275, - 724, - 281, - 730 - ], - [ - 367, - 725, - 379, - 734 - ], - [ - 116, - 745, - 122, - 751 - ], - [ - 139, - 746, - 146, - 750 - ], - [ - 152, - 745, - 158, - 749 - ], - [ - 220, - 746, - 228, - 755 - ], - [ - 234, - 745, - 241, - 752 - ], - [ - 386, - 746, - 398, - 755 - ], - [ - 414, - 746, - 421, - 754 - ], - [ - 498, - 745, - 505, - 751 - ], - [ - 139, - 751, - 146, - 755 - ], - [ - 152, - 751, - 159, - 755 - ], - [ - 192, - 766, - 199, - 771 - ], - [ - 412, - 766, - 419, - 773 - ], - [ - 496, - 766, - 503, - 772 - ], - [ - 162, - 767, - 173, - 776 - ], - [ - 289, - 767, - 297, - 771 - ], - [ - 303, - 767, - 315, - 776 - ], - [ - 478, - 767, - 490, - 776 - ], - [ - 509, - 767, - 516, - 775 - ], - [ - 289, - 772, - 297, - 776 - ], - [ - 345, - 788, - 352, - 797 - ], - [ - 402, - 788, - 414, - 797 - ], - [ - 420, - 788, - 427, - 793 - ], - [ - 313, - 808, - 320, - 814 - ], - [ - 237, - 809, - 243, - 814 - ], - [ - 254, - 809, - 261, - 818 - ], - [ - 284, - 809, - 295, - 818 - ], - [ - 211, - 721, - 220, - 737 - ], - [ - 227, - 721, - 242, - 737 - ], - [ - 241, - 721, - 251, - 737 - ], - [ - 252, - 722, - 265, - 737 - ], - [ - 272, - 722, - 284, - 737 - ], - [ - 285, - 722, - 293, - 737 - ], - [ - 294, - 721, - 304, - 737 - ], - [ - 305, - 721, - 315, - 737 - ], - [ - 316, - 721, - 326, - 737 - ], - [ - 328, - 722, - 330, - 737 - ], - [ - 332, - 721, - 342, - 737 - ], - [ - 343, - 722, - 358, - 737 - ], - [ - 365, - 722, - 381, - 737 - ], - [ - 383, - 721, - 393, - 737 - ], - [ - 125, - 742, - 135, - 758 - ], - [ - 168, - 742, - 177, - 758 - ], - [ - 200, - 742, - 210, - 758 - ], - [ - 249, - 742, - 259, - 758 - ], - [ - 260, - 742, - 272, - 758 - ], - [ - 279, - 742, - 294, - 758 - ], - [ - 312, - 742, - 322, - 759 - ], - [ - 343, - 742, - 353, - 759 - ], - [ - 354, - 742, - 365, - 758 - ], - [ - 431, - 742, - 447, - 757 - ], - [ - 460, - 742, - 471, - 758 - ], - [ - 97, - 743, - 112, - 758 - ], - [ - 113, - 743, - 125, - 758 - ], - [ - 137, - 743, - 149, - 758 - ], - [ - 150, - 743, - 162, - 758 - ], - [ - 163, - 743, - 166, - 758 - ], - [ - 178, - 743, - 193, - 758 - ], - [ - 218, - 743, - 230, - 758 - ], - [ - 232, - 743, - 243, - 758 - ], - [ - 245, - 743, - 247, - 758 - ], - [ - 294, - 743, - 297, - 758 - ], - [ - 298, - 743, - 311, - 758 - ], - [ - 329, - 743, - 343, - 758 - ], - [ - 364, - 743, - 377, - 758 - ], - [ - 384, - 743, - 400, - 758 - ], - [ - 402, - 743, - 411, - 758 - ], - [ - 412, - 743, - 424, - 758 - ], - [ - 448, - 743, - 459, - 758 - ], - [ - 472, - 743, - 482, - 759 - ], - [ - 483, - 743, - 494, - 758 - ], - [ - 495, - 743, - 508, - 759 - ], - [ - 86, - 763, - 100, - 779 - ], - [ - 101, - 763, - 111, - 780 - ], - [ - 113, - 764, - 116, - 779 - ], - [ - 128, - 764, - 139, - 779 - ], - [ - 146, - 764, - 158, - 779 - ], - [ - 159, - 764, - 176, - 779 - ], - [ - 176, - 763, - 189, - 779 - ], - [ - 190, - 764, - 202, - 779 - ], - [ - 202, - 764, - 222, - 779 - ], - [ - 224, - 764, - 226, - 779 - ], - [ - 228, - 763, - 238, - 779 - ], - [ - 239, - 764, - 242, - 779 - ], - [ - 244, - 763, - 254, - 779 - ], - [ - 254, - 764, - 269, - 779 - ], - [ - 276, - 763, - 286, - 779 - ], - [ - 287, - 764, - 300, - 779 - ], - [ - 301, - 764, - 317, - 779 - ], - [ - 318, - 763, - 329, - 779 - ], - [ - 329, - 764, - 343, - 779 - ], - [ - 349, - 764, - 362, - 779 - ], - [ - 363, - 763, - 373, - 780 - ], - [ - 375, - 764, - 386, - 779 - ], - [ - 393, - 763, - 409, - 779 - ], - [ - 410, - 764, - 422, - 779 - ], - [ - 422, - 764, - 434, - 779 - ], - [ - 434, - 764, - 446, - 779 - ], - [ - 445, - 764, - 459, - 779 - ], - [ - 466, - 764, - 475, - 779 - ], - [ - 476, - 764, - 492, - 779 - ], - [ - 493, - 764, - 506, - 780 - ], - [ - 507, - 764, - 519, - 779 - ], - [ - 117, - 765, - 126, - 779 - ], - [ - 121, - 784, - 145, - 800 - ], - [ - 164, - 784, - 173, - 800 - ], - [ - 196, - 784, - 210, - 800 - ], - [ - 302, - 784, - 312, - 800 - ], - [ - 319, - 784, - 331, - 800 - ], - [ - 451, - 784, - 461, - 801 - ], - [ - 146, - 785, - 158, - 800 - ], - [ - 159, - 785, - 162, - 800 - ], - [ - 174, - 785, - 189, - 800 - ], - [ - 211, - 785, - 223, - 800 - ], - [ - 229, - 785, - 240, - 800 - ], - [ - 240, - 785, - 253, - 800 - ], - [ - 253, - 785, - 264, - 800 - ], - [ - 271, - 785, - 281, - 800 - ], - [ - 282, - 785, - 295, - 800 - ], - [ - 330, - 785, - 341, - 800 - ], - [ - 343, - 785, - 355, - 800 - ], - [ - 355, - 785, - 370, - 800 - ], - [ - 371, - 785, - 383, - 800 - ], - [ - 390, - 785, - 401, - 800 - ], - [ - 400, - 785, - 416, - 800 - ], - [ - 417, - 785, - 430, - 801 - ], - [ - 437, - 785, - 450, - 800 - ], - [ - 462, - 785, - 472, - 800 - ], - [ - 471, - 785, - 484, - 800 - ], - [ - 199, - 806, - 212, - 821 - ], - [ - 211, - 806, - 222, - 821 - ], - [ - 222, - 806, - 233, - 821 - ], - [ - 234, - 806, - 246, - 821 - ], - [ - 247, - 806, - 250, - 821 - ], - [ - 252, - 806, - 264, - 821 - ], - [ - 271, - 806, - 284, - 822 - ], - [ - 282, - 806, - 298, - 821 - ], - [ - 299, - 805, - 309, - 821 - ], - [ - 311, - 806, - 323, - 822 - ], - [ - 324, - 805, - 334, - 821 - ], - [ - 335, - 806, - 345, - 821 - ], - [ - 346, - 805, - 359, - 821 - ], - [ - 360, - 806, - 372, - 821 - ], - [ - 373, - 805, - 382, - 821 - ], - [ - 383, - 806, - 395, - 821 - ], - [ - 392, - 817, - 396, - 821 - ], - [ - 397, - 817, - 401, - 821 - ], - [ - 402, - 817, - 406, - 821 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 344, - 1883, - 613, - 2060 - ], - "bubble_bbox": [ - 280, - 1864, - 678, - 2074 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 398, - 1898, - 402, - 1912 - ], - [ - 437, - 1898, - 441, - 1912 - ], - [ - 396, - 1929, - 399, - 1937 - ], - [ - 434, - 1930, - 437, - 1937 - ], - [ - 542, - 1971, - 553, - 2010 - ], - [ - 405, - 1977, - 412, - 2000 - ], - [ - 572, - 1988, - 576, - 1993 - ], - [ - 464, - 2032, - 468, - 2047 - ], - [ - 488, - 2032, - 492, - 2047 - ], - [ - 537, - 2036, - 539, - 2043 - ], - [ - 395, - 1895, - 405, - 1915 - ], - [ - 407, - 1895, - 417, - 1915 - ], - [ - 419, - 1895, - 428, - 1915 - ], - [ - 434, - 1895, - 444, - 1915 - ], - [ - 446, - 1895, - 455, - 1915 - ], - [ - 460, - 1895, - 470, - 1915 - ], - [ - 471, - 1895, - 481, - 1915 - ], - [ - 483, - 1895, - 492, - 1915 - ], - [ - 498, - 1895, - 502, - 1902 - ], - [ - 502, - 1895, - 506, - 1902 - ], - [ - 507, - 1895, - 516, - 1915 - ], - [ - 518, - 1895, - 528, - 1915 - ], - [ - 530, - 1895, - 540, - 1915 - ], - [ - 542, - 1895, - 550, - 1915 - ], - [ - 551, - 1895, - 560, - 1915 - ], - [ - 378, - 1923, - 391, - 1943 - ], - [ - 392, - 1923, - 403, - 1943 - ], - [ - 404, - 1923, - 414, - 1943 - ], - [ - 415, - 1923, - 425, - 1943 - ], - [ - 426, - 1923, - 429, - 1943 - ], - [ - 431, - 1923, - 441, - 1943 - ], - [ - 442, - 1923, - 451, - 1943 - ], - [ - 457, - 1923, - 466, - 1943 - ], - [ - 467, - 1923, - 477, - 1943 - ], - [ - 479, - 1923, - 489, - 1943 - ], - [ - 491, - 1923, - 499, - 1943 - ], - [ - 501, - 1923, - 511, - 1943 - ], - [ - 513, - 1923, - 522, - 1943 - ], - [ - 523, - 1923, - 533, - 1943 - ], - [ - 535, - 1923, - 538, - 1943 - ], - [ - 540, - 1923, - 550, - 1943 - ], - [ - 552, - 1923, - 562, - 1943 - ], - [ - 568, - 1923, - 572, - 1930 - ], - [ - 572, - 1923, - 576, - 1930 - ], - [ - 563, - 1939, - 567, - 1945 - ], - [ - 365, - 1965, - 391, - 2016 - ], - [ - 395, - 1965, - 422, - 2016 - ], - [ - 426, - 1965, - 452, - 2016 - ], - [ - 458, - 1965, - 484, - 2016 - ], - [ - 503, - 1965, - 529, - 2016 - ], - [ - 535, - 1965, - 561, - 2016 - ], - [ - 566, - 1965, - 593, - 2016 - ], - [ - 388, - 2029, - 394, - 2052 - ], - [ - 395, - 2030, - 405, - 2050 - ], - [ - 406, - 2029, - 416, - 2050 - ], - [ - 418, - 2029, - 426, - 2050 - ], - [ - 433, - 2030, - 443, - 2049 - ], - [ - 444, - 2029, - 459, - 2050 - ], - [ - 461, - 2030, - 471, - 2049 - ], - [ - 473, - 2030, - 483, - 2050 - ], - [ - 485, - 2030, - 495, - 2049 - ], - [ - 502, - 2029, - 510, - 2050 - ], - [ - 511, - 2030, - 521, - 2050 - ], - [ - 523, - 2029, - 532, - 2049 - ], - [ - 533, - 2029, - 543, - 2049 - ], - [ - 545, - 2029, - 555, - 2050 - ], - [ - 555, - 2029, - 561, - 2052 - ], - [ - 563, - 2046, - 566, - 2050 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 96, - 2283, - 531, - 2463 - ], - "bubble_bbox": [ - 24, - 2163, - 602, - 2572 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 216, - 2305, - 227, - 2314 - ], - [ - 334, - 2305, - 346, - 2320 - ], - [ - 353, - 2305, - 370, - 2319 - ], - [ - 270, - 2307, - 275, - 2313 - ], - [ - 285, - 2337, - 302, - 2351 - ], - [ - 353, - 2336, - 364, - 2345 - ], - [ - 373, - 2337, - 384, - 2350 - ], - [ - 165, - 2339, - 170, - 2345 - ], - [ - 338, - 2338, - 342, - 2345 - ], - [ - 306, - 2367, - 317, - 2376 - ], - [ - 115, - 2368, - 132, - 2382 - ], - [ - 157, - 2368, - 167, - 2381 - ], - [ - 269, - 2368, - 287, - 2382 - ], - [ - 363, - 2368, - 380, - 2382 - ], - [ - 466, - 2368, - 476, - 2381 - ], - [ - 504, - 2368, - 515, - 2382 - ], - [ - 208, - 2370, - 212, - 2377 - ], - [ - 293, - 2399, - 304, - 2408 - ], - [ - 209, - 2430, - 220, - 2437 - ], - [ - 272, - 2431, - 290, - 2445 - ], - [ - 299, - 2430, - 309, - 2439 - ], - [ - 344, - 2431, - 362, - 2445 - ], - [ - 209, - 2438, - 221, - 2445 - ], - [ - 392, - 2299, - 398, - 2310 - ], - [ - 213, - 2301, - 230, - 2324 - ], - [ - 231, - 2301, - 244, - 2323 - ], - [ - 246, - 2301, - 263, - 2324 - ], - [ - 263, - 2301, - 280, - 2324 - ], - [ - 302, - 2301, - 319, - 2324 - ], - [ - 350, - 2301, - 374, - 2324 - ], - [ - 376, - 2300, - 390, - 2323 - ], - [ - 399, - 2301, - 418, - 2324 - ], - [ - 281, - 2302, - 300, - 2324 - ], - [ - 331, - 2302, - 349, - 2324 - ], - [ - 144, - 2332, - 163, - 2355 - ], - [ - 160, - 2332, - 175, - 2355 - ], - [ - 177, - 2333, - 195, - 2355 - ], - [ - 197, - 2332, - 214, - 2355 - ], - [ - 226, - 2333, - 230, - 2355 - ], - [ - 231, - 2332, - 251, - 2355 - ], - [ - 261, - 2333, - 281, - 2355 - ], - [ - 282, - 2333, - 306, - 2355 - ], - [ - 318, - 2332, - 332, - 2356 - ], - [ - 333, - 2332, - 348, - 2355 - ], - [ - 349, - 2332, - 368, - 2356 - ], - [ - 370, - 2333, - 388, - 2355 - ], - [ - 405, - 2333, - 425, - 2355 - ], - [ - 427, - 2333, - 430, - 2355 - ], - [ - 433, - 2332, - 448, - 2355 - ], - [ - 449, - 2332, - 467, - 2354 - ], - [ - 468, - 2332, - 486, - 2355 - ], - [ - 388, - 2349, - 394, - 2355 - ], - [ - 182, - 2363, - 202, - 2386 - ], - [ - 203, - 2363, - 218, - 2386 - ], - [ - 220, - 2363, - 234, - 2386 - ], - [ - 384, - 2363, - 403, - 2386 - ], - [ - 404, - 2363, - 425, - 2386 - ], - [ - 446, - 2363, - 460, - 2386 - ], - [ - 112, - 2364, - 136, - 2386 - ], - [ - 138, - 2365, - 152, - 2386 - ], - [ - 153, - 2364, - 171, - 2386 - ], - [ - 246, - 2364, - 265, - 2386 - ], - [ - 266, - 2364, - 291, - 2386 - ], - [ - 302, - 2364, - 321, - 2387 - ], - [ - 322, - 2364, - 339, - 2386 - ], - [ - 340, - 2364, - 358, - 2386 - ], - [ - 360, - 2364, - 384, - 2386 - ], - [ - 427, - 2364, - 444, - 2386 - ], - [ - 462, - 2364, - 480, - 2386 - ], - [ - 481, - 2364, - 499, - 2386 - ], - [ - 500, - 2364, - 518, - 2387 - ], - [ - 132, - 2395, - 152, - 2418 - ], - [ - 153, - 2394, - 168, - 2418 - ], - [ - 170, - 2395, - 187, - 2417 - ], - [ - 188, - 2394, - 208, - 2418 - ], - [ - 226, - 2395, - 246, - 2418 - ], - [ - 247, - 2394, - 262, - 2418 - ], - [ - 264, - 2395, - 281, - 2417 - ], - [ - 289, - 2395, - 308, - 2419 - ], - [ - 340, - 2394, - 357, - 2417 - ], - [ - 380, - 2395, - 393, - 2417 - ], - [ - 424, - 2394, - 444, - 2418 - ], - [ - 446, - 2395, - 461, - 2418 - ], - [ - 481, - 2395, - 498, - 2418 - ], - [ - 283, - 2396, - 287, - 2418 - ], - [ - 319, - 2396, - 338, - 2418 - ], - [ - 359, - 2396, - 362, - 2418 - ], - [ - 365, - 2396, - 378, - 2418 - ], - [ - 394, - 2396, - 414, - 2417 - ], - [ - 463, - 2396, - 482, - 2417 - ], - [ - 210, - 2410, - 214, - 2421 - ], - [ - 206, - 2427, - 224, - 2449 - ], - [ - 226, - 2426, - 243, - 2449 - ], - [ - 253, - 2426, - 273, - 2449 - ], - [ - 269, - 2427, - 294, - 2449 - ], - [ - 296, - 2427, - 313, - 2449 - ], - [ - 325, - 2426, - 339, - 2449 - ], - [ - 341, - 2427, - 366, - 2449 - ], - [ - 367, - 2426, - 386, - 2449 - ], - [ - 384, - 2426, - 402, - 2448 - ], - [ - 404, - 2426, - 417, - 2450 - ], - [ - 314, - 2435, - 323, - 2440 - ], - [ - 419, - 2443, - 424, - 2449 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 58, - 3379, - 268, - 3418 - ], - "bubble_bbox": [ - 42, - 3351, - 285, - 3448 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 112, - 3392, - 116, - 3406 - ], - [ - 135, - 3392, - 139, - 3406 - ], - [ - 239, - 3392, - 242, - 3406 - ], - [ - 90, - 3395, - 93, - 3402 - ], - [ - 179, - 3395, - 182, - 3402 - ], - [ - 64, - 3389, - 74, - 3408 - ], - [ - 76, - 3389, - 85, - 3408 - ], - [ - 86, - 3389, - 96, - 3408 - ], - [ - 98, - 3389, - 108, - 3409 - ], - [ - 109, - 3389, - 119, - 3408 - ], - [ - 121, - 3389, - 130, - 3408 - ], - [ - 132, - 3389, - 142, - 3408 - ], - [ - 144, - 3389, - 153, - 3409 - ], - [ - 165, - 3389, - 175, - 3409 - ], - [ - 176, - 3389, - 186, - 3409 - ], - [ - 187, - 3389, - 197, - 3409 - ], - [ - 199, - 3389, - 208, - 3408 - ], - [ - 214, - 3389, - 225, - 3409 - ], - [ - 226, - 3389, - 234, - 3408 - ], - [ - 236, - 3389, - 245, - 3408 - ], - [ - 247, - 3389, - 257, - 3409 - ], - [ - 155, - 3405, - 158, - 3410 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 178, - 3780, - 573, - 3912 - ], - "bubble_bbox": [ - 138, - 3664, - 614, - 4011 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 262, - 3802, - 276, - 3813 - ], - [ - 305, - 3802, - 315, - 3807 - ], - [ - 323, - 3802, - 332, - 3810 - ], - [ - 397, - 3802, - 411, - 3813 - ], - [ - 340, - 3804, - 343, - 3809 - ], - [ - 305, - 3809, - 315, - 3815 - ], - [ - 209, - 3829, - 223, - 3840 - ], - [ - 244, - 3828, - 254, - 3836 - ], - [ - 290, - 3828, - 299, - 3836 - ], - [ - 334, - 3829, - 343, - 3840 - ], - [ - 420, - 3828, - 430, - 3836 - ], - [ - 307, - 3831, - 311, - 3836 - ], - [ - 362, - 3831, - 366, - 3836 - ], - [ - 478, - 3831, - 482, - 3836 - ], - [ - 419, - 3855, - 428, - 3860 - ], - [ - 469, - 3857, - 472, - 3863 - ], - [ - 419, - 3862, - 428, - 3868 - ], - [ - 278, - 3882, - 292, - 3894 - ], - [ - 340, - 3882, - 354, - 3894 - ], - [ - 439, - 3884, - 442, - 3888 - ], - [ - 366, - 3797, - 374, - 3811 - ], - [ - 247, - 3798, - 261, - 3818 - ], - [ - 260, - 3798, - 278, - 3817 - ], - [ - 279, - 3799, - 293, - 3818 - ], - [ - 303, - 3799, - 318, - 3818 - ], - [ - 320, - 3799, - 335, - 3818 - ], - [ - 335, - 3798, - 348, - 3818 - ], - [ - 347, - 3798, - 364, - 3818 - ], - [ - 382, - 3798, - 396, - 3818 - ], - [ - 395, - 3798, - 413, - 3817 - ], - [ - 414, - 3799, - 428, - 3818 - ], - [ - 437, - 3798, - 454, - 3818 - ], - [ - 455, - 3798, - 467, - 3818 - ], - [ - 470, - 3799, - 473, - 3818 - ], - [ - 475, - 3798, - 487, - 3818 - ], - [ - 490, - 3798, - 504, - 3817 - ], - [ - 364, - 3813, - 369, - 3818 - ], - [ - 195, - 3825, - 208, - 3845 - ], - [ - 207, - 3825, - 226, - 3844 - ], - [ - 227, - 3825, - 240, - 3844 - ], - [ - 241, - 3825, - 257, - 3845 - ], - [ - 267, - 3825, - 286, - 3844 - ], - [ - 287, - 3825, - 302, - 3844 - ], - [ - 302, - 3825, - 315, - 3844 - ], - [ - 317, - 3825, - 329, - 3844 - ], - [ - 331, - 3825, - 346, - 3844 - ], - [ - 347, - 3825, - 360, - 3844 - ], - [ - 357, - 3825, - 371, - 3844 - ], - [ - 370, - 3825, - 386, - 3845 - ], - [ - 387, - 3825, - 400, - 3845 - ], - [ - 402, - 3825, - 416, - 3844 - ], - [ - 417, - 3825, - 433, - 3845 - ], - [ - 473, - 3825, - 486, - 3844 - ], - [ - 503, - 3825, - 517, - 3844 - ], - [ - 524, - 3825, - 537, - 3844 - ], - [ - 538, - 3825, - 556, - 3844 - ], - [ - 444, - 3826, - 447, - 3844 - ], - [ - 448, - 3826, - 465, - 3844 - ], - [ - 487, - 3826, - 503, - 3844 - ], - [ - 519, - 3826, - 522, - 3845 - ], - [ - 303, - 3851, - 316, - 3872 - ], - [ - 348, - 3851, - 362, - 3871 - ], - [ - 464, - 3851, - 477, - 3871 - ], - [ - 478, - 3851, - 491, - 3871 - ], - [ - 227, - 3853, - 238, - 3871 - ], - [ - 240, - 3852, - 243, - 3871 - ], - [ - 246, - 3852, - 260, - 3871 - ], - [ - 262, - 3852, - 277, - 3871 - ], - [ - 285, - 3852, - 302, - 3871 - ], - [ - 318, - 3852, - 321, - 3871 - ], - [ - 323, - 3852, - 340, - 3871 - ], - [ - 362, - 3852, - 376, - 3871 - ], - [ - 377, - 3852, - 393, - 3871 - ], - [ - 392, - 3852, - 406, - 3871 - ], - [ - 416, - 3852, - 432, - 3871 - ], - [ - 433, - 3852, - 464, - 3871 - ], - [ - 493, - 3852, - 509, - 3871 - ], - [ - 510, - 3852, - 525, - 3871 - ], - [ - 446, - 3877, - 477, - 3898 - ], - [ - 275, - 3879, - 295, - 3897 - ], - [ - 297, - 3878, - 310, - 3898 - ], - [ - 319, - 3879, - 336, - 3898 - ], - [ - 337, - 3878, - 357, - 3897 - ], - [ - 357, - 3878, - 374, - 3898 - ], - [ - 376, - 3878, - 390, - 3897 - ], - [ - 400, - 3878, - 416, - 3898 - ], - [ - 418, - 3878, - 433, - 3897 - ], - [ - 433, - 3878, - 447, - 3898 - ], - [ - 467, - 3893, - 472, - 3898 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 136, - 4759, - 388, - 4843 - ], - "bubble_bbox": [ - 86, - 4677, - 438, - 4929 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 333, - 4777, - 351, - 4791 - ], - [ - 205, - 4812, - 209, - 4819 - ], - [ - 274, - 4770, - 280, - 4781 - ], - [ - 148, - 4772, - 166, - 4796 - ], - [ - 168, - 4772, - 182, - 4797 - ], - [ - 183, - 4771, - 200, - 4789 - ], - [ - 219, - 4772, - 235, - 4796 - ], - [ - 253, - 4772, - 273, - 4796 - ], - [ - 313, - 4772, - 327, - 4796 - ], - [ - 356, - 4772, - 377, - 4796 - ], - [ - 213, - 4773, - 216, - 4796 - ], - [ - 248, - 4773, - 251, - 4796 - ], - [ - 280, - 4773, - 300, - 4796 - ], - [ - 330, - 4773, - 355, - 4796 - ], - [ - 188, - 4790, - 194, - 4796 - ], - [ - 346, - 4804, - 363, - 4822 - ], - [ - 161, - 4805, - 181, - 4829 - ], - [ - 182, - 4805, - 198, - 4830 - ], - [ - 199, - 4805, - 215, - 4829 - ], - [ - 214, - 4805, - 235, - 4829 - ], - [ - 247, - 4805, - 268, - 4829 - ], - [ - 269, - 4805, - 285, - 4830 - ], - [ - 287, - 4805, - 305, - 4829 - ], - [ - 307, - 4805, - 322, - 4829 - ], - [ - 230, - 4821, - 235, - 4832 - ], - [ - 324, - 4823, - 330, - 4829 - ], - [ - 332, - 4823, - 337, - 4829 - ], - [ - 339, - 4823, - 345, - 4829 - ], - [ - 351, - 4823, - 356, - 4829 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I WAS PLANNING ON GRABBING A DRINK WITH THAT OLD GEEZER WHILE COMPLAINING ABOUT THE GREAT LORD MAKING ME ACT AS A JUDGE FOR THAT STUPID TOURNAMENT ...\",\n \"block_1\": \"ONE OF THE \\\"THREE MARTIAL ECCENTRICS,\\\" HAHU GUK (THE SWORD FREAK).\",\n \"block_2\": \"PLEASE DON'T TAKE IT SO HARD. SINCE OLD MAN SO RECOMMENDED THEM, THEIR SKILLS MUST BE TOP-NOTCH.\",\n \"block_3\": \"GRANDSON, HAHU YEON.\",\n \"block_4\": \"YOU BRAT! YOU THINK YOUR GRANDFATHER IS ACTING LIKE THIS JUST BECAUSE OF SOME MEAT?\",\n \"block_5\": \"EH? IF IT'S NOT THAT, THEN ...?\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I WAS PLANNING ON GRABBING A DRINK WITH THAT OLD GEEZER WHILE COMPLAINING ABOUT THE GREAT LORD MAKING ME ACT AS A JUDGE FOR THAT STUPID TOURNAMENT ...\",\n \"block_1\": \"ONE OF THE \\\"THREE MARTIAL ECCENTRICS,\\\" HAHU GUK (THE SWORD FREAK).\",\n \"block_2\": \"PLEASE DON'T TAKE IT SO HARD. SINCE OLD MAN SO RECOMMENDED THEM, THEIR SKILLS MUST BE TOP-NOTCH.\",\n \"block_3\": \"GRANDSON, HAHU YEON.\",\n \"block_4\": \"YOU BRAT! YOU THINK YOUR GRANDFATHER IS ACTING LIKE THIS JUST BECAUSE OF SOME MEAT?\",\n \"block_5\": \"EH? IF IT'S NOT THAT, THEN ...?\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/d2f6dee4fc494a67a2049f69779b00be.jpeg", - "context_path": "contexts/183/context.json", - "id": 86420 - }, - { - "blk_list": [ - { - "text_bbox": [ - 37, - 126, - 288, - 228 - ], - "bubble_bbox": [ - 5, - 25, - 332, - 309 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 66, - 145, - 74, - 149 - ], - [ - 237, - 145, - 246, - 151 - ], - [ - 66, - 151, - 74, - 156 - ], - [ - 65, - 168, - 73, - 174 - ], - [ - 175, - 168, - 188, - 178 - ], - [ - 244, - 168, - 257, - 178 - ], - [ - 71, - 191, - 84, - 202 - ], - [ - 111, - 191, - 118, - 198 - ], - [ - 137, - 191, - 149, - 201 - ], - [ - 155, - 191, - 163, - 198 - ], - [ - 227, - 191, - 235, - 197 - ], - [ - 63, - 142, - 77, - 159 - ], - [ - 78, - 142, - 90, - 159 - ], - [ - 97, - 142, - 111, - 159 - ], - [ - 112, - 141, - 123, - 159 - ], - [ - 125, - 142, - 138, - 158 - ], - [ - 146, - 141, - 162, - 159 - ], - [ - 160, - 141, - 172, - 158 - ], - [ - 171, - 141, - 184, - 158 - ], - [ - 193, - 142, - 208, - 159 - ], - [ - 208, - 141, - 220, - 159 - ], - [ - 221, - 142, - 234, - 158 - ], - [ - 235, - 142, - 248, - 159 - ], - [ - 249, - 142, - 262, - 158 - ], - [ - 181, - 153, - 185, - 161 - ], - [ - 50, - 165, - 61, - 182 - ], - [ - 62, - 165, - 76, - 182 - ], - [ - 77, - 165, - 90, - 182 - ], - [ - 97, - 165, - 109, - 182 - ], - [ - 117, - 165, - 128, - 183 - ], - [ - 129, - 165, - 142, - 182 - ], - [ - 143, - 166, - 153, - 182 - ], - [ - 154, - 165, - 164, - 181 - ], - [ - 172, - 165, - 190, - 182 - ], - [ - 192, - 165, - 203, - 182 - ], - [ - 211, - 165, - 222, - 182 - ], - [ - 231, - 166, - 241, - 182 - ], - [ - 242, - 165, - 260, - 182 - ], - [ - 261, - 165, - 275, - 182 - ], - [ - 69, - 188, - 87, - 205 - ], - [ - 88, - 188, - 100, - 205 - ], - [ - 108, - 188, - 121, - 205 - ], - [ - 122, - 188, - 134, - 205 - ], - [ - 135, - 188, - 152, - 204 - ], - [ - 153, - 188, - 165, - 205 - ], - [ - 166, - 188, - 176, - 205 - ], - [ - 177, - 188, - 190, - 205 - ], - [ - 199, - 188, - 209, - 206 - ], - [ - 210, - 188, - 223, - 205 - ], - [ - 224, - 188, - 238, - 206 - ], - [ - 238, - 188, - 251, - 205 - ], - [ - 252, - 200, - 256, - 205 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 378, - 240, - 656, - 365 - ], - "bubble_bbox": [ - 329, - 150, - 698, - 443 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 523, - 257, - 532, - 262 - ], - [ - 467, - 259, - 470, - 264 - ], - [ - 504, - 259, - 507, - 264 - ], - [ - 523, - 263, - 533, - 269 - ], - [ - 410, - 282, - 424, - 293 - ], - [ - 439, - 282, - 448, - 287 - ], - [ - 582, - 282, - 590, - 289 - ], - [ - 439, - 288, - 448, - 294 - ], - [ - 406, - 307, - 420, - 318 - ], - [ - 426, - 307, - 439, - 318 - ], - [ - 613, - 307, - 627, - 318 - ], - [ - 470, - 309, - 473, - 314 - ], - [ - 498, - 332, - 506, - 337 - ], - [ - 538, - 332, - 552, - 343 - ], - [ - 514, - 334, - 517, - 339 - ], - [ - 498, - 338, - 507, - 344 - ], - [ - 447, - 253, - 465, - 272 - ], - [ - 463, - 253, - 475, - 272 - ], - [ - 499, - 253, - 512, - 272 - ], - [ - 542, - 253, - 560, - 271 - ], - [ - 419, - 254, - 422, - 272 - ], - [ - 423, - 254, - 439, - 272 - ], - [ - 476, - 254, - 491, - 272 - ], - [ - 521, - 254, - 535, - 272 - ], - [ - 537, - 254, - 540, - 272 - ], - [ - 568, - 254, - 583, - 272 - ], - [ - 585, - 254, - 588, - 272 - ], - [ - 589, - 254, - 604, - 272 - ], - [ - 605, - 254, - 617, - 272 - ], - [ - 395, - 279, - 410, - 297 - ], - [ - 407, - 279, - 427, - 297 - ], - [ - 436, - 279, - 451, - 297 - ], - [ - 452, - 279, - 466, - 297 - ], - [ - 467, - 278, - 485, - 296 - ], - [ - 487, - 279, - 490, - 297 - ], - [ - 492, - 278, - 503, - 297 - ], - [ - 513, - 278, - 530, - 297 - ], - [ - 531, - 279, - 534, - 297 - ], - [ - 535, - 279, - 551, - 297 - ], - [ - 552, - 278, - 564, - 297 - ], - [ - 579, - 279, - 593, - 297 - ], - [ - 594, - 279, - 604, - 296 - ], - [ - 605, - 279, - 618, - 297 - ], - [ - 619, - 279, - 634, - 297 - ], - [ - 635, - 291, - 639, - 299 - ], - [ - 565, - 292, - 570, - 297 - ], - [ - 466, - 303, - 478, - 322 - ], - [ - 517, - 303, - 529, - 322 - ], - [ - 392, - 304, - 403, - 322 - ], - [ - 404, - 304, - 423, - 322 - ], - [ - 424, - 304, - 441, - 321 - ], - [ - 443, - 304, - 457, - 322 - ], - [ - 477, - 304, - 492, - 322 - ], - [ - 500, - 304, - 516, - 322 - ], - [ - 531, - 304, - 545, - 322 - ], - [ - 553, - 304, - 569, - 322 - ], - [ - 570, - 304, - 573, - 322 - ], - [ - 574, - 304, - 586, - 322 - ], - [ - 588, - 304, - 602, - 322 - ], - [ - 610, - 304, - 630, - 322 - ], - [ - 632, - 304, - 644, - 322 - ], - [ - 435, - 329, - 451, - 347 - ], - [ - 452, - 328, - 464, - 347 - ], - [ - 466, - 329, - 469, - 347 - ], - [ - 471, - 329, - 486, - 347 - ], - [ - 495, - 329, - 510, - 347 - ], - [ - 509, - 328, - 522, - 347 - ], - [ - 523, - 328, - 535, - 346 - ], - [ - 536, - 329, - 554, - 347 - ], - [ - 555, - 328, - 568, - 347 - ], - [ - 569, - 328, - 582, - 347 - ], - [ - 582, - 329, - 598, - 347 - ], - [ - 595, - 342, - 599, - 346 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 59, - 1337, - 332, - 1418 - ], - "bubble_bbox": [ - 18, - 1240, - 374, - 1518 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 86, - 1352, - 98, - 1361 - ], - [ - 104, - 1351, - 111, - 1357 - ], - [ - 117, - 1352, - 124, - 1360 - ], - [ - 200, - 1351, - 208, - 1357 - ], - [ - 257, - 1351, - 264, - 1357 - ], - [ - 163, - 1372, - 171, - 1377 - ], - [ - 177, - 1372, - 183, - 1378 - ], - [ - 188, - 1372, - 200, - 1381 - ], - [ - 228, - 1372, - 235, - 1381 - ], - [ - 288, - 1372, - 295, - 1377 - ], - [ - 263, - 1392, - 271, - 1398 - ], - [ - 166, - 1393, - 177, - 1402 - ], - [ - 221, - 1393, - 228, - 1402 - ], - [ - 71, - 1348, - 85, - 1364 - ], - [ - 101, - 1348, - 114, - 1364 - ], - [ - 163, - 1348, - 175, - 1364 - ], - [ - 175, - 1348, - 185, - 1364 - ], - [ - 186, - 1348, - 197, - 1364 - ], - [ - 198, - 1348, - 210, - 1364 - ], - [ - 228, - 1348, - 241, - 1364 - ], - [ - 243, - 1348, - 254, - 1363 - ], - [ - 255, - 1348, - 267, - 1364 - ], - [ - 267, - 1348, - 279, - 1363 - ], - [ - 280, - 1348, - 289, - 1364 - ], - [ - 289, - 1348, - 299, - 1363 - ], - [ - 300, - 1348, - 310, - 1363 - ], - [ - 84, - 1349, - 100, - 1364 - ], - [ - 115, - 1349, - 127, - 1364 - ], - [ - 134, - 1349, - 137, - 1364 - ], - [ - 138, - 1349, - 151, - 1364 - ], - [ - 211, - 1349, - 222, - 1364 - ], - [ - 311, - 1349, - 322, - 1364 - ], - [ - 152, - 1359, - 155, - 1366 - ], - [ - 71, - 1370, - 74, - 1384 - ], - [ - 76, - 1369, - 85, - 1384 - ], - [ - 92, - 1369, - 105, - 1385 - ], - [ - 106, - 1369, - 116, - 1385 - ], - [ - 117, - 1369, - 129, - 1384 - ], - [ - 136, - 1370, - 149, - 1384 - ], - [ - 150, - 1369, - 160, - 1384 - ], - [ - 161, - 1369, - 173, - 1385 - ], - [ - 175, - 1369, - 186, - 1384 - ], - [ - 186, - 1369, - 202, - 1384 - ], - [ - 203, - 1369, - 213, - 1385 - ], - [ - 215, - 1369, - 224, - 1384 - ], - [ - 226, - 1369, - 238, - 1384 - ], - [ - 239, - 1370, - 241, - 1384 - ], - [ - 243, - 1369, - 253, - 1384 - ], - [ - 254, - 1369, - 268, - 1384 - ], - [ - 275, - 1369, - 285, - 1384 - ], - [ - 286, - 1369, - 298, - 1385 - ], - [ - 299, - 1369, - 310, - 1384 - ], - [ - 310, - 1369, - 322, - 1384 - ], - [ - 103, - 1390, - 122, - 1406 - ], - [ - 123, - 1390, - 136, - 1405 - ], - [ - 144, - 1390, - 154, - 1405 - ], - [ - 154, - 1390, - 163, - 1405 - ], - [ - 164, - 1390, - 180, - 1405 - ], - [ - 181, - 1390, - 193, - 1405 - ], - [ - 194, - 1390, - 205, - 1404 - ], - [ - 206, - 1390, - 217, - 1405 - ], - [ - 219, - 1390, - 231, - 1405 - ], - [ - 238, - 1390, - 248, - 1406 - ], - [ - 249, - 1390, - 260, - 1405 - ], - [ - 261, - 1390, - 273, - 1405 - ], - [ - 274, - 1390, - 286, - 1405 - ], - [ - 286, - 1401, - 290, - 1405 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 296, - 1596, - 660, - 1743 - ], - "bubble_bbox": [ - 252, - 1491, - 693, - 1843 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 505, - 1616, - 513, - 1626 - ], - [ - 528, - 1616, - 542, - 1627 - ], - [ - 437, - 1617, - 440, - 1622 - ], - [ - 343, - 1640, - 351, - 1647 - ], - [ - 368, - 1640, - 377, - 1647 - ], - [ - 505, - 1640, - 519, - 1652 - ], - [ - 526, - 1640, - 535, - 1647 - ], - [ - 579, - 1640, - 588, - 1647 - ], - [ - 356, - 1642, - 360, - 1647 - ], - [ - 431, - 1642, - 435, - 1647 - ], - [ - 346, - 1666, - 360, - 1676 - ], - [ - 402, - 1666, - 411, - 1677 - ], - [ - 417, - 1667, - 420, - 1672 - ], - [ - 549, - 1667, - 552, - 1672 - ], - [ - 612, - 1667, - 616, - 1671 - ], - [ - 412, - 1690, - 421, - 1697 - ], - [ - 479, - 1690, - 488, - 1695 - ], - [ - 519, - 1690, - 527, - 1697 - ], - [ - 479, - 1697, - 489, - 1702 - ], - [ - 399, - 1715, - 413, - 1726 - ], - [ - 505, - 1715, - 514, - 1726 - ], - [ - 445, - 1717, - 449, - 1721 - ], - [ - 480, - 1717, - 484, - 1722 - ], - [ - 402, - 1612, - 419, - 1630 - ], - [ - 419, - 1612, - 432, - 1631 - ], - [ - 432, - 1612, - 445, - 1630 - ], - [ - 444, - 1612, - 459, - 1630 - ], - [ - 489, - 1612, - 501, - 1630 - ], - [ - 502, - 1612, - 517, - 1630 - ], - [ - 525, - 1612, - 545, - 1630 - ], - [ - 547, - 1612, - 559, - 1630 - ], - [ - 468, - 1613, - 482, - 1630 - ], - [ - 484, - 1613, - 487, - 1630 - ], - [ - 340, - 1637, - 354, - 1656 - ], - [ - 352, - 1637, - 364, - 1655 - ], - [ - 365, - 1637, - 380, - 1656 - ], - [ - 381, - 1637, - 407, - 1655 - ], - [ - 416, - 1638, - 427, - 1655 - ], - [ - 427, - 1637, - 439, - 1655 - ], - [ - 440, - 1637, - 456, - 1655 - ], - [ - 454, - 1637, - 468, - 1655 - ], - [ - 467, - 1637, - 482, - 1655 - ], - [ - 491, - 1637, - 504, - 1655 - ], - [ - 503, - 1637, - 522, - 1655 - ], - [ - 523, - 1637, - 538, - 1656 - ], - [ - 547, - 1637, - 562, - 1655 - ], - [ - 563, - 1637, - 575, - 1656 - ], - [ - 577, - 1637, - 591, - 1656 - ], - [ - 592, - 1637, - 606, - 1655 - ], - [ - 607, - 1637, - 620, - 1655 - ], - [ - 312, - 1661, - 329, - 1680 - ], - [ - 330, - 1661, - 342, - 1681 - ], - [ - 343, - 1662, - 363, - 1680 - ], - [ - 376, - 1662, - 391, - 1680 - ], - [ - 400, - 1662, - 414, - 1680 - ], - [ - 413, - 1662, - 425, - 1680 - ], - [ - 425, - 1661, - 438, - 1680 - ], - [ - 438, - 1662, - 454, - 1680 - ], - [ - 454, - 1661, - 467, - 1675 - ], - [ - 475, - 1661, - 493, - 1680 - ], - [ - 493, - 1662, - 507, - 1680 - ], - [ - 520, - 1662, - 531, - 1680 - ], - [ - 544, - 1662, - 557, - 1680 - ], - [ - 556, - 1662, - 572, - 1680 - ], - [ - 593, - 1662, - 606, - 1680 - ], - [ - 606, - 1662, - 620, - 1680 - ], - [ - 621, - 1662, - 636, - 1680 - ], - [ - 635, - 1662, - 649, - 1680 - ], - [ - 364, - 1663, - 375, - 1680 - ], - [ - 508, - 1663, - 519, - 1680 - ], - [ - 580, - 1663, - 591, - 1680 - ], - [ - 532, - 1674, - 536, - 1683 - ], - [ - 457, - 1676, - 462, - 1680 - ], - [ - 439, - 1685, - 444, - 1694 - ], - [ - 557, - 1686, - 569, - 1705 - ], - [ - 364, - 1687, - 380, - 1705 - ], - [ - 380, - 1687, - 392, - 1706 - ], - [ - 394, - 1687, - 408, - 1705 - ], - [ - 409, - 1687, - 423, - 1706 - ], - [ - 424, - 1687, - 438, - 1705 - ], - [ - 445, - 1688, - 456, - 1705 - ], - [ - 457, - 1687, - 468, - 1705 - ], - [ - 477, - 1687, - 491, - 1705 - ], - [ - 493, - 1687, - 507, - 1705 - ], - [ - 516, - 1687, - 529, - 1705 - ], - [ - 530, - 1687, - 541, - 1705 - ], - [ - 542, - 1687, - 556, - 1705 - ], - [ - 570, - 1687, - 583, - 1705 - ], - [ - 584, - 1687, - 596, - 1705 - ], - [ - 384, - 1712, - 400, - 1730 - ], - [ - 396, - 1712, - 416, - 1730 - ], - [ - 426, - 1712, - 439, - 1730 - ], - [ - 439, - 1712, - 453, - 1730 - ], - [ - 452, - 1712, - 468, - 1730 - ], - [ - 476, - 1711, - 488, - 1730 - ], - [ - 489, - 1711, - 501, - 1730 - ], - [ - 503, - 1712, - 517, - 1730 - ], - [ - 525, - 1712, - 541, - 1730 - ], - [ - 542, - 1712, - 556, - 1730 - ], - [ - 557, - 1712, - 570, - 1730 - ], - [ - 571, - 1725, - 575, - 1730 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 61, - 2550, - 383, - 2637 - ], - "bubble_bbox": [ - 43, - 2444, - 404, - 2724 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 189, - 2566, - 196, - 2572 - ], - [ - 202, - 2567, - 208, - 2575 - ], - [ - 256, - 2566, - 263, - 2572 - ], - [ - 100, - 2586, - 107, - 2592 - ], - [ - 166, - 2586, - 173, - 2592 - ], - [ - 217, - 2587, - 228, - 2595 - ], - [ - 244, - 2586, - 252, - 2592 - ], - [ - 341, - 2587, - 352, - 2595 - ], - [ - 357, - 2587, - 367, - 2595 - ], - [ - 154, - 2606, - 161, - 2610 - ], - [ - 225, - 2607, - 236, - 2615 - ], - [ - 262, - 2607, - 269, - 2615 - ], - [ - 290, - 2607, - 301, - 2615 - ], - [ - 154, - 2611, - 162, - 2616 - ], - [ - 138, - 2563, - 146, - 2579 - ], - [ - 153, - 2563, - 162, - 2579 - ], - [ - 230, - 2563, - 240, - 2579 - ], - [ - 278, - 2562, - 282, - 2569 - ], - [ - 300, - 2563, - 310, - 2578 - ], - [ - 164, - 2564, - 174, - 2578 - ], - [ - 175, - 2564, - 185, - 2578 - ], - [ - 186, - 2564, - 198, - 2579 - ], - [ - 199, - 2564, - 211, - 2578 - ], - [ - 217, - 2564, - 230, - 2578 - ], - [ - 242, - 2564, - 252, - 2578 - ], - [ - 253, - 2564, - 265, - 2579 - ], - [ - 266, - 2564, - 277, - 2578 - ], - [ - 281, - 2564, - 294, - 2578 - ], - [ - 74, - 2583, - 97, - 2598 - ], - [ - 153, - 2583, - 162, - 2598 - ], - [ - 231, - 2583, - 241, - 2598 - ], - [ - 255, - 2583, - 265, - 2598 - ], - [ - 265, - 2583, - 275, - 2598 - ], - [ - 276, - 2583, - 288, - 2598 - ], - [ - 301, - 2583, - 311, - 2598 - ], - [ - 98, - 2584, - 121, - 2599 - ], - [ - 122, - 2584, - 136, - 2598 - ], - [ - 137, - 2584, - 146, - 2598 - ], - [ - 163, - 2584, - 175, - 2599 - ], - [ - 176, - 2584, - 186, - 2598 - ], - [ - 185, - 2584, - 198, - 2598 - ], - [ - 204, - 2584, - 217, - 2599 - ], - [ - 214, - 2584, - 230, - 2598 - ], - [ - 242, - 2584, - 254, - 2599 - ], - [ - 289, - 2584, - 300, - 2598 - ], - [ - 311, - 2584, - 322, - 2598 - ], - [ - 328, - 2584, - 341, - 2599 - ], - [ - 339, - 2584, - 354, - 2598 - ], - [ - 355, - 2584, - 369, - 2598 - ], - [ - 370, - 2594, - 373, - 2598 - ], - [ - 118, - 2603, - 141, - 2618 - ], - [ - 141, - 2603, - 151, - 2618 - ], - [ - 183, - 2603, - 192, - 2619 - ], - [ - 211, - 2603, - 221, - 2619 - ], - [ - 239, - 2603, - 249, - 2619 - ], - [ - 278, - 2603, - 289, - 2619 - ], - [ - 309, - 2603, - 318, - 2618 - ], - [ - 319, - 2603, - 330, - 2614 - ], - [ - 152, - 2604, - 164, - 2619 - ], - [ - 165, - 2604, - 176, - 2618 - ], - [ - 198, - 2604, - 211, - 2618 - ], - [ - 223, - 2604, - 238, - 2618 - ], - [ - 250, - 2604, - 259, - 2618 - ], - [ - 260, - 2604, - 272, - 2618 - ], - [ - 288, - 2604, - 304, - 2618 - ], - [ - 305, - 2604, - 308, - 2619 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 67, - 3283, - 228, - 3319 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 126, - 3291, - 134, - 3316 - ], - [ - 136, - 3291, - 143, - 3316 - ], - [ - 145, - 3291, - 153, - 3315 - ], - [ - 154, - 3291, - 163, - 3315 - ], - [ - 165, - 3291, - 173, - 3315 - ], - [ - 175, - 3291, - 183, - 3315 - ], - [ - 190, - 3290, - 197, - 3315 - ], - [ - 199, - 3290, - 207, - 3315 - ], - [ - 209, - 3290, - 220, - 3314 - ], - [ - 78, - 3292, - 87, - 3316 - ], - [ - 88, - 3292, - 96, - 3316 - ], - [ - 98, - 3292, - 106, - 3316 - ], - [ - 107, - 3292, - 115, - 3316 - ], - [ - 117, - 3292, - 125, - 3316 - ], - [ - 184, - 3310, - 187, - 3315 - ], - [ - 91, - 3295, - 93, - 3313 - ], - [ - 101, - 3295, - 103, - 3302 - ], - [ - 202, - 3294, - 204, - 3311 - ], - [ - 157, - 3298, - 160, - 3307 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 232, - 3467, - 584, - 3582 - ], - "bubble_bbox": [ - 201, - 3359, - 613, - 3687 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 287, - 3483, - 296, - 3494 - ], - [ - 302, - 3483, - 315, - 3494 - ], - [ - 363, - 3483, - 371, - 3488 - ], - [ - 401, - 3483, - 409, - 3489 - ], - [ - 421, - 3483, - 430, - 3494 - ], - [ - 481, - 3483, - 495, - 3494 - ], - [ - 363, - 3489, - 372, - 3494 - ], - [ - 283, - 3507, - 292, - 3513 - ], - [ - 331, - 3507, - 343, - 3517 - ], - [ - 386, - 3507, - 393, - 3514 - ], - [ - 467, - 3507, - 481, - 3518 - ], - [ - 523, - 3507, - 532, - 3513 - ], - [ - 272, - 3509, - 275, - 3514 - ], - [ - 325, - 3531, - 339, - 3542 - ], - [ - 391, - 3531, - 404, - 3542 - ], - [ - 425, - 3531, - 433, - 3538 - ], - [ - 558, - 3531, - 571, - 3542 - ], - [ - 358, - 3555, - 365, - 3562 - ], - [ - 324, - 3557, - 327, - 3562 - ], - [ - 320, - 3479, - 331, - 3497 - ], - [ - 332, - 3478, - 337, - 3486 - ], - [ - 499, - 3479, - 511, - 3498 - ], - [ - 285, - 3480, - 299, - 3498 - ], - [ - 299, - 3480, - 318, - 3497 - ], - [ - 337, - 3480, - 352, - 3497 - ], - [ - 360, - 3480, - 375, - 3498 - ], - [ - 376, - 3480, - 390, - 3497 - ], - [ - 398, - 3480, - 412, - 3498 - ], - [ - 414, - 3480, - 417, - 3497 - ], - [ - 419, - 3480, - 433, - 3498 - ], - [ - 434, - 3480, - 437, - 3497 - ], - [ - 439, - 3480, - 453, - 3497 - ], - [ - 454, - 3480, - 466, - 3497 - ], - [ - 467, - 3481, - 478, - 3497 - ], - [ - 479, - 3480, - 497, - 3497 - ], - [ - 512, - 3480, - 527, - 3497 - ], - [ - 527, - 3492, - 532, - 3497 - ], - [ - 268, - 3503, - 280, - 3521 - ], - [ - 415, - 3503, - 426, - 3521 - ], - [ - 536, - 3503, - 548, - 3521 - ], - [ - 280, - 3504, - 295, - 3522 - ], - [ - 296, - 3504, - 309, - 3521 - ], - [ - 318, - 3504, - 330, - 3522 - ], - [ - 329, - 3504, - 346, - 3521 - ], - [ - 347, - 3504, - 359, - 3521 - ], - [ - 367, - 3504, - 382, - 3522 - ], - [ - 383, - 3504, - 396, - 3521 - ], - [ - 397, - 3504, - 409, - 3522 - ], - [ - 410, - 3504, - 413, - 3521 - ], - [ - 428, - 3504, - 445, - 3521 - ], - [ - 452, - 3504, - 468, - 3522 - ], - [ - 465, - 3504, - 483, - 3521 - ], - [ - 492, - 3504, - 507, - 3522 - ], - [ - 507, - 3504, - 519, - 3521 - ], - [ - 521, - 3504, - 535, - 3522 - ], - [ - 310, - 3527, - 322, - 3546 - ], - [ - 437, - 3527, - 449, - 3545 - ], - [ - 493, - 3527, - 504, - 3545 - ], - [ - 241, - 3528, - 257, - 3546 - ], - [ - 257, - 3528, - 269, - 3546 - ], - [ - 271, - 3528, - 284, - 3545 - ], - [ - 293, - 3528, - 309, - 3546 - ], - [ - 323, - 3528, - 342, - 3545 - ], - [ - 343, - 3529, - 354, - 3545 - ], - [ - 355, - 3528, - 369, - 3545 - ], - [ - 376, - 3528, - 391, - 3546 - ], - [ - 388, - 3528, - 407, - 3545 - ], - [ - 408, - 3528, - 420, - 3546 - ], - [ - 422, - 3528, - 436, - 3546 - ], - [ - 449, - 3528, - 461, - 3545 - ], - [ - 462, - 3528, - 477, - 3545 - ], - [ - 478, - 3528, - 492, - 3545 - ], - [ - 505, - 3528, - 518, - 3545 - ], - [ - 527, - 3528, - 530, - 3545 - ], - [ - 532, - 3528, - 543, - 3545 - ], - [ - 544, - 3528, - 557, - 3545 - ], - [ - 555, - 3528, - 574, - 3545 - ], - [ - 484, - 3551, - 496, - 3564 - ], - [ - 319, - 3552, - 332, - 3569 - ], - [ - 340, - 3552, - 354, - 3569 - ], - [ - 355, - 3552, - 368, - 3570 - ], - [ - 370, - 3552, - 373, - 3569 - ], - [ - 374, - 3552, - 390, - 3569 - ], - [ - 391, - 3552, - 404, - 3569 - ], - [ - 413, - 3552, - 428, - 3569 - ], - [ - 428, - 3552, - 442, - 3569 - ], - [ - 443, - 3552, - 456, - 3569 - ], - [ - 458, - 3552, - 469, - 3569 - ], - [ - 471, - 3552, - 484, - 3569 - ], - [ - 487, - 3565, - 492, - 3570 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 3877, - 285, - 3959 - ], - "bubble_bbox": [ - 28, - 3804, - 327, - 4015 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 170, - 3893, - 187, - 3907 - ], - [ - 226, - 3895, - 231, - 3900 - ], - [ - 114, - 3924, - 132, - 3938 - ], - [ - 97, - 3887, - 103, - 3897 - ], - [ - 84, - 3889, - 96, - 3911 - ], - [ - 105, - 3890, - 118, - 3911 - ], - [ - 120, - 3889, - 132, - 3911 - ], - [ - 143, - 3889, - 165, - 3910 - ], - [ - 167, - 3889, - 191, - 3911 - ], - [ - 202, - 3889, - 219, - 3911 - ], - [ - 219, - 3889, - 236, - 3911 - ], - [ - 237, - 3890, - 256, - 3911 - ], - [ - 257, - 3889, - 272, - 3912 - ], - [ - 111, - 3920, - 135, - 3942 - ], - [ - 138, - 3919, - 151, - 3941 - ], - [ - 163, - 3920, - 182, - 3942 - ], - [ - 183, - 3919, - 197, - 3942 - ], - [ - 200, - 3920, - 216, - 3942 - ], - [ - 218, - 3919, - 237, - 3942 - ], - [ - 238, - 3936, - 244, - 3941 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 334, - 3971, - 650, - 4099 - ], - "bubble_bbox": [ - 295, - 3879, - 690, - 4181 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 465, - 3990, - 480, - 4001 - ], - [ - 515, - 3990, - 530, - 4001 - ], - [ - 536, - 3990, - 549, - 4001 - ], - [ - 582, - 3992, - 586, - 3997 - ], - [ - 377, - 4016, - 391, - 4027 - ], - [ - 412, - 4016, - 422, - 4023 - ], - [ - 516, - 4016, - 529, - 4027 - ], - [ - 361, - 4042, - 374, - 4054 - ], - [ - 421, - 4044, - 425, - 4050 - ], - [ - 475, - 4043, - 485, - 4054 - ], - [ - 548, - 4044, - 552, - 4050 - ], - [ - 385, - 4069, - 394, - 4074 - ], - [ - 453, - 4069, - 468, - 4081 - ], - [ - 541, - 4071, - 545, - 4075 - ], - [ - 385, - 4076, - 395, - 4081 - ], - [ - 379, - 3986, - 396, - 4005 - ], - [ - 394, - 3986, - 408, - 4005 - ], - [ - 410, - 3986, - 413, - 4005 - ], - [ - 428, - 3986, - 439, - 4005 - ], - [ - 449, - 3985, - 461, - 4005 - ], - [ - 463, - 3986, - 483, - 4005 - ], - [ - 512, - 3986, - 533, - 4005 - ], - [ - 533, - 3986, - 552, - 4004 - ], - [ - 577, - 3986, - 590, - 4005 - ], - [ - 590, - 3986, - 606, - 4005 - ], - [ - 415, - 3987, - 427, - 4005 - ], - [ - 499, - 3987, - 511, - 4005 - ], - [ - 553, - 3987, - 569, - 4005 - ], - [ - 485, - 4000, - 489, - 4005 - ], - [ - 363, - 4012, - 376, - 4032 - ], - [ - 375, - 4012, - 393, - 4031 - ], - [ - 395, - 4012, - 408, - 4032 - ], - [ - 409, - 4012, - 425, - 4032 - ], - [ - 471, - 4012, - 486, - 4032 - ], - [ - 501, - 4012, - 514, - 4032 - ], - [ - 513, - 4012, - 532, - 4031 - ], - [ - 533, - 4012, - 546, - 4032 - ], - [ - 555, - 4012, - 572, - 4032 - ], - [ - 573, - 4012, - 586, - 4032 - ], - [ - 593, - 4012, - 606, - 4031 - ], - [ - 608, - 4012, - 622, - 4031 - ], - [ - 434, - 4013, - 451, - 4032 - ], - [ - 452, - 4013, - 455, - 4032 - ], - [ - 457, - 4013, - 470, - 4032 - ], - [ - 588, - 4013, - 591, - 4032 - ], - [ - 487, - 4027, - 492, - 4031 - ], - [ - 416, - 4038, - 429, - 4058 - ], - [ - 431, - 4038, - 443, - 4058 - ], - [ - 453, - 4038, - 465, - 4059 - ], - [ - 530, - 4038, - 543, - 4059 - ], - [ - 544, - 4038, - 557, - 4058 - ], - [ - 581, - 4038, - 595, - 4058 - ], - [ - 346, - 4039, - 359, - 4058 - ], - [ - 358, - 4039, - 377, - 4057 - ], - [ - 378, - 4039, - 391, - 4058 - ], - [ - 401, - 4039, - 416, - 4058 - ], - [ - 467, - 4039, - 470, - 4058 - ], - [ - 473, - 4039, - 488, - 4058 - ], - [ - 489, - 4039, - 504, - 4058 - ], - [ - 513, - 4039, - 529, - 4058 - ], - [ - 556, - 4039, - 573, - 4058 - ], - [ - 595, - 4039, - 608, - 4058 - ], - [ - 609, - 4039, - 626, - 4058 - ], - [ - 624, - 4039, - 639, - 4058 - ], - [ - 424, - 4064, - 429, - 4074 - ], - [ - 581, - 4064, - 585, - 4073 - ], - [ - 584, - 4064, - 603, - 4079 - ], - [ - 382, - 4066, - 398, - 4085 - ], - [ - 399, - 4065, - 412, - 4085 - ], - [ - 430, - 4065, - 449, - 4084 - ], - [ - 450, - 4066, - 471, - 4084 - ], - [ - 473, - 4066, - 476, - 4085 - ], - [ - 479, - 4065, - 491, - 4084 - ], - [ - 492, - 4065, - 510, - 4084 - ], - [ - 520, - 4065, - 535, - 4084 - ], - [ - 535, - 4065, - 549, - 4085 - ], - [ - 550, - 4066, - 566, - 4084 - ], - [ - 567, - 4066, - 580, - 4085 - ], - [ - 420, - 4067, - 426, - 4076 - ], - [ - 593, - 4080, - 598, - 4085 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/e60b8c009ef541a1ba0635e89d888d0c.jpeg", - "context_path": "contexts/183/context.json", - "id": 86416 - }, - { - "blk_list": [ - { - "text_bbox": [ - 239, - 396, - 463, - 437 - ], - "bubble_bbox": [ - 200, - 317, - 501, - 514 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 360, - 409, - 374, - 420 - ], - [ - 381, - 409, - 390, - 415 - ], - [ - 397, - 409, - 406, - 416 - ], - [ - 282, - 411, - 286, - 416 - ], - [ - 249, - 405, - 264, - 424 - ], - [ - 265, - 405, - 277, - 424 - ], - [ - 278, - 405, - 290, - 423 - ], - [ - 289, - 405, - 305, - 424 - ], - [ - 379, - 405, - 393, - 424 - ], - [ - 395, - 405, - 409, - 424 - ], - [ - 410, - 405, - 439, - 423 - ], - [ - 439, - 405, - 453, - 423 - ], - [ - 314, - 406, - 317, - 424 - ], - [ - 319, - 406, - 334, - 424 - ], - [ - 342, - 406, - 357, - 424 - ], - [ - 358, - 406, - 377, - 423 - ], - [ - 450, - 419, - 455, - 423 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 141, - 702, - 612, - 871 - ], - "bubble_bbox": [ - 87, - 564, - 682, - 997 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 312, - 722, - 323, - 731 - ], - [ - 402, - 722, - 413, - 731 - ], - [ - 445, - 722, - 456, - 731 - ], - [ - 461, - 723, - 477, - 736 - ], - [ - 518, - 723, - 528, - 735 - ], - [ - 388, - 725, - 392, - 731 - ], - [ - 431, - 725, - 435, - 731 - ], - [ - 378, - 752, - 395, - 765 - ], - [ - 403, - 752, - 414, - 760 - ], - [ - 422, - 752, - 432, - 765 - ], - [ - 457, - 752, - 468, - 760 - ], - [ - 504, - 752, - 521, - 765 - ], - [ - 181, - 781, - 199, - 795 - ], - [ - 244, - 781, - 255, - 789 - ], - [ - 221, - 782, - 236, - 794 - ], - [ - 303, - 782, - 313, - 794 - ], - [ - 419, - 782, - 435, - 795 - ], - [ - 458, - 782, - 468, - 794 - ], - [ - 564, - 782, - 580, - 795 - ], - [ - 273, - 784, - 277, - 790 - ], - [ - 506, - 784, - 510, - 790 - ], - [ - 250, - 810, - 260, - 817 - ], - [ - 276, - 811, - 286, - 819 - ], - [ - 294, - 811, - 304, - 819 - ], - [ - 329, - 811, - 339, - 819 - ], - [ - 359, - 811, - 369, - 819 - ], - [ - 417, - 811, - 434, - 824 - ], - [ - 442, - 811, - 453, - 819 - ], - [ - 470, - 811, - 486, - 824 - ], - [ - 511, - 811, - 522, - 819 - ], - [ - 345, - 813, - 349, - 819 - ], - [ - 560, - 813, - 564, - 819 - ], - [ - 393, - 840, - 404, - 846 - ], - [ - 441, - 840, - 457, - 854 - ], - [ - 294, - 842, - 298, - 849 - ], - [ - 412, - 842, - 417, - 849 - ], - [ - 393, - 848, - 405, - 854 - ], - [ - 260, - 719, - 276, - 740 - ], - [ - 277, - 718, - 291, - 740 - ], - [ - 292, - 719, - 308, - 740 - ], - [ - 309, - 719, - 326, - 741 - ], - [ - 328, - 719, - 342, - 740 - ], - [ - 352, - 719, - 367, - 741 - ], - [ - 368, - 718, - 383, - 740 - ], - [ - 383, - 718, - 397, - 740 - ], - [ - 398, - 719, - 416, - 741 - ], - [ - 426, - 718, - 440, - 740 - ], - [ - 441, - 719, - 459, - 741 - ], - [ - 458, - 719, - 481, - 740 - ], - [ - 482, - 718, - 497, - 740 - ], - [ - 499, - 718, - 513, - 740 - ], - [ - 515, - 719, - 532, - 740 - ], - [ - 179, - 748, - 198, - 770 - ], - [ - 199, - 748, - 213, - 770 - ], - [ - 216, - 749, - 219, - 770 - ], - [ - 221, - 749, - 239, - 770 - ], - [ - 249, - 748, - 267, - 770 - ], - [ - 269, - 749, - 272, - 770 - ], - [ - 274, - 748, - 292, - 770 - ], - [ - 294, - 748, - 310, - 769 - ], - [ - 328, - 748, - 348, - 770 - ], - [ - 348, - 748, - 365, - 769 - ], - [ - 375, - 748, - 398, - 770 - ], - [ - 400, - 748, - 417, - 770 - ], - [ - 419, - 749, - 436, - 770 - ], - [ - 437, - 748, - 453, - 769 - ], - [ - 454, - 748, - 471, - 770 - ], - [ - 482, - 749, - 500, - 770 - ], - [ - 502, - 748, - 524, - 770 - ], - [ - 526, - 748, - 539, - 771 - ], - [ - 541, - 748, - 557, - 769 - ], - [ - 558, - 748, - 573, - 770 - ], - [ - 575, - 748, - 588, - 769 - ], - [ - 590, - 748, - 611, - 769 - ], - [ - 311, - 763, - 316, - 773 - ], - [ - 179, - 777, - 201, - 798 - ], - [ - 268, - 777, - 282, - 799 - ], - [ - 284, - 777, - 297, - 799 - ], - [ - 334, - 777, - 347, - 799 - ], - [ - 349, - 777, - 363, - 798 - ], - [ - 482, - 777, - 500, - 799 - ], - [ - 501, - 777, - 515, - 799 - ], - [ - 517, - 777, - 531, - 799 - ], - [ - 159, - 779, - 172, - 799 - ], - [ - 174, - 778, - 177, - 799 - ], - [ - 203, - 778, - 217, - 799 - ], - [ - 219, - 778, - 239, - 798 - ], - [ - 240, - 778, - 258, - 800 - ], - [ - 299, - 778, - 316, - 799 - ], - [ - 327, - 778, - 331, - 799 - ], - [ - 365, - 778, - 368, - 799 - ], - [ - 370, - 778, - 388, - 799 - ], - [ - 389, - 778, - 405, - 799 - ], - [ - 416, - 778, - 439, - 799 - ], - [ - 441, - 779, - 454, - 799 - ], - [ - 455, - 778, - 472, - 799 - ], - [ - 542, - 778, - 560, - 799 - ], - [ - 561, - 778, - 584, - 799 - ], - [ - 200, - 807, - 213, - 829 - ], - [ - 215, - 807, - 231, - 828 - ], - [ - 247, - 807, - 263, - 828 - ], - [ - 273, - 807, - 289, - 829 - ], - [ - 291, - 807, - 307, - 828 - ], - [ - 308, - 807, - 325, - 828 - ], - [ - 326, - 807, - 342, - 829 - ], - [ - 340, - 807, - 354, - 828 - ], - [ - 355, - 807, - 373, - 829 - ], - [ - 374, - 807, - 390, - 828 - ], - [ - 401, - 807, - 415, - 828 - ], - [ - 414, - 807, - 437, - 828 - ], - [ - 438, - 807, - 456, - 829 - ], - [ - 467, - 807, - 490, - 828 - ], - [ - 491, - 807, - 506, - 829 - ], - [ - 507, - 807, - 525, - 829 - ], - [ - 536, - 807, - 554, - 828 - ], - [ - 555, - 807, - 569, - 828 - ], - [ - 577, - 806, - 591, - 828 - ], - [ - 232, - 808, - 245, - 828 - ], - [ - 571, - 808, - 574, - 828 - ], - [ - 357, - 835, - 362, - 844 - ], - [ - 278, - 836, - 292, - 858 - ], - [ - 289, - 836, - 303, - 858 - ], - [ - 305, - 836, - 323, - 858 - ], - [ - 325, - 837, - 329, - 858 - ], - [ - 331, - 837, - 344, - 858 - ], - [ - 341, - 836, - 356, - 858 - ], - [ - 361, - 837, - 380, - 858 - ], - [ - 390, - 837, - 408, - 858 - ], - [ - 407, - 836, - 422, - 858 - ], - [ - 424, - 836, - 437, - 857 - ], - [ - 438, - 837, - 460, - 858 - ], - [ - 461, - 836, - 476, - 858 - ], - [ - 478, - 836, - 493, - 858 - ], - [ - 493, - 836, - 512, - 858 - ], - [ - 508, - 852, - 513, - 857 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 143, - 1591, - 611, - 1752 - ], - "bubble_bbox": [ - 89, - 1458, - 670, - 1891 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 335, - 1611, - 348, - 1618 - ], - [ - 336, - 1620, - 349, - 1628 - ], - [ - 164, - 1646, - 183, - 1661 - ], - [ - 230, - 1645, - 243, - 1655 - ], - [ - 448, - 1645, - 461, - 1655 - ], - [ - 521, - 1646, - 541, - 1661 - ], - [ - 432, - 1648, - 437, - 1655 - ], - [ - 253, - 1680, - 265, - 1689 - ], - [ - 406, - 1680, - 419, - 1696 - ], - [ - 510, - 1680, - 529, - 1696 - ], - [ - 575, - 1680, - 587, - 1695 - ], - [ - 317, - 1682, - 322, - 1690 - ], - [ - 323, - 1714, - 335, - 1724 - ], - [ - 422, - 1715, - 435, - 1730 - ], - [ - 260, - 1717, - 265, - 1724 - ], - [ - 341, - 1717, - 346, - 1724 - ], - [ - 456, - 1717, - 461, - 1724 - ], - [ - 495, - 1717, - 499, - 1724 - ], - [ - 293, - 1605, - 299, - 1616 - ], - [ - 375, - 1606, - 392, - 1632 - ], - [ - 394, - 1606, - 410, - 1631 - ], - [ - 423, - 1606, - 447, - 1632 - ], - [ - 265, - 1607, - 269, - 1631 - ], - [ - 271, - 1607, - 292, - 1632 - ], - [ - 298, - 1607, - 320, - 1631 - ], - [ - 332, - 1607, - 352, - 1632 - ], - [ - 354, - 1607, - 373, - 1631 - ], - [ - 448, - 1607, - 467, - 1631 - ], - [ - 468, - 1608, - 483, - 1632 - ], - [ - 485, - 1607, - 500, - 1631 - ], - [ - 189, - 1640, - 205, - 1666 - ], - [ - 280, - 1640, - 303, - 1665 - ], - [ - 325, - 1640, - 341, - 1666 - ], - [ - 500, - 1640, - 516, - 1666 - ], - [ - 546, - 1640, - 570, - 1666 - ], - [ - 160, - 1641, - 187, - 1666 - ], - [ - 206, - 1641, - 225, - 1666 - ], - [ - 226, - 1641, - 246, - 1667 - ], - [ - 258, - 1641, - 280, - 1666 - ], - [ - 304, - 1641, - 323, - 1666 - ], - [ - 342, - 1641, - 360, - 1666 - ], - [ - 362, - 1641, - 379, - 1666 - ], - [ - 390, - 1641, - 407, - 1666 - ], - [ - 409, - 1641, - 426, - 1666 - ], - [ - 426, - 1641, - 443, - 1666 - ], - [ - 444, - 1641, - 465, - 1667 - ], - [ - 466, - 1641, - 487, - 1665 - ], - [ - 518, - 1641, - 544, - 1666 - ], - [ - 589, - 1641, - 604, - 1666 - ], - [ - 571, - 1660, - 577, - 1666 - ], - [ - 173, - 1675, - 189, - 1700 - ], - [ - 191, - 1675, - 210, - 1700 - ], - [ - 212, - 1675, - 228, - 1701 - ], - [ - 229, - 1675, - 248, - 1700 - ], - [ - 249, - 1675, - 269, - 1701 - ], - [ - 283, - 1676, - 287, - 1700 - ], - [ - 289, - 1675, - 311, - 1700 - ], - [ - 312, - 1675, - 328, - 1700 - ], - [ - 329, - 1675, - 354, - 1699 - ], - [ - 356, - 1676, - 360, - 1700 - ], - [ - 364, - 1675, - 379, - 1700 - ], - [ - 382, - 1675, - 401, - 1700 - ], - [ - 403, - 1676, - 422, - 1701 - ], - [ - 436, - 1675, - 451, - 1701 - ], - [ - 453, - 1675, - 472, - 1700 - ], - [ - 484, - 1675, - 508, - 1701 - ], - [ - 507, - 1676, - 533, - 1700 - ], - [ - 535, - 1675, - 552, - 1701 - ], - [ - 571, - 1676, - 591, - 1700 - ], - [ - 555, - 1677, - 570, - 1700 - ], - [ - 238, - 1709, - 253, - 1736 - ], - [ - 254, - 1709, - 270, - 1734 - ], - [ - 271, - 1709, - 287, - 1735 - ], - [ - 288, - 1710, - 307, - 1735 - ], - [ - 320, - 1710, - 338, - 1735 - ], - [ - 335, - 1710, - 352, - 1735 - ], - [ - 376, - 1710, - 396, - 1734 - ], - [ - 398, - 1710, - 417, - 1735 - ], - [ - 450, - 1709, - 467, - 1735 - ], - [ - 468, - 1709, - 491, - 1735 - ], - [ - 489, - 1709, - 506, - 1735 - ], - [ - 505, - 1709, - 523, - 1734 - ], - [ - 354, - 1711, - 375, - 1735 - ], - [ - 419, - 1711, - 439, - 1735 - ], - [ - 520, - 1728, - 525, - 1734 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 96, - 2230, - 467, - 2345 - ], - "bubble_bbox": [ - 47, - 2116, - 516, - 2444 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 252, - 2250, - 263, - 2258 - ], - [ - 331, - 2250, - 342, - 2258 - ], - [ - 416, - 2250, - 427, - 2259 - ], - [ - 157, - 2251, - 174, - 2264 - ], - [ - 205, - 2251, - 221, - 2263 - ], - [ - 390, - 2251, - 407, - 2264 - ], - [ - 199, - 2280, - 209, - 2289 - ], - [ - 292, - 2280, - 309, - 2294 - ], - [ - 318, - 2280, - 329, - 2288 - ], - [ - 337, - 2280, - 347, - 2293 - ], - [ - 402, - 2280, - 417, - 2294 - ], - [ - 237, - 2282, - 241, - 2288 - ], - [ - 126, - 2310, - 137, - 2316 - ], - [ - 152, - 2310, - 163, - 2318 - ], - [ - 203, - 2310, - 213, - 2323 - ], - [ - 326, - 2310, - 337, - 2316 - ], - [ - 346, - 2310, - 356, - 2319 - ], - [ - 401, - 2310, - 417, - 2323 - ], - [ - 219, - 2312, - 223, - 2319 - ], - [ - 365, - 2312, - 369, - 2319 - ], - [ - 126, - 2318, - 137, - 2324 - ], - [ - 326, - 2318, - 338, - 2324 - ], - [ - 189, - 2246, - 204, - 2268 - ], - [ - 203, - 2246, - 224, - 2267 - ], - [ - 225, - 2246, - 240, - 2268 - ], - [ - 242, - 2245, - 247, - 2255 - ], - [ - 248, - 2246, - 266, - 2269 - ], - [ - 267, - 2246, - 284, - 2268 - ], - [ - 295, - 2246, - 308, - 2269 - ], - [ - 310, - 2246, - 326, - 2268 - ], - [ - 327, - 2246, - 345, - 2269 - ], - [ - 346, - 2246, - 363, - 2268 - ], - [ - 374, - 2246, - 389, - 2268 - ], - [ - 412, - 2246, - 430, - 2269 - ], - [ - 135, - 2247, - 153, - 2268 - ], - [ - 155, - 2247, - 178, - 2268 - ], - [ - 387, - 2247, - 411, - 2268 - ], - [ - 109, - 2276, - 128, - 2298 - ], - [ - 128, - 2276, - 143, - 2299 - ], - [ - 145, - 2276, - 162, - 2298 - ], - [ - 172, - 2276, - 194, - 2297 - ], - [ - 196, - 2276, - 212, - 2298 - ], - [ - 214, - 2276, - 230, - 2298 - ], - [ - 230, - 2276, - 247, - 2298 - ], - [ - 246, - 2276, - 264, - 2298 - ], - [ - 314, - 2276, - 332, - 2299 - ], - [ - 352, - 2275, - 357, - 2285 - ], - [ - 421, - 2276, - 440, - 2298 - ], - [ - 440, - 2276, - 455, - 2299 - ], - [ - 275, - 2277, - 288, - 2298 - ], - [ - 289, - 2277, - 313, - 2298 - ], - [ - 334, - 2277, - 351, - 2298 - ], - [ - 357, - 2277, - 375, - 2298 - ], - [ - 385, - 2277, - 401, - 2299 - ], - [ - 399, - 2277, - 420, - 2298 - ], - [ - 148, - 2306, - 166, - 2329 - ], - [ - 167, - 2306, - 183, - 2328 - ], - [ - 184, - 2306, - 197, - 2329 - ], - [ - 214, - 2306, - 229, - 2328 - ], - [ - 228, - 2306, - 244, - 2328 - ], - [ - 273, - 2306, - 290, - 2328 - ], - [ - 305, - 2306, - 322, - 2328 - ], - [ - 343, - 2306, - 359, - 2328 - ], - [ - 360, - 2306, - 374, - 2328 - ], - [ - 373, - 2306, - 392, - 2328 - ], - [ - 399, - 2306, - 419, - 2327 - ], - [ - 422, - 2306, - 435, - 2328 - ], - [ - 123, - 2307, - 141, - 2328 - ], - [ - 143, - 2307, - 146, - 2328 - ], - [ - 199, - 2307, - 216, - 2328 - ], - [ - 254, - 2307, - 272, - 2328 - ], - [ - 291, - 2307, - 304, - 2328 - ], - [ - 323, - 2307, - 341, - 2328 - ], - [ - 393, - 2307, - 397, - 2328 - ], - [ - 437, - 2322, - 442, - 2328 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 122, - 3140, - 366, - 3206 - ], - "bubble_bbox": [ - 70, - 3067, - 417, - 3280 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 227, - 3151, - 236, - 3158 - ], - [ - 312, - 3151, - 321, - 3156 - ], - [ - 168, - 3153, - 172, - 3158 - ], - [ - 312, - 3158, - 322, - 3164 - ], - [ - 172, - 3178, - 187, - 3190 - ], - [ - 223, - 3178, - 233, - 3190 - ], - [ - 246, - 3178, - 256, - 3190 - ], - [ - 283, - 3178, - 297, - 3189 - ], - [ - 193, - 3146, - 198, - 3155 - ], - [ - 132, - 3147, - 149, - 3167 - ], - [ - 149, - 3147, - 162, - 3167 - ], - [ - 163, - 3147, - 177, - 3167 - ], - [ - 176, - 3147, - 192, - 3167 - ], - [ - 197, - 3148, - 214, - 3167 - ], - [ - 223, - 3147, - 239, - 3168 - ], - [ - 241, - 3148, - 244, - 3167 - ], - [ - 246, - 3147, - 265, - 3166 - ], - [ - 267, - 3147, - 280, - 3167 - ], - [ - 281, - 3147, - 298, - 3167 - ], - [ - 309, - 3148, - 325, - 3167 - ], - [ - 326, - 3147, - 339, - 3167 - ], - [ - 340, - 3147, - 357, - 3167 - ], - [ - 294, - 3162, - 299, - 3167 - ], - [ - 157, - 3174, - 168, - 3195 - ], - [ - 170, - 3174, - 191, - 3194 - ], - [ - 192, - 3174, - 211, - 3194 - ], - [ - 268, - 3174, - 282, - 3194 - ], - [ - 281, - 3174, - 300, - 3193 - ], - [ - 301, - 3174, - 314, - 3194 - ], - [ - 220, - 3175, - 236, - 3194 - ], - [ - 238, - 3175, - 241, - 3194 - ], - [ - 243, - 3175, - 259, - 3194 - ], - [ - 316, - 3188, - 320, - 3193 - ], - [ - 322, - 3188, - 326, - 3193 - ], - [ - 328, - 3188, - 333, - 3193 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 119, - 3573, - 596, - 3712 - ], - "bubble_bbox": [ - 81, - 3425, - 673, - 3844 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 279, - 3590, - 287, - 3595 - ], - [ - 338, - 3590, - 347, - 3597 - ], - [ - 408, - 3590, - 416, - 3597 - ], - [ - 319, - 3591, - 332, - 3601 - ], - [ - 421, - 3592, - 424, - 3597 - ], - [ - 476, - 3591, - 485, - 3601 - ], - [ - 279, - 3596, - 287, - 3601 - ], - [ - 138, - 3614, - 151, - 3625 - ], - [ - 169, - 3614, - 177, - 3624 - ], - [ - 254, - 3614, - 267, - 3625 - ], - [ - 391, - 3614, - 404, - 3625 - ], - [ - 494, - 3614, - 502, - 3621 - ], - [ - 553, - 3614, - 565, - 3624 - ], - [ - 164, - 3638, - 173, - 3648 - ], - [ - 247, - 3637, - 255, - 3644 - ], - [ - 275, - 3638, - 287, - 3648 - ], - [ - 293, - 3637, - 300, - 3644 - ], - [ - 352, - 3637, - 360, - 3644 - ], - [ - 365, - 3638, - 378, - 3648 - ], - [ - 469, - 3639, - 472, - 3644 - ], - [ - 313, - 3661, - 326, - 3672 - ], - [ - 399, - 3661, - 407, - 3671 - ], - [ - 548, - 3661, - 561, - 3672 - ], - [ - 376, - 3663, - 379, - 3668 - ], - [ - 450, - 3663, - 453, - 3668 - ], - [ - 301, - 3684, - 310, - 3691 - ], - [ - 464, - 3684, - 472, - 3690 - ], - [ - 228, - 3685, - 236, - 3695 - ], - [ - 241, - 3685, - 254, - 3695 - ], - [ - 269, - 3685, - 282, - 3695 - ], - [ - 324, - 3685, - 332, - 3689 - ], - [ - 399, - 3685, - 412, - 3695 - ], - [ - 324, - 3691, - 333, - 3696 - ], - [ - 276, - 3588, - 290, - 3605 - ], - [ - 291, - 3587, - 304, - 3604 - ], - [ - 306, - 3587, - 317, - 3605 - ], - [ - 316, - 3588, - 334, - 3604 - ], - [ - 336, - 3587, - 350, - 3605 - ], - [ - 350, - 3587, - 364, - 3604 - ], - [ - 372, - 3587, - 383, - 3605 - ], - [ - 384, - 3587, - 398, - 3604 - ], - [ - 406, - 3587, - 419, - 3605 - ], - [ - 417, - 3587, - 428, - 3604 - ], - [ - 429, - 3587, - 458, - 3604 - ], - [ - 459, - 3587, - 473, - 3604 - ], - [ - 474, - 3588, - 488, - 3605 - ], - [ - 488, - 3599, - 492, - 3607 - ], - [ - 188, - 3610, - 203, - 3628 - ], - [ - 204, - 3610, - 215, - 3628 - ], - [ - 217, - 3610, - 227, - 3628 - ], - [ - 450, - 3610, - 461, - 3628 - ], - [ - 569, - 3610, - 579, - 3628 - ], - [ - 135, - 3611, - 154, - 3628 - ], - [ - 155, - 3612, - 166, - 3628 - ], - [ - 166, - 3611, - 180, - 3628 - ], - [ - 236, - 3611, - 251, - 3628 - ], - [ - 252, - 3611, - 270, - 3628 - ], - [ - 279, - 3612, - 289, - 3628 - ], - [ - 291, - 3611, - 304, - 3628 - ], - [ - 305, - 3611, - 329, - 3628 - ], - [ - 337, - 3611, - 349, - 3628 - ], - [ - 350, - 3611, - 365, - 3628 - ], - [ - 373, - 3611, - 388, - 3628 - ], - [ - 389, - 3611, - 407, - 3628 - ], - [ - 407, - 3611, - 421, - 3628 - ], - [ - 423, - 3611, - 436, - 3628 - ], - [ - 445, - 3611, - 448, - 3628 - ], - [ - 462, - 3611, - 476, - 3628 - ], - [ - 476, - 3611, - 491, - 3628 - ], - [ - 492, - 3611, - 505, - 3628 - ], - [ - 506, - 3611, - 518, - 3628 - ], - [ - 519, - 3611, - 532, - 3628 - ], - [ - 533, - 3611, - 545, - 3628 - ], - [ - 546, - 3611, - 549, - 3628 - ], - [ - 551, - 3611, - 567, - 3627 - ], - [ - 581, - 3611, - 595, - 3628 - ], - [ - 144, - 3634, - 155, - 3652 - ], - [ - 183, - 3634, - 198, - 3652 - ], - [ - 199, - 3634, - 210, - 3652 - ], - [ - 211, - 3634, - 223, - 3651 - ], - [ - 222, - 3634, - 237, - 3652 - ], - [ - 259, - 3634, - 289, - 3652 - ], - [ - 315, - 3634, - 328, - 3652 - ], - [ - 337, - 3634, - 348, - 3652 - ], - [ - 349, - 3634, - 362, - 3652 - ], - [ - 380, - 3634, - 395, - 3652 - ], - [ - 403, - 3634, - 418, - 3652 - ], - [ - 419, - 3634, - 430, - 3652 - ], - [ - 432, - 3634, - 445, - 3651 - ], - [ - 454, - 3634, - 464, - 3652 - ], - [ - 465, - 3634, - 476, - 3651 - ], - [ - 477, - 3634, - 488, - 3652 - ], - [ - 489, - 3634, - 501, - 3652 - ], - [ - 534, - 3634, - 546, - 3651 - ], - [ - 547, - 3634, - 558, - 3651 - ], - [ - 567, - 3634, - 583, - 3652 - ], - [ - 129, - 3635, - 144, - 3652 - ], - [ - 157, - 3635, - 160, - 3652 - ], - [ - 162, - 3635, - 175, - 3652 - ], - [ - 245, - 3635, - 258, - 3652 - ], - [ - 290, - 3635, - 303, - 3652 - ], - [ - 304, - 3635, - 314, - 3651 - ], - [ - 362, - 3635, - 380, - 3652 - ], - [ - 509, - 3635, - 523, - 3652 - ], - [ - 524, - 3635, - 534, - 3651 - ], - [ - 166, - 3658, - 179, - 3675 - ], - [ - 180, - 3657, - 191, - 3675 - ], - [ - 192, - 3658, - 205, - 3675 - ], - [ - 206, - 3658, - 217, - 3675 - ], - [ - 218, - 3658, - 230, - 3675 - ], - [ - 231, - 3658, - 256, - 3675 - ], - [ - 269, - 3658, - 279, - 3675 - ], - [ - 277, - 3658, - 289, - 3675 - ], - [ - 296, - 3658, - 310, - 3675 - ], - [ - 311, - 3658, - 329, - 3675 - ], - [ - 329, - 3658, - 344, - 3675 - ], - [ - 345, - 3658, - 358, - 3675 - ], - [ - 371, - 3658, - 383, - 3675 - ], - [ - 384, - 3658, - 395, - 3675 - ], - [ - 397, - 3658, - 410, - 3675 - ], - [ - 418, - 3658, - 433, - 3675 - ], - [ - 433, - 3657, - 445, - 3676 - ], - [ - 446, - 3658, - 457, - 3675 - ], - [ - 456, - 3658, - 471, - 3675 - ], - [ - 479, - 3658, - 495, - 3675 - ], - [ - 496, - 3658, - 509, - 3675 - ], - [ - 517, - 3658, - 532, - 3675 - ], - [ - 533, - 3658, - 544, - 3676 - ], - [ - 546, - 3658, - 564, - 3675 - ], - [ - 565, - 3658, - 577, - 3675 - ], - [ - 257, - 3659, - 268, - 3675 - ], - [ - 579, - 3659, - 589, - 3675 - ], - [ - 359, - 3670, - 363, - 3678 - ], - [ - 225, - 3682, - 239, - 3699 - ], - [ - 239, - 3682, - 257, - 3699 - ], - [ - 266, - 3682, - 285, - 3699 - ], - [ - 286, - 3681, - 298, - 3699 - ], - [ - 299, - 3681, - 313, - 3699 - ], - [ - 322, - 3682, - 335, - 3699 - ], - [ - 337, - 3681, - 350, - 3699 - ], - [ - 350, - 3682, - 365, - 3699 - ], - [ - 364, - 3682, - 377, - 3699 - ], - [ - 384, - 3682, - 399, - 3699 - ], - [ - 396, - 3682, - 415, - 3699 - ], - [ - 424, - 3681, - 434, - 3699 - ], - [ - 436, - 3682, - 448, - 3699 - ], - [ - 450, - 3682, - 460, - 3699 - ], - [ - 461, - 3681, - 474, - 3699 - ], - [ - 482, - 3681, - 497, - 3699 - ], - [ - 497, - 3681, - 509, - 3699 - ], - [ - 510, - 3681, - 523, - 3699 - ], - [ - 524, - 3681, - 539, - 3699 - ], - [ - 540, - 3694, - 544, - 3699 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/b06124a976b443c7b57c4733aa2023ef.jpeg", - "context_path": "contexts/183/context.json", - "id": 86411 - }, - { - "blk_list": [ - { - "text_bbox": [ - 157, - 181, - 461, - 360 - ], - "bubble_bbox": [ - 91, - 92, - 524, - 442 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 370, - 205, - 391, - 222 - ], - [ - 222, - 242, - 236, - 253 - ], - [ - 182, - 280, - 196, - 287 - ], - [ - 311, - 279, - 324, - 290 - ], - [ - 391, - 280, - 412, - 297 - ], - [ - 422, - 280, - 435, - 291 - ], - [ - 182, - 290, - 197, - 298 - ], - [ - 285, - 318, - 306, - 334 - ], - [ - 220, - 200, - 243, - 228 - ], - [ - 245, - 200, - 263, - 228 - ], - [ - 265, - 200, - 286, - 227 - ], - [ - 288, - 200, - 305, - 227 - ], - [ - 319, - 200, - 345, - 228 - ], - [ - 346, - 200, - 364, - 228 - ], - [ - 367, - 201, - 396, - 227 - ], - [ - 181, - 238, - 205, - 265 - ], - [ - 217, - 238, - 240, - 266 - ], - [ - 241, - 238, - 260, - 265 - ], - [ - 263, - 237, - 280, - 264 - ], - [ - 283, - 237, - 300, - 265 - ], - [ - 311, - 237, - 327, - 264 - ], - [ - 330, - 238, - 356, - 264 - ], - [ - 368, - 238, - 391, - 265 - ], - [ - 393, - 237, - 411, - 265 - ], - [ - 414, - 238, - 418, - 264 - ], - [ - 421, - 238, - 444, - 265 - ], - [ - 175, - 239, - 179, - 265 - ], - [ - 303, - 239, - 307, - 265 - ], - [ - 367, - 274, - 385, - 303 - ], - [ - 179, - 276, - 200, - 302 - ], - [ - 202, - 275, - 220, - 302 - ], - [ - 222, - 275, - 245, - 302 - ], - [ - 242, - 275, - 264, - 301 - ], - [ - 266, - 275, - 282, - 303 - ], - [ - 284, - 275, - 305, - 302 - ], - [ - 306, - 275, - 328, - 303 - ], - [ - 342, - 276, - 365, - 302 - ], - [ - 387, - 275, - 416, - 302 - ], - [ - 419, - 275, - 439, - 302 - ], - [ - 262, - 312, - 278, - 339 - ], - [ - 312, - 312, - 337, - 339 - ], - [ - 338, - 311, - 356, - 331 - ], - [ - 281, - 313, - 310, - 339 - ], - [ - 343, - 333, - 349, - 339 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 212, - 1052, - 517, - 1127 - ], - "bubble_bbox": [ - 179, - 944, - 552, - 1236 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 341, - 1066, - 351, - 1074 - ], - [ - 368, - 1066, - 378, - 1072 - ], - [ - 386, - 1066, - 396, - 1075 - ], - [ - 476, - 1066, - 486, - 1074 - ], - [ - 269, - 1067, - 285, - 1079 - ], - [ - 307, - 1067, - 317, - 1078 - ], - [ - 402, - 1067, - 418, - 1079 - ], - [ - 368, - 1074, - 379, - 1080 - ], - [ - 247, - 1094, - 258, - 1102 - ], - [ - 368, - 1094, - 378, - 1102 - ], - [ - 432, - 1095, - 448, - 1107 - ], - [ - 234, - 1097, - 238, - 1103 - ], - [ - 355, - 1097, - 359, - 1103 - ], - [ - 224, - 1062, - 242, - 1083 - ], - [ - 440, - 1062, - 454, - 1084 - ], - [ - 243, - 1063, - 257, - 1084 - ], - [ - 267, - 1063, - 289, - 1083 - ], - [ - 290, - 1064, - 303, - 1083 - ], - [ - 304, - 1063, - 320, - 1083 - ], - [ - 321, - 1063, - 337, - 1083 - ], - [ - 338, - 1063, - 355, - 1084 - ], - [ - 365, - 1063, - 382, - 1084 - ], - [ - 384, - 1063, - 399, - 1083 - ], - [ - 399, - 1063, - 421, - 1083 - ], - [ - 422, - 1063, - 440, - 1084 - ], - [ - 456, - 1063, - 472, - 1083 - ], - [ - 472, - 1063, - 489, - 1084 - ], - [ - 490, - 1063, - 508, - 1083 - ], - [ - 229, - 1090, - 243, - 1111 - ], - [ - 294, - 1090, - 307, - 1111 - ], - [ - 335, - 1090, - 349, - 1112 - ], - [ - 244, - 1091, - 261, - 1112 - ], - [ - 262, - 1091, - 278, - 1111 - ], - [ - 288, - 1092, - 292, - 1111 - ], - [ - 317, - 1092, - 334, - 1111 - ], - [ - 350, - 1091, - 363, - 1111 - ], - [ - 364, - 1091, - 381, - 1112 - ], - [ - 382, - 1091, - 402, - 1111 - ], - [ - 403, - 1091, - 419, - 1111 - ], - [ - 429, - 1091, - 451, - 1111 - ], - [ - 453, - 1091, - 467, - 1112 - ], - [ - 478, - 1092, - 481, - 1111 - ], - [ - 482, - 1091, - 500, - 1112 - ], - [ - 496, - 1106, - 501, - 1111 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 163, - 1470, - 450, - 1556 - ], - "bubble_bbox": [ - 122, - 1366, - 490, - 1647 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 175, - 1519, - 195, - 1535 - ], - [ - 310, - 1520, - 322, - 1536 - ], - [ - 283, - 1522, - 287, - 1530 - ], - [ - 423, - 1522, - 428, - 1530 - ], - [ - 192, - 1481, - 206, - 1506 - ], - [ - 240, - 1481, - 259, - 1506 - ], - [ - 260, - 1481, - 278, - 1506 - ], - [ - 313, - 1481, - 334, - 1506 - ], - [ - 335, - 1481, - 351, - 1507 - ], - [ - 218, - 1482, - 239, - 1506 - ], - [ - 354, - 1482, - 358, - 1506 - ], - [ - 361, - 1482, - 382, - 1506 - ], - [ - 395, - 1482, - 399, - 1506 - ], - [ - 401, - 1482, - 422, - 1506 - ], - [ - 279, - 1500, - 285, - 1506 - ], - [ - 287, - 1500, - 293, - 1506 - ], - [ - 295, - 1500, - 301, - 1506 - ], - [ - 172, - 1515, - 198, - 1539 - ], - [ - 277, - 1515, - 293, - 1540 - ], - [ - 372, - 1515, - 393, - 1540 - ], - [ - 394, - 1515, - 417, - 1540 - ], - [ - 417, - 1515, - 434, - 1540 - ], - [ - 199, - 1516, - 216, - 1540 - ], - [ - 219, - 1516, - 223, - 1540 - ], - [ - 225, - 1516, - 246, - 1540 - ], - [ - 247, - 1516, - 266, - 1540 - ], - [ - 307, - 1516, - 326, - 1540 - ], - [ - 329, - 1516, - 333, - 1540 - ], - [ - 336, - 1517, - 350, - 1540 - ], - [ - 352, - 1516, - 371, - 1540 - ], - [ - 435, - 1534, - 441, - 1540 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 555, - 1595, - 625, - 1626 - ], - "bubble_bbox": [ - 492, - 1549, - 686, - 1668 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 570, - 1610, - 576, - 1616 - ], - [ - 582, - 1610, - 588, - 1616 - ], - [ - 593, - 1610, - 599, - 1616 - ], - [ - 605, - 1610, - 611, - 1616 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 195, - 2738, - 331, - 2856 - ], - "bubble_bbox": [ - 173, - 2704, - 355, - 2880 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 255, - 2773, - 267, - 2797 - ], - [ - 239, - 2751, - 276, - 2837 - ], - [ - 265, - 2752, - 297, - 2816 - ], - [ - 285, - 2752, - 321, - 2810 - ], - [ - 206, - 2755, - 242, - 2845 - ], - [ - 224, - 2755, - 253, - 2844 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 230, - 3328, - 362, - 3393 - ], - "bubble_bbox": [ - 171, - 3275, - 421, - 3450 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 271, - 3340, - 310, - 3378 - ], - [ - 313, - 3340, - 339, - 3380 - ], - [ - 242, - 3341, - 268, - 3380 - ], - [ - 342, - 3370, - 351, - 3379 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 84, - 3820, - 317, - 3911 - ], - "bubble_bbox": [ - 30, - 3736, - 371, - 3982 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 177, - 3839, - 190, - 3850 - ], - [ - 118, - 3840, - 140, - 3856 - ], - [ - 148, - 3840, - 168, - 3856 - ], - [ - 120, - 3877, - 133, - 3888 - ], - [ - 139, - 3877, - 160, - 3894 - ], - [ - 189, - 3877, - 210, - 3894 - ], - [ - 102, - 3879, - 108, - 3888 - ], - [ - 221, - 3832, - 232, - 3852 - ], - [ - 115, - 3835, - 144, - 3862 - ], - [ - 145, - 3835, - 171, - 3860 - ], - [ - 174, - 3835, - 194, - 3862 - ], - [ - 194, - 3835, - 217, - 3861 - ], - [ - 244, - 3834, - 268, - 3862 - ], - [ - 270, - 3835, - 288, - 3862 - ], - [ - 218, - 3855, - 225, - 3861 - ], - [ - 96, - 3872, - 114, - 3899 - ], - [ - 116, - 3873, - 137, - 3900 - ], - [ - 135, - 3872, - 164, - 3899 - ], - [ - 185, - 3872, - 214, - 3899 - ], - [ - 216, - 3872, - 243, - 3898 - ], - [ - 246, - 3873, - 250, - 3899 - ], - [ - 253, - 3872, - 272, - 3900 - ], - [ - 274, - 3873, - 297, - 3899 - ], - [ - 167, - 3874, - 183, - 3899 - ], - [ - 298, - 3892, - 305, - 3899 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 624, - 3979, - 684, - 4130 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 674, - 3991, - 681, - 3995 - ], - [ - 658, - 3995, - 662, - 3999 - ], - [ - 656, - 4003, - 659, - 4011 - ], - [ - 632, - 4008, - 637, - 4016 - ], - [ - 673, - 4009, - 678, - 4016 - ], - [ - 655, - 4013, - 659, - 4020 - ], - [ - 633, - 4033, - 638, - 4037 - ], - [ - 632, - 4039, - 635, - 4050 - ], - [ - 654, - 4042, - 657, - 4054 - ], - [ - 673, - 4042, - 676, - 4050 - ], - [ - 630, - 4051, - 635, - 4059 - ], - [ - 673, - 4051, - 677, - 4060 - ], - [ - 651, - 4055, - 657, - 4063 - ], - [ - 631, - 4077, - 636, - 4080 - ], - [ - 628, - 4081, - 633, - 4101 - ], - [ - 651, - 4085, - 655, - 4095 - ], - [ - 673, - 4085, - 676, - 4094 - ], - [ - 671, - 4095, - 677, - 4103 - ], - [ - 650, - 4098, - 655, - 4105 - ], - [ - 671, - 4124, - 675, - 4127 - ], - [ - 648, - 3974, - 660, - 3977 - ], - [ - 637, - 3978, - 659, - 3982 - ], - [ - 631, - 3981, - 639, - 3988 - ], - [ - 666, - 4031, - 681, - 4131 - ], - [ - 648, - 4034, - 662, - 4077 - ], - [ - 647, - 4076, - 659, - 4119 - ], - [ - 647, - 4119, - 660, - 4127 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 70, - 4553, - 233, - 4589 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 199, - 4559, - 207, - 4584 - ], - [ - 209, - 4559, - 220, - 4584 - ], - [ - 78, - 4561, - 87, - 4585 - ], - [ - 88, - 4561, - 96, - 4585 - ], - [ - 98, - 4561, - 106, - 4585 - ], - [ - 108, - 4561, - 115, - 4585 - ], - [ - 117, - 4561, - 125, - 4585 - ], - [ - 126, - 4560, - 134, - 4585 - ], - [ - 136, - 4560, - 143, - 4585 - ], - [ - 145, - 4560, - 153, - 4585 - ], - [ - 154, - 4560, - 163, - 4584 - ], - [ - 165, - 4560, - 173, - 4584 - ], - [ - 175, - 4560, - 183, - 4584 - ], - [ - 190, - 4560, - 197, - 4584 - ], - [ - 202, - 4563, - 204, - 4580 - ], - [ - 91, - 4564, - 93, - 4582 - ], - [ - 101, - 4564, - 103, - 4571 - ], - [ - 157, - 4567, - 160, - 4576 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 383, - 4689, - 632, - 4776 - ], - "bubble_bbox": [ - 336, - 4613, - 675, - 4857 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 458, - 4709, - 463, - 4716 - ], - [ - 491, - 4709, - 495, - 4716 - ], - [ - 397, - 4738, - 417, - 4754 - ], - [ - 532, - 4739, - 543, - 4749 - ], - [ - 501, - 4742, - 506, - 4749 - ], - [ - 505, - 4700, - 514, - 4718 - ], - [ - 437, - 4702, - 451, - 4727 - ], - [ - 452, - 4702, - 468, - 4726 - ], - [ - 470, - 4702, - 484, - 4727 - ], - [ - 485, - 4702, - 501, - 4726 - ], - [ - 552, - 4701, - 558, - 4712 - ], - [ - 526, - 4703, - 530, - 4726 - ], - [ - 532, - 4703, - 551, - 4727 - ], - [ - 558, - 4703, - 578, - 4726 - ], - [ - 503, - 4720, - 508, - 4726 - ], - [ - 395, - 4735, - 420, - 4758 - ], - [ - 421, - 4735, - 437, - 4759 - ], - [ - 440, - 4736, - 444, - 4759 - ], - [ - 446, - 4735, - 466, - 4759 - ], - [ - 467, - 4735, - 485, - 4759 - ], - [ - 495, - 4735, - 511, - 4759 - ], - [ - 513, - 4736, - 527, - 4759 - ], - [ - 529, - 4735, - 547, - 4759 - ], - [ - 549, - 4736, - 553, - 4759 - ], - [ - 555, - 4735, - 579, - 4758 - ], - [ - 580, - 4735, - 596, - 4760 - ], - [ - 598, - 4735, - 618, - 4759 - ], - [ - 613, - 4753, - 619, - 4759 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/87d0ff575f5642d9b5d782e804466ccb.jpeg", - "context_path": "contexts/183/context.json", - "id": 86409 - }, - { - "blk_list": [ - { - "text_bbox": [ - 71, - 780, - 401, - 827 - ], - "bubble_bbox": [ - 41, - 745, - 437, - 864 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 288, - 795, - 292, - 804 - ], - [ - 316, - 795, - 321, - 812 - ], - [ - 154, - 799, - 158, - 808 - ], - [ - 239, - 798, - 242, - 808 - ], - [ - 86, - 791, - 97, - 816 - ], - [ - 100, - 791, - 103, - 816 - ], - [ - 106, - 791, - 118, - 816 - ], - [ - 121, - 791, - 133, - 816 - ], - [ - 136, - 791, - 148, - 816 - ], - [ - 149, - 791, - 162, - 816 - ], - [ - 175, - 791, - 186, - 816 - ], - [ - 188, - 791, - 200, - 816 - ], - [ - 215, - 791, - 226, - 816 - ], - [ - 228, - 791, - 232, - 816 - ], - [ - 249, - 791, - 261, - 816 - ], - [ - 326, - 791, - 339, - 816 - ], - [ - 341, - 791, - 345, - 816 - ], - [ - 347, - 791, - 360, - 816 - ], - [ - 376, - 791, - 387, - 816 - ], - [ - 203, - 792, - 213, - 816 - ], - [ - 234, - 792, - 247, - 816 - ], - [ - 264, - 792, - 276, - 816 - ], - [ - 284, - 792, - 296, - 816 - ], - [ - 298, - 792, - 311, - 816 - ], - [ - 313, - 792, - 325, - 816 - ], - [ - 362, - 792, - 374, - 816 - ], - [ - 163, - 811, - 168, - 818 - ], - [ - 388, - 811, - 392, - 816 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 67, - 2009, - 258, - 2055 - ], - "bubble_bbox": [ - 49, - 1976, - 275, - 2087 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 142, - 2027, - 146, - 2037 - ], - [ - 224, - 2027, - 227, - 2037 - ], - [ - 71, - 2020, - 84, - 2046 - ], - [ - 86, - 2020, - 99, - 2046 - ], - [ - 102, - 2019, - 113, - 2046 - ], - [ - 122, - 2020, - 135, - 2046 - ], - [ - 137, - 2020, - 151, - 2046 - ], - [ - 153, - 2019, - 166, - 2046 - ], - [ - 169, - 2019, - 182, - 2045 - ], - [ - 191, - 2020, - 204, - 2045 - ], - [ - 207, - 2020, - 217, - 2045 - ], - [ - 219, - 2020, - 232, - 2046 - ], - [ - 234, - 2020, - 248, - 2046 - ], - [ - 250, - 2041, - 254, - 2046 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 100, - 2315, - 255, - 2435 - ], - "bubble_bbox": [ - 45, - 2231, - 301, - 2507 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 182, - 2337, - 193, - 2349 - ], - [ - 171, - 2351, - 193, - 2397 - ], - [ - 207, - 2354, - 217, - 2377 - ], - [ - 150, - 2366, - 161, - 2376 - ], - [ - 203, - 2379, - 217, - 2388 - ], - [ - 128, - 2390, - 130, - 2398 - ], - [ - 171, - 2399, - 183, - 2410 - ], - [ - 226, - 2325, - 244, - 2389 - ], - [ - 195, - 2328, - 223, - 2415 - ], - [ - 109, - 2330, - 145, - 2415 - ], - [ - 140, - 2330, - 173, - 2415 - ], - [ - 166, - 2331, - 198, - 2416 - ], - [ - 220, - 2394, - 229, - 2414 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 352, - 3216, - 633, - 3335 - ], - "bubble_bbox": [ - 298, - 3083, - 681, - 3432 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 372, - 3262, - 378, - 3268 - ], - [ - 411, - 3261, - 425, - 3272 - ], - [ - 550, - 3261, - 564, - 3272 - ], - [ - 569, - 3261, - 583, - 3272 - ], - [ - 494, - 3286, - 504, - 3291 - ], - [ - 451, - 3288, - 458, - 3293 - ], - [ - 530, - 3288, - 537, - 3293 - ], - [ - 437, - 3312, - 451, - 3323 - ], - [ - 460, - 3311, - 469, - 3317 - ], - [ - 494, - 3311, - 503, - 3317 - ], - [ - 483, - 3230, - 505, - 3251 - ], - [ - 504, - 3230, - 530, - 3251 - ], - [ - 384, - 3231, - 403, - 3251 - ], - [ - 397, - 3231, - 433, - 3251 - ], - [ - 428, - 3231, - 447, - 3251 - ], - [ - 452, - 3231, - 473, - 3251 - ], - [ - 468, - 3231, - 487, - 3251 - ], - [ - 533, - 3231, - 557, - 3251 - ], - [ - 553, - 3232, - 573, - 3251 - ], - [ - 570, - 3231, - 589, - 3251 - ], - [ - 589, - 3231, - 608, - 3251 - ], - [ - 364, - 3256, - 383, - 3277 - ], - [ - 391, - 3256, - 412, - 3277 - ], - [ - 444, - 3256, - 463, - 3276 - ], - [ - 492, - 3256, - 530, - 3276 - ], - [ - 533, - 3256, - 546, - 3276 - ], - [ - 602, - 3256, - 622, - 3276 - ], - [ - 408, - 3257, - 429, - 3277 - ], - [ - 427, - 3257, - 447, - 3276 - ], - [ - 461, - 3257, - 479, - 3276 - ], - [ - 546, - 3257, - 567, - 3277 - ], - [ - 566, - 3257, - 587, - 3277 - ], - [ - 585, - 3257, - 607, - 3276 - ], - [ - 481, - 3262, - 488, - 3267 - ], - [ - 476, - 3270, - 484, - 3280 - ], - [ - 372, - 3281, - 405, - 3302 - ], - [ - 400, - 3282, - 422, - 3302 - ], - [ - 418, - 3282, - 437, - 3301 - ], - [ - 443, - 3281, - 462, - 3302 - ], - [ - 470, - 3281, - 492, - 3302 - ], - [ - 488, - 3282, - 507, - 3302 - ], - [ - 506, - 3282, - 525, - 3301 - ], - [ - 522, - 3281, - 541, - 3302 - ], - [ - 540, - 3281, - 577, - 3302 - ], - [ - 572, - 3281, - 594, - 3301 - ], - [ - 592, - 3281, - 612, - 3301 - ], - [ - 416, - 3306, - 437, - 3327 - ], - [ - 558, - 3306, - 570, - 3321 - ], - [ - 433, - 3307, - 454, - 3327 - ], - [ - 453, - 3307, - 473, - 3327 - ], - [ - 474, - 3307, - 492, - 3327 - ], - [ - 488, - 3307, - 507, - 3327 - ], - [ - 506, - 3307, - 525, - 3326 - ], - [ - 522, - 3307, - 542, - 3327 - ], - [ - 539, - 3307, - 558, - 3327 - ], - [ - 554, - 3322, - 560, - 3327 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 216, - 3777, - 597, - 3925 - ], - "bubble_bbox": [ - 181, - 3649, - 629, - 4043 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 400, - 3796, - 410, - 3804 - ], - [ - 432, - 3797, - 441, - 3808 - ], - [ - 453, - 3797, - 463, - 3802 - ], - [ - 453, - 3803, - 463, - 3809 - ], - [ - 526, - 3822, - 535, - 3829 - ], - [ - 304, - 3824, - 308, - 3830 - ], - [ - 322, - 3848, - 331, - 3860 - ], - [ - 392, - 3848, - 401, - 3855 - ], - [ - 429, - 3848, - 438, - 3860 - ], - [ - 454, - 3848, - 463, - 3853 - ], - [ - 515, - 3848, - 524, - 3855 - ], - [ - 256, - 3850, - 259, - 3855 - ], - [ - 495, - 3850, - 498, - 3855 - ], - [ - 543, - 3850, - 546, - 3855 - ], - [ - 454, - 3855, - 463, - 3860 - ], - [ - 301, - 3873, - 310, - 3881 - ], - [ - 495, - 3873, - 504, - 3881 - ], - [ - 351, - 3874, - 360, - 3880 - ], - [ - 526, - 3874, - 535, - 3885 - ], - [ - 289, - 3876, - 292, - 3881 - ], - [ - 407, - 3876, - 410, - 3881 - ], - [ - 366, - 3901, - 369, - 3907 - ], - [ - 447, - 3901, - 451, - 3907 - ], - [ - 317, - 3793, - 333, - 3812 - ], - [ - 333, - 3792, - 338, - 3800 - ], - [ - 369, - 3793, - 381, - 3812 - ], - [ - 382, - 3793, - 397, - 3811 - ], - [ - 397, - 3793, - 413, - 3813 - ], - [ - 413, - 3793, - 428, - 3812 - ], - [ - 467, - 3793, - 478, - 3811 - ], - [ - 479, - 3793, - 494, - 3812 - ], - [ - 313, - 3794, - 316, - 3812 - ], - [ - 338, - 3794, - 354, - 3812 - ], - [ - 363, - 3794, - 366, - 3812 - ], - [ - 429, - 3794, - 444, - 3812 - ], - [ - 446, - 3794, - 449, - 3812 - ], - [ - 451, - 3794, - 466, - 3812 - ], - [ - 494, - 3807, - 499, - 3812 - ], - [ - 274, - 3819, - 277, - 3838 - ], - [ - 279, - 3818, - 291, - 3837 - ], - [ - 300, - 3819, - 312, - 3838 - ], - [ - 326, - 3819, - 337, - 3837 - ], - [ - 346, - 3818, - 362, - 3838 - ], - [ - 363, - 3819, - 376, - 3838 - ], - [ - 404, - 3819, - 416, - 3838 - ], - [ - 417, - 3819, - 431, - 3838 - ], - [ - 446, - 3819, - 457, - 3838 - ], - [ - 466, - 3818, - 478, - 3837 - ], - [ - 480, - 3819, - 494, - 3837 - ], - [ - 495, - 3818, - 507, - 3838 - ], - [ - 507, - 3819, - 522, - 3838 - ], - [ - 522, - 3819, - 538, - 3838 - ], - [ - 314, - 3820, - 325, - 3838 - ], - [ - 385, - 3820, - 397, - 3838 - ], - [ - 398, - 3820, - 401, - 3838 - ], - [ - 432, - 3832, - 436, - 3840 - ], - [ - 420, - 3843, - 425, - 3852 - ], - [ - 230, - 3845, - 233, - 3863 - ], - [ - 235, - 3844, - 250, - 3863 - ], - [ - 251, - 3844, - 264, - 3863 - ], - [ - 264, - 3844, - 283, - 3863 - ], - [ - 285, - 3845, - 288, - 3863 - ], - [ - 290, - 3844, - 302, - 3863 - ], - [ - 304, - 3845, - 318, - 3863 - ], - [ - 319, - 3845, - 334, - 3864 - ], - [ - 343, - 3844, - 359, - 3863 - ], - [ - 360, - 3844, - 372, - 3864 - ], - [ - 374, - 3845, - 388, - 3863 - ], - [ - 389, - 3845, - 404, - 3864 - ], - [ - 405, - 3845, - 420, - 3863 - ], - [ - 427, - 3845, - 442, - 3864 - ], - [ - 451, - 3845, - 466, - 3864 - ], - [ - 468, - 3845, - 482, - 3863 - ], - [ - 490, - 3844, - 503, - 3863 - ], - [ - 512, - 3845, - 526, - 3864 - ], - [ - 528, - 3845, - 538, - 3863 - ], - [ - 538, - 3844, - 551, - 3863 - ], - [ - 552, - 3845, - 567, - 3863 - ], - [ - 568, - 3845, - 582, - 3863 - ], - [ - 273, - 3871, - 284, - 3889 - ], - [ - 284, - 3870, - 297, - 3889 - ], - [ - 298, - 3870, - 313, - 3890 - ], - [ - 314, - 3870, - 332, - 3889 - ], - [ - 333, - 3870, - 347, - 3889 - ], - [ - 348, - 3870, - 364, - 3890 - ], - [ - 372, - 3870, - 388, - 3889 - ], - [ - 389, - 3870, - 401, - 3889 - ], - [ - 402, - 3870, - 415, - 3889 - ], - [ - 416, - 3870, - 428, - 3889 - ], - [ - 437, - 3870, - 453, - 3889 - ], - [ - 454, - 3870, - 467, - 3890 - ], - [ - 468, - 3870, - 483, - 3889 - ], - [ - 492, - 3870, - 507, - 3890 - ], - [ - 508, - 3870, - 522, - 3889 - ], - [ - 524, - 3871, - 539, - 3889 - ], - [ - 337, - 3896, - 349, - 3915 - ], - [ - 350, - 3896, - 361, - 3914 - ], - [ - 361, - 3896, - 374, - 3914 - ], - [ - 375, - 3896, - 391, - 3915 - ], - [ - 392, - 3896, - 407, - 3914 - ], - [ - 415, - 3897, - 430, - 3915 - ], - [ - 432, - 3896, - 442, - 3914 - ], - [ - 442, - 3896, - 455, - 3915 - ], - [ - 456, - 3896, - 468, - 3914 - ], - [ - 470, - 3910, - 474, - 3914 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 318, - 4585, - 672, - 4702 - ], - "bubble_bbox": [ - 282, - 4494, - 693, - 4804 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 495, - 4601, - 504, - 4606 - ], - [ - 484, - 4603, - 487, - 4608 - ], - [ - 511, - 4602, - 525, - 4613 - ], - [ - 601, - 4604, - 605, - 4608 - ], - [ - 495, - 4608, - 505, - 4613 - ], - [ - 348, - 4626, - 356, - 4633 - ], - [ - 363, - 4626, - 371, - 4634 - ], - [ - 450, - 4626, - 463, - 4637 - ], - [ - 568, - 4626, - 577, - 4633 - ], - [ - 535, - 4628, - 538, - 4633 - ], - [ - 575, - 4651, - 583, - 4658 - ], - [ - 590, - 4651, - 598, - 4659 - ], - [ - 378, - 4652, - 392, - 4663 - ], - [ - 409, - 4676, - 418, - 4682 - ], - [ - 424, - 4676, - 433, - 4683 - ], - [ - 532, - 4676, - 541, - 4681 - ], - [ - 548, - 4676, - 562, - 4688 - ], - [ - 532, - 4683, - 542, - 4688 - ], - [ - 378, - 4598, - 393, - 4616 - ], - [ - 394, - 4598, - 408, - 4616 - ], - [ - 409, - 4599, - 420, - 4616 - ], - [ - 421, - 4598, - 432, - 4616 - ], - [ - 440, - 4598, - 456, - 4616 - ], - [ - 457, - 4598, - 472, - 4616 - ], - [ - 479, - 4598, - 492, - 4616 - ], - [ - 493, - 4599, - 508, - 4617 - ], - [ - 509, - 4598, - 528, - 4616 - ], - [ - 529, - 4598, - 542, - 4616 - ], - [ - 543, - 4598, - 558, - 4616 - ], - [ - 567, - 4599, - 570, - 4616 - ], - [ - 572, - 4598, - 587, - 4616 - ], - [ - 597, - 4598, - 609, - 4616 - ], - [ - 584, - 4611, - 588, - 4616 - ], - [ - 346, - 4623, - 359, - 4642 - ], - [ - 360, - 4623, - 374, - 4641 - ], - [ - 375, - 4623, - 389, - 4641 - ], - [ - 390, - 4623, - 406, - 4641 - ], - [ - 404, - 4623, - 418, - 4641 - ], - [ - 424, - 4623, - 442, - 4640 - ], - [ - 443, - 4623, - 446, - 4641 - ], - [ - 448, - 4623, - 465, - 4640 - ], - [ - 466, - 4623, - 479, - 4641 - ], - [ - 480, - 4623, - 496, - 4641 - ], - [ - 520, - 4623, - 530, - 4641 - ], - [ - 530, - 4623, - 542, - 4641 - ], - [ - 544, - 4623, - 555, - 4641 - ], - [ - 565, - 4623, - 580, - 4642 - ], - [ - 581, - 4623, - 594, - 4641 - ], - [ - 594, - 4623, - 608, - 4641 - ], - [ - 621, - 4623, - 632, - 4641 - ], - [ - 630, - 4623, - 643, - 4642 - ], - [ - 419, - 4624, - 422, - 4641 - ], - [ - 504, - 4624, - 519, - 4641 - ], - [ - 609, - 4624, - 620, - 4641 - ], - [ - 330, - 4648, - 333, - 4666 - ], - [ - 335, - 4648, - 350, - 4666 - ], - [ - 359, - 4648, - 374, - 4666 - ], - [ - 375, - 4648, - 395, - 4666 - ], - [ - 395, - 4648, - 410, - 4666 - ], - [ - 412, - 4648, - 426, - 4666 - ], - [ - 426, - 4648, - 441, - 4666 - ], - [ - 442, - 4648, - 454, - 4667 - ], - [ - 456, - 4649, - 459, - 4666 - ], - [ - 461, - 4648, - 473, - 4666 - ], - [ - 474, - 4648, - 492, - 4666 - ], - [ - 501, - 4648, - 515, - 4666 - ], - [ - 516, - 4649, - 527, - 4666 - ], - [ - 527, - 4648, - 542, - 4666 - ], - [ - 544, - 4648, - 558, - 4666 - ], - [ - 572, - 4648, - 586, - 4666 - ], - [ - 587, - 4648, - 601, - 4666 - ], - [ - 602, - 4648, - 616, - 4666 - ], - [ - 616, - 4648, - 632, - 4666 - ], - [ - 632, - 4648, - 645, - 4666 - ], - [ - 646, - 4648, - 658, - 4666 - ], - [ - 558, - 4661, - 563, - 4666 - ], - [ - 385, - 4673, - 388, - 4691 - ], - [ - 390, - 4673, - 405, - 4691 - ], - [ - 407, - 4673, - 420, - 4691 - ], - [ - 421, - 4673, - 436, - 4692 - ], - [ - 437, - 4673, - 451, - 4691 - ], - [ - 451, - 4673, - 482, - 4691 - ], - [ - 484, - 4673, - 487, - 4691 - ], - [ - 489, - 4672, - 500, - 4691 - ], - [ - 501, - 4673, - 515, - 4691 - ], - [ - 530, - 4673, - 544, - 4691 - ], - [ - 546, - 4673, - 565, - 4691 - ], - [ - 566, - 4673, - 597, - 4691 - ], - [ - 516, - 4685, - 520, - 4694 - ], - [ - 598, - 4686, - 603, - 4691 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"SIM, SENHOR!\",\n \"block_1\": \"CONSEGUIMOS RASTREAR ELES, MAS PARECE QUE QUEM ESTAVA CARRREGANDO AS RELÍQUIAS SE SEPAROU DO GRUPO PRINCIPAL!\",\n \"block_2\": \"\",\n \"block_3\": \"A RELÍQUIA DO NOSSO FUNDADOR E A ESPADA QUE SIMBOLIZA O LÍDER DO SEITA DEMONÍACA TONGCHEON...\",\n \"block_4\": \"EU PRECISO DELAS. SÓ POSSUINDO-AS POSSO RECLAMAR MINHA LEGITIMIDADE COMO SUCESSOR DO DEMÔNIO CELESTIAL.\",\n \"block_5\": \"QUEM É O LADRÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"É O \\\"NOE-JEON\\\" DA UNIDADE DIVINA DEMONÍACA, SENHOR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"JINHUA, ZHEJIANG PROVINCE.\",\n \"block_1\": \"THE HAHU CLAN.\",\n \"block_2\": \"WHOA!\",\n \"block_3\": \"THIS ISN'T JUST A HOUSE; IT LOOKS
LIKE A FREAKING FORTRESS!\",\n \"block_4\": \"IT'S INCREDIBLE. IN ALL MY LIFE, I NEVER IMAGINED THERE'D BE A PLACE LARGER THAN THE RED FLAME CLAN.\",\n \"block_5\": \"TELL ME ABOUT IT. A PRESTIGIOUS CLAN REALLY IS SOMETHING ELSE, PRETTY IMPRESSIVE, BOSS.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"JINHUA, ZHEJIANG PROVINCE.\",\n \"block_1\": \"THE HAHU CLAN.\",\n \"block_2\": \"WHOA!\",\n \"block_3\": \"THIS ISN'T JUST A HOUSE; IT LOOKS
LIKE A FREAKING FORTRESS!\",\n \"block_4\": \"IT'S INCREDIBLE. IN ALL MY LIFE, I NEVER IMAGINED THERE'D BE A PLACE LARGER THAN THE RED FLAME CLAN.\",\n \"block_5\": \"TELL ME ABOUT IT. A PRESTIGIOUS CLAN REALLY IS SOMETHING ELSE, PRETTY IMPRESSIVE, BOSS.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/36ed5b939b724420a8a04fd19a354c8c.jpeg", - "context_path": "contexts/183/context.json", - "id": 86414 - }, - { - "blk_list": [ - { - "text_bbox": [ - 226, - 147, - 635, - 292 - ], - "bubble_bbox": [ - 182, - 50, - 674, - 379 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 425, - 167, - 438, - 178 - ], - [ - 458, - 167, - 466, - 177 - ], - [ - 482, - 168, - 485, - 173 - ], - [ - 281, - 191, - 290, - 196 - ], - [ - 322, - 191, - 335, - 202 - ], - [ - 435, - 191, - 444, - 198 - ], - [ - 511, - 191, - 520, - 198 - ], - [ - 546, - 191, - 560, - 202 - ], - [ - 568, - 191, - 577, - 198 - ], - [ - 298, - 193, - 301, - 198 - ], - [ - 500, - 193, - 503, - 198 - ], - [ - 281, - 198, - 291, - 203 - ], - [ - 310, - 216, - 318, - 223 - ], - [ - 388, - 216, - 402, - 227 - ], - [ - 409, - 216, - 418, - 223 - ], - [ - 425, - 216, - 434, - 227 - ], - [ - 469, - 216, - 477, - 221 - ], - [ - 490, - 216, - 499, - 223 - ], - [ - 533, - 216, - 541, - 227 - ], - [ - 581, - 216, - 590, - 221 - ], - [ - 546, - 218, - 550, - 223 - ], - [ - 469, - 223, - 478, - 228 - ], - [ - 581, - 223, - 590, - 228 - ], - [ - 347, - 241, - 361, - 252 - ], - [ - 434, - 241, - 448, - 252 - ], - [ - 528, - 241, - 542, - 252 - ], - [ - 477, - 243, - 481, - 248 - ], - [ - 330, - 266, - 339, - 278 - ], - [ - 393, - 266, - 402, - 273 - ], - [ - 491, - 268, - 494, - 273 - ], - [ - 369, - 162, - 386, - 181 - ], - [ - 386, - 163, - 401, - 181 - ], - [ - 410, - 163, - 421, - 182 - ], - [ - 422, - 163, - 441, - 181 - ], - [ - 455, - 163, - 470, - 181 - ], - [ - 477, - 163, - 490, - 181 - ], - [ - 443, - 164, - 454, - 181 - ], - [ - 307, - 187, - 318, - 206 - ], - [ - 405, - 187, - 417, - 206 - ], - [ - 495, - 187, - 507, - 206 - ], - [ - 279, - 188, - 294, - 206 - ], - [ - 293, - 188, - 305, - 206 - ], - [ - 320, - 188, - 338, - 206 - ], - [ - 339, - 188, - 351, - 206 - ], - [ - 353, - 188, - 366, - 206 - ], - [ - 366, - 188, - 382, - 206 - ], - [ - 390, - 188, - 404, - 206 - ], - [ - 418, - 188, - 431, - 206 - ], - [ - 432, - 188, - 447, - 207 - ], - [ - 448, - 188, - 461, - 207 - ], - [ - 469, - 188, - 481, - 207 - ], - [ - 482, - 188, - 495, - 206 - ], - [ - 508, - 188, - 523, - 207 - ], - [ - 533, - 188, - 545, - 206 - ], - [ - 544, - 188, - 563, - 206 - ], - [ - 565, - 188, - 580, - 207 - ], - [ - 438, - 211, - 442, - 220 - ], - [ - 235, - 213, - 251, - 231 - ], - [ - 252, - 212, - 264, - 232 - ], - [ - 265, - 213, - 280, - 231 - ], - [ - 288, - 212, - 306, - 230 - ], - [ - 307, - 213, - 321, - 231 - ], - [ - 322, - 213, - 336, - 231 - ], - [ - 336, - 213, - 350, - 231 - ], - [ - 349, - 213, - 365, - 231 - ], - [ - 386, - 213, - 405, - 231 - ], - [ - 406, - 213, - 421, - 232 - ], - [ - 423, - 213, - 437, - 231 - ], - [ - 442, - 213, - 457, - 231 - ], - [ - 466, - 213, - 481, - 231 - ], - [ - 483, - 213, - 486, - 231 - ], - [ - 487, - 213, - 502, - 232 - ], - [ - 503, - 213, - 516, - 231 - ], - [ - 517, - 213, - 528, - 232 - ], - [ - 530, - 213, - 544, - 231 - ], - [ - 542, - 212, - 554, - 231 - ], - [ - 554, - 212, - 567, - 231 - ], - [ - 594, - 213, - 606, - 231 - ], - [ - 608, - 213, - 623, - 231 - ], - [ - 374, - 214, - 385, - 231 - ], - [ - 578, - 214, - 593, - 231 - ], - [ - 564, - 225, - 568, - 234 - ], - [ - 301, - 237, - 314, - 257 - ], - [ - 366, - 237, - 377, - 256 - ], - [ - 453, - 237, - 464, - 256 - ], - [ - 473, - 237, - 485, - 256 - ], - [ - 494, - 237, - 511, - 256 - ], - [ - 512, - 237, - 524, - 256 - ], - [ - 285, - 238, - 301, - 256 - ], - [ - 316, - 238, - 319, - 256 - ], - [ - 320, - 238, - 336, - 256 - ], - [ - 345, - 238, - 364, - 256 - ], - [ - 379, - 238, - 393, - 256 - ], - [ - 402, - 238, - 406, - 256 - ], - [ - 407, - 238, - 423, - 256 - ], - [ - 431, - 238, - 451, - 256 - ], - [ - 526, - 238, - 545, - 256 - ], - [ - 547, - 239, - 558, - 256 - ], - [ - 559, - 238, - 573, - 256 - ], - [ - 328, - 263, - 342, - 281 - ], - [ - 344, - 263, - 347, - 281 - ], - [ - 349, - 263, - 361, - 281 - ], - [ - 362, - 263, - 374, - 281 - ], - [ - 376, - 263, - 390, - 281 - ], - [ - 390, - 263, - 405, - 282 - ], - [ - 406, - 263, - 420, - 281 - ], - [ - 421, - 262, - 433, - 281 - ], - [ - 434, - 263, - 447, - 281 - ], - [ - 456, - 263, - 471, - 281 - ], - [ - 472, - 263, - 486, - 280 - ], - [ - 486, - 262, - 498, - 281 - ], - [ - 512, - 263, - 526, - 281 - ], - [ - 500, - 264, - 511, - 281 - ], - [ - 526, - 276, - 531, - 281 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 67, - 1181, - 460, - 1317 - ], - "bubble_bbox": [ - 19, - 1078, - 507, - 1425 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 215, - 1201, - 230, - 1214 - ], - [ - 292, - 1201, - 308, - 1214 - ], - [ - 352, - 1201, - 368, - 1214 - ], - [ - 374, - 1201, - 388, - 1213 - ], - [ - 396, - 1201, - 406, - 1214 - ], - [ - 183, - 1203, - 187, - 1209 - ], - [ - 217, - 1228, - 228, - 1236 - ], - [ - 250, - 1228, - 267, - 1241 - ], - [ - 116, - 1229, - 125, - 1241 - ], - [ - 295, - 1229, - 305, - 1236 - ], - [ - 329, - 1229, - 339, - 1242 - ], - [ - 416, - 1229, - 426, - 1234 - ], - [ - 88, - 1231, - 92, - 1237 - ], - [ - 179, - 1231, - 183, - 1235 - ], - [ - 416, - 1236, - 427, - 1242 - ], - [ - 257, - 1256, - 267, - 1264 - ], - [ - 96, - 1257, - 106, - 1262 - ], - [ - 144, - 1257, - 159, - 1269 - ], - [ - 182, - 1257, - 192, - 1268 - ], - [ - 220, - 1257, - 235, - 1269 - ], - [ - 398, - 1257, - 413, - 1269 - ], - [ - 309, - 1259, - 313, - 1264 - ], - [ - 365, - 1259, - 368, - 1264 - ], - [ - 97, - 1264, - 107, - 1270 - ], - [ - 148, - 1284, - 158, - 1292 - ], - [ - 135, - 1286, - 139, - 1292 - ], - [ - 203, - 1285, - 217, - 1296 - ], - [ - 265, - 1285, - 281, - 1297 - ], - [ - 325, - 1285, - 335, - 1297 - ], - [ - 120, - 1197, - 138, - 1218 - ], - [ - 139, - 1197, - 152, - 1218 - ], - [ - 154, - 1197, - 170, - 1217 - ], - [ - 179, - 1197, - 192, - 1218 - ], - [ - 193, - 1197, - 211, - 1217 - ], - [ - 212, - 1198, - 234, - 1217 - ], - [ - 235, - 1197, - 249, - 1218 - ], - [ - 251, - 1197, - 264, - 1217 - ], - [ - 265, - 1197, - 280, - 1217 - ], - [ - 289, - 1198, - 311, - 1217 - ], - [ - 313, - 1197, - 327, - 1218 - ], - [ - 337, - 1197, - 351, - 1218 - ], - [ - 349, - 1198, - 371, - 1218 - ], - [ - 372, - 1197, - 391, - 1217 - ], - [ - 393, - 1198, - 409, - 1218 - ], - [ - 248, - 1224, - 269, - 1245 - ], - [ - 83, - 1225, - 96, - 1245 - ], - [ - 98, - 1225, - 111, - 1245 - ], - [ - 113, - 1225, - 129, - 1245 - ], - [ - 138, - 1225, - 156, - 1245 - ], - [ - 158, - 1225, - 173, - 1245 - ], - [ - 173, - 1225, - 188, - 1245 - ], - [ - 187, - 1225, - 205, - 1245 - ], - [ - 214, - 1225, - 231, - 1246 - ], - [ - 231, - 1225, - 247, - 1245 - ], - [ - 270, - 1225, - 284, - 1245 - ], - [ - 287, - 1226, - 290, - 1245 - ], - [ - 291, - 1225, - 308, - 1246 - ], - [ - 309, - 1225, - 324, - 1245 - ], - [ - 326, - 1226, - 342, - 1246 - ], - [ - 352, - 1225, - 371, - 1245 - ], - [ - 373, - 1226, - 376, - 1245 - ], - [ - 378, - 1226, - 390, - 1245 - ], - [ - 392, - 1225, - 403, - 1245 - ], - [ - 413, - 1226, - 430, - 1246 - ], - [ - 431, - 1225, - 447, - 1245 - ], - [ - 128, - 1252, - 142, - 1273 - ], - [ - 165, - 1252, - 177, - 1273 - ], - [ - 286, - 1252, - 303, - 1273 - ], - [ - 346, - 1252, - 359, - 1273 - ], - [ - 417, - 1252, - 430, - 1273 - ], - [ - 94, - 1254, - 110, - 1273 - ], - [ - 111, - 1253, - 127, - 1273 - ], - [ - 141, - 1253, - 162, - 1273 - ], - [ - 179, - 1253, - 195, - 1273 - ], - [ - 205, - 1253, - 219, - 1273 - ], - [ - 218, - 1253, - 237, - 1272 - ], - [ - 238, - 1253, - 252, - 1273 - ], - [ - 253, - 1253, - 270, - 1274 - ], - [ - 281, - 1253, - 284, - 1273 - ], - [ - 304, - 1253, - 318, - 1273 - ], - [ - 319, - 1253, - 338, - 1272 - ], - [ - 340, - 1253, - 344, - 1273 - ], - [ - 360, - 1253, - 373, - 1273 - ], - [ - 373, - 1253, - 390, - 1273 - ], - [ - 391, - 1254, - 394, - 1273 - ], - [ - 396, - 1253, - 415, - 1272 - ], - [ - 432, - 1268, - 436, - 1273 - ], - [ - 130, - 1280, - 143, - 1301 - ], - [ - 286, - 1280, - 299, - 1301 - ], - [ - 357, - 1280, - 369, - 1301 - ], - [ - 371, - 1280, - 400, - 1301 - ], - [ - 144, - 1281, - 161, - 1302 - ], - [ - 162, - 1281, - 178, - 1301 - ], - [ - 187, - 1281, - 201, - 1301 - ], - [ - 200, - 1281, - 220, - 1300 - ], - [ - 221, - 1281, - 235, - 1301 - ], - [ - 245, - 1281, - 261, - 1301 - ], - [ - 262, - 1281, - 284, - 1301 - ], - [ - 301, - 1281, - 314, - 1301 - ], - [ - 316, - 1281, - 320, - 1301 - ], - [ - 322, - 1281, - 338, - 1301 - ], - [ - 340, - 1281, - 355, - 1301 - ], - [ - 389, - 1296, - 394, - 1301 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 109, - 1785, - 369, - 1863 - ], - "bubble_bbox": [ - 57, - 1697, - 421, - 1937 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 245, - 1802, - 256, - 1816 - ], - [ - 263, - 1802, - 280, - 1815 - ], - [ - 298, - 1802, - 315, - 1815 - ], - [ - 340, - 1802, - 351, - 1810 - ], - [ - 143, - 1832, - 154, - 1838 - ], - [ - 182, - 1832, - 199, - 1846 - ], - [ - 285, - 1832, - 296, - 1838 - ], - [ - 129, - 1834, - 134, - 1841 - ], - [ - 143, - 1840, - 155, - 1846 - ], - [ - 285, - 1840, - 297, - 1846 - ], - [ - 126, - 1797, - 147, - 1820 - ], - [ - 175, - 1797, - 196, - 1820 - ], - [ - 320, - 1797, - 335, - 1820 - ], - [ - 147, - 1798, - 164, - 1820 - ], - [ - 197, - 1798, - 201, - 1820 - ], - [ - 203, - 1799, - 217, - 1820 - ], - [ - 218, - 1798, - 231, - 1819 - ], - [ - 242, - 1798, - 259, - 1820 - ], - [ - 260, - 1798, - 284, - 1820 - ], - [ - 295, - 1798, - 319, - 1820 - ], - [ - 337, - 1798, - 355, - 1821 - ], - [ - 124, - 1828, - 139, - 1850 - ], - [ - 140, - 1829, - 158, - 1851 - ], - [ - 159, - 1828, - 178, - 1850 - ], - [ - 179, - 1828, - 202, - 1850 - ], - [ - 204, - 1829, - 217, - 1850 - ], - [ - 219, - 1828, - 234, - 1850 - ], - [ - 235, - 1828, - 253, - 1850 - ], - [ - 254, - 1828, - 271, - 1850 - ], - [ - 282, - 1829, - 300, - 1851 - ], - [ - 302, - 1828, - 319, - 1850 - ], - [ - 319, - 1829, - 338, - 1850 - ], - [ - 337, - 1828, - 353, - 1850 - ], - [ - 350, - 1844, - 356, - 1850 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 252, - 3312, - 553, - 3437 - ], - "bubble_bbox": [ - 195, - 3184, - 617, - 3577 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 405, - 3333, - 420, - 3344 - ], - [ - 460, - 3333, - 476, - 3344 - ], - [ - 369, - 3335, - 373, - 3340 - ], - [ - 305, - 3359, - 321, - 3370 - ], - [ - 385, - 3358, - 395, - 3365 - ], - [ - 415, - 3358, - 426, - 3365 - ], - [ - 490, - 3358, - 500, - 3363 - ], - [ - 430, - 3360, - 434, - 3365 - ], - [ - 487, - 3365, - 498, - 3370 - ], - [ - 278, - 3384, - 294, - 3396 - ], - [ - 301, - 3384, - 312, - 3391 - ], - [ - 342, - 3384, - 357, - 3396 - ], - [ - 404, - 3384, - 416, - 3391 - ], - [ - 466, - 3384, - 482, - 3396 - ], - [ - 438, - 3386, - 442, - 3390 - ], - [ - 403, - 3409, - 414, - 3417 - ], - [ - 311, - 3410, - 327, - 3421 - ], - [ - 360, - 3410, - 372, - 3420 - ], - [ - 468, - 3410, - 478, - 3415 - ], - [ - 455, - 3412, - 459, - 3416 - ], - [ - 466, - 3416, - 477, - 3422 - ], - [ - 320, - 3329, - 337, - 3348 - ], - [ - 336, - 3328, - 343, - 3337 - ], - [ - 361, - 3329, - 376, - 3348 - ], - [ - 420, - 3329, - 440, - 3348 - ], - [ - 437, - 3329, - 458, - 3348 - ], - [ - 477, - 3329, - 495, - 3348 - ], - [ - 311, - 3330, - 320, - 3348 - ], - [ - 338, - 3330, - 356, - 3348 - ], - [ - 385, - 3330, - 403, - 3348 - ], - [ - 402, - 3330, - 424, - 3348 - ], - [ - 457, - 3330, - 479, - 3348 - ], - [ - 270, - 3355, - 289, - 3374 - ], - [ - 287, - 3354, - 304, - 3373 - ], - [ - 302, - 3355, - 324, - 3374 - ], - [ - 322, - 3355, - 341, - 3374 - ], - [ - 338, - 3355, - 358, - 3373 - ], - [ - 356, - 3354, - 375, - 3374 - ], - [ - 379, - 3355, - 398, - 3374 - ], - [ - 394, - 3355, - 413, - 3374 - ], - [ - 409, - 3355, - 429, - 3374 - ], - [ - 423, - 3354, - 438, - 3373 - ], - [ - 438, - 3355, - 456, - 3374 - ], - [ - 454, - 3355, - 472, - 3373 - ], - [ - 500, - 3355, - 519, - 3374 - ], - [ - 519, - 3355, - 536, - 3374 - ], - [ - 484, - 3356, - 504, - 3374 - ], - [ - 469, - 3368, - 475, - 3376 - ], - [ - 261, - 3381, - 280, - 3400 - ], - [ - 275, - 3381, - 297, - 3399 - ], - [ - 295, - 3381, - 315, - 3400 - ], - [ - 321, - 3381, - 339, - 3399 - ], - [ - 339, - 3381, - 361, - 3399 - ], - [ - 357, - 3380, - 377, - 3399 - ], - [ - 375, - 3381, - 393, - 3399 - ], - [ - 399, - 3381, - 419, - 3400 - ], - [ - 415, - 3381, - 433, - 3399 - ], - [ - 429, - 3381, - 446, - 3399 - ], - [ - 446, - 3381, - 463, - 3399 - ], - [ - 463, - 3381, - 485, - 3399 - ], - [ - 483, - 3380, - 501, - 3399 - ], - [ - 512, - 3380, - 530, - 3400 - ], - [ - 525, - 3381, - 543, - 3399 - ], - [ - 497, - 3393, - 503, - 3402 - ], - [ - 291, - 3407, - 308, - 3425 - ], - [ - 308, - 3406, - 330, - 3425 - ], - [ - 328, - 3406, - 346, - 3425 - ], - [ - 343, - 3406, - 360, - 3425 - ], - [ - 356, - 3406, - 376, - 3425 - ], - [ - 373, - 3407, - 391, - 3425 - ], - [ - 397, - 3406, - 418, - 3426 - ], - [ - 413, - 3406, - 432, - 3425 - ], - [ - 429, - 3407, - 442, - 3425 - ], - [ - 442, - 3407, - 451, - 3425 - ], - [ - 446, - 3406, - 463, - 3425 - ], - [ - 462, - 3407, - 482, - 3425 - ], - [ - 479, - 3407, - 491, - 3425 - ], - [ - 491, - 3406, - 509, - 3425 - ], - [ - 506, - 3420, - 511, - 3425 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 72, - 4164, - 230, - 4198 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 78, - 4170, - 87, - 4195 - ], - [ - 88, - 4170, - 96, - 4195 - ], - [ - 98, - 4170, - 106, - 4194 - ], - [ - 107, - 4170, - 115, - 4194 - ], - [ - 117, - 4170, - 124, - 4194 - ], - [ - 126, - 4170, - 134, - 4194 - ], - [ - 135, - 4170, - 143, - 4194 - ], - [ - 145, - 4169, - 153, - 4194 - ], - [ - 154, - 4170, - 163, - 4194 - ], - [ - 165, - 4169, - 173, - 4194 - ], - [ - 175, - 4169, - 183, - 4193 - ], - [ - 190, - 4169, - 197, - 4193 - ], - [ - 199, - 4169, - 207, - 4193 - ], - [ - 209, - 4169, - 220, - 4193 - ], - [ - 184, - 4189, - 187, - 4193 - ], - [ - 202, - 4172, - 204, - 4190 - ], - [ - 91, - 4174, - 93, - 4191 - ], - [ - 101, - 4174, - 103, - 4181 - ], - [ - 157, - 4176, - 160, - 4186 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 79, - 4317, - 471, - 4422 - ], - "bubble_bbox": [ - 44, - 4215, - 503, - 4531 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 179, - 4335, - 189, - 4340 - ], - [ - 225, - 4335, - 240, - 4347 - ], - [ - 338, - 4335, - 353, - 4347 - ], - [ - 197, - 4337, - 201, - 4343 - ], - [ - 179, - 4342, - 189, - 4348 - ], - [ - 110, - 4363, - 119, - 4371 - ], - [ - 143, - 4363, - 159, - 4376 - ], - [ - 319, - 4363, - 335, - 4376 - ], - [ - 342, - 4363, - 356, - 4375 - ], - [ - 414, - 4365, - 418, - 4371 - ], - [ - 162, - 4391, - 172, - 4398 - ], - [ - 218, - 4391, - 232, - 4403 - ], - [ - 278, - 4391, - 288, - 4399 - ], - [ - 265, - 4393, - 269, - 4399 - ], - [ - 375, - 4393, - 379, - 4399 - ], - [ - 116, - 4331, - 134, - 4352 - ], - [ - 134, - 4330, - 148, - 4352 - ], - [ - 150, - 4331, - 166, - 4351 - ], - [ - 192, - 4331, - 206, - 4351 - ], - [ - 208, - 4330, - 220, - 4351 - ], - [ - 222, - 4331, - 242, - 4351 - ], - [ - 244, - 4331, - 258, - 4351 - ], - [ - 260, - 4331, - 274, - 4352 - ], - [ - 274, - 4331, - 292, - 4352 - ], - [ - 335, - 4331, - 357, - 4351 - ], - [ - 359, - 4331, - 372, - 4351 - ], - [ - 382, - 4331, - 399, - 4352 - ], - [ - 400, - 4330, - 414, - 4352 - ], - [ - 416, - 4331, - 431, - 4351 - ], - [ - 176, - 4332, - 193, - 4352 - ], - [ - 302, - 4332, - 306, - 4351 - ], - [ - 307, - 4332, - 325, - 4351 - ], - [ - 91, - 4359, - 105, - 4380 - ], - [ - 107, - 4359, - 122, - 4380 - ], - [ - 123, - 4359, - 139, - 4379 - ], - [ - 140, - 4359, - 162, - 4380 - ], - [ - 162, - 4359, - 180, - 4380 - ], - [ - 187, - 4359, - 200, - 4379 - ], - [ - 202, - 4359, - 221, - 4379 - ], - [ - 232, - 4359, - 246, - 4380 - ], - [ - 246, - 4359, - 260, - 4380 - ], - [ - 276, - 4359, - 288, - 4379 - ], - [ - 297, - 4359, - 315, - 4380 - ], - [ - 339, - 4359, - 359, - 4379 - ], - [ - 361, - 4359, - 374, - 4379 - ], - [ - 391, - 4359, - 408, - 4380 - ], - [ - 409, - 4359, - 422, - 4379 - ], - [ - 442, - 4359, - 457, - 4379 - ], - [ - 182, - 4360, - 185, - 4380 - ], - [ - 262, - 4360, - 274, - 4380 - ], - [ - 317, - 4360, - 338, - 4380 - ], - [ - 424, - 4360, - 440, - 4380 - ], - [ - 375, - 4374, - 380, - 4379 - ], - [ - 143, - 4387, - 157, - 4408 - ], - [ - 159, - 4387, - 175, - 4408 - ], - [ - 177, - 4387, - 192, - 4408 - ], - [ - 202, - 4387, - 216, - 4408 - ], - [ - 215, - 4387, - 235, - 4407 - ], - [ - 236, - 4387, - 250, - 4408 - ], - [ - 260, - 4387, - 273, - 4408 - ], - [ - 274, - 4387, - 291, - 4408 - ], - [ - 292, - 4387, - 308, - 4408 - ], - [ - 309, - 4387, - 322, - 4408 - ], - [ - 324, - 4386, - 329, - 4395 - ], - [ - 330, - 4387, - 347, - 4408 - ], - [ - 370, - 4387, - 383, - 4408 - ], - [ - 383, - 4387, - 400, - 4408 - ], - [ - 401, - 4387, - 417, - 4408 - ], - [ - 125, - 4388, - 142, - 4408 - ], - [ - 357, - 4388, - 369, - 4408 - ], - [ - 417, - 4402, - 422, - 4407 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/3944af2f350b4eaaa79d972cf88d3764.jpeg", - "context_path": "contexts/183/context.json", - "id": 86413 - }, - { - "blk_list": [ - { - "text_bbox": [ - 175, - 1411, - 511, - 1544 - ], - "bubble_bbox": [ - 107, - 1275, - 573, - 1681 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 314, - 1431, - 325, - 1437 - ], - [ - 396, - 1431, - 412, - 1442 - ], - [ - 347, - 1433, - 351, - 1437 - ], - [ - 264, - 1456, - 274, - 1462 - ], - [ - 284, - 1456, - 295, - 1463 - ], - [ - 331, - 1456, - 340, - 1461 - ], - [ - 346, - 1456, - 357, - 1463 - ], - [ - 379, - 1458, - 383, - 1462 - ], - [ - 328, - 1462, - 339, - 1468 - ], - [ - 365, - 1481, - 375, - 1487 - ], - [ - 439, - 1481, - 451, - 1492 - ], - [ - 464, - 1481, - 480, - 1492 - ], - [ - 234, - 1506, - 244, - 1513 - ], - [ - 323, - 1506, - 334, - 1513 - ], - [ - 365, - 1506, - 376, - 1517 - ], - [ - 452, - 1506, - 463, - 1513 - ], - [ - 340, - 1508, - 344, - 1513 - ], - [ - 394, - 1508, - 398, - 1513 - ], - [ - 258, - 1427, - 275, - 1446 - ], - [ - 270, - 1427, - 288, - 1446 - ], - [ - 284, - 1427, - 302, - 1446 - ], - [ - 308, - 1427, - 328, - 1446 - ], - [ - 324, - 1427, - 342, - 1446 - ], - [ - 338, - 1427, - 354, - 1446 - ], - [ - 353, - 1427, - 386, - 1446 - ], - [ - 393, - 1428, - 415, - 1446 - ], - [ - 413, - 1427, - 431, - 1446 - ], - [ - 241, - 1452, - 244, - 1462 - ], - [ - 258, - 1452, - 277, - 1471 - ], - [ - 356, - 1452, - 374, - 1471 - ], - [ - 408, - 1452, - 425, - 1471 - ], - [ - 236, - 1454, - 240, - 1464 - ], - [ - 243, - 1453, - 260, - 1471 - ], - [ - 273, - 1453, - 282, - 1471 - ], - [ - 278, - 1453, - 298, - 1472 - ], - [ - 295, - 1453, - 304, - 1471 - ], - [ - 304, - 1453, - 321, - 1471 - ], - [ - 325, - 1453, - 344, - 1471 - ], - [ - 341, - 1453, - 360, - 1471 - ], - [ - 370, - 1453, - 387, - 1471 - ], - [ - 386, - 1453, - 405, - 1471 - ], - [ - 402, - 1453, - 411, - 1471 - ], - [ - 422, - 1453, - 441, - 1471 - ], - [ - 319, - 1460, - 326, - 1464 - ], - [ - 278, - 1476, - 288, - 1490 - ], - [ - 186, - 1478, - 195, - 1496 - ], - [ - 192, - 1477, - 210, - 1496 - ], - [ - 209, - 1478, - 224, - 1496 - ], - [ - 220, - 1478, - 238, - 1496 - ], - [ - 236, - 1477, - 253, - 1496 - ], - [ - 253, - 1478, - 268, - 1496 - ], - [ - 267, - 1477, - 273, - 1486 - ], - [ - 271, - 1478, - 278, - 1487 - ], - [ - 290, - 1477, - 305, - 1496 - ], - [ - 306, - 1478, - 323, - 1496 - ], - [ - 329, - 1478, - 347, - 1496 - ], - [ - 345, - 1478, - 362, - 1496 - ], - [ - 359, - 1478, - 378, - 1496 - ], - [ - 374, - 1478, - 392, - 1496 - ], - [ - 390, - 1478, - 408, - 1496 - ], - [ - 409, - 1478, - 423, - 1496 - ], - [ - 419, - 1478, - 437, - 1496 - ], - [ - 435, - 1478, - 454, - 1496 - ], - [ - 462, - 1478, - 483, - 1496 - ], - [ - 482, - 1478, - 500, - 1496 - ], - [ - 274, - 1491, - 279, - 1496 - ], - [ - 333, - 1502, - 347, - 1521 - ], - [ - 347, - 1502, - 365, - 1521 - ], - [ - 387, - 1502, - 402, - 1521 - ], - [ - 416, - 1502, - 434, - 1522 - ], - [ - 467, - 1501, - 477, - 1515 - ], - [ - 210, - 1503, - 230, - 1520 - ], - [ - 229, - 1503, - 248, - 1521 - ], - [ - 244, - 1503, - 262, - 1521 - ], - [ - 258, - 1503, - 275, - 1521 - ], - [ - 277, - 1503, - 294, - 1521 - ], - [ - 300, - 1503, - 319, - 1521 - ], - [ - 318, - 1503, - 337, - 1521 - ], - [ - 361, - 1503, - 380, - 1521 - ], - [ - 377, - 1503, - 395, - 1521 - ], - [ - 404, - 1503, - 421, - 1521 - ], - [ - 431, - 1503, - 448, - 1521 - ], - [ - 446, - 1503, - 466, - 1522 - ], - [ - 292, - 1510, - 299, - 1514 - ], - [ - 463, - 1516, - 468, - 1521 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 282, - 2269, - 629, - 2389 - ], - "bubble_bbox": [ - 250, - 2127, - 665, - 2539 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 384, - 2290, - 404, - 2305 - ], - [ - 445, - 2290, - 460, - 2304 - ], - [ - 468, - 2322, - 482, - 2332 - ], - [ - 297, - 2323, - 313, - 2338 - ], - [ - 318, - 2323, - 339, - 2337 - ], - [ - 345, - 2323, - 361, - 2338 - ], - [ - 439, - 2323, - 459, - 2337 - ], - [ - 538, - 2323, - 558, - 2337 - ], - [ - 599, - 2323, - 614, - 2337 - ], - [ - 412, - 2355, - 432, - 2370 - ], - [ - 515, - 2355, - 529, - 2364 - ], - [ - 359, - 2285, - 383, - 2310 - ], - [ - 380, - 2286, - 408, - 2309 - ], - [ - 405, - 2285, - 429, - 2310 - ], - [ - 439, - 2286, - 465, - 2309 - ], - [ - 469, - 2286, - 491, - 2310 - ], - [ - 496, - 2286, - 520, - 2310 - ], - [ - 512, - 2286, - 536, - 2310 - ], - [ - 532, - 2286, - 554, - 2309 - ], - [ - 554, - 2286, - 574, - 2309 - ], - [ - 340, - 2287, - 362, - 2309 - ], - [ - 424, - 2287, - 440, - 2309 - ], - [ - 385, - 2318, - 409, - 2342 - ], - [ - 410, - 2317, - 428, - 2335 - ], - [ - 461, - 2318, - 487, - 2343 - ], - [ - 514, - 2318, - 537, - 2343 - ], - [ - 560, - 2318, - 583, - 2342 - ], - [ - 293, - 2319, - 317, - 2342 - ], - [ - 315, - 2319, - 343, - 2342 - ], - [ - 340, - 2319, - 365, - 2342 - ], - [ - 363, - 2319, - 388, - 2341 - ], - [ - 435, - 2319, - 463, - 2342 - ], - [ - 494, - 2319, - 516, - 2342 - ], - [ - 534, - 2319, - 562, - 2342 - ], - [ - 578, - 2320, - 593, - 2342 - ], - [ - 594, - 2319, - 619, - 2342 - ], - [ - 407, - 2337, - 414, - 2342 - ], - [ - 434, - 2350, - 457, - 2375 - ], - [ - 452, - 2350, - 475, - 2374 - ], - [ - 533, - 2350, - 551, - 2368 - ], - [ - 360, - 2351, - 382, - 2375 - ], - [ - 387, - 2352, - 410, - 2374 - ], - [ - 409, - 2351, - 436, - 2374 - ], - [ - 474, - 2351, - 493, - 2374 - ], - [ - 487, - 2351, - 510, - 2374 - ], - [ - 507, - 2351, - 533, - 2375 - ], - [ - 530, - 2369, - 537, - 2375 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/77235380d3734004a396401668c404cd.jpeg", - "context_path": "contexts/183/context.json", - "id": 86425 - }, - { - "blk_list": [ - { - "text_bbox": [ - 311, - 135, - 510, - 225 - ], - "bubble_bbox": [ - 246, - 67, - 570, - 280 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 358, - 153, - 380, - 170 - ], - [ - 449, - 191, - 471, - 209 - ], - [ - 373, - 193, - 378, - 202 - ], - [ - 409, - 145, - 420, - 166 - ], - [ - 354, - 148, - 384, - 175 - ], - [ - 387, - 147, - 403, - 177 - ], - [ - 433, - 149, - 438, - 175 - ], - [ - 440, - 149, - 464, - 175 - ], - [ - 406, - 168, - 412, - 175 - ], - [ - 321, - 186, - 345, - 214 - ], - [ - 347, - 186, - 365, - 214 - ], - [ - 366, - 186, - 385, - 214 - ], - [ - 384, - 186, - 407, - 214 - ], - [ - 476, - 185, - 496, - 206 - ], - [ - 420, - 187, - 444, - 214 - ], - [ - 446, - 187, - 475, - 214 - ], - [ - 482, - 207, - 489, - 214 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 273, - 1270, - 574, - 1371 - ], - "bubble_bbox": [ - 218, - 1173, - 631, - 1445 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 400, - 1288, - 412, - 1299 - ], - [ - 330, - 1289, - 350, - 1305 - ], - [ - 439, - 1289, - 452, - 1296 - ], - [ - 422, - 1291, - 428, - 1299 - ], - [ - 518, - 1291, - 523, - 1299 - ], - [ - 439, - 1298, - 453, - 1306 - ], - [ - 395, - 1324, - 408, - 1335 - ], - [ - 477, - 1324, - 490, - 1335 - ], - [ - 446, - 1325, - 467, - 1341 - ], - [ - 298, - 1284, - 324, - 1309 - ], - [ - 326, - 1284, - 354, - 1310 - ], - [ - 368, - 1284, - 394, - 1309 - ], - [ - 396, - 1284, - 416, - 1310 - ], - [ - 416, - 1283, - 434, - 1310 - ], - [ - 470, - 1284, - 492, - 1310 - ], - [ - 493, - 1283, - 511, - 1311 - ], - [ - 512, - 1283, - 529, - 1310 - ], - [ - 528, - 1284, - 551, - 1310 - ], - [ - 436, - 1285, - 457, - 1310 - ], - [ - 306, - 1320, - 326, - 1346 - ], - [ - 327, - 1320, - 349, - 1347 - ], - [ - 349, - 1320, - 369, - 1346 - ], - [ - 370, - 1320, - 390, - 1346 - ], - [ - 391, - 1320, - 413, - 1347 - ], - [ - 427, - 1320, - 444, - 1346 - ], - [ - 443, - 1320, - 471, - 1346 - ], - [ - 473, - 1320, - 494, - 1347 - ], - [ - 508, - 1320, - 530, - 1346 - ], - [ - 532, - 1320, - 552, - 1346 - ], - [ - 289, - 1321, - 304, - 1346 - ], - [ - 554, - 1340, - 560, - 1346 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 177, - 2209, - 554, - 2357 - ], - "bubble_bbox": [ - 114, - 2119, - 614, - 2425 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 480, - 2228, - 490, - 2235 - ], - [ - 321, - 2256, - 337, - 2269 - ], - [ - 345, - 2256, - 356, - 2264 - ], - [ - 429, - 2256, - 445, - 2269 - ], - [ - 496, - 2256, - 512, - 2269 - ], - [ - 214, - 2285, - 229, - 2297 - ], - [ - 289, - 2285, - 303, - 2297 - ], - [ - 480, - 2284, - 489, - 2293 - ], - [ - 495, - 2285, - 511, - 2297 - ], - [ - 248, - 2287, - 252, - 2293 - ], - [ - 347, - 2315, - 351, - 2321 - ], - [ - 430, - 2315, - 434, - 2321 - ], - [ - 235, - 2224, - 253, - 2245 - ], - [ - 254, - 2224, - 268, - 2245 - ], - [ - 270, - 2225, - 274, - 2245 - ], - [ - 275, - 2225, - 293, - 2245 - ], - [ - 304, - 2225, - 307, - 2245 - ], - [ - 309, - 2225, - 327, - 2245 - ], - [ - 336, - 2224, - 354, - 2245 - ], - [ - 354, - 2224, - 368, - 2245 - ], - [ - 370, - 2224, - 386, - 2245 - ], - [ - 396, - 2225, - 409, - 2245 - ], - [ - 410, - 2224, - 426, - 2245 - ], - [ - 426, - 2224, - 444, - 2245 - ], - [ - 444, - 2224, - 459, - 2244 - ], - [ - 460, - 2224, - 476, - 2245 - ], - [ - 477, - 2224, - 494, - 2245 - ], - [ - 195, - 2252, - 207, - 2274 - ], - [ - 209, - 2253, - 225, - 2273 - ], - [ - 235, - 2253, - 248, - 2273 - ], - [ - 249, - 2253, - 265, - 2273 - ], - [ - 266, - 2253, - 280, - 2273 - ], - [ - 280, - 2253, - 295, - 2273 - ], - [ - 306, - 2252, - 320, - 2273 - ], - [ - 319, - 2253, - 340, - 2273 - ], - [ - 342, - 2253, - 359, - 2274 - ], - [ - 369, - 2252, - 383, - 2273 - ], - [ - 385, - 2253, - 403, - 2273 - ], - [ - 412, - 2252, - 430, - 2273 - ], - [ - 426, - 2253, - 448, - 2273 - ], - [ - 459, - 2253, - 476, - 2273 - ], - [ - 477, - 2252, - 491, - 2274 - ], - [ - 493, - 2253, - 515, - 2273 - ], - [ - 517, - 2252, - 536, - 2273 - ], - [ - 197, - 2281, - 214, - 2302 - ], - [ - 211, - 2281, - 233, - 2301 - ], - [ - 243, - 2280, - 256, - 2301 - ], - [ - 258, - 2280, - 271, - 2301 - ], - [ - 273, - 2281, - 287, - 2302 - ], - [ - 286, - 2281, - 306, - 2301 - ], - [ - 308, - 2280, - 321, - 2301 - ], - [ - 323, - 2281, - 339, - 2301 - ], - [ - 348, - 2280, - 362, - 2302 - ], - [ - 363, - 2281, - 367, - 2301 - ], - [ - 368, - 2281, - 386, - 2301 - ], - [ - 388, - 2281, - 391, - 2302 - ], - [ - 392, - 2281, - 410, - 2302 - ], - [ - 411, - 2281, - 415, - 2301 - ], - [ - 417, - 2280, - 430, - 2301 - ], - [ - 432, - 2281, - 451, - 2301 - ], - [ - 462, - 2281, - 476, - 2302 - ], - [ - 477, - 2281, - 493, - 2302 - ], - [ - 493, - 2281, - 515, - 2302 - ], - [ - 515, - 2280, - 533, - 2302 - ], - [ - 268, - 2309, - 286, - 2330 - ], - [ - 287, - 2309, - 300, - 2330 - ], - [ - 302, - 2309, - 318, - 2330 - ], - [ - 329, - 2309, - 341, - 2331 - ], - [ - 342, - 2309, - 356, - 2330 - ], - [ - 357, - 2309, - 370, - 2331 - ], - [ - 371, - 2309, - 385, - 2330 - ], - [ - 426, - 2309, - 439, - 2330 - ], - [ - 441, - 2309, - 454, - 2330 - ], - [ - 396, - 2310, - 412, - 2330 - ], - [ - 414, - 2310, - 425, - 2329 - ], - [ - 456, - 2324, - 461, - 2330 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 72, - 3446, - 455, - 3589 - ], - "bubble_bbox": [ - 21, - 3327, - 502, - 3701 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 253, - 3468, - 256, - 3473 - ], - [ - 130, - 3490, - 138, - 3500 - ], - [ - 153, - 3490, - 161, - 3497 - ], - [ - 216, - 3490, - 225, - 3501 - ], - [ - 342, - 3490, - 356, - 3501 - ], - [ - 363, - 3490, - 372, - 3496 - ], - [ - 414, - 3490, - 422, - 3496 - ], - [ - 106, - 3492, - 109, - 3497 - ], - [ - 402, - 3492, - 406, - 3497 - ], - [ - 259, - 3514, - 268, - 3525 - ], - [ - 425, - 3514, - 438, - 3525 - ], - [ - 152, - 3516, - 155, - 3521 - ], - [ - 283, - 3516, - 287, - 3521 - ], - [ - 369, - 3516, - 372, - 3521 - ], - [ - 127, - 3538, - 139, - 3549 - ], - [ - 296, - 3538, - 304, - 3545 - ], - [ - 317, - 3562, - 326, - 3569 - ], - [ - 297, - 3563, - 310, - 3574 - ], - [ - 200, - 3462, - 210, - 3481 - ], - [ - 212, - 3462, - 225, - 3480 - ], - [ - 249, - 3462, - 261, - 3480 - ], - [ - 260, - 3462, - 273, - 3480 - ], - [ - 298, - 3462, - 308, - 3481 - ], - [ - 234, - 3463, - 249, - 3480 - ], - [ - 274, - 3463, - 289, - 3480 - ], - [ - 310, - 3463, - 313, - 3480 - ], - [ - 315, - 3463, - 330, - 3480 - ], - [ - 90, - 3486, - 101, - 3505 - ], - [ - 101, - 3486, - 113, - 3504 - ], - [ - 114, - 3486, - 126, - 3504 - ], - [ - 185, - 3486, - 198, - 3504 - ], - [ - 295, - 3486, - 308, - 3504 - ], - [ - 375, - 3486, - 390, - 3504 - ], - [ - 398, - 3486, - 410, - 3504 - ], - [ - 127, - 3487, - 141, - 3504 - ], - [ - 150, - 3487, - 163, - 3505 - ], - [ - 165, - 3487, - 168, - 3504 - ], - [ - 169, - 3487, - 183, - 3504 - ], - [ - 199, - 3487, - 212, - 3504 - ], - [ - 213, - 3487, - 227, - 3505 - ], - [ - 236, - 3487, - 251, - 3504 - ], - [ - 252, - 3487, - 264, - 3504 - ], - [ - 265, - 3487, - 279, - 3504 - ], - [ - 280, - 3487, - 294, - 3504 - ], - [ - 309, - 3487, - 324, - 3504 - ], - [ - 325, - 3487, - 339, - 3504 - ], - [ - 340, - 3487, - 359, - 3504 - ], - [ - 360, - 3487, - 374, - 3505 - ], - [ - 411, - 3487, - 425, - 3505 - ], - [ - 426, - 3487, - 440, - 3504 - ], - [ - 142, - 3493, - 149, - 3497 - ], - [ - 87, - 3510, - 100, - 3529 - ], - [ - 200, - 3510, - 213, - 3528 - ], - [ - 350, - 3510, - 367, - 3529 - ], - [ - 99, - 3511, - 112, - 3529 - ], - [ - 113, - 3511, - 128, - 3529 - ], - [ - 127, - 3511, - 140, - 3528 - ], - [ - 147, - 3511, - 159, - 3528 - ], - [ - 160, - 3511, - 175, - 3529 - ], - [ - 184, - 3511, - 199, - 3529 - ], - [ - 214, - 3511, - 217, - 3528 - ], - [ - 219, - 3512, - 230, - 3529 - ], - [ - 231, - 3511, - 241, - 3528 - ], - [ - 242, - 3511, - 256, - 3529 - ], - [ - 257, - 3511, - 271, - 3529 - ], - [ - 279, - 3511, - 291, - 3528 - ], - [ - 292, - 3511, - 307, - 3529 - ], - [ - 316, - 3511, - 327, - 3529 - ], - [ - 328, - 3511, - 342, - 3528 - ], - [ - 365, - 3511, - 377, - 3528 - ], - [ - 378, - 3511, - 393, - 3529 - ], - [ - 406, - 3511, - 421, - 3529 - ], - [ - 423, - 3511, - 442, - 3529 - ], - [ - 393, - 3523, - 397, - 3531 - ], - [ - 113, - 3535, - 126, - 3553 - ], - [ - 125, - 3535, - 142, - 3552 - ], - [ - 143, - 3535, - 155, - 3553 - ], - [ - 164, - 3536, - 178, - 3553 - ], - [ - 178, - 3535, - 190, - 3553 - ], - [ - 191, - 3535, - 202, - 3553 - ], - [ - 212, - 3535, - 224, - 3553 - ], - [ - 224, - 3535, - 237, - 3553 - ], - [ - 238, - 3536, - 249, - 3553 - ], - [ - 250, - 3535, - 260, - 3552 - ], - [ - 258, - 3535, - 270, - 3553 - ], - [ - 278, - 3535, - 293, - 3553 - ], - [ - 294, - 3535, - 307, - 3553 - ], - [ - 308, - 3535, - 320, - 3553 - ], - [ - 322, - 3536, - 337, - 3553 - ], - [ - 335, - 3535, - 349, - 3553 - ], - [ - 356, - 3535, - 372, - 3553 - ], - [ - 372, - 3535, - 384, - 3553 - ], - [ - 386, - 3535, - 399, - 3553 - ], - [ - 400, - 3535, - 415, - 3553 - ], - [ - 169, - 3559, - 186, - 3577 - ], - [ - 187, - 3560, - 190, - 3577 - ], - [ - 191, - 3559, - 206, - 3577 - ], - [ - 206, - 3559, - 219, - 3578 - ], - [ - 227, - 3559, - 242, - 3577 - ], - [ - 243, - 3559, - 255, - 3578 - ], - [ - 256, - 3559, - 270, - 3577 - ], - [ - 278, - 3559, - 295, - 3577 - ], - [ - 294, - 3560, - 313, - 3577 - ], - [ - 314, - 3559, - 329, - 3578 - ], - [ - 330, - 3559, - 344, - 3577 - ], - [ - 344, - 3572, - 348, - 3577 - ], - [ - 350, - 3572, - 354, - 3577 - ], - [ - 355, - 3572, - 360, - 3577 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 72, - 4081, - 226, - 4114 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 175, - 4085, - 183, - 4110 - ], - [ - 189, - 4085, - 197, - 4110 - ], - [ - 199, - 4085, - 207, - 4110 - ], - [ - 209, - 4085, - 220, - 4109 - ], - [ - 78, - 4087, - 87, - 4111 - ], - [ - 88, - 4087, - 96, - 4111 - ], - [ - 98, - 4087, - 106, - 4111 - ], - [ - 107, - 4087, - 116, - 4111 - ], - [ - 117, - 4086, - 125, - 4110 - ], - [ - 126, - 4086, - 134, - 4110 - ], - [ - 135, - 4086, - 143, - 4110 - ], - [ - 145, - 4086, - 153, - 4110 - ], - [ - 154, - 4086, - 163, - 4110 - ], - [ - 165, - 4086, - 173, - 4110 - ], - [ - 184, - 4105, - 187, - 4110 - ], - [ - 202, - 4089, - 204, - 4106 - ], - [ - 91, - 4090, - 93, - 4107 - ], - [ - 101, - 4090, - 103, - 4097 - ], - [ - 157, - 4092, - 160, - 4102 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 88, - 4322, - 365, - 4402 - ], - "bubble_bbox": [ - 30, - 4193, - 408, - 4542 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 252, - 4338, - 265, - 4348 - ], - [ - 319, - 4338, - 329, - 4348 - ], - [ - 114, - 4359, - 127, - 4369 - ], - [ - 133, - 4359, - 142, - 4365 - ], - [ - 192, - 4359, - 201, - 4365 - ], - [ - 162, - 4360, - 174, - 4369 - ], - [ - 178, - 4381, - 187, - 4387 - ], - [ - 252, - 4381, - 260, - 4385 - ], - [ - 250, - 4386, - 259, - 4391 - ], - [ - 125, - 4335, - 142, - 4351 - ], - [ - 138, - 4335, - 153, - 4351 - ], - [ - 161, - 4335, - 171, - 4350 - ], - [ - 189, - 4335, - 204, - 4351 - ], - [ - 207, - 4335, - 222, - 4351 - ], - [ - 218, - 4335, - 233, - 4351 - ], - [ - 241, - 4335, - 253, - 4351 - ], - [ - 249, - 4335, - 268, - 4351 - ], - [ - 266, - 4335, - 281, - 4351 - ], - [ - 291, - 4335, - 306, - 4351 - ], - [ - 303, - 4335, - 318, - 4351 - ], - [ - 151, - 4336, - 161, - 4351 - ], - [ - 184, - 4336, - 191, - 4351 - ], - [ - 279, - 4336, - 293, - 4351 - ], - [ - 316, - 4336, - 332, - 4351 - ], - [ - 172, - 4346, - 176, - 4353 - ], - [ - 100, - 4357, - 115, - 4372 - ], - [ - 111, - 4357, - 130, - 4372 - ], - [ - 128, - 4356, - 145, - 4373 - ], - [ - 152, - 4357, - 164, - 4372 - ], - [ - 160, - 4357, - 177, - 4371 - ], - [ - 175, - 4357, - 190, - 4372 - ], - [ - 187, - 4356, - 204, - 4373 - ], - [ - 209, - 4357, - 223, - 4372 - ], - [ - 222, - 4356, - 239, - 4372 - ], - [ - 235, - 4357, - 242, - 4372 - ], - [ - 240, - 4357, - 250, - 4372 - ], - [ - 250, - 4357, - 260, - 4372 - ], - [ - 261, - 4357, - 276, - 4372 - ], - [ - 289, - 4357, - 304, - 4372 - ], - [ - 300, - 4356, - 323, - 4373 - ], - [ - 325, - 4357, - 339, - 4372 - ], - [ - 338, - 4356, - 344, - 4363 - ], - [ - 340, - 4357, - 355, - 4372 - ], - [ - 274, - 4367, - 279, - 4374 - ], - [ - 154, - 4378, - 167, - 4393 - ], - [ - 173, - 4378, - 190, - 4394 - ], - [ - 186, - 4378, - 201, - 4393 - ], - [ - 199, - 4379, - 210, - 4394 - ], - [ - 210, - 4378, - 218, - 4393 - ], - [ - 215, - 4378, - 230, - 4394 - ], - [ - 227, - 4378, - 243, - 4394 - ], - [ - 247, - 4378, - 263, - 4394 - ], - [ - 260, - 4378, - 290, - 4394 - ], - [ - 234, - 4389, - 239, - 4396 - ], - [ - 282, - 4389, - 287, - 4393 - ], - [ - 287, - 4389, - 292, - 4393 - ], - [ - 292, - 4389, - 297, - 4393 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/4850ebd4b8c546019a65c7403c1200bb.jpeg", - "context_path": "contexts/183/context.json", - "id": 86412 - }, - { - "blk_list": [ - { - "text_bbox": [ - 211, - 27, - 586, - 121 - ], - "bubble_bbox": [ - 180, - 0, - 617, - 227 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 314, - 44, - 328, - 56 - ], - [ - 472, - 44, - 481, - 51 - ], - [ - 418, - 46, - 422, - 51 - ], - [ - 338, - 70, - 346, - 77 - ], - [ - 368, - 70, - 378, - 77 - ], - [ - 409, - 70, - 423, - 82 - ], - [ - 458, - 70, - 466, - 81 - ], - [ - 482, - 70, - 491, - 77 - ], - [ - 509, - 70, - 519, - 82 - ], - [ - 249, - 72, - 253, - 77 - ], - [ - 497, - 72, - 501, - 77 - ], - [ - 533, - 72, - 537, - 77 - ], - [ - 452, - 96, - 461, - 103 - ], - [ - 390, - 98, - 393, - 103 - ], - [ - 425, - 98, - 429, - 103 - ], - [ - 467, - 98, - 471, - 103 - ], - [ - 357, - 40, - 370, - 60 - ], - [ - 378, - 40, - 389, - 59 - ], - [ - 392, - 40, - 406, - 59 - ], - [ - 414, - 40, - 427, - 60 - ], - [ - 436, - 40, - 452, - 60 - ], - [ - 298, - 41, - 314, - 60 - ], - [ - 311, - 41, - 331, - 60 - ], - [ - 340, - 41, - 357, - 60 - ], - [ - 372, - 41, - 375, - 60 - ], - [ - 454, - 41, - 468, - 60 - ], - [ - 468, - 41, - 484, - 60 - ], - [ - 485, - 41, - 499, - 60 - ], - [ - 226, - 66, - 244, - 85 - ], - [ - 245, - 66, - 258, - 86 - ], - [ - 321, - 66, - 333, - 86 - ], - [ - 428, - 66, - 440, - 86 - ], - [ - 493, - 66, - 505, - 85 - ], - [ - 257, - 67, - 273, - 86 - ], - [ - 273, - 67, - 288, - 85 - ], - [ - 289, - 68, - 303, - 86 - ], - [ - 305, - 67, - 319, - 85 - ], - [ - 335, - 67, - 349, - 86 - ], - [ - 350, - 67, - 364, - 85 - ], - [ - 365, - 67, - 381, - 86 - ], - [ - 390, - 67, - 405, - 85 - ], - [ - 406, - 67, - 426, - 86 - ], - [ - 442, - 68, - 453, - 86 - ], - [ - 455, - 67, - 470, - 85 - ], - [ - 478, - 67, - 494, - 86 - ], - [ - 507, - 67, - 522, - 86 - ], - [ - 524, - 67, - 527, - 86 - ], - [ - 528, - 67, - 542, - 85 - ], - [ - 541, - 67, - 557, - 86 - ], - [ - 558, - 67, - 573, - 85 - ], - [ - 364, - 92, - 376, - 112 - ], - [ - 385, - 92, - 398, - 111 - ], - [ - 400, - 92, - 412, - 111 - ], - [ - 420, - 92, - 433, - 111 - ], - [ - 434, - 92, - 447, - 112 - ], - [ - 463, - 92, - 475, - 111 - ], - [ - 317, - 93, - 333, - 111 - ], - [ - 333, - 93, - 346, - 111 - ], - [ - 348, - 93, - 362, - 111 - ], - [ - 449, - 93, - 464, - 112 - ], - [ - 476, - 106, - 481, - 111 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 140, - 1009, - 402, - 1151 - ], - "bubble_bbox": [ - 97, - 935, - 435, - 1211 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 173, - 1056, - 190, - 1070 - ], - [ - 349, - 1056, - 360, - 1064 - ], - [ - 242, - 1058, - 246, - 1065 - ], - [ - 335, - 1058, - 339, - 1065 - ], - [ - 199, - 1086, - 210, - 1092 - ], - [ - 261, - 1086, - 278, - 1100 - ], - [ - 332, - 1088, - 337, - 1095 - ], - [ - 199, - 1094, - 211, - 1101 - ], - [ - 205, - 1021, - 218, - 1045 - ], - [ - 248, - 1021, - 270, - 1043 - ], - [ - 278, - 1021, - 292, - 1044 - ], - [ - 220, - 1022, - 238, - 1043 - ], - [ - 272, - 1022, - 275, - 1044 - ], - [ - 293, - 1022, - 310, - 1043 - ], - [ - 310, - 1022, - 329, - 1044 - ], - [ - 170, - 1052, - 193, - 1074 - ], - [ - 196, - 1052, - 210, - 1074 - ], - [ - 212, - 1052, - 227, - 1074 - ], - [ - 237, - 1052, - 252, - 1074 - ], - [ - 263, - 1053, - 281, - 1074 - ], - [ - 283, - 1053, - 287, - 1074 - ], - [ - 289, - 1052, - 308, - 1074 - ], - [ - 310, - 1052, - 314, - 1074 - ], - [ - 316, - 1053, - 329, - 1074 - ], - [ - 330, - 1052, - 344, - 1074 - ], - [ - 345, - 1052, - 363, - 1075 - ], - [ - 174, - 1081, - 189, - 1104 - ], - [ - 190, - 1083, - 194, - 1104 - ], - [ - 196, - 1083, - 214, - 1105 - ], - [ - 215, - 1082, - 232, - 1104 - ], - [ - 242, - 1082, - 261, - 1104 - ], - [ - 258, - 1082, - 281, - 1104 - ], - [ - 292, - 1082, - 311, - 1104 - ], - [ - 312, - 1082, - 326, - 1105 - ], - [ - 327, - 1082, - 342, - 1104 - ], - [ - 341, - 1082, - 360, - 1104 - ], - [ - 238, - 1112, - 260, - 1134 - ], - [ - 261, - 1113, - 276, - 1135 - ], - [ - 278, - 1112, - 293, - 1134 - ], - [ - 290, - 1129, - 296, - 1134 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 473, - 1186, - 631, - 1227 - ], - "bubble_bbox": [ - 429, - 1119, - 673, - 1283 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 519, - 1202, - 523, - 1208 - ], - [ - 607, - 1195, - 621, - 1211 - ], - [ - 482, - 1196, - 499, - 1217 - ], - [ - 500, - 1196, - 514, - 1217 - ], - [ - 515, - 1196, - 528, - 1217 - ], - [ - 528, - 1196, - 545, - 1217 - ], - [ - 555, - 1196, - 575, - 1216 - ], - [ - 576, - 1196, - 590, - 1217 - ], - [ - 592, - 1196, - 606, - 1216 - ], - [ - 611, - 1212, - 616, - 1217 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 89, - 2155, - 280, - 2215 - ], - "bubble_bbox": [ - 61, - 2080, - 309, - 2275 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 112, - 2168, - 124, - 2177 - ], - [ - 171, - 2168, - 182, - 2176 - ], - [ - 190, - 2188, - 197, - 2194 - ], - [ - 99, - 2164, - 109, - 2180 - ], - [ - 110, - 2165, - 126, - 2180 - ], - [ - 128, - 2164, - 138, - 2180 - ], - [ - 146, - 2164, - 157, - 2180 - ], - [ - 157, - 2164, - 184, - 2180 - ], - [ - 185, - 2164, - 195, - 2180 - ], - [ - 208, - 2164, - 218, - 2181 - ], - [ - 219, - 2164, - 231, - 2180 - ], - [ - 238, - 2164, - 248, - 2181 - ], - [ - 248, - 2164, - 258, - 2180 - ], - [ - 259, - 2165, - 272, - 2180 - ], - [ - 139, - 2170, - 146, - 2174 - ], - [ - 196, - 2176, - 200, - 2180 - ], - [ - 112, - 2185, - 123, - 2201 - ], - [ - 148, - 2185, - 161, - 2201 - ], - [ - 177, - 2185, - 187, - 2201 - ], - [ - 208, - 2185, - 218, - 2201 - ], - [ - 219, - 2185, - 231, - 2201 - ], - [ - 232, - 2185, - 242, - 2201 - ], - [ - 130, - 2186, - 143, - 2201 - ], - [ - 144, - 2186, - 147, - 2201 - ], - [ - 163, - 2186, - 165, - 2201 - ], - [ - 167, - 2186, - 176, - 2201 - ], - [ - 187, - 2186, - 200, - 2202 - ], - [ - 244, - 2186, - 253, - 2201 - ], - [ - 254, - 2197, - 258, - 2201 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 294, - 2258, - 664, - 2380 - ], - "bubble_bbox": [ - 264, - 2151, - 688, - 2476 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 410, - 2277, - 421, - 2286 - ], - [ - 452, - 2277, - 459, - 2282 - ], - [ - 527, - 2277, - 539, - 2286 - ], - [ - 420, - 2297, - 430, - 2306 - ], - [ - 505, - 2297, - 516, - 2306 - ], - [ - 312, - 2318, - 319, - 2323 - ], - [ - 383, - 2318, - 390, - 2327 - ], - [ - 395, - 2318, - 406, - 2327 - ], - [ - 428, - 2318, - 440, - 2327 - ], - [ - 445, - 2318, - 455, - 2326 - ], - [ - 581, - 2318, - 588, - 2323 - ], - [ - 392, - 2338, - 399, - 2346 - ], - [ - 411, - 2338, - 418, - 2342 - ], - [ - 450, - 2338, - 457, - 2346 - ], - [ - 493, - 2338, - 499, - 2343 - ], - [ - 558, - 2338, - 569, - 2347 - ], - [ - 411, - 2343, - 419, - 2348 - ], - [ - 443, - 2359, - 450, - 2368 - ], - [ - 437, - 2273, - 443, - 2284 - ], - [ - 408, - 2274, - 424, - 2289 - ], - [ - 425, - 2274, - 434, - 2290 - ], - [ - 449, - 2274, - 462, - 2290 - ], - [ - 463, - 2274, - 466, - 2289 - ], - [ - 467, - 2274, - 481, - 2288 - ], - [ - 482, - 2274, - 493, - 2289 - ], - [ - 493, - 2274, - 506, - 2289 - ], - [ - 515, - 2274, - 524, - 2289 - ], - [ - 525, - 2274, - 541, - 2289 - ], - [ - 542, - 2274, - 556, - 2289 - ], - [ - 435, - 2285, - 439, - 2289 - ], - [ - 503, - 2285, - 507, - 2289 - ], - [ - 356, - 2294, - 369, - 2310 - ], - [ - 369, - 2294, - 379, - 2310 - ], - [ - 380, - 2294, - 390, - 2309 - ], - [ - 389, - 2294, - 402, - 2310 - ], - [ - 409, - 2295, - 419, - 2310 - ], - [ - 418, - 2294, - 432, - 2309 - ], - [ - 433, - 2294, - 444, - 2310 - ], - [ - 451, - 2294, - 464, - 2309 - ], - [ - 465, - 2294, - 476, - 2309 - ], - [ - 477, - 2294, - 487, - 2309 - ], - [ - 488, - 2295, - 498, - 2309 - ], - [ - 499, - 2295, - 502, - 2309 - ], - [ - 503, - 2294, - 517, - 2309 - ], - [ - 519, - 2294, - 528, - 2309 - ], - [ - 536, - 2295, - 539, - 2310 - ], - [ - 540, - 2294, - 553, - 2310 - ], - [ - 560, - 2294, - 573, - 2310 - ], - [ - 574, - 2294, - 584, - 2310 - ], - [ - 585, - 2294, - 597, - 2309 - ], - [ - 597, - 2294, - 608, - 2309 - ], - [ - 550, - 2305, - 553, - 2312 - ], - [ - 310, - 2315, - 322, - 2330 - ], - [ - 323, - 2315, - 334, - 2330 - ], - [ - 334, - 2315, - 345, - 2330 - ], - [ - 356, - 2315, - 365, - 2329 - ], - [ - 363, - 2315, - 373, - 2330 - ], - [ - 381, - 2315, - 392, - 2330 - ], - [ - 393, - 2315, - 409, - 2330 - ], - [ - 426, - 2315, - 442, - 2330 - ], - [ - 443, - 2315, - 457, - 2329 - ], - [ - 458, - 2315, - 470, - 2330 - ], - [ - 477, - 2315, - 486, - 2330 - ], - [ - 498, - 2315, - 500, - 2330 - ], - [ - 502, - 2315, - 513, - 2330 - ], - [ - 515, - 2315, - 526, - 2330 - ], - [ - 537, - 2315, - 550, - 2330 - ], - [ - 551, - 2315, - 561, - 2330 - ], - [ - 562, - 2315, - 573, - 2330 - ], - [ - 578, - 2315, - 591, - 2330 - ], - [ - 598, - 2315, - 608, - 2330 - ], - [ - 606, - 2315, - 616, - 2330 - ], - [ - 617, - 2315, - 629, - 2330 - ], - [ - 630, - 2315, - 641, - 2330 - ], - [ - 641, - 2315, - 654, - 2330 - ], - [ - 346, - 2316, - 355, - 2330 - ], - [ - 416, - 2316, - 425, - 2330 - ], - [ - 488, - 2316, - 497, - 2330 - ], - [ - 575, - 2316, - 577, - 2330 - ], - [ - 527, - 2326, - 531, - 2330 - ], - [ - 368, - 2335, - 378, - 2350 - ], - [ - 379, - 2335, - 389, - 2350 - ], - [ - 390, - 2335, - 402, - 2350 - ], - [ - 422, - 2335, - 432, - 2350 - ], - [ - 448, - 2335, - 460, - 2350 - ], - [ - 479, - 2335, - 489, - 2350 - ], - [ - 490, - 2335, - 502, - 2351 - ], - [ - 503, - 2335, - 514, - 2350 - ], - [ - 521, - 2335, - 531, - 2350 - ], - [ - 532, - 2335, - 555, - 2350 - ], - [ - 556, - 2335, - 572, - 2350 - ], - [ - 584, - 2335, - 596, - 2350 - ], - [ - 409, - 2336, - 421, - 2351 - ], - [ - 434, - 2336, - 436, - 2350 - ], - [ - 438, - 2336, - 447, - 2350 - ], - [ - 460, - 2336, - 473, - 2350 - ], - [ - 573, - 2336, - 585, - 2350 - ], - [ - 466, - 2355, - 475, - 2371 - ], - [ - 504, - 2355, - 513, - 2370 - ], - [ - 436, - 2356, - 439, - 2371 - ], - [ - 441, - 2356, - 452, - 2371 - ], - [ - 453, - 2356, - 465, - 2371 - ], - [ - 476, - 2356, - 487, - 2371 - ], - [ - 488, - 2356, - 491, - 2371 - ], - [ - 492, - 2356, - 503, - 2371 - ], - [ - 515, - 2356, - 524, - 2371 - ], - [ - 524, - 2367, - 528, - 2370 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 235, - 3257, - 652, - 3406 - ], - "bubble_bbox": [ - 207, - 3156, - 683, - 3518 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 502, - 3281, - 506, - 3285 - ], - [ - 516, - 3303, - 525, - 3310 - ], - [ - 567, - 3303, - 581, - 3315 - ], - [ - 495, - 3304, - 509, - 3315 - ], - [ - 533, - 3304, - 541, - 3314 - ], - [ - 503, - 3329, - 512, - 3340 - ], - [ - 527, - 3328, - 536, - 3333 - ], - [ - 429, - 3330, - 433, - 3335 - ], - [ - 527, - 3335, - 536, - 3340 - ], - [ - 358, - 3353, - 372, - 3364 - ], - [ - 409, - 3353, - 422, - 3364 - ], - [ - 498, - 3353, - 507, - 3365 - ], - [ - 481, - 3355, - 485, - 3360 - ], - [ - 379, - 3378, - 388, - 3385 - ], - [ - 417, - 3378, - 426, - 3383 - ], - [ - 433, - 3378, - 442, - 3385 - ], - [ - 447, - 3378, - 461, - 3389 - ], - [ - 512, - 3378, - 521, - 3385 - ], - [ - 417, - 3385, - 427, - 3390 - ], - [ - 367, - 3275, - 381, - 3293 - ], - [ - 382, - 3274, - 393, - 3293 - ], - [ - 394, - 3275, - 408, - 3293 - ], - [ - 409, - 3274, - 421, - 3293 - ], - [ - 430, - 3275, - 445, - 3293 - ], - [ - 446, - 3275, - 458, - 3294 - ], - [ - 460, - 3275, - 474, - 3293 - ], - [ - 483, - 3275, - 500, - 3293 - ], - [ - 498, - 3275, - 510, - 3293 - ], - [ - 510, - 3274, - 523, - 3293 - ], - [ - 477, - 3299, - 493, - 3317 - ], - [ - 263, - 3300, - 274, - 3319 - ], - [ - 276, - 3300, - 290, - 3318 - ], - [ - 298, - 3301, - 312, - 3318 - ], - [ - 314, - 3300, - 324, - 3318 - ], - [ - 325, - 3300, - 337, - 3318 - ], - [ - 338, - 3300, - 354, - 3318 - ], - [ - 352, - 3300, - 366, - 3318 - ], - [ - 368, - 3300, - 379, - 3319 - ], - [ - 380, - 3300, - 394, - 3318 - ], - [ - 394, - 3300, - 410, - 3318 - ], - [ - 419, - 3300, - 430, - 3319 - ], - [ - 432, - 3300, - 435, - 3318 - ], - [ - 437, - 3300, - 452, - 3318 - ], - [ - 461, - 3300, - 476, - 3318 - ], - [ - 493, - 3300, - 512, - 3318 - ], - [ - 514, - 3300, - 528, - 3319 - ], - [ - 530, - 3300, - 544, - 3318 - ], - [ - 552, - 3300, - 568, - 3318 - ], - [ - 565, - 3300, - 584, - 3318 - ], - [ - 594, - 3300, - 605, - 3319 - ], - [ - 607, - 3301, - 610, - 3318 - ], - [ - 611, - 3300, - 627, - 3318 - ], - [ - 263, - 3324, - 275, - 3344 - ], - [ - 277, - 3325, - 291, - 3343 - ], - [ - 291, - 3325, - 307, - 3343 - ], - [ - 306, - 3325, - 319, - 3343 - ], - [ - 329, - 3325, - 332, - 3343 - ], - [ - 333, - 3325, - 349, - 3343 - ], - [ - 357, - 3325, - 372, - 3343 - ], - [ - 373, - 3324, - 385, - 3344 - ], - [ - 387, - 3325, - 401, - 3343 - ], - [ - 409, - 3325, - 425, - 3343 - ], - [ - 425, - 3325, - 437, - 3343 - ], - [ - 438, - 3325, - 454, - 3343 - ], - [ - 455, - 3325, - 469, - 3343 - ], - [ - 483, - 3325, - 494, - 3343 - ], - [ - 494, - 3324, - 499, - 3332 - ], - [ - 501, - 3325, - 515, - 3343 - ], - [ - 540, - 3325, - 554, - 3343 - ], - [ - 568, - 3325, - 571, - 3343 - ], - [ - 573, - 3325, - 585, - 3343 - ], - [ - 587, - 3324, - 598, - 3343 - ], - [ - 599, - 3325, - 613, - 3343 - ], - [ - 622, - 3325, - 626, - 3343 - ], - [ - 627, - 3325, - 642, - 3343 - ], - [ - 247, - 3326, - 262, - 3343 - ], - [ - 524, - 3326, - 539, - 3343 - ], - [ - 555, - 3326, - 566, - 3343 - ], - [ - 470, - 3338, - 474, - 3343 - ], - [ - 477, - 3349, - 489, - 3368 - ], - [ - 535, - 3349, - 547, - 3369 - ], - [ - 564, - 3349, - 577, - 3368 - ], - [ - 314, - 3350, - 317, - 3368 - ], - [ - 319, - 3350, - 331, - 3368 - ], - [ - 339, - 3350, - 355, - 3368 - ], - [ - 356, - 3350, - 375, - 3368 - ], - [ - 375, - 3350, - 391, - 3368 - ], - [ - 392, - 3350, - 406, - 3368 - ], - [ - 407, - 3350, - 424, - 3367 - ], - [ - 426, - 3350, - 437, - 3368 - ], - [ - 439, - 3350, - 453, - 3368 - ], - [ - 461, - 3350, - 477, - 3368 - ], - [ - 491, - 3351, - 494, - 3368 - ], - [ - 496, - 3350, - 510, - 3368 - ], - [ - 519, - 3350, - 534, - 3368 - ], - [ - 549, - 3350, - 563, - 3368 - ], - [ - 344, - 3374, - 361, - 3393 - ], - [ - 361, - 3375, - 375, - 3393 - ], - [ - 376, - 3375, - 391, - 3394 - ], - [ - 392, - 3375, - 406, - 3393 - ], - [ - 431, - 3375, - 445, - 3393 - ], - [ - 445, - 3375, - 464, - 3393 - ], - [ - 465, - 3375, - 480, - 3393 - ], - [ - 481, - 3374, - 493, - 3394 - ], - [ - 495, - 3375, - 509, - 3393 - ], - [ - 509, - 3375, - 524, - 3394 - ], - [ - 525, - 3375, - 540, - 3393 - ], - [ - 415, - 3376, - 429, - 3393 - ], - [ - 541, - 3388, - 546, - 3393 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 127, - 3746, - 522, - 3905 - ], - "bubble_bbox": [ - 75, - 3634, - 574, - 4003 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 340, - 3767, - 350, - 3779 - ], - [ - 357, - 3767, - 366, - 3778 - ], - [ - 300, - 3795, - 304, - 3801 - ], - [ - 445, - 3795, - 449, - 3801 - ], - [ - 292, - 3820, - 301, - 3827 - ], - [ - 147, - 3822, - 150, - 3828 - ], - [ - 189, - 3822, - 193, - 3828 - ], - [ - 167, - 3846, - 176, - 3854 - ], - [ - 357, - 3846, - 366, - 3854 - ], - [ - 437, - 3846, - 446, - 3854 - ], - [ - 474, - 3847, - 483, - 3859 - ], - [ - 196, - 3849, - 199, - 3854 - ], - [ - 248, - 3873, - 263, - 3885 - ], - [ - 344, - 3873, - 358, - 3885 - ], - [ - 280, - 3875, - 283, - 3881 - ], - [ - 289, - 3762, - 297, - 3776 - ], - [ - 228, - 3763, - 240, - 3784 - ], - [ - 242, - 3763, - 256, - 3783 - ], - [ - 258, - 3763, - 270, - 3784 - ], - [ - 271, - 3763, - 286, - 3783 - ], - [ - 305, - 3764, - 321, - 3783 - ], - [ - 322, - 3764, - 335, - 3783 - ], - [ - 337, - 3764, - 353, - 3783 - ], - [ - 354, - 3764, - 369, - 3783 - ], - [ - 370, - 3763, - 385, - 3783 - ], - [ - 386, - 3763, - 399, - 3783 - ], - [ - 400, - 3764, - 412, - 3782 - ], - [ - 409, - 3763, - 423, - 3783 - ], - [ - 287, - 3778, - 291, - 3782 - ], - [ - 179, - 3790, - 190, - 3810 - ], - [ - 199, - 3790, - 216, - 3809 - ], - [ - 218, - 3790, - 221, - 3809 - ], - [ - 223, - 3790, - 239, - 3809 - ], - [ - 240, - 3790, - 256, - 3809 - ], - [ - 265, - 3790, - 281, - 3810 - ], - [ - 282, - 3790, - 295, - 3810 - ], - [ - 296, - 3790, - 309, - 3809 - ], - [ - 308, - 3790, - 324, - 3809 - ], - [ - 333, - 3790, - 352, - 3808 - ], - [ - 354, - 3790, - 367, - 3809 - ], - [ - 368, - 3789, - 382, - 3809 - ], - [ - 394, - 3790, - 398, - 3809 - ], - [ - 399, - 3790, - 415, - 3809 - ], - [ - 424, - 3789, - 443, - 3809 - ], - [ - 441, - 3790, - 454, - 3809 - ], - [ - 455, - 3790, - 471, - 3809 - ], - [ - 379, - 3804, - 384, - 3809 - ], - [ - 142, - 3816, - 155, - 3836 - ], - [ - 169, - 3816, - 186, - 3835 - ], - [ - 184, - 3816, - 197, - 3836 - ], - [ - 197, - 3816, - 211, - 3835 - ], - [ - 238, - 3816, - 251, - 3836 - ], - [ - 251, - 3816, - 265, - 3836 - ], - [ - 267, - 3816, - 279, - 3836 - ], - [ - 356, - 3816, - 368, - 3836 - ], - [ - 398, - 3816, - 410, - 3837 - ], - [ - 417, - 3816, - 434, - 3836 - ], - [ - 450, - 3816, - 462, - 3836 - ], - [ - 472, - 3816, - 484, - 3837 - ], - [ - 157, - 3817, - 168, - 3836 - ], - [ - 212, - 3817, - 228, - 3836 - ], - [ - 289, - 3817, - 304, - 3836 - ], - [ - 304, - 3817, - 318, - 3836 - ], - [ - 319, - 3817, - 335, - 3836 - ], - [ - 335, - 3817, - 349, - 3836 - ], - [ - 351, - 3817, - 354, - 3836 - ], - [ - 370, - 3817, - 388, - 3835 - ], - [ - 412, - 3817, - 415, - 3836 - ], - [ - 444, - 3817, - 447, - 3836 - ], - [ - 486, - 3817, - 489, - 3836 - ], - [ - 491, - 3817, - 508, - 3836 - ], - [ - 295, - 3842, - 308, - 3862 - ], - [ - 325, - 3842, - 337, - 3862 - ], - [ - 164, - 3843, - 178, - 3863 - ], - [ - 180, - 3843, - 191, - 3862 - ], - [ - 191, - 3843, - 204, - 3862 - ], - [ - 205, - 3844, - 220, - 3862 - ], - [ - 221, - 3843, - 236, - 3862 - ], - [ - 245, - 3843, - 264, - 3862 - ], - [ - 264, - 3843, - 277, - 3863 - ], - [ - 279, - 3843, - 294, - 3862 - ], - [ - 309, - 3843, - 324, - 3862 - ], - [ - 338, - 3843, - 353, - 3862 - ], - [ - 354, - 3843, - 370, - 3863 - ], - [ - 380, - 3843, - 391, - 3863 - ], - [ - 393, - 3843, - 408, - 3862 - ], - [ - 416, - 3843, - 433, - 3863 - ], - [ - 434, - 3843, - 449, - 3862 - ], - [ - 450, - 3844, - 454, - 3862 - ], - [ - 456, - 3843, - 469, - 3863 - ], - [ - 471, - 3844, - 486, - 3863 - ], - [ - 232, - 3870, - 249, - 3889 - ], - [ - 245, - 3870, - 266, - 3889 - ], - [ - 275, - 3869, - 288, - 3889 - ], - [ - 289, - 3870, - 305, - 3889 - ], - [ - 305, - 3870, - 319, - 3889 - ], - [ - 328, - 3870, - 344, - 3889 - ], - [ - 341, - 3870, - 362, - 3889 - ], - [ - 363, - 3869, - 376, - 3889 - ], - [ - 378, - 3869, - 397, - 3888 - ], - [ - 398, - 3869, - 411, - 3889 - ], - [ - 413, - 3884, - 417, - 3889 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 4523, - 228, - 4556 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 175, - 4527, - 183, - 4552 - ], - [ - 190, - 4527, - 197, - 4552 - ], - [ - 199, - 4527, - 207, - 4552 - ], - [ - 209, - 4527, - 220, - 4551 - ], - [ - 78, - 4529, - 87, - 4553 - ], - [ - 88, - 4529, - 96, - 4553 - ], - [ - 98, - 4529, - 106, - 4553 - ], - [ - 107, - 4529, - 115, - 4553 - ], - [ - 117, - 4528, - 125, - 4552 - ], - [ - 126, - 4528, - 134, - 4552 - ], - [ - 136, - 4528, - 143, - 4552 - ], - [ - 145, - 4528, - 153, - 4552 - ], - [ - 154, - 4528, - 163, - 4552 - ], - [ - 165, - 4528, - 173, - 4552 - ], - [ - 184, - 4547, - 187, - 4552 - ], - [ - 202, - 4531, - 204, - 4548 - ], - [ - 91, - 4532, - 93, - 4549 - ], - [ - 101, - 4532, - 103, - 4539 - ], - [ - 157, - 4534, - 160, - 4544 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 168, - 4655, - 415, - 4752 - ], - "bubble_bbox": [ - 124, - 4583, - 460, - 4825 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 239, - 4668, - 255, - 4680 - ], - [ - 277, - 4668, - 286, - 4679 - ], - [ - 310, - 4667, - 320, - 4675 - ], - [ - 350, - 4668, - 365, - 4680 - ], - [ - 242, - 4695, - 251, - 4702 - ], - [ - 314, - 4695, - 330, - 4707 - ], - [ - 185, - 4722, - 195, - 4728 - ], - [ - 280, - 4722, - 290, - 4730 - ], - [ - 202, - 4723, - 218, - 4735 - ], - [ - 268, - 4724, - 271, - 4730 - ], - [ - 323, - 4723, - 333, - 4735 - ], - [ - 339, - 4723, - 354, - 4735 - ], - [ - 185, - 4729, - 195, - 4735 - ], - [ - 198, - 4664, - 209, - 4684 - ], - [ - 219, - 4664, - 238, - 4684 - ], - [ - 237, - 4664, - 258, - 4684 - ], - [ - 260, - 4664, - 272, - 4684 - ], - [ - 274, - 4664, - 290, - 4684 - ], - [ - 291, - 4664, - 306, - 4684 - ], - [ - 307, - 4664, - 323, - 4685 - ], - [ - 334, - 4664, - 346, - 4685 - ], - [ - 347, - 4664, - 368, - 4684 - ], - [ - 370, - 4664, - 389, - 4684 - ], - [ - 180, - 4691, - 197, - 4712 - ], - [ - 198, - 4691, - 211, - 4712 - ], - [ - 213, - 4691, - 229, - 4711 - ], - [ - 238, - 4691, - 254, - 4712 - ], - [ - 255, - 4691, - 271, - 4711 - ], - [ - 271, - 4692, - 289, - 4711 - ], - [ - 287, - 4692, - 302, - 4711 - ], - [ - 311, - 4692, - 333, - 4711 - ], - [ - 335, - 4691, - 348, - 4711 - ], - [ - 357, - 4691, - 374, - 4712 - ], - [ - 375, - 4691, - 388, - 4712 - ], - [ - 390, - 4691, - 405, - 4711 - ], - [ - 222, - 4718, - 236, - 4738 - ], - [ - 263, - 4718, - 276, - 4739 - ], - [ - 365, - 4718, - 378, - 4738 - ], - [ - 182, - 4719, - 198, - 4739 - ], - [ - 200, - 4719, - 221, - 4739 - ], - [ - 237, - 4719, - 254, - 4739 - ], - [ - 277, - 4719, - 293, - 4739 - ], - [ - 294, - 4719, - 310, - 4739 - ], - [ - 320, - 4719, - 336, - 4739 - ], - [ - 336, - 4719, - 357, - 4739 - ], - [ - 359, - 4719, - 363, - 4739 - ], - [ - 379, - 4719, - 398, - 4738 - ], - [ - 399, - 4733, - 404, - 4738 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/8c005097172640efa1d8de09c16be3ce.jpeg", - "context_path": "contexts/183/context.json", - "id": 86415 - }, - { - "blk_list": [ - { - "text_bbox": [ - 120, - 1184, - 557, - 1329 - ], - "bubble_bbox": [ - 66, - 1007, - 614, - 1547 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 289, - 1204, - 305, - 1215 - ], - [ - 389, - 1229, - 399, - 1236 - ], - [ - 423, - 1229, - 439, - 1241 - ], - [ - 235, - 1231, - 239, - 1236 - ], - [ - 157, - 1254, - 167, - 1261 - ], - [ - 244, - 1254, - 254, - 1261 - ], - [ - 285, - 1254, - 296, - 1265 - ], - [ - 369, - 1254, - 380, - 1261 - ], - [ - 398, - 1254, - 413, - 1265 - ], - [ - 456, - 1254, - 471, - 1266 - ], - [ - 190, - 1256, - 194, - 1260 - ], - [ - 260, - 1256, - 264, - 1261 - ], - [ - 199, - 1279, - 209, - 1286 - ], - [ - 282, - 1279, - 293, - 1286 - ], - [ - 440, - 1279, - 451, - 1286 - ], - [ - 319, - 1281, - 323, - 1285 - ], - [ - 245, - 1304, - 261, - 1315 - ], - [ - 249, - 1200, - 267, - 1219 - ], - [ - 272, - 1200, - 289, - 1219 - ], - [ - 346, - 1200, - 360, - 1219 - ], - [ - 360, - 1199, - 370, - 1213 - ], - [ - 405, - 1200, - 412, - 1209 - ], - [ - 287, - 1201, - 308, - 1219 - ], - [ - 317, - 1201, - 337, - 1219 - ], - [ - 329, - 1201, - 344, - 1219 - ], - [ - 374, - 1201, - 391, - 1220 - ], - [ - 386, - 1201, - 404, - 1219 - ], - [ - 407, - 1201, - 424, - 1219 - ], - [ - 265, - 1208, - 273, - 1212 - ], - [ - 356, - 1214, - 361, - 1219 - ], - [ - 219, - 1226, - 236, - 1244 - ], - [ - 228, - 1225, - 243, - 1244 - ], - [ - 258, - 1226, - 266, - 1244 - ], - [ - 263, - 1225, - 281, - 1244 - ], - [ - 278, - 1226, - 297, - 1244 - ], - [ - 307, - 1226, - 324, - 1244 - ], - [ - 319, - 1225, - 337, - 1245 - ], - [ - 333, - 1226, - 351, - 1244 - ], - [ - 355, - 1225, - 370, - 1244 - ], - [ - 369, - 1225, - 387, - 1244 - ], - [ - 383, - 1226, - 403, - 1245 - ], - [ - 397, - 1225, - 411, - 1244 - ], - [ - 420, - 1226, - 442, - 1244 - ], - [ - 440, - 1226, - 458, - 1244 - ], - [ - 243, - 1227, - 260, - 1244 - ], - [ - 253, - 1250, - 267, - 1269 - ], - [ - 267, - 1250, - 284, - 1269 - ], - [ - 305, - 1250, - 320, - 1269 - ], - [ - 334, - 1250, - 352, - 1270 - ], - [ - 414, - 1250, - 432, - 1269 - ], - [ - 509, - 1250, - 528, - 1270 - ], - [ - 134, - 1251, - 154, - 1268 - ], - [ - 152, - 1251, - 171, - 1269 - ], - [ - 167, - 1251, - 185, - 1269 - ], - [ - 181, - 1251, - 197, - 1269 - ], - [ - 199, - 1251, - 216, - 1269 - ], - [ - 221, - 1251, - 240, - 1268 - ], - [ - 239, - 1251, - 258, - 1269 - ], - [ - 280, - 1251, - 300, - 1269 - ], - [ - 296, - 1251, - 314, - 1269 - ], - [ - 322, - 1251, - 339, - 1269 - ], - [ - 348, - 1251, - 366, - 1269 - ], - [ - 363, - 1251, - 383, - 1270 - ], - [ - 395, - 1251, - 416, - 1269 - ], - [ - 428, - 1251, - 445, - 1269 - ], - [ - 453, - 1251, - 475, - 1269 - ], - [ - 472, - 1251, - 490, - 1269 - ], - [ - 497, - 1251, - 515, - 1269 - ], - [ - 524, - 1251, - 541, - 1269 - ], - [ - 213, - 1258, - 221, - 1262 - ], - [ - 382, - 1257, - 394, - 1262 - ], - [ - 167, - 1276, - 184, - 1294 - ], - [ - 179, - 1275, - 197, - 1295 - ], - [ - 193, - 1276, - 213, - 1295 - ], - [ - 209, - 1276, - 226, - 1294 - ], - [ - 224, - 1275, - 242, - 1294 - ], - [ - 246, - 1275, - 266, - 1294 - ], - [ - 262, - 1275, - 277, - 1294 - ], - [ - 276, - 1276, - 310, - 1295 - ], - [ - 306, - 1276, - 315, - 1294 - ], - [ - 310, - 1276, - 326, - 1294 - ], - [ - 346, - 1276, - 364, - 1294 - ], - [ - 362, - 1276, - 380, - 1294 - ], - [ - 378, - 1276, - 394, - 1293 - ], - [ - 392, - 1276, - 410, - 1294 - ], - [ - 408, - 1275, - 425, - 1294 - ], - [ - 424, - 1276, - 439, - 1294 - ], - [ - 435, - 1276, - 454, - 1295 - ], - [ - 451, - 1276, - 460, - 1294 - ], - [ - 457, - 1276, - 489, - 1294 - ], - [ - 326, - 1277, - 338, - 1294 - ], - [ - 490, - 1282, - 503, - 1287 - ], - [ - 226, - 1300, - 245, - 1319 - ], - [ - 262, - 1300, - 280, - 1319 - ], - [ - 318, - 1300, - 332, - 1319 - ], - [ - 343, - 1300, - 360, - 1319 - ], - [ - 396, - 1300, - 413, - 1319 - ], - [ - 424, - 1300, - 441, - 1320 - ], - [ - 443, - 1300, - 460, - 1319 - ], - [ - 478, - 1299, - 489, - 1313 - ], - [ - 191, - 1301, - 210, - 1319 - ], - [ - 206, - 1301, - 214, - 1319 - ], - [ - 215, - 1301, - 232, - 1319 - ], - [ - 242, - 1301, - 264, - 1319 - ], - [ - 280, - 1301, - 296, - 1319 - ], - [ - 300, - 1301, - 317, - 1319 - ], - [ - 327, - 1301, - 345, - 1319 - ], - [ - 365, - 1301, - 382, - 1319 - ], - [ - 378, - 1301, - 390, - 1319 - ], - [ - 390, - 1301, - 398, - 1319 - ], - [ - 410, - 1301, - 427, - 1318 - ], - [ - 437, - 1301, - 446, - 1319 - ], - [ - 457, - 1301, - 476, - 1319 - ], - [ - 475, - 1314, - 480, - 1319 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 3238, - 323, - 3288 - ], - "bubble_bbox": [ - 35, - 3150, - 360, - 3358 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 98, - 3253, - 114, - 3265 - ], - [ - 204, - 3252, - 214, - 3260 - ], - [ - 82, - 3248, - 94, - 3270 - ], - [ - 96, - 3249, - 117, - 3269 - ], - [ - 119, - 3248, - 138, - 3269 - ], - [ - 148, - 3249, - 152, - 3269 - ], - [ - 154, - 3248, - 167, - 3269 - ], - [ - 168, - 3249, - 183, - 3269 - ], - [ - 184, - 3249, - 200, - 3269 - ], - [ - 201, - 3249, - 217, - 3270 - ], - [ - 218, - 3249, - 234, - 3269 - ], - [ - 235, - 3249, - 252, - 3269 - ], - [ - 251, - 3249, - 266, - 3269 - ], - [ - 268, - 3249, - 271, - 3269 - ], - [ - 273, - 3248, - 286, - 3269 - ], - [ - 288, - 3249, - 307, - 3269 - ], - [ - 308, - 3264, - 313, - 3269 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 70, - 4266, - 229, - 4303 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 88, - 4274, - 96, - 4299 - ], - [ - 98, - 4274, - 106, - 4298 - ], - [ - 108, - 4274, - 115, - 4298 - ], - [ - 117, - 4274, - 124, - 4298 - ], - [ - 126, - 4274, - 134, - 4298 - ], - [ - 135, - 4274, - 143, - 4298 - ], - [ - 145, - 4273, - 153, - 4298 - ], - [ - 154, - 4274, - 163, - 4298 - ], - [ - 165, - 4273, - 173, - 4298 - ], - [ - 175, - 4273, - 183, - 4298 - ], - [ - 189, - 4273, - 197, - 4297 - ], - [ - 199, - 4273, - 207, - 4297 - ], - [ - 209, - 4273, - 220, - 4297 - ], - [ - 78, - 4275, - 87, - 4299 - ], - [ - 202, - 4276, - 204, - 4294 - ], - [ - 91, - 4278, - 93, - 4295 - ], - [ - 101, - 4278, - 103, - 4285 - ], - [ - 157, - 4280, - 160, - 4290 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 240, - 4807, - 619, - 4942 - ], - "bubble_bbox": [ - 192, - 4692, - 662, - 5046 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 324, - 4829, - 338, - 4841 - ], - [ - 403, - 4829, - 419, - 4842 - ], - [ - 456, - 4829, - 466, - 4841 - ], - [ - 511, - 4829, - 527, - 4842 - ], - [ - 535, - 4829, - 544, - 4837 - ], - [ - 268, - 4857, - 278, - 4865 - ], - [ - 391, - 4857, - 401, - 4865 - ], - [ - 406, - 4857, - 422, - 4870 - ], - [ - 461, - 4857, - 470, - 4869 - ], - [ - 532, - 4857, - 548, - 4870 - ], - [ - 299, - 4859, - 303, - 4865 - ], - [ - 377, - 4859, - 381, - 4865 - ], - [ - 255, - 4885, - 266, - 4891 - ], - [ - 314, - 4885, - 323, - 4891 - ], - [ - 384, - 4885, - 399, - 4898 - ], - [ - 430, - 4885, - 446, - 4898 - ], - [ - 468, - 4885, - 478, - 4897 - ], - [ - 542, - 4885, - 552, - 4891 - ], - [ - 300, - 4887, - 304, - 4893 - ], - [ - 561, - 4887, - 565, - 4893 - ], - [ - 256, - 4892, - 266, - 4898 - ], - [ - 314, - 4892, - 324, - 4898 - ], - [ - 542, - 4892, - 553, - 4898 - ], - [ - 404, - 4913, - 419, - 4926 - ], - [ - 443, - 4913, - 452, - 4925 - ], - [ - 330, - 4915, - 334, - 4921 - ], - [ - 308, - 4825, - 322, - 4846 - ], - [ - 321, - 4825, - 341, - 4845 - ], - [ - 342, - 4825, - 356, - 4846 - ], - [ - 366, - 4826, - 384, - 4845 - ], - [ - 385, - 4825, - 399, - 4846 - ], - [ - 400, - 4825, - 422, - 4846 - ], - [ - 424, - 4825, - 438, - 4846 - ], - [ - 440, - 4826, - 452, - 4846 - ], - [ - 453, - 4825, - 469, - 4846 - ], - [ - 479, - 4826, - 497, - 4845 - ], - [ - 495, - 4825, - 510, - 4845 - ], - [ - 509, - 4825, - 530, - 4845 - ], - [ - 532, - 4825, - 548, - 4846 - ], - [ - 568, - 4852, - 573, - 4861 - ], - [ - 265, - 4854, - 281, - 4874 - ], - [ - 282, - 4854, - 294, - 4873 - ], - [ - 294, - 4853, - 308, - 4874 - ], - [ - 307, - 4853, - 322, - 4873 - ], - [ - 324, - 4854, - 327, - 4874 - ], - [ - 329, - 4853, - 342, - 4873 - ], - [ - 344, - 4853, - 363, - 4873 - ], - [ - 372, - 4853, - 386, - 4874 - ], - [ - 387, - 4853, - 404, - 4874 - ], - [ - 403, - 4853, - 425, - 4874 - ], - [ - 426, - 4853, - 440, - 4874 - ], - [ - 443, - 4853, - 455, - 4873 - ], - [ - 457, - 4853, - 473, - 4874 - ], - [ - 489, - 4853, - 501, - 4874 - ], - [ - 511, - 4853, - 530, - 4874 - ], - [ - 529, - 4853, - 551, - 4874 - ], - [ - 553, - 4853, - 566, - 4873 - ], - [ - 574, - 4853, - 591, - 4874 - ], - [ - 474, - 4868, - 479, - 4873 - ], - [ - 253, - 4882, - 269, - 4902 - ], - [ - 271, - 4881, - 287, - 4902 - ], - [ - 296, - 4881, - 309, - 4902 - ], - [ - 311, - 4882, - 327, - 4902 - ], - [ - 329, - 4882, - 340, - 4901 - ], - [ - 342, - 4881, - 358, - 4902 - ], - [ - 367, - 4881, - 384, - 4902 - ], - [ - 381, - 4882, - 403, - 4902 - ], - [ - 414, - 4881, - 426, - 4903 - ], - [ - 428, - 4882, - 449, - 4902 - ], - [ - 451, - 4882, - 464, - 4902 - ], - [ - 465, - 4882, - 481, - 4902 - ], - [ - 491, - 4881, - 504, - 4903 - ], - [ - 506, - 4882, - 509, - 4902 - ], - [ - 511, - 4881, - 529, - 4902 - ], - [ - 539, - 4882, - 556, - 4902 - ], - [ - 556, - 4881, - 569, - 4902 - ], - [ - 570, - 4882, - 587, - 4902 - ], - [ - 588, - 4881, - 603, - 4901 - ], - [ - 325, - 4909, - 339, - 4930 - ], - [ - 349, - 4910, - 366, - 4930 - ], - [ - 367, - 4910, - 400, - 4930 - ], - [ - 401, - 4910, - 423, - 4930 - ], - [ - 425, - 4909, - 437, - 4930 - ], - [ - 439, - 4910, - 456, - 4930 - ], - [ - 465, - 4910, - 482, - 4930 - ], - [ - 484, - 4910, - 487, - 4930 - ], - [ - 489, - 4909, - 506, - 4930 - ], - [ - 508, - 4910, - 524, - 4930 - ], - [ - 525, - 4925, - 530, - 4930 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 74, - 5888, - 231, - 5924 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 88, - 5896, - 96, - 5921 - ], - [ - 107, - 5896, - 115, - 5920 - ], - [ - 117, - 5896, - 124, - 5920 - ], - [ - 126, - 5896, - 134, - 5920 - ], - [ - 136, - 5896, - 143, - 5920 - ], - [ - 145, - 5896, - 153, - 5920 - ], - [ - 154, - 5896, - 163, - 5920 - ], - [ - 165, - 5896, - 173, - 5920 - ], - [ - 175, - 5895, - 183, - 5920 - ], - [ - 190, - 5895, - 197, - 5920 - ], - [ - 199, - 5895, - 207, - 5919 - ], - [ - 209, - 5895, - 220, - 5919 - ], - [ - 78, - 5897, - 87, - 5921 - ], - [ - 98, - 5897, - 106, - 5920 - ], - [ - 184, - 5915, - 187, - 5919 - ], - [ - 91, - 5900, - 93, - 5917 - ], - [ - 101, - 5900, - 103, - 5907 - ], - [ - 202, - 5899, - 204, - 5916 - ], - [ - 157, - 5902, - 160, - 5912 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 160, - 6279, - 546, - 6439 - ], - "bubble_bbox": [ - 106, - 6164, - 604, - 6547 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 346, - 6302, - 358, - 6312 - ], - [ - 243, - 6303, - 262, - 6317 - ], - [ - 296, - 6303, - 312, - 6317 - ], - [ - 418, - 6305, - 422, - 6312 - ], - [ - 197, - 6335, - 214, - 6349 - ], - [ - 423, - 6335, - 442, - 6350 - ], - [ - 360, - 6337, - 365, - 6343 - ], - [ - 361, - 6368, - 380, - 6382 - ], - [ - 423, - 6368, - 434, - 6382 - ], - [ - 477, - 6368, - 489, - 6374 - ], - [ - 220, - 6370, - 224, - 6377 - ], - [ - 252, - 6370, - 257, - 6377 - ], - [ - 285, - 6369, - 290, - 6377 - ], - [ - 477, - 6376, - 490, - 6383 - ], - [ - 369, - 6400, - 386, - 6414 - ], - [ - 245, - 6402, - 249, - 6409 - ], - [ - 335, - 6296, - 341, - 6307 - ], - [ - 278, - 6298, - 294, - 6322 - ], - [ - 293, - 6298, - 315, - 6321 - ], - [ - 317, - 6298, - 333, - 6322 - ], - [ - 342, - 6298, - 361, - 6323 - ], - [ - 362, - 6298, - 380, - 6322 - ], - [ - 412, - 6298, - 428, - 6322 - ], - [ - 428, - 6298, - 444, - 6321 - ], - [ - 453, - 6298, - 468, - 6322 - ], - [ - 219, - 6299, - 239, - 6322 - ], - [ - 240, - 6299, - 266, - 6322 - ], - [ - 392, - 6299, - 412, - 6322 - ], - [ - 446, - 6299, - 450, - 6322 - ], - [ - 470, - 6299, - 492, - 6321 - ], - [ - 247, - 6330, - 269, - 6354 - ], - [ - 290, - 6330, - 305, - 6354 - ], - [ - 448, - 6330, - 463, - 6354 - ], - [ - 475, - 6330, - 495, - 6354 - ], - [ - 515, - 6330, - 532, - 6347 - ], - [ - 179, - 6331, - 196, - 6355 - ], - [ - 194, - 6331, - 217, - 6353 - ], - [ - 218, - 6331, - 235, - 6354 - ], - [ - 270, - 6331, - 288, - 6354 - ], - [ - 306, - 6331, - 324, - 6354 - ], - [ - 335, - 6331, - 353, - 6354 - ], - [ - 353, - 6331, - 371, - 6354 - ], - [ - 372, - 6332, - 392, - 6354 - ], - [ - 393, - 6331, - 409, - 6355 - ], - [ - 420, - 6331, - 445, - 6354 - ], - [ - 497, - 6331, - 515, - 6354 - ], - [ - 520, - 6349, - 526, - 6354 - ], - [ - 299, - 6361, - 308, - 6379 - ], - [ - 199, - 6363, - 213, - 6388 - ], - [ - 214, - 6363, - 230, - 6387 - ], - [ - 232, - 6363, - 246, - 6388 - ], - [ - 247, - 6363, - 263, - 6386 - ], - [ - 265, - 6363, - 279, - 6388 - ], - [ - 280, - 6363, - 295, - 6387 - ], - [ - 319, - 6364, - 339, - 6387 - ], - [ - 341, - 6363, - 356, - 6387 - ], - [ - 358, - 6363, - 383, - 6387 - ], - [ - 385, - 6363, - 401, - 6387 - ], - [ - 404, - 6364, - 418, - 6387 - ], - [ - 419, - 6364, - 438, - 6387 - ], - [ - 449, - 6363, - 462, - 6387 - ], - [ - 474, - 6364, - 493, - 6387 - ], - [ - 495, - 6363, - 513, - 6387 - ], - [ - 297, - 6381, - 302, - 6386 - ], - [ - 201, - 6396, - 221, - 6420 - ], - [ - 223, - 6395, - 238, - 6420 - ], - [ - 240, - 6395, - 255, - 6419 - ], - [ - 257, - 6395, - 272, - 6419 - ], - [ - 275, - 6395, - 292, - 6418 - ], - [ - 294, - 6396, - 298, - 6419 - ], - [ - 301, - 6395, - 315, - 6419 - ], - [ - 317, - 6396, - 340, - 6419 - ], - [ - 351, - 6396, - 367, - 6420 - ], - [ - 366, - 6396, - 389, - 6418 - ], - [ - 390, - 6396, - 406, - 6419 - ], - [ - 418, - 6396, - 438, - 6419 - ], - [ - 439, - 6395, - 455, - 6420 - ], - [ - 457, - 6396, - 475, - 6419 - ], - [ - 477, - 6395, - 492, - 6419 - ], - [ - 493, - 6395, - 510, - 6412 - ], - [ - 498, - 6414, - 503, - 6419 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 445, - 7270, - 515, - 7305 - ], - "bubble_bbox": [ - 362, - 7219, - 605, - 7360 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 463, - 7288, - 469, - 7294 - ], - [ - 475, - 7288, - 480, - 7294 - ], - [ - 486, - 7288, - 492, - 7294 - ], - [ - 498, - 7288, - 503, - 7294 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 136, - 7719, - 494, - 7861 - ], - "bubble_bbox": [ - 88, - 7625, - 542, - 7948 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 310, - 7742, - 325, - 7754 - ], - [ - 320, - 7769, - 330, - 7774 - ], - [ - 180, - 7771, - 183, - 7777 - ], - [ - 372, - 7771, - 376, - 7777 - ], - [ - 320, - 7776, - 331, - 7782 - ], - [ - 173, - 7797, - 188, - 7809 - ], - [ - 196, - 7796, - 206, - 7804 - ], - [ - 214, - 7796, - 223, - 7805 - ], - [ - 252, - 7797, - 262, - 7809 - ], - [ - 353, - 7797, - 369, - 7809 - ], - [ - 377, - 7796, - 387, - 7804 - ], - [ - 450, - 7796, - 460, - 7804 - ], - [ - 270, - 7824, - 280, - 7829 - ], - [ - 313, - 7824, - 323, - 7837 - ], - [ - 405, - 7825, - 415, - 7837 - ], - [ - 362, - 7826, - 365, - 7832 - ], - [ - 270, - 7831, - 281, - 7837 - ], - [ - 276, - 7736, - 281, - 7746 - ], - [ - 263, - 7738, - 275, - 7758 - ], - [ - 279, - 7738, - 297, - 7758 - ], - [ - 307, - 7738, - 328, - 7758 - ], - [ - 330, - 7738, - 343, - 7758 - ], - [ - 345, - 7738, - 357, - 7757 - ], - [ - 354, - 7738, - 368, - 7758 - ], - [ - 175, - 7765, - 188, - 7785 - ], - [ - 188, - 7765, - 202, - 7785 - ], - [ - 210, - 7765, - 222, - 7785 - ], - [ - 270, - 7765, - 283, - 7786 - ], - [ - 367, - 7765, - 380, - 7785 - ], - [ - 382, - 7765, - 395, - 7786 - ], - [ - 440, - 7765, - 451, - 7786 - ], - [ - 452, - 7764, - 457, - 7773 - ], - [ - 456, - 7765, - 473, - 7785 - ], - [ - 158, - 7766, - 175, - 7785 - ], - [ - 204, - 7766, - 207, - 7786 - ], - [ - 224, - 7766, - 243, - 7785 - ], - [ - 252, - 7766, - 269, - 7786 - ], - [ - 286, - 7766, - 289, - 7785 - ], - [ - 291, - 7766, - 308, - 7786 - ], - [ - 318, - 7766, - 334, - 7786 - ], - [ - 335, - 7766, - 350, - 7785 - ], - [ - 351, - 7766, - 367, - 7785 - ], - [ - 397, - 7766, - 414, - 7785 - ], - [ - 415, - 7766, - 430, - 7785 - ], - [ - 152, - 7793, - 171, - 7813 - ], - [ - 170, - 7793, - 192, - 7813 - ], - [ - 193, - 7793, - 209, - 7814 - ], - [ - 211, - 7793, - 226, - 7813 - ], - [ - 234, - 7793, - 247, - 7813 - ], - [ - 249, - 7793, - 265, - 7813 - ], - [ - 274, - 7793, - 292, - 7813 - ], - [ - 292, - 7792, - 306, - 7814 - ], - [ - 308, - 7793, - 323, - 7813 - ], - [ - 333, - 7793, - 352, - 7813 - ], - [ - 351, - 7793, - 372, - 7813 - ], - [ - 373, - 7793, - 390, - 7814 - ], - [ - 392, - 7792, - 407, - 7812 - ], - [ - 417, - 7793, - 429, - 7814 - ], - [ - 430, - 7793, - 446, - 7813 - ], - [ - 446, - 7793, - 463, - 7814 - ], - [ - 464, - 7793, - 479, - 7813 - ], - [ - 228, - 7794, - 231, - 7813 - ], - [ - 207, - 7820, - 226, - 7841 - ], - [ - 227, - 7821, - 230, - 7840 - ], - [ - 232, - 7821, - 244, - 7840 - ], - [ - 246, - 7821, - 257, - 7840 - ], - [ - 267, - 7821, - 283, - 7841 - ], - [ - 285, - 7820, - 300, - 7840 - ], - [ - 311, - 7821, - 326, - 7841 - ], - [ - 328, - 7820, - 343, - 7840 - ], - [ - 357, - 7820, - 370, - 7840 - ], - [ - 370, - 7820, - 384, - 7840 - ], - [ - 385, - 7821, - 400, - 7840 - ], - [ - 402, - 7821, - 418, - 7841 - ], - [ - 345, - 7822, - 356, - 7840 - ], - [ - 419, - 7835, - 424, - 7840 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/1cad63944c1744179dfa6e21b2e79162.jpeg", - "context_path": "contexts/183/context.json", - "id": 86426 - }, - { - "blk_list": [ - { - "text_bbox": [ - 172, - 95, - 296, - 197 - ], - "bubble_bbox": [ - 113, - 41, - 350, - 244 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 245, - 157, - 260, - 166 - ], - [ - 190, - 109, - 222, - 141 - ], - [ - 241, - 109, - 272, - 141 - ], - [ - 215, - 110, - 245, - 140 - ], - [ - 266, - 131, - 279, - 147 - ], - [ - 266, - 148, - 285, - 172 - ], - [ - 185, - 150, - 216, - 182 - ], - [ - 210, - 150, - 242, - 182 - ], - [ - 235, - 151, - 266, - 182 - ], - [ - 260, - 175, - 269, - 182 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 125, - 396, - 552, - 541 - ], - "bubble_bbox": [ - 69, - 212, - 662, - 661 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 386, - 417, - 398, - 427 - ], - [ - 428, - 418, - 441, - 428 - ], - [ - 304, - 419, - 310, - 424 - ], - [ - 338, - 419, - 344, - 424 - ], - [ - 185, - 441, - 194, - 447 - ], - [ - 334, - 442, - 346, - 451 - ], - [ - 350, - 442, - 364, - 453 - ], - [ - 428, - 441, - 437, - 445 - ], - [ - 202, - 443, - 208, - 448 - ], - [ - 425, - 447, - 434, - 452 - ], - [ - 388, - 466, - 396, - 471 - ], - [ - 404, - 466, - 413, - 471 - ], - [ - 290, - 467, - 304, - 477 - ], - [ - 372, - 468, - 378, - 473 - ], - [ - 179, - 490, - 188, - 496 - ], - [ - 278, - 490, - 287, - 494 - ], - [ - 294, - 490, - 303, - 496 - ], - [ - 450, - 490, - 459, - 496 - ], - [ - 308, - 491, - 322, - 502 - ], - [ - 370, - 491, - 383, - 502 - ], - [ - 464, - 491, - 477, - 502 - ], - [ - 275, - 496, - 284, - 501 - ], - [ - 431, - 514, - 440, - 521 - ], - [ - 379, - 515, - 387, - 520 - ], - [ - 393, - 516, - 406, - 526 - ], - [ - 304, - 517, - 310, - 522 - ], - [ - 297, - 412, - 314, - 433 - ], - [ - 313, - 412, - 335, - 432 - ], - [ - 331, - 412, - 349, - 433 - ], - [ - 231, - 413, - 254, - 432 - ], - [ - 252, - 413, - 270, - 432 - ], - [ - 276, - 413, - 299, - 432 - ], - [ - 348, - 413, - 368, - 432 - ], - [ - 366, - 413, - 385, - 432 - ], - [ - 383, - 413, - 401, - 432 - ], - [ - 411, - 413, - 429, - 432 - ], - [ - 424, - 413, - 444, - 433 - ], - [ - 166, - 438, - 184, - 456 - ], - [ - 179, - 438, - 197, - 457 - ], - [ - 195, - 437, - 213, - 457 - ], - [ - 212, - 437, - 230, - 456 - ], - [ - 227, - 437, - 248, - 457 - ], - [ - 256, - 438, - 274, - 456 - ], - [ - 269, - 437, - 289, - 457 - ], - [ - 285, - 438, - 304, - 456 - ], - [ - 301, - 437, - 323, - 457 - ], - [ - 330, - 438, - 349, - 456 - ], - [ - 347, - 438, - 367, - 457 - ], - [ - 368, - 437, - 391, - 457 - ], - [ - 387, - 437, - 409, - 457 - ], - [ - 421, - 437, - 441, - 456 - ], - [ - 438, - 438, - 476, - 456 - ], - [ - 479, - 437, - 515, - 457 - ], - [ - 405, - 450, - 413, - 460 - ], - [ - 136, - 462, - 155, - 481 - ], - [ - 152, - 462, - 170, - 481 - ], - [ - 168, - 462, - 187, - 481 - ], - [ - 184, - 462, - 206, - 481 - ], - [ - 205, - 462, - 223, - 481 - ], - [ - 232, - 462, - 250, - 481 - ], - [ - 245, - 462, - 265, - 481 - ], - [ - 261, - 462, - 280, - 480 - ], - [ - 287, - 462, - 307, - 482 - ], - [ - 305, - 461, - 327, - 481 - ], - [ - 324, - 462, - 342, - 481 - ], - [ - 349, - 462, - 367, - 481 - ], - [ - 364, - 461, - 382, - 481 - ], - [ - 382, - 462, - 400, - 481 - ], - [ - 398, - 462, - 416, - 481 - ], - [ - 415, - 462, - 448, - 481 - ], - [ - 443, - 461, - 464, - 481 - ], - [ - 461, - 461, - 481, - 481 - ], - [ - 491, - 462, - 510, - 481 - ], - [ - 504, - 462, - 525, - 481 - ], - [ - 520, - 462, - 539, - 481 - ], - [ - 205, - 486, - 236, - 506 - ], - [ - 247, - 486, - 266, - 506 - ], - [ - 385, - 485, - 406, - 506 - ], - [ - 401, - 485, - 422, - 506 - ], - [ - 427, - 485, - 448, - 506 - ], - [ - 479, - 486, - 501, - 505 - ], - [ - 173, - 487, - 192, - 506 - ], - [ - 190, - 487, - 208, - 505 - ], - [ - 231, - 487, - 249, - 505 - ], - [ - 271, - 487, - 291, - 505 - ], - [ - 288, - 487, - 307, - 506 - ], - [ - 305, - 487, - 325, - 506 - ], - [ - 324, - 487, - 345, - 506 - ], - [ - 341, - 487, - 359, - 505 - ], - [ - 367, - 487, - 387, - 506 - ], - [ - 444, - 487, - 462, - 506 - ], - [ - 461, - 487, - 481, - 506 - ], - [ - 296, - 510, - 314, - 531 - ], - [ - 327, - 510, - 348, - 530 - ], - [ - 424, - 510, - 444, - 530 - ], - [ - 443, - 509, - 455, - 524 - ], - [ - 222, - 511, - 241, - 530 - ], - [ - 235, - 511, - 256, - 530 - ], - [ - 251, - 511, - 270, - 530 - ], - [ - 276, - 511, - 299, - 530 - ], - [ - 313, - 511, - 332, - 530 - ], - [ - 355, - 511, - 374, - 530 - ], - [ - 373, - 511, - 391, - 530 - ], - [ - 390, - 511, - 410, - 531 - ], - [ - 408, - 512, - 428, - 530 - ], - [ - 440, - 525, - 445, - 530 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 374, - 1406, - 442, - 1540 - ], - "bubble_bbox": [ - 273, - 1341, - 552, - 1599 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 409, - 1425, - 422, - 1484 - ], - [ - 399, - 1514, - 409, - 1523 - ], - [ - 402, - 1420, - 429, - 1497 - ], - [ - 394, - 1509, - 414, - 1528 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 208, - 1779, - 614, - 1915 - ], - "bubble_bbox": [ - 176, - 1670, - 648, - 2017 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 417, - 1798, - 425, - 1804 - ], - [ - 443, - 1798, - 456, - 1809 - ], - [ - 462, - 1798, - 474, - 1808 - ], - [ - 254, - 1822, - 268, - 1832 - ], - [ - 294, - 1822, - 308, - 1832 - ], - [ - 327, - 1821, - 336, - 1828 - ], - [ - 361, - 1822, - 374, - 1832 - ], - [ - 407, - 1822, - 414, - 1832 - ], - [ - 541, - 1822, - 554, - 1832 - ], - [ - 561, - 1821, - 569, - 1828 - ], - [ - 250, - 1846, - 258, - 1855 - ], - [ - 351, - 1846, - 365, - 1856 - ], - [ - 371, - 1845, - 380, - 1852 - ], - [ - 387, - 1846, - 395, - 1855 - ], - [ - 513, - 1845, - 519, - 1849 - ], - [ - 527, - 1846, - 540, - 1856 - ], - [ - 437, - 1847, - 440, - 1852 - ], - [ - 513, - 1851, - 521, - 1856 - ], - [ - 323, - 1869, - 331, - 1880 - ], - [ - 352, - 1869, - 360, - 1875 - ], - [ - 374, - 1869, - 387, - 1880 - ], - [ - 475, - 1869, - 488, - 1880 - ], - [ - 566, - 1869, - 578, - 1879 - ], - [ - 331, - 1893, - 339, - 1903 - ], - [ - 375, - 1893, - 389, - 1903 - ], - [ - 348, - 1794, - 360, - 1813 - ], - [ - 333, - 1795, - 348, - 1812 - ], - [ - 362, - 1795, - 375, - 1812 - ], - [ - 383, - 1795, - 394, - 1813 - ], - [ - 395, - 1795, - 408, - 1812 - ], - [ - 410, - 1795, - 413, - 1812 - ], - [ - 414, - 1795, - 428, - 1813 - ], - [ - 429, - 1795, - 439, - 1812 - ], - [ - 440, - 1795, - 459, - 1812 - ], - [ - 459, - 1795, - 476, - 1811 - ], - [ - 475, - 1795, - 491, - 1812 - ], - [ - 272, - 1818, - 284, - 1836 - ], - [ - 311, - 1818, - 323, - 1836 - ], - [ - 348, - 1818, - 359, - 1836 - ], - [ - 378, - 1818, - 390, - 1836 - ], - [ - 391, - 1818, - 402, - 1836 - ], - [ - 424, - 1818, - 435, - 1836 - ], - [ - 460, - 1818, - 471, - 1836 - ], - [ - 473, - 1818, - 484, - 1835 - ], - [ - 485, - 1818, - 498, - 1835 - ], - [ - 500, - 1818, - 513, - 1836 - ], - [ - 252, - 1819, - 270, - 1836 - ], - [ - 292, - 1819, - 310, - 1836 - ], - [ - 325, - 1819, - 339, - 1836 - ], - [ - 358, - 1819, - 377, - 1836 - ], - [ - 404, - 1819, - 417, - 1836 - ], - [ - 419, - 1819, - 421, - 1836 - ], - [ - 436, - 1819, - 452, - 1835 - ], - [ - 513, - 1819, - 528, - 1836 - ], - [ - 527, - 1819, - 540, - 1836 - ], - [ - 538, - 1819, - 557, - 1836 - ], - [ - 558, - 1819, - 572, - 1836 - ], - [ - 222, - 1842, - 233, - 1859 - ], - [ - 235, - 1842, - 246, - 1859 - ], - [ - 248, - 1842, - 261, - 1859 - ], - [ - 269, - 1842, - 284, - 1860 - ], - [ - 284, - 1842, - 296, - 1860 - ], - [ - 297, - 1842, - 311, - 1859 - ], - [ - 319, - 1842, - 333, - 1859 - ], - [ - 334, - 1842, - 350, - 1859 - ], - [ - 349, - 1842, - 367, - 1859 - ], - [ - 369, - 1842, - 383, - 1860 - ], - [ - 384, - 1842, - 398, - 1860 - ], - [ - 405, - 1842, - 420, - 1860 - ], - [ - 421, - 1842, - 432, - 1860 - ], - [ - 433, - 1842, - 445, - 1859 - ], - [ - 444, - 1842, - 459, - 1860 - ], - [ - 482, - 1842, - 494, - 1860 - ], - [ - 494, - 1842, - 509, - 1859 - ], - [ - 510, - 1842, - 523, - 1859 - ], - [ - 525, - 1842, - 543, - 1859 - ], - [ - 573, - 1842, - 586, - 1859 - ], - [ - 466, - 1843, - 481, - 1859 - ], - [ - 544, - 1843, - 555, - 1860 - ], - [ - 556, - 1843, - 559, - 1859 - ], - [ - 560, - 1843, - 572, - 1860 - ], - [ - 587, - 1843, - 602, - 1859 - ], - [ - 231, - 1866, - 246, - 1883 - ], - [ - 246, - 1865, - 258, - 1884 - ], - [ - 259, - 1866, - 273, - 1883 - ], - [ - 293, - 1866, - 306, - 1883 - ], - [ - 306, - 1866, - 319, - 1883 - ], - [ - 320, - 1866, - 334, - 1883 - ], - [ - 335, - 1866, - 348, - 1883 - ], - [ - 349, - 1866, - 363, - 1884 - ], - [ - 372, - 1866, - 390, - 1883 - ], - [ - 392, - 1866, - 404, - 1883 - ], - [ - 411, - 1866, - 426, - 1883 - ], - [ - 426, - 1865, - 438, - 1884 - ], - [ - 440, - 1866, - 453, - 1883 - ], - [ - 461, - 1866, - 475, - 1883 - ], - [ - 472, - 1866, - 491, - 1883 - ], - [ - 493, - 1865, - 504, - 1883 - ], - [ - 505, - 1866, - 521, - 1883 - ], - [ - 522, - 1866, - 535, - 1883 - ], - [ - 537, - 1865, - 548, - 1884 - ], - [ - 550, - 1866, - 563, - 1883 - ], - [ - 563, - 1866, - 580, - 1882 - ], - [ - 581, - 1865, - 592, - 1883 - ], - [ - 281, - 1867, - 291, - 1883 - ], - [ - 328, - 1890, - 342, - 1907 - ], - [ - 343, - 1889, - 356, - 1907 - ], - [ - 357, - 1889, - 372, - 1907 - ], - [ - 373, - 1890, - 391, - 1907 - ], - [ - 393, - 1889, - 404, - 1907 - ], - [ - 406, - 1890, - 409, - 1907 - ], - [ - 410, - 1890, - 424, - 1907 - ], - [ - 432, - 1890, - 446, - 1907 - ], - [ - 447, - 1889, - 458, - 1907 - ], - [ - 460, - 1890, - 471, - 1907 - ], - [ - 471, - 1890, - 484, - 1907 - ], - [ - 481, - 1902, - 485, - 1907 - ], - [ - 487, - 1902, - 491, - 1907 - ], - [ - 492, - 1902, - 496, - 1907 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 58, - 2847, - 530, - 2989 - ], - "bubble_bbox": [ - 43, - 2734, - 549, - 3113 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 328, - 2868, - 331, - 2873 - ], - [ - 215, - 2890, - 228, - 2901 - ], - [ - 276, - 2890, - 284, - 2895 - ], - [ - 311, - 2890, - 319, - 2897 - ], - [ - 324, - 2890, - 337, - 2901 - ], - [ - 276, - 2896, - 285, - 2901 - ], - [ - 102, - 2914, - 116, - 2925 - ], - [ - 240, - 2914, - 248, - 2921 - ], - [ - 175, - 2916, - 178, - 2921 - ], - [ - 485, - 2916, - 488, - 2921 - ], - [ - 329, - 2938, - 343, - 2949 - ], - [ - 350, - 2938, - 358, - 2944 - ], - [ - 372, - 2938, - 386, - 2949 - ], - [ - 232, - 2963, - 235, - 2968 - ], - [ - 310, - 2962, - 319, - 2973 - ], - [ - 355, - 2962, - 369, - 2973 - ], - [ - 230, - 2863, - 240, - 2881 - ], - [ - 248, - 2862, - 263, - 2880 - ], - [ - 264, - 2863, - 276, - 2880 - ], - [ - 277, - 2863, - 293, - 2880 - ], - [ - 291, - 2863, - 304, - 2880 - ], - [ - 313, - 2863, - 323, - 2881 - ], - [ - 324, - 2863, - 336, - 2880 - ], - [ - 336, - 2862, - 347, - 2880 - ], - [ - 348, - 2863, - 361, - 2880 - ], - [ - 140, - 2887, - 155, - 2904 - ], - [ - 155, - 2886, - 167, - 2905 - ], - [ - 169, - 2887, - 182, - 2904 - ], - [ - 183, - 2886, - 198, - 2904 - ], - [ - 212, - 2887, - 231, - 2904 - ], - [ - 232, - 2886, - 243, - 2904 - ], - [ - 245, - 2887, - 255, - 2904 - ], - [ - 253, - 2887, - 265, - 2905 - ], - [ - 273, - 2887, - 288, - 2905 - ], - [ - 289, - 2887, - 301, - 2904 - ], - [ - 309, - 2887, - 322, - 2904 - ], - [ - 321, - 2887, - 340, - 2904 - ], - [ - 341, - 2887, - 371, - 2904 - ], - [ - 372, - 2887, - 385, - 2904 - ], - [ - 386, - 2887, - 415, - 2904 - ], - [ - 417, - 2887, - 420, - 2904 - ], - [ - 422, - 2886, - 433, - 2904 - ], - [ - 434, - 2887, - 451, - 2904 - ], - [ - 199, - 2900, - 203, - 2904 - ], - [ - 71, - 2911, - 86, - 2928 - ], - [ - 87, - 2910, - 98, - 2929 - ], - [ - 100, - 2911, - 118, - 2928 - ], - [ - 120, - 2911, - 134, - 2928 - ], - [ - 135, - 2911, - 149, - 2928 - ], - [ - 157, - 2911, - 171, - 2928 - ], - [ - 171, - 2910, - 183, - 2928 - ], - [ - 184, - 2910, - 195, - 2928 - ], - [ - 204, - 2911, - 214, - 2928 - ], - [ - 222, - 2911, - 237, - 2928 - ], - [ - 238, - 2911, - 251, - 2928 - ], - [ - 252, - 2911, - 264, - 2928 - ], - [ - 273, - 2911, - 286, - 2929 - ], - [ - 293, - 2911, - 307, - 2928 - ], - [ - 308, - 2911, - 318, - 2928 - ], - [ - 319, - 2910, - 330, - 2928 - ], - [ - 332, - 2911, - 335, - 2928 - ], - [ - 336, - 2910, - 351, - 2928 - ], - [ - 360, - 2910, - 375, - 2928 - ], - [ - 376, - 2911, - 388, - 2928 - ], - [ - 408, - 2911, - 421, - 2928 - ], - [ - 422, - 2910, - 439, - 2928 - ], - [ - 441, - 2911, - 444, - 2928 - ], - [ - 445, - 2911, - 460, - 2929 - ], - [ - 461, - 2911, - 464, - 2928 - ], - [ - 466, - 2910, - 480, - 2928 - ], - [ - 481, - 2910, - 493, - 2928 - ], - [ - 493, - 2911, - 507, - 2928 - ], - [ - 508, - 2911, - 520, - 2929 - ], - [ - 265, - 2912, - 276, - 2928 - ], - [ - 396, - 2912, - 407, - 2928 - ], - [ - 138, - 2934, - 150, - 2952 - ], - [ - 151, - 2935, - 166, - 2952 - ], - [ - 174, - 2935, - 189, - 2952 - ], - [ - 189, - 2934, - 201, - 2953 - ], - [ - 203, - 2935, - 216, - 2952 - ], - [ - 224, - 2935, - 239, - 2952 - ], - [ - 240, - 2935, - 252, - 2952 - ], - [ - 253, - 2935, - 281, - 2952 - ], - [ - 282, - 2935, - 296, - 2952 - ], - [ - 296, - 2935, - 311, - 2952 - ], - [ - 312, - 2935, - 326, - 2952 - ], - [ - 327, - 2935, - 346, - 2952 - ], - [ - 347, - 2935, - 361, - 2953 - ], - [ - 370, - 2935, - 389, - 2952 - ], - [ - 390, - 2935, - 402, - 2952 - ], - [ - 410, - 2935, - 425, - 2952 - ], - [ - 425, - 2934, - 437, - 2953 - ], - [ - 439, - 2935, - 452, - 2952 - ], - [ - 201, - 2958, - 212, - 2977 - ], - [ - 213, - 2959, - 226, - 2976 - ], - [ - 226, - 2959, - 239, - 2976 - ], - [ - 240, - 2958, - 251, - 2976 - ], - [ - 252, - 2959, - 265, - 2976 - ], - [ - 266, - 2958, - 277, - 2976 - ], - [ - 279, - 2959, - 289, - 2976 - ], - [ - 287, - 2959, - 299, - 2977 - ], - [ - 308, - 2959, - 321, - 2976 - ], - [ - 323, - 2959, - 336, - 2976 - ], - [ - 337, - 2958, - 352, - 2976 - ], - [ - 353, - 2959, - 372, - 2976 - ], - [ - 373, - 2958, - 384, - 2976 - ], - [ - 386, - 2971, - 390, - 2976 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 264, - 3428, - 508, - 3529 - ], - "bubble_bbox": [ - 191, - 3350, - 576, - 3601 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 374, - 3450, - 398, - 3469 - ], - [ - 316, - 3444, - 345, - 3475 - ], - [ - 347, - 3444, - 367, - 3476 - ], - [ - 370, - 3445, - 403, - 3475 - ], - [ - 420, - 3445, - 424, - 3475 - ], - [ - 427, - 3446, - 454, - 3475 - ], - [ - 305, - 3486, - 325, - 3518 - ], - [ - 393, - 3486, - 414, - 3518 - ], - [ - 470, - 3485, - 492, - 3509 - ], - [ - 277, - 3487, - 303, - 3518 - ], - [ - 328, - 3487, - 351, - 3517 - ], - [ - 365, - 3487, - 392, - 3518 - ], - [ - 417, - 3488, - 422, - 3517 - ], - [ - 426, - 3487, - 447, - 3518 - ], - [ - 450, - 3487, - 470, - 3518 - ], - [ - 477, - 3510, - 484, - 3517 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 4503, - 228, - 4544 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 175, - 4512, - 183, - 4537 - ], - [ - 190, - 4512, - 197, - 4537 - ], - [ - 199, - 4512, - 207, - 4537 - ], - [ - 209, - 4512, - 220, - 4536 - ], - [ - 78, - 4514, - 87, - 4538 - ], - [ - 88, - 4514, - 96, - 4538 - ], - [ - 98, - 4514, - 106, - 4538 - ], - [ - 108, - 4514, - 116, - 4538 - ], - [ - 117, - 4513, - 124, - 4537 - ], - [ - 126, - 4513, - 134, - 4537 - ], - [ - 136, - 4513, - 143, - 4537 - ], - [ - 145, - 4513, - 153, - 4537 - ], - [ - 154, - 4513, - 163, - 4537 - ], - [ - 165, - 4513, - 173, - 4537 - ], - [ - 184, - 4532, - 187, - 4537 - ], - [ - 75, - 4505, - 224, - 4545 - ], - [ - 202, - 4516, - 204, - 4533 - ], - [ - 91, - 4517, - 93, - 4534 - ], - [ - 101, - 4517, - 103, - 4524 - ], - [ - 157, - 4520, - 160, - 4529 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 179, - 4671, - 518, - 4782 - ], - "bubble_bbox": [ - 105, - 4527, - 619, - 4918 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 329, - 4694, - 345, - 4706 - ], - [ - 426, - 4694, - 442, - 4706 - ], - [ - 237, - 4722, - 248, - 4729 - ], - [ - 254, - 4723, - 270, - 4736 - ], - [ - 380, - 4722, - 394, - 4734 - ], - [ - 485, - 4751, - 495, - 4758 - ], - [ - 198, - 4752, - 212, - 4763 - ], - [ - 261, - 4752, - 277, - 4765 - ], - [ - 240, - 4687, - 268, - 4711 - ], - [ - 295, - 4687, - 300, - 4700 - ], - [ - 301, - 4687, - 306, - 4699 - ], - [ - 303, - 4687, - 328, - 4711 - ], - [ - 444, - 4687, - 469, - 4711 - ], - [ - 468, - 4687, - 477, - 4698 - ], - [ - 218, - 4688, - 242, - 4711 - ], - [ - 262, - 4688, - 284, - 4711 - ], - [ - 325, - 4688, - 349, - 4711 - ], - [ - 348, - 4688, - 370, - 4710 - ], - [ - 379, - 4688, - 407, - 4711 - ], - [ - 402, - 4688, - 425, - 4710 - ], - [ - 422, - 4688, - 446, - 4711 - ], - [ - 473, - 4689, - 483, - 4700 - ], - [ - 368, - 4697, - 381, - 4703 - ], - [ - 210, - 4716, - 235, - 4740 - ], - [ - 250, - 4717, - 274, - 4741 - ], - [ - 272, - 4717, - 299, - 4740 - ], - [ - 326, - 4717, - 351, - 4740 - ], - [ - 346, - 4717, - 368, - 4739 - ], - [ - 394, - 4717, - 418, - 4740 - ], - [ - 415, - 4717, - 452, - 4740 - ], - [ - 446, - 4717, - 471, - 4740 - ], - [ - 468, - 4717, - 490, - 4740 - ], - [ - 230, - 4718, - 252, - 4740 - ], - [ - 311, - 4718, - 333, - 4740 - ], - [ - 376, - 4718, - 399, - 4740 - ], - [ - 193, - 4747, - 216, - 4769 - ], - [ - 213, - 4747, - 235, - 4769 - ], - [ - 232, - 4746, - 259, - 4769 - ], - [ - 257, - 4747, - 281, - 4770 - ], - [ - 279, - 4746, - 304, - 4769 - ], - [ - 299, - 4746, - 323, - 4769 - ], - [ - 317, - 4747, - 339, - 4769 - ], - [ - 347, - 4747, - 370, - 4769 - ], - [ - 366, - 4746, - 391, - 4769 - ], - [ - 386, - 4746, - 430, - 4769 - ], - [ - 442, - 4746, - 464, - 4769 - ], - [ - 460, - 4746, - 483, - 4769 - ], - [ - 478, - 4747, - 500, - 4770 - ], - [ - 422, - 4762, - 431, - 4773 - ], - [ - 498, - 4763, - 505, - 4769 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"YES, SIR!\",\n \"block_1\": \"WE MANAGED TO TRACK THEM DOWN, BUT IT SEEMS THE ONE CARRYING THE RELICS BROKE OFF FROM THE MAIN GROUP!\",\n \"block_2\": \"\",\n \"block_3\": \"THE HEIRLOOM OF OUR FOUNDING ANCESTOR AND THE SWORD THAT SYMBOLIZES THE LEADER OF THE TONGCHEON DEMONIC CULT...\",\n \"block_4\": \"I MUST HAVE THEM. ONLY BY POSSESSING THOSE CAN I TRULY CLAIM MY LEGITIMACY AS THE SUCCESSOR OF THE HEAVENLY DEMON.\",\n \"block_5\": \"WHO IS THE THIEF?\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"HL . AOUANO.UUN IT'S \\\"NOE-JEON\\\" FROM THE DIVINE DEMONIC UNIT, SIR.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/9ff127ce18184dee8a23bc255c969ea2.jpeg", - "context_path": "contexts/183/context.json", - "id": 86407 - }, - { - "blk_list": [ - { - "text_bbox": [ - 102, - 354, - 478, - 459 - ], - "bubble_bbox": [ - 74, - 244, - 504, - 556 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 226, - 373, - 235, - 381 - ], - [ - 278, - 374, - 287, - 385 - ], - [ - 355, - 374, - 370, - 386 - ], - [ - 326, - 400, - 335, - 408 - ], - [ - 217, - 401, - 231, - 412 - ], - [ - 378, - 401, - 386, - 412 - ], - [ - 426, - 401, - 441, - 413 - ], - [ - 243, - 427, - 252, - 433 - ], - [ - 322, - 427, - 331, - 435 - ], - [ - 187, - 429, - 190, - 435 - ], - [ - 286, - 429, - 289, - 435 - ], - [ - 356, - 429, - 360, - 434 - ], - [ - 243, - 434, - 253, - 440 - ], - [ - 168, - 370, - 185, - 390 - ], - [ - 186, - 370, - 199, - 390 - ], - [ - 209, - 370, - 222, - 390 - ], - [ - 223, - 370, - 238, - 390 - ], - [ - 245, - 370, - 259, - 390 - ], - [ - 260, - 370, - 273, - 389 - ], - [ - 275, - 370, - 290, - 390 - ], - [ - 331, - 370, - 351, - 389 - ], - [ - 352, - 370, - 373, - 390 - ], - [ - 375, - 370, - 387, - 389 - ], - [ - 389, - 370, - 404, - 389 - ], - [ - 240, - 371, - 243, - 390 - ], - [ - 300, - 371, - 304, - 390 - ], - [ - 305, - 371, - 322, - 390 - ], - [ - 405, - 383, - 409, - 393 - ], - [ - 251, - 395, - 259, - 410 - ], - [ - 268, - 396, - 285, - 416 - ], - [ - 393, - 395, - 401, - 410 - ], - [ - 446, - 396, - 464, - 417 - ], - [ - 114, - 397, - 125, - 417 - ], - [ - 134, - 397, - 151, - 417 - ], - [ - 151, - 397, - 167, - 416 - ], - [ - 168, - 398, - 180, - 416 - ], - [ - 181, - 397, - 192, - 416 - ], - [ - 202, - 397, - 215, - 417 - ], - [ - 214, - 397, - 233, - 416 - ], - [ - 234, - 397, - 248, - 417 - ], - [ - 286, - 397, - 299, - 417 - ], - [ - 309, - 397, - 322, - 417 - ], - [ - 323, - 397, - 338, - 417 - ], - [ - 340, - 398, - 343, - 416 - ], - [ - 345, - 397, - 359, - 417 - ], - [ - 360, - 397, - 373, - 416 - ], - [ - 375, - 397, - 390, - 416 - ], - [ - 410, - 397, - 422, - 417 - ], - [ - 423, - 397, - 444, - 416 - ], - [ - 249, - 411, - 254, - 416 - ], - [ - 391, - 411, - 396, - 416 - ], - [ - 182, - 424, - 195, - 443 - ], - [ - 197, - 424, - 209, - 443 - ], - [ - 219, - 424, - 230, - 444 - ], - [ - 257, - 424, - 272, - 443 - ], - [ - 281, - 424, - 294, - 443 - ], - [ - 293, - 424, - 310, - 444 - ], - [ - 319, - 424, - 334, - 444 - ], - [ - 335, - 424, - 350, - 443 - ], - [ - 350, - 424, - 365, - 443 - ], - [ - 383, - 424, - 398, - 443 - ], - [ - 398, - 423, - 412, - 438 - ], - [ - 166, - 425, - 182, - 443 - ], - [ - 240, - 425, - 256, - 444 - ], - [ - 366, - 425, - 381, - 443 - ], - [ - 402, - 439, - 407, - 444 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 141, - 1278, - 223, - 1331 - ], - "bubble_bbox": [ - 52, - 1228, - 299, - 1374 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 192, - 1288, - 208, - 1311 - ], - [ - 157, - 1314, - 163, - 1320 - ], - [ - 168, - 1314, - 174, - 1320 - ], - [ - 180, - 1314, - 186, - 1320 - ], - [ - 197, - 1314, - 202, - 1320 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 76, - 1592, - 472, - 1722 - ], - "bubble_bbox": [ - 15, - 1435, - 515, - 1899 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 320, - 1612, - 330, - 1621 - ], - [ - 188, - 1633, - 196, - 1638 - ], - [ - 302, - 1633, - 312, - 1639 - ], - [ - 145, - 1634, - 159, - 1643 - ], - [ - 340, - 1634, - 354, - 1643 - ], - [ - 186, - 1639, - 195, - 1644 - ], - [ - 228, - 1655, - 237, - 1661 - ], - [ - 382, - 1655, - 391, - 1662 - ], - [ - 424, - 1656, - 434, - 1665 - ], - [ - 103, - 1661, - 112, - 1666 - ], - [ - 187, - 1677, - 196, - 1683 - ], - [ - 347, - 1677, - 356, - 1683 - ], - [ - 288, - 1678, - 299, - 1687 - ], - [ - 319, - 1700, - 333, - 1710 - ], - [ - 337, - 1700, - 349, - 1709 - ], - [ - 199, - 1608, - 214, - 1625 - ], - [ - 210, - 1608, - 226, - 1625 - ], - [ - 222, - 1608, - 238, - 1624 - ], - [ - 239, - 1608, - 252, - 1624 - ], - [ - 259, - 1608, - 274, - 1625 - ], - [ - 266, - 1608, - 279, - 1624 - ], - [ - 279, - 1609, - 289, - 1624 - ], - [ - 290, - 1608, - 307, - 1624 - ], - [ - 303, - 1608, - 318, - 1624 - ], - [ - 316, - 1609, - 333, - 1625 - ], - [ - 337, - 1608, - 350, - 1624 - ], - [ - 130, - 1631, - 141, - 1647 - ], - [ - 142, - 1631, - 161, - 1646 - ], - [ - 163, - 1630, - 178, - 1647 - ], - [ - 182, - 1631, - 200, - 1647 - ], - [ - 196, - 1630, - 213, - 1647 - ], - [ - 213, - 1630, - 228, - 1647 - ], - [ - 230, - 1630, - 245, - 1647 - ], - [ - 248, - 1630, - 263, - 1646 - ], - [ - 259, - 1630, - 275, - 1646 - ], - [ - 276, - 1630, - 288, - 1647 - ], - [ - 284, - 1630, - 300, - 1647 - ], - [ - 297, - 1630, - 315, - 1647 - ], - [ - 320, - 1630, - 337, - 1646 - ], - [ - 337, - 1631, - 357, - 1647 - ], - [ - 358, - 1630, - 373, - 1647 - ], - [ - 379, - 1630, - 394, - 1647 - ], - [ - 389, - 1630, - 405, - 1647 - ], - [ - 402, - 1630, - 418, - 1646 - ], - [ - 170, - 1641, - 175, - 1649 - ], - [ - 86, - 1652, - 99, - 1669 - ], - [ - 95, - 1653, - 102, - 1669 - ], - [ - 99, - 1653, - 117, - 1669 - ], - [ - 114, - 1652, - 129, - 1669 - ], - [ - 138, - 1652, - 153, - 1669 - ], - [ - 148, - 1652, - 164, - 1669 - ], - [ - 161, - 1652, - 176, - 1668 - ], - [ - 177, - 1652, - 190, - 1668 - ], - [ - 196, - 1652, - 213, - 1669 - ], - [ - 209, - 1652, - 225, - 1669 - ], - [ - 223, - 1652, - 240, - 1669 - ], - [ - 237, - 1652, - 252, - 1669 - ], - [ - 256, - 1652, - 269, - 1669 - ], - [ - 270, - 1653, - 285, - 1668 - ], - [ - 285, - 1652, - 298, - 1668 - ], - [ - 294, - 1652, - 311, - 1669 - ], - [ - 306, - 1652, - 320, - 1669 - ], - [ - 319, - 1653, - 330, - 1669 - ], - [ - 330, - 1653, - 341, - 1668 - ], - [ - 342, - 1652, - 354, - 1669 - ], - [ - 365, - 1652, - 367, - 1660 - ], - [ - 365, - 1652, - 381, - 1669 - ], - [ - 377, - 1652, - 394, - 1669 - ], - [ - 391, - 1653, - 399, - 1668 - ], - [ - 396, - 1652, - 411, - 1669 - ], - [ - 409, - 1652, - 424, - 1668 - ], - [ - 420, - 1653, - 437, - 1669 - ], - [ - 435, - 1653, - 450, - 1669 - ], - [ - 456, - 1652, - 466, - 1660 - ], - [ - 361, - 1654, - 364, - 1662 - ], - [ - 448, - 1664, - 453, - 1669 - ], - [ - 140, - 1674, - 155, - 1691 - ], - [ - 151, - 1674, - 167, - 1691 - ], - [ - 163, - 1674, - 179, - 1691 - ], - [ - 177, - 1675, - 185, - 1691 - ], - [ - 182, - 1674, - 199, - 1691 - ], - [ - 205, - 1675, - 219, - 1691 - ], - [ - 220, - 1675, - 233, - 1691 - ], - [ - 226, - 1674, - 239, - 1691 - ], - [ - 240, - 1674, - 255, - 1691 - ], - [ - 250, - 1675, - 267, - 1691 - ], - [ - 264, - 1675, - 279, - 1691 - ], - [ - 285, - 1675, - 302, - 1691 - ], - [ - 300, - 1675, - 307, - 1691 - ], - [ - 305, - 1674, - 320, - 1691 - ], - [ - 317, - 1675, - 332, - 1691 - ], - [ - 328, - 1674, - 344, - 1691 - ], - [ - 342, - 1674, - 360, - 1691 - ], - [ - 356, - 1674, - 372, - 1691 - ], - [ - 370, - 1674, - 385, - 1691 - ], - [ - 382, - 1674, - 397, - 1690 - ], - [ - 395, - 1674, - 411, - 1691 - ], - [ - 193, - 1697, - 210, - 1713 - ], - [ - 204, - 1696, - 217, - 1713 - ], - [ - 217, - 1697, - 232, - 1713 - ], - [ - 238, - 1696, - 253, - 1713 - ], - [ - 249, - 1697, - 265, - 1713 - ], - [ - 263, - 1696, - 280, - 1712 - ], - [ - 278, - 1696, - 294, - 1713 - ], - [ - 308, - 1697, - 323, - 1713 - ], - [ - 317, - 1697, - 336, - 1713 - ], - [ - 334, - 1697, - 352, - 1712 - ], - [ - 292, - 1707, - 297, - 1715 - ], - [ - 350, - 1708, - 354, - 1713 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 359, - 2686, - 607, - 2785 - ], - "bubble_bbox": [ - 310, - 2602, - 654, - 2854 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 442, - 2704, - 446, - 2709 - ], - [ - 395, - 2727, - 409, - 2738 - ], - [ - 416, - 2727, - 425, - 2733 - ], - [ - 433, - 2727, - 441, - 2737 - ], - [ - 477, - 2726, - 486, - 2734 - ], - [ - 525, - 2727, - 534, - 2737 - ], - [ - 573, - 2727, - 587, - 2738 - ], - [ - 412, - 2751, - 420, - 2758 - ], - [ - 427, - 2753, - 430, - 2759 - ], - [ - 504, - 2752, - 518, - 2763 - ], - [ - 544, - 2752, - 557, - 2762 - ], - [ - 450, - 2697, - 478, - 2717 - ], - [ - 407, - 2698, - 425, - 2717 - ], - [ - 425, - 2698, - 437, - 2717 - ], - [ - 438, - 2698, - 450, - 2716 - ], - [ - 487, - 2699, - 490, - 2717 - ], - [ - 492, - 2699, - 507, - 2717 - ], - [ - 515, - 2698, - 531, - 2717 - ], - [ - 532, - 2698, - 544, - 2717 - ], - [ - 545, - 2698, - 560, - 2716 - ], - [ - 468, - 2712, - 473, - 2716 - ], - [ - 376, - 2723, - 394, - 2742 - ], - [ - 393, - 2723, - 412, - 2741 - ], - [ - 413, - 2723, - 428, - 2742 - ], - [ - 456, - 2722, - 460, - 2731 - ], - [ - 462, - 2723, - 474, - 2742 - ], - [ - 475, - 2723, - 489, - 2741 - ], - [ - 495, - 2723, - 508, - 2742 - ], - [ - 509, - 2723, - 521, - 2741 - ], - [ - 522, - 2722, - 541, - 2742 - ], - [ - 541, - 2722, - 546, - 2731 - ], - [ - 570, - 2723, - 590, - 2741 - ], - [ - 430, - 2724, - 444, - 2742 - ], - [ - 452, - 2725, - 457, - 2733 - ], - [ - 490, - 2724, - 493, - 2741 - ], - [ - 554, - 2724, - 569, - 2741 - ], - [ - 574, - 2747, - 587, - 2761 - ], - [ - 380, - 2749, - 396, - 2766 - ], - [ - 394, - 2748, - 408, - 2766 - ], - [ - 409, - 2748, - 423, - 2767 - ], - [ - 422, - 2748, - 434, - 2766 - ], - [ - 436, - 2748, - 447, - 2766 - ], - [ - 449, - 2748, - 466, - 2766 - ], - [ - 467, - 2748, - 481, - 2766 - ], - [ - 489, - 2748, - 505, - 2767 - ], - [ - 502, - 2749, - 521, - 2766 - ], - [ - 530, - 2748, - 543, - 2767 - ], - [ - 542, - 2748, - 559, - 2766 - ], - [ - 560, - 2748, - 573, - 2767 - ], - [ - 577, - 2762, - 582, - 2766 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 179, - 2961, - 408, - 3009 - ], - "bubble_bbox": [ - 145, - 2891, - 445, - 3072 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 209, - 2977, - 226, - 2990 - ], - [ - 191, - 2972, - 204, - 2995 - ], - [ - 232, - 2972, - 246, - 2994 - ], - [ - 248, - 2972, - 265, - 2994 - ], - [ - 283, - 2972, - 300, - 2994 - ], - [ - 312, - 2972, - 327, - 2995 - ], - [ - 341, - 2972, - 357, - 2995 - ], - [ - 358, - 2972, - 373, - 2995 - ], - [ - 206, - 2973, - 229, - 2995 - ], - [ - 266, - 2973, - 285, - 2994 - ], - [ - 301, - 2973, - 315, - 2995 - ], - [ - 374, - 2973, - 394, - 2994 - ], - [ - 325, - 2988, - 330, - 2998 - ], - [ - 394, - 2989, - 400, - 2994 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 73, - 3429, - 231, - 3463 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 78, - 3435, - 87, - 3460 - ], - [ - 88, - 3435, - 96, - 3460 - ], - [ - 98, - 3435, - 106, - 3459 - ], - [ - 107, - 3435, - 115, - 3459 - ], - [ - 117, - 3435, - 124, - 3459 - ], - [ - 126, - 3435, - 134, - 3459 - ], - [ - 136, - 3434, - 143, - 3459 - ], - [ - 145, - 3434, - 153, - 3459 - ], - [ - 154, - 3434, - 163, - 3459 - ], - [ - 165, - 3434, - 173, - 3458 - ], - [ - 175, - 3434, - 183, - 3458 - ], - [ - 190, - 3434, - 197, - 3458 - ], - [ - 199, - 3434, - 207, - 3458 - ], - [ - 209, - 3434, - 220, - 3458 - ], - [ - 202, - 3437, - 204, - 3455 - ], - [ - 91, - 3439, - 93, - 3456 - ], - [ - 101, - 3439, - 103, - 3446 - ], - [ - 157, - 3441, - 160, - 3451 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 108, - 3682, - 473, - 3812 - ], - "bubble_bbox": [ - 62, - 3585, - 513, - 3915 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 195, - 3700, - 205, - 3713 - ], - [ - 219, - 3700, - 229, - 3712 - ], - [ - 373, - 3700, - 387, - 3712 - ], - [ - 273, - 3727, - 282, - 3734 - ], - [ - 169, - 3728, - 184, - 3740 - ], - [ - 215, - 3729, - 219, - 3735 - ], - [ - 229, - 3728, - 239, - 3740 - ], - [ - 375, - 3728, - 390, - 3740 - ], - [ - 201, - 3755, - 217, - 3767 - ], - [ - 311, - 3755, - 320, - 3762 - ], - [ - 350, - 3755, - 365, - 3767 - ], - [ - 428, - 3755, - 438, - 3762 - ], - [ - 416, - 3757, - 419, - 3763 - ], - [ - 264, - 3783, - 274, - 3795 - ], - [ - 313, - 3782, - 322, - 3790 - ], - [ - 338, - 3782, - 348, - 3788 - ], - [ - 355, - 3783, - 371, - 3795 - ], - [ - 394, - 3783, - 403, - 3794 - ], - [ - 242, - 3785, - 246, - 3790 - ], - [ - 338, - 3789, - 348, - 3795 - ], - [ - 248, - 3695, - 253, - 3704 - ], - [ - 171, - 3696, - 183, - 3716 - ], - [ - 193, - 3697, - 208, - 3717 - ], - [ - 210, - 3697, - 214, - 3716 - ], - [ - 216, - 3697, - 232, - 3717 - ], - [ - 234, - 3696, - 246, - 3717 - ], - [ - 254, - 3696, - 271, - 3717 - ], - [ - 279, - 3696, - 297, - 3717 - ], - [ - 297, - 3696, - 311, - 3717 - ], - [ - 313, - 3697, - 316, - 3716 - ], - [ - 319, - 3696, - 331, - 3716 - ], - [ - 334, - 3696, - 348, - 3716 - ], - [ - 358, - 3696, - 372, - 3717 - ], - [ - 371, - 3696, - 390, - 3715 - ], - [ - 391, - 3696, - 405, - 3716 - ], - [ - 149, - 3723, - 167, - 3743 - ], - [ - 211, - 3723, - 224, - 3744 - ], - [ - 303, - 3723, - 315, - 3743 - ], - [ - 358, - 3723, - 370, - 3744 - ], - [ - 395, - 3723, - 408, - 3744 - ], - [ - 410, - 3723, - 429, - 3743 - ], - [ - 431, - 3723, - 444, - 3744 - ], - [ - 131, - 3724, - 148, - 3744 - ], - [ - 166, - 3724, - 187, - 3744 - ], - [ - 198, - 3724, - 210, - 3745 - ], - [ - 226, - 3724, - 242, - 3744 - ], - [ - 252, - 3724, - 269, - 3744 - ], - [ - 270, - 3724, - 285, - 3744 - ], - [ - 286, - 3724, - 301, - 3744 - ], - [ - 316, - 3724, - 331, - 3744 - ], - [ - 341, - 3724, - 356, - 3744 - ], - [ - 372, - 3724, - 393, - 3744 - ], - [ - 118, - 3751, - 135, - 3771 - ], - [ - 142, - 3751, - 159, - 3771 - ], - [ - 161, - 3751, - 176, - 3771 - ], - [ - 185, - 3751, - 202, - 3771 - ], - [ - 221, - 3751, - 241, - 3770 - ], - [ - 242, - 3751, - 258, - 3771 - ], - [ - 258, - 3751, - 275, - 3772 - ], - [ - 276, - 3751, - 289, - 3772 - ], - [ - 291, - 3751, - 306, - 3771 - ], - [ - 307, - 3751, - 324, - 3772 - ], - [ - 333, - 3751, - 350, - 3771 - ], - [ - 397, - 3751, - 410, - 3772 - ], - [ - 411, - 3751, - 424, - 3771 - ], - [ - 425, - 3751, - 441, - 3772 - ], - [ - 442, - 3751, - 458, - 3771 - ], - [ - 137, - 3752, - 140, - 3771 - ], - [ - 199, - 3752, - 220, - 3771 - ], - [ - 347, - 3752, - 368, - 3771 - ], - [ - 378, - 3752, - 395, - 3771 - ], - [ - 164, - 3779, - 181, - 3799 - ], - [ - 182, - 3779, - 196, - 3799 - ], - [ - 197, - 3779, - 213, - 3799 - ], - [ - 214, - 3778, - 227, - 3799 - ], - [ - 237, - 3778, - 250, - 3799 - ], - [ - 261, - 3779, - 277, - 3799 - ], - [ - 278, - 3779, - 294, - 3799 - ], - [ - 295, - 3778, - 309, - 3799 - ], - [ - 310, - 3779, - 325, - 3799 - ], - [ - 335, - 3779, - 351, - 3799 - ], - [ - 353, - 3779, - 374, - 3799 - ], - [ - 376, - 3778, - 389, - 3798 - ], - [ - 391, - 3779, - 407, - 3799 - ], - [ - 407, - 3793, - 412, - 3798 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 242, - 4029, - 635, - 4141 - ], - "bubble_bbox": [ - 182, - 3909, - 685, - 4249 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 369, - 4050, - 386, - 4063 - ], - [ - 437, - 4050, - 448, - 4056 - ], - [ - 456, - 4050, - 472, - 4063 - ], - [ - 423, - 4052, - 427, - 4058 - ], - [ - 437, - 4057, - 448, - 4064 - ], - [ - 277, - 4079, - 292, - 4092 - ], - [ - 339, - 4079, - 355, - 4093 - ], - [ - 362, - 4079, - 378, - 4092 - ], - [ - 591, - 4079, - 602, - 4087 - ], - [ - 576, - 4081, - 581, - 4086 - ], - [ - 501, - 4109, - 512, - 4117 - ], - [ - 375, - 4111, - 379, - 4117 - ], - [ - 437, - 4111, - 441, - 4117 - ], - [ - 316, - 4044, - 322, - 4054 - ], - [ - 351, - 4045, - 364, - 4067 - ], - [ - 418, - 4045, - 432, - 4067 - ], - [ - 477, - 4045, - 492, - 4068 - ], - [ - 547, - 4045, - 565, - 4067 - ], - [ - 292, - 4046, - 296, - 4067 - ], - [ - 297, - 4046, - 315, - 4067 - ], - [ - 321, - 4046, - 340, - 4067 - ], - [ - 366, - 4046, - 389, - 4067 - ], - [ - 390, - 4046, - 409, - 4068 - ], - [ - 434, - 4046, - 451, - 4068 - ], - [ - 453, - 4046, - 476, - 4067 - ], - [ - 493, - 4046, - 512, - 4068 - ], - [ - 521, - 4046, - 540, - 4068 - ], - [ - 541, - 4046, - 545, - 4067 - ], - [ - 567, - 4046, - 583, - 4067 - ], - [ - 584, - 4060, - 589, - 4070 - ], - [ - 399, - 4073, - 407, - 4090 - ], - [ - 260, - 4075, - 275, - 4097 - ], - [ - 274, - 4075, - 295, - 4096 - ], - [ - 296, - 4075, - 311, - 4097 - ], - [ - 322, - 4075, - 337, - 4097 - ], - [ - 360, - 4075, - 380, - 4096 - ], - [ - 442, - 4074, - 447, - 4084 - ], - [ - 475, - 4075, - 494, - 4097 - ], - [ - 494, - 4075, - 509, - 4098 - ], - [ - 511, - 4075, - 527, - 4097 - ], - [ - 538, - 4075, - 551, - 4098 - ], - [ - 553, - 4075, - 570, - 4097 - ], - [ - 587, - 4075, - 605, - 4098 - ], - [ - 336, - 4076, - 359, - 4097 - ], - [ - 382, - 4076, - 395, - 4097 - ], - [ - 418, - 4076, - 421, - 4097 - ], - [ - 423, - 4076, - 441, - 4097 - ], - [ - 447, - 4076, - 465, - 4097 - ], - [ - 570, - 4076, - 586, - 4097 - ], - [ - 606, - 4076, - 622, - 4097 - ], - [ - 396, - 4091, - 402, - 4097 - ], - [ - 538, - 4103, - 546, - 4119 - ], - [ - 335, - 4105, - 354, - 4127 - ], - [ - 355, - 4104, - 369, - 4127 - ], - [ - 370, - 4105, - 385, - 4126 - ], - [ - 384, - 4105, - 402, - 4127 - ], - [ - 412, - 4105, - 431, - 4127 - ], - [ - 432, - 4105, - 446, - 4126 - ], - [ - 445, - 4105, - 479, - 4127 - ], - [ - 480, - 4105, - 497, - 4127 - ], - [ - 498, - 4105, - 515, - 4127 - ], - [ - 517, - 4105, - 534, - 4126 - ], - [ - 536, - 4121, - 541, - 4126 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/60494ebcc5c04866b66786e8cd4c71bf.jpeg", - "context_path": "contexts/183/context.json", - "id": 86421 - }, - { - "blk_list": [ - { - "text_bbox": [ - 394, - 83, - 574, - 167 - ], - "bubble_bbox": [ - 340, - 26, - 625, - 211 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 445, - 103, - 456, - 117 - ], - [ - 463, - 103, - 480, - 116 - ], - [ - 519, - 133, - 530, - 141 - ], - [ - 453, - 135, - 457, - 142 - ], - [ - 485, - 98, - 501, - 121 - ], - [ - 522, - 98, - 536, - 121 - ], - [ - 538, - 97, - 543, - 107 - ], - [ - 407, - 99, - 410, - 121 - ], - [ - 412, - 99, - 431, - 121 - ], - [ - 442, - 99, - 459, - 121 - ], - [ - 460, - 99, - 483, - 121 - ], - [ - 502, - 99, - 521, - 121 - ], - [ - 544, - 99, - 563, - 121 - ], - [ - 428, - 129, - 447, - 151 - ], - [ - 448, - 129, - 462, - 151 - ], - [ - 461, - 129, - 480, - 151 - ], - [ - 480, - 129, - 496, - 151 - ], - [ - 497, - 129, - 514, - 151 - ], - [ - 515, - 129, - 534, - 152 - ], - [ - 535, - 145, - 540, - 151 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 244, - 1190, - 611, - 1286 - ], - "bubble_bbox": [ - 187, - 1067, - 673, - 1398 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 292, - 1214, - 311, - 1230 - ], - [ - 348, - 1214, - 361, - 1224 - ], - [ - 484, - 1214, - 497, - 1224 - ], - [ - 569, - 1215, - 589, - 1231 - ], - [ - 466, - 1217, - 472, - 1223 - ], - [ - 273, - 1251, - 294, - 1267 - ], - [ - 304, - 1250, - 317, - 1260 - ], - [ - 327, - 1251, - 339, - 1266 - ], - [ - 394, - 1250, - 407, - 1260 - ], - [ - 447, - 1250, - 460, - 1258 - ], - [ - 571, - 1250, - 584, - 1260 - ], - [ - 377, - 1253, - 382, - 1261 - ], - [ - 447, - 1260, - 461, - 1268 - ], - [ - 289, - 1209, - 314, - 1235 - ], - [ - 336, - 1208, - 342, - 1220 - ], - [ - 515, - 1209, - 533, - 1236 - ], - [ - 546, - 1209, - 563, - 1235 - ], - [ - 272, - 1210, - 290, - 1236 - ], - [ - 316, - 1210, - 334, - 1236 - ], - [ - 344, - 1210, - 365, - 1237 - ], - [ - 367, - 1210, - 387, - 1236 - ], - [ - 399, - 1211, - 420, - 1236 - ], - [ - 422, - 1210, - 437, - 1235 - ], - [ - 438, - 1210, - 458, - 1236 - ], - [ - 459, - 1210, - 478, - 1236 - ], - [ - 479, - 1210, - 501, - 1237 - ], - [ - 503, - 1210, - 518, - 1235 - ], - [ - 565, - 1210, - 593, - 1236 - ], - [ - 353, - 1245, - 369, - 1271 - ], - [ - 371, - 1245, - 388, - 1272 - ], - [ - 528, - 1245, - 543, - 1273 - ], - [ - 269, - 1246, - 298, - 1272 - ], - [ - 299, - 1246, - 321, - 1273 - ], - [ - 323, - 1246, - 343, - 1272 - ], - [ - 346, - 1247, - 350, - 1272 - ], - [ - 389, - 1246, - 411, - 1273 - ], - [ - 413, - 1246, - 431, - 1272 - ], - [ - 443, - 1247, - 464, - 1272 - ], - [ - 466, - 1246, - 484, - 1272 - ], - [ - 485, - 1246, - 508, - 1272 - ], - [ - 505, - 1246, - 526, - 1271 - ], - [ - 546, - 1246, - 566, - 1272 - ], - [ - 567, - 1246, - 588, - 1273 - ], - [ - 590, - 1265, - 596, - 1271 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 161, - 2543, - 471, - 2655 - ], - "bubble_bbox": [ - 112, - 2454, - 517, - 2733 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 252, - 2564, - 271, - 2580 - ], - [ - 197, - 2598, - 210, - 2608 - ], - [ - 266, - 2599, - 284, - 2614 - ], - [ - 323, - 2598, - 334, - 2609 - ], - [ - 363, - 2599, - 381, - 2614 - ], - [ - 390, - 2599, - 401, - 2609 - ], - [ - 181, - 2601, - 186, - 2609 - ], - [ - 205, - 2559, - 228, - 2585 - ], - [ - 229, - 2559, - 246, - 2585 - ], - [ - 310, - 2559, - 327, - 2585 - ], - [ - 362, - 2559, - 377, - 2586 - ], - [ - 249, - 2560, - 275, - 2585 - ], - [ - 288, - 2560, - 309, - 2585 - ], - [ - 329, - 2560, - 349, - 2585 - ], - [ - 379, - 2560, - 398, - 2585 - ], - [ - 400, - 2561, - 415, - 2585 - ], - [ - 417, - 2560, - 431, - 2584 - ], - [ - 442, - 2593, - 460, - 2612 - ], - [ - 175, - 2594, - 192, - 2619 - ], - [ - 193, - 2594, - 214, - 2620 - ], - [ - 215, - 2594, - 235, - 2619 - ], - [ - 247, - 2594, - 264, - 2620 - ], - [ - 263, - 2594, - 287, - 2618 - ], - [ - 288, - 2594, - 306, - 2619 - ], - [ - 319, - 2595, - 338, - 2620 - ], - [ - 340, - 2594, - 359, - 2619 - ], - [ - 360, - 2594, - 384, - 2618 - ], - [ - 386, - 2595, - 405, - 2620 - ], - [ - 406, - 2595, - 421, - 2619 - ], - [ - 422, - 2594, - 442, - 2619 - ], - [ - 447, - 2614, - 453, - 2619 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/599498b05ca942de803924460051bc84.jpeg", - "context_path": "contexts/183/context.json", - "id": 86427 - }, - { - "blk_list": [ - { - "text_bbox": [ - 258, - 301, - 644, - 406 - ], - "bubble_bbox": [ - 211, - 123, - 678, - 565 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 500, - 316, - 508, - 321 - ], - [ - 511, - 317, - 519, - 324 - ], - [ - 332, - 335, - 342, - 342 - ], - [ - 366, - 335, - 374, - 343 - ], - [ - 396, - 335, - 407, - 343 - ], - [ - 499, - 335, - 506, - 338 - ], - [ - 510, - 335, - 521, - 343 - ], - [ - 497, - 339, - 505, - 343 - ], - [ - 321, - 353, - 332, - 361 - ], - [ - 335, - 353, - 345, - 361 - ], - [ - 409, - 353, - 416, - 356 - ], - [ - 438, - 353, - 446, - 360 - ], - [ - 487, - 353, - 493, - 356 - ], - [ - 573, - 353, - 581, - 361 - ], - [ - 585, - 353, - 596, - 361 - ], - [ - 407, - 357, - 415, - 361 - ], - [ - 485, - 357, - 492, - 361 - ], - [ - 367, - 371, - 378, - 379 - ], - [ - 490, - 371, - 497, - 376 - ], - [ - 550, - 371, - 558, - 376 - ], - [ - 414, - 389, - 421, - 394 - ], - [ - 366, - 314, - 378, - 328 - ], - [ - 374, - 314, - 388, - 328 - ], - [ - 385, - 314, - 398, - 327 - ], - [ - 404, - 314, - 417, - 328 - ], - [ - 415, - 314, - 439, - 328 - ], - [ - 444, - 314, - 456, - 328 - ], - [ - 457, - 314, - 467, - 327 - ], - [ - 464, - 314, - 477, - 327 - ], - [ - 477, - 314, - 491, - 328 - ], - [ - 486, - 314, - 496, - 327 - ], - [ - 496, - 314, - 510, - 328 - ], - [ - 508, - 314, - 522, - 328 - ], - [ - 439, - 319, - 444, - 322 - ], - [ - 281, - 332, - 296, - 346 - ], - [ - 294, - 332, - 307, - 345 - ], - [ - 305, - 332, - 328, - 346 - ], - [ - 325, - 333, - 331, - 346 - ], - [ - 330, - 332, - 344, - 345 - ], - [ - 342, - 332, - 355, - 345 - ], - [ - 352, - 332, - 365, - 346 - ], - [ - 363, - 333, - 377, - 346 - ], - [ - 382, - 332, - 394, - 346 - ], - [ - 394, - 332, - 410, - 346 - ], - [ - 407, - 332, - 422, - 346 - ], - [ - 420, - 332, - 432, - 345 - ], - [ - 433, - 332, - 445, - 346 - ], - [ - 442, - 332, - 455, - 346 - ], - [ - 453, - 333, - 459, - 345 - ], - [ - 456, - 332, - 469, - 345 - ], - [ - 467, - 332, - 481, - 345 - ], - [ - 484, - 332, - 495, - 346 - ], - [ - 495, - 333, - 509, - 346 - ], - [ - 508, - 332, - 523, - 346 - ], - [ - 522, - 332, - 547, - 346 - ], - [ - 552, - 332, - 564, - 346 - ], - [ - 560, - 332, - 581, - 346 - ], - [ - 582, - 332, - 594, - 346 - ], - [ - 262, - 350, - 274, - 364 - ], - [ - 271, - 350, - 284, - 364 - ], - [ - 281, - 350, - 294, - 364 - ], - [ - 295, - 350, - 306, - 364 - ], - [ - 308, - 351, - 317, - 364 - ], - [ - 318, - 350, - 347, - 364 - ], - [ - 346, - 351, - 360, - 364 - ], - [ - 363, - 351, - 372, - 364 - ], - [ - 372, - 351, - 379, - 364 - ], - [ - 376, - 351, - 390, - 364 - ], - [ - 388, - 350, - 401, - 364 - ], - [ - 405, - 351, - 419, - 364 - ], - [ - 415, - 350, - 426, - 364 - ], - [ - 426, - 350, - 438, - 363 - ], - [ - 435, - 351, - 449, - 364 - ], - [ - 446, - 350, - 465, - 364 - ], - [ - 461, - 350, - 473, - 363 - ], - [ - 482, - 351, - 496, - 364 - ], - [ - 494, - 350, - 519, - 364 - ], - [ - 524, - 350, - 536, - 364 - ], - [ - 533, - 350, - 546, - 364 - ], - [ - 543, - 350, - 556, - 364 - ], - [ - 557, - 350, - 568, - 364 - ], - [ - 570, - 351, - 584, - 364 - ], - [ - 583, - 350, - 598, - 364 - ], - [ - 597, - 350, - 610, - 364 - ], - [ - 610, - 350, - 614, - 356 - ], - [ - 614, - 350, - 626, - 364 - ], - [ - 472, - 359, - 476, - 366 - ], - [ - 305, - 368, - 328, - 382 - ], - [ - 327, - 368, - 339, - 382 - ], - [ - 337, - 368, - 351, - 382 - ], - [ - 358, - 368, - 370, - 382 - ], - [ - 365, - 369, - 381, - 382 - ], - [ - 385, - 368, - 405, - 383 - ], - [ - 406, - 368, - 416, - 382 - ], - [ - 412, - 368, - 425, - 382 - ], - [ - 428, - 368, - 439, - 382 - ], - [ - 439, - 368, - 451, - 382 - ], - [ - 451, - 368, - 462, - 382 - ], - [ - 464, - 368, - 486, - 382 - ], - [ - 486, - 368, - 514, - 382 - ], - [ - 511, - 369, - 522, - 382 - ], - [ - 522, - 369, - 531, - 382 - ], - [ - 536, - 368, - 546, - 382 - ], - [ - 546, - 368, - 571, - 382 - ], - [ - 567, - 369, - 580, - 382 - ], - [ - 401, - 387, - 413, - 400 - ], - [ - 409, - 387, - 424, - 400 - ], - [ - 420, - 386, - 430, - 400 - ], - [ - 430, - 387, - 436, - 400 - ], - [ - 434, - 386, - 447, - 400 - ], - [ - 444, - 387, - 450, - 400 - ], - [ - 448, - 386, - 461, - 400 - ], - [ - 459, - 387, - 472, - 400 - ], - [ - 471, - 396, - 483, - 400 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 38, - 1408, - 322, - 1497 - ], - "bubble_bbox": [ - 9, - 1308, - 352, - 1601 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 132, - 1426, - 145, - 1436 - ], - [ - 164, - 1426, - 172, - 1436 - ], - [ - 197, - 1426, - 209, - 1436 - ], - [ - 247, - 1426, - 260, - 1436 - ], - [ - 89, - 1449, - 98, - 1456 - ], - [ - 273, - 1449, - 281, - 1455 - ], - [ - 301, - 1449, - 310, - 1456 - ], - [ - 69, - 1450, - 82, - 1460 - ], - [ - 126, - 1450, - 139, - 1460 - ], - [ - 177, - 1473, - 189, - 1484 - ], - [ - 208, - 1473, - 217, - 1480 - ], - [ - 126, - 1474, - 139, - 1484 - ], - [ - 100, - 1422, - 110, - 1440 - ], - [ - 118, - 1422, - 133, - 1440 - ], - [ - 130, - 1423, - 148, - 1440 - ], - [ - 150, - 1423, - 160, - 1440 - ], - [ - 161, - 1423, - 175, - 1440 - ], - [ - 183, - 1422, - 195, - 1440 - ], - [ - 194, - 1422, - 211, - 1439 - ], - [ - 212, - 1422, - 224, - 1440 - ], - [ - 232, - 1422, - 247, - 1440 - ], - [ - 244, - 1423, - 263, - 1440 - ], - [ - 51, - 1446, - 68, - 1464 - ], - [ - 67, - 1446, - 85, - 1464 - ], - [ - 86, - 1446, - 100, - 1464 - ], - [ - 102, - 1446, - 115, - 1463 - ], - [ - 123, - 1447, - 142, - 1464 - ], - [ - 144, - 1446, - 155, - 1463 - ], - [ - 163, - 1446, - 178, - 1464 - ], - [ - 179, - 1446, - 190, - 1464 - ], - [ - 191, - 1446, - 203, - 1463 - ], - [ - 202, - 1446, - 217, - 1464 - ], - [ - 224, - 1446, - 239, - 1464 - ], - [ - 240, - 1446, - 253, - 1464 - ], - [ - 254, - 1446, - 269, - 1464 - ], - [ - 270, - 1446, - 283, - 1464 - ], - [ - 284, - 1446, - 297, - 1464 - ], - [ - 298, - 1446, - 313, - 1464 - ], - [ - 123, - 1470, - 142, - 1488 - ], - [ - 144, - 1470, - 155, - 1488 - ], - [ - 163, - 1470, - 175, - 1488 - ], - [ - 175, - 1470, - 191, - 1487 - ], - [ - 192, - 1470, - 204, - 1488 - ], - [ - 205, - 1470, - 220, - 1488 - ], - [ - 220, - 1470, - 235, - 1487 - ], - [ - 236, - 1483, - 240, - 1487 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 436, - 1453, - 622, - 1541 - ], - "bubble_bbox": [ - 396, - 1390, - 660, - 1597 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 512, - 1468, - 533, - 1485 - ], - [ - 544, - 1468, - 557, - 1478 - ], - [ - 567, - 1468, - 580, - 1479 - ], - [ - 478, - 1505, - 491, - 1512 - ], - [ - 501, - 1505, - 522, - 1522 - ], - [ - 478, - 1515, - 492, - 1523 - ], - [ - 448, - 1464, - 471, - 1490 - ], - [ - 485, - 1464, - 508, - 1490 - ], - [ - 509, - 1464, - 537, - 1490 - ], - [ - 539, - 1463, - 561, - 1491 - ], - [ - 564, - 1463, - 584, - 1490 - ], - [ - 585, - 1463, - 604, - 1490 - ], - [ - 473, - 1473, - 483, - 1480 - ], - [ - 601, - 1482, - 607, - 1494 - ], - [ - 552, - 1500, - 574, - 1526 - ], - [ - 474, - 1501, - 496, - 1527 - ], - [ - 498, - 1501, - 526, - 1527 - ], - [ - 528, - 1501, - 551, - 1527 - ], - [ - 576, - 1520, - 582, - 1527 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 149, - 1949, - 417, - 2043 - ], - "bubble_bbox": [ - 98, - 1872, - 470, - 2111 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 238, - 1966, - 252, - 1976 - ], - [ - 318, - 2002, - 330, - 2013 - ], - [ - 187, - 2003, - 206, - 2018 - ], - [ - 271, - 2005, - 277, - 2013 - ], - [ - 337, - 2005, - 342, - 2013 - ], - [ - 195, - 1961, - 212, - 1988 - ], - [ - 213, - 1962, - 233, - 1988 - ], - [ - 234, - 1962, - 255, - 1989 - ], - [ - 257, - 1962, - 275, - 1988 - ], - [ - 287, - 1961, - 312, - 1988 - ], - [ - 313, - 1962, - 333, - 1988 - ], - [ - 352, - 1962, - 367, - 1987 - ], - [ - 335, - 1963, - 350, - 1988 - ], - [ - 369, - 1981, - 375, - 1988 - ], - [ - 167, - 1998, - 185, - 2025 - ], - [ - 184, - 1998, - 209, - 2023 - ], - [ - 211, - 1998, - 228, - 2024 - ], - [ - 242, - 1998, - 264, - 2024 - ], - [ - 266, - 1998, - 283, - 2024 - ], - [ - 283, - 1997, - 301, - 2024 - ], - [ - 314, - 1998, - 334, - 2025 - ], - [ - 331, - 1998, - 349, - 2024 - ], - [ - 373, - 1998, - 395, - 2024 - ], - [ - 350, - 1999, - 372, - 2024 - ], - [ - 396, - 2017, - 402, - 2024 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 71, - 2895, - 226, - 2932 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 145, - 2901, - 153, - 2926 - ], - [ - 154, - 2901, - 163, - 2926 - ], - [ - 165, - 2901, - 173, - 2925 - ], - [ - 175, - 2901, - 183, - 2925 - ], - [ - 190, - 2901, - 197, - 2925 - ], - [ - 199, - 2901, - 207, - 2925 - ], - [ - 209, - 2901, - 220, - 2925 - ], - [ - 78, - 2902, - 87, - 2927 - ], - [ - 88, - 2902, - 96, - 2927 - ], - [ - 98, - 2902, - 106, - 2926 - ], - [ - 107, - 2902, - 116, - 2926 - ], - [ - 117, - 2902, - 125, - 2926 - ], - [ - 126, - 2902, - 134, - 2926 - ], - [ - 135, - 2902, - 143, - 2926 - ], - [ - 202, - 2904, - 204, - 2921 - ], - [ - 91, - 2906, - 93, - 2923 - ], - [ - 101, - 2906, - 103, - 2913 - ], - [ - 157, - 2908, - 160, - 2918 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 173, - 4771, - 325, - 4837 - ], - "bubble_bbox": [ - 123, - 4703, - 373, - 4894 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 220, - 4790, - 245, - 4810 - ], - [ - 257, - 4793, - 264, - 4801 - ], - [ - 299, - 4781, - 312, - 4805 - ], - [ - 186, - 4783, - 217, - 4816 - ], - [ - 215, - 4785, - 250, - 4816 - ], - [ - 247, - 4784, - 271, - 4816 - ], - [ - 274, - 4784, - 293, - 4817 - ], - [ - 296, - 4808, - 304, - 4816 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MANUAL PROPERTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND AD AND THE POST OF STREET BY SHAPE THE VICE-STEWARD MENTIONED SOMETHING ABOUT THAT... THEY LOOK LIKE BANDITS, BUT THEY DON'T SEEM TO HAVE ANY MARTIAL ARTS TRAINING ... Mary Mary Mary Mary\",\n \"block_1\": \"I TOLD YOU TO WORK ON THAT TEMPER OF YOURS.\",\n \"block_2\": \"S-SORRY, B055.\",\n \"block_3\": \"VERY WELL. YOU MAY PASS.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WOAH!\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MANUAL PROPERTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND ADDRESS OF THE PARTY AND AD AND THE POST OF STREET BY SHAPE THE VICE-STEWARD MENTIONED SOMETHING ABOUT THAT... THEY LOOK LIKE BANDITS, BUT THEY DON'T SEEM TO HAVE ANY MARTIAL ARTS TRAINING ... Mary Mary Mary Mary\",\n \"block_1\": \"I TOLD YOU TO WORK ON THAT TEMPER OF YOURS.\",\n \"block_2\": \"S-SORRY, B055.\",\n \"block_3\": \"VERY WELL. YOU MAY PASS.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WOAH!\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/00f5e73eb8ac46fab83b1170d704ca6a.jpeg", - "context_path": "contexts/183/context.json", - "id": 86419 - }, - { - "blk_list": [ - { - "text_bbox": [ - 104, - 204, - 562, - 338 - ], - "bubble_bbox": [ - 80, - 77, - 588, - 463 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 244, - 223, - 257, - 233 - ], - [ - 179, - 245, - 187, - 255 - ], - [ - 206, - 245, - 214, - 251 - ], - [ - 251, - 245, - 259, - 254 - ], - [ - 333, - 245, - 345, - 255 - ], - [ - 412, - 245, - 425, - 255 - ], - [ - 475, - 245, - 483, - 254 - ], - [ - 502, - 245, - 510, - 251 - ], - [ - 508, - 267, - 516, - 274 - ], - [ - 176, - 268, - 184, - 272 - ], - [ - 236, - 268, - 244, - 278 - ], - [ - 464, - 268, - 477, - 278 - ], - [ - 520, - 268, - 532, - 278 - ], - [ - 176, - 273, - 184, - 278 - ], - [ - 174, - 290, - 187, - 300 - ], - [ - 342, - 290, - 355, - 300 - ], - [ - 484, - 290, - 491, - 296 - ], - [ - 289, - 313, - 302, - 323 - ], - [ - 230, - 219, - 240, - 236 - ], - [ - 260, - 219, - 276, - 236 - ], - [ - 297, - 219, - 320, - 237 - ], - [ - 320, - 219, - 334, - 236 - ], - [ - 341, - 219, - 355, - 236 - ], - [ - 355, - 219, - 366, - 237 - ], - [ - 368, - 219, - 381, - 236 - ], - [ - 242, - 220, - 259, - 236 - ], - [ - 283, - 220, - 297, - 236 - ], - [ - 388, - 220, - 401, - 236 - ], - [ - 402, - 220, - 413, - 236 - ], - [ - 415, - 220, - 425, - 236 - ], - [ - 425, - 220, - 437, - 236 - ], - [ - 139, - 243, - 149, - 259 - ], - [ - 150, - 242, - 162, - 258 - ], - [ - 162, - 242, - 175, - 258 - ], - [ - 176, - 243, - 189, - 259 - ], - [ - 190, - 242, - 203, - 258 - ], - [ - 203, - 242, - 217, - 259 - ], - [ - 224, - 242, - 236, - 258 - ], - [ - 237, - 242, - 247, - 258 - ], - [ - 249, - 242, - 262, - 258 - ], - [ - 269, - 242, - 283, - 259 - ], - [ - 284, - 242, - 295, - 259 - ], - [ - 296, - 242, - 309, - 258 - ], - [ - 316, - 243, - 329, - 258 - ], - [ - 330, - 242, - 348, - 259 - ], - [ - 349, - 242, - 360, - 259 - ], - [ - 362, - 242, - 372, - 258 - ], - [ - 373, - 242, - 386, - 258 - ], - [ - 388, - 242, - 390, - 259 - ], - [ - 392, - 243, - 402, - 259 - ], - [ - 410, - 242, - 428, - 259 - ], - [ - 429, - 242, - 440, - 258 - ], - [ - 448, - 242, - 461, - 258 - ], - [ - 462, - 243, - 472, - 259 - ], - [ - 473, - 242, - 486, - 259 - ], - [ - 486, - 242, - 499, - 258 - ], - [ - 499, - 242, - 513, - 259 - ], - [ - 514, - 242, - 527, - 258 - ], - [ - 120, - 264, - 130, - 282 - ], - [ - 131, - 264, - 142, - 281 - ], - [ - 142, - 264, - 152, - 281 - ], - [ - 153, - 265, - 166, - 281 - ], - [ - 174, - 265, - 187, - 281 - ], - [ - 188, - 265, - 200, - 281 - ], - [ - 202, - 264, - 213, - 281 - ], - [ - 214, - 264, - 225, - 281 - ], - [ - 234, - 265, - 247, - 281 - ], - [ - 248, - 265, - 260, - 281 - ], - [ - 260, - 265, - 273, - 281 - ], - [ - 274, - 265, - 284, - 281 - ], - [ - 284, - 265, - 296, - 281 - ], - [ - 304, - 264, - 320, - 281 - ], - [ - 320, - 265, - 323, - 281 - ], - [ - 324, - 265, - 338, - 281 - ], - [ - 339, - 264, - 350, - 282 - ], - [ - 363, - 265, - 377, - 281 - ], - [ - 378, - 265, - 391, - 281 - ], - [ - 392, - 265, - 395, - 281 - ], - [ - 396, - 265, - 407, - 281 - ], - [ - 409, - 265, - 411, - 281 - ], - [ - 413, - 264, - 424, - 281 - ], - [ - 425, - 265, - 440, - 281 - ], - [ - 448, - 265, - 461, - 281 - ], - [ - 462, - 265, - 480, - 281 - ], - [ - 481, - 264, - 491, - 281 - ], - [ - 492, - 265, - 504, - 281 - ], - [ - 505, - 265, - 518, - 282 - ], - [ - 517, - 265, - 535, - 281 - ], - [ - 537, - 265, - 547, - 281 - ], - [ - 351, - 276, - 355, - 283 - ], - [ - 172, - 287, - 189, - 303 - ], - [ - 191, - 287, - 202, - 304 - ], - [ - 209, - 287, - 223, - 304 - ], - [ - 224, - 287, - 235, - 304 - ], - [ - 236, - 287, - 249, - 303 - ], - [ - 271, - 287, - 282, - 304 - ], - [ - 293, - 287, - 306, - 303 - ], - [ - 314, - 287, - 317, - 304 - ], - [ - 318, - 287, - 332, - 304 - ], - [ - 340, - 287, - 357, - 303 - ], - [ - 359, - 287, - 370, - 303 - ], - [ - 371, - 287, - 381, - 303 - ], - [ - 379, - 287, - 390, - 304 - ], - [ - 397, - 287, - 408, - 303 - ], - [ - 416, - 287, - 430, - 304 - ], - [ - 431, - 287, - 442, - 303 - ], - [ - 441, - 287, - 467, - 304 - ], - [ - 468, - 287, - 480, - 303 - ], - [ - 481, - 287, - 494, - 304 - ], - [ - 256, - 288, - 270, - 303 - ], - [ - 283, - 288, - 293, - 304 - ], - [ - 306, - 309, - 317, - 326 - ], - [ - 324, - 309, - 338, - 326 - ], - [ - 343, - 309, - 357, - 326 - ], - [ - 359, - 309, - 371, - 326 - ], - [ - 374, - 308, - 380, - 320 - ], - [ - 287, - 310, - 304, - 326 - ], - [ - 339, - 310, - 342, - 326 - ], - [ - 372, - 322, - 376, - 326 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 301, - 619, - 341, - 714 - ], - "bubble_bbox": [ - 294, - 594, - 348, - 727 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 306, - 627, - 313, - 638 - ], - [ - 318, - 628, - 326, - 636 - ], - [ - 330, - 628, - 340, - 640 - ], - [ - 320, - 638, - 326, - 648 - ], - [ - 305, - 639, - 313, - 648 - ], - [ - 331, - 639, - 337, - 649 - ], - [ - 304, - 650, - 313, - 658 - ], - [ - 332, - 649, - 338, - 659 - ], - [ - 317, - 651, - 327, - 658 - ], - [ - 316, - 658, - 325, - 669 - ], - [ - 304, - 660, - 312, - 669 - ], - [ - 330, - 659, - 339, - 680 - ], - [ - 303, - 670, - 313, - 691 - ], - [ - 315, - 671, - 328, - 680 - ], - [ - 316, - 681, - 325, - 691 - ], - [ - 330, - 682, - 339, - 691 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 43, - 1689, - 64, - 1717 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 48, - 1694, - 53, - 1698 - ], - [ - 58, - 1694, - 63, - 1698 - ], - [ - 48, - 1700, - 52, - 1705 - ], - [ - 54, - 1700, - 63, - 1705 - ], - [ - 54, - 1704, - 62, - 1712 - ], - [ - 48, - 1706, - 52, - 1712 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 271, - 2426, - 553, - 2526 - ], - "bubble_bbox": [ - 193, - 2307, - 636, - 2615 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 297, - 2448, - 311, - 2457 - ], - [ - 349, - 2447, - 365, - 2457 - ], - [ - 406, - 2448, - 420, - 2457 - ], - [ - 372, - 2449, - 393, - 2466 - ], - [ - 423, - 2487, - 437, - 2496 - ], - [ - 288, - 2442, - 317, - 2472 - ], - [ - 314, - 2442, - 344, - 2471 - ], - [ - 340, - 2441, - 370, - 2472 - ], - [ - 367, - 2442, - 398, - 2473 - ], - [ - 397, - 2442, - 426, - 2472 - ], - [ - 428, - 2441, - 477, - 2472 - ], - [ - 469, - 2441, - 503, - 2472 - ], - [ - 498, - 2441, - 529, - 2472 - ], - [ - 525, - 2462, - 537, - 2477 - ], - [ - 366, - 2480, - 396, - 2511 - ], - [ - 389, - 2480, - 420, - 2510 - ], - [ - 443, - 2479, - 461, - 2501 - ], - [ - 413, - 2481, - 443, - 2511 - ], - [ - 438, - 2504, - 446, - 2511 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 265, - 3679, - 620, - 3766 - ], - "bubble_bbox": [ - 245, - 3583, - 643, - 3871 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 374, - 3696, - 382, - 3701 - ], - [ - 284, - 3719, - 292, - 3725 - ], - [ - 397, - 3719, - 405, - 3725 - ], - [ - 537, - 3719, - 550, - 3729 - ], - [ - 556, - 3719, - 564, - 3725 - ], - [ - 344, - 3742, - 352, - 3746 - ], - [ - 458, - 3742, - 465, - 3748 - ], - [ - 525, - 3742, - 533, - 3752 - ], - [ - 344, - 3748, - 353, - 3753 - ], - [ - 461, - 3692, - 471, - 3710 - ], - [ - 357, - 3693, - 371, - 3710 - ], - [ - 372, - 3693, - 384, - 3710 - ], - [ - 385, - 3693, - 398, - 3710 - ], - [ - 398, - 3693, - 410, - 3710 - ], - [ - 412, - 3694, - 425, - 3710 - ], - [ - 439, - 3693, - 449, - 3710 - ], - [ - 449, - 3693, - 460, - 3709 - ], - [ - 472, - 3693, - 485, - 3710 - ], - [ - 492, - 3693, - 507, - 3710 - ], - [ - 507, - 3693, - 518, - 3710 - ], - [ - 520, - 3693, - 533, - 3710 - ], - [ - 426, - 3705, - 430, - 3709 - ], - [ - 281, - 3716, - 295, - 3733 - ], - [ - 295, - 3716, - 308, - 3732 - ], - [ - 309, - 3716, - 323, - 3732 - ], - [ - 324, - 3715, - 335, - 3732 - ], - [ - 336, - 3716, - 339, - 3733 - ], - [ - 341, - 3715, - 352, - 3732 - ], - [ - 354, - 3716, - 356, - 3732 - ], - [ - 358, - 3715, - 369, - 3732 - ], - [ - 370, - 3716, - 386, - 3732 - ], - [ - 394, - 3716, - 408, - 3733 - ], - [ - 408, - 3716, - 421, - 3732 - ], - [ - 422, - 3716, - 436, - 3732 - ], - [ - 437, - 3716, - 440, - 3732 - ], - [ - 442, - 3716, - 456, - 3732 - ], - [ - 455, - 3716, - 467, - 3732 - ], - [ - 465, - 3716, - 476, - 3732 - ], - [ - 477, - 3715, - 488, - 3732 - ], - [ - 489, - 3716, - 502, - 3732 - ], - [ - 503, - 3716, - 516, - 3732 - ], - [ - 524, - 3716, - 536, - 3732 - ], - [ - 535, - 3716, - 552, - 3733 - ], - [ - 554, - 3716, - 567, - 3733 - ], - [ - 567, - 3716, - 580, - 3732 - ], - [ - 581, - 3716, - 594, - 3732 - ], - [ - 594, - 3716, - 608, - 3732 - ], - [ - 370, - 3738, - 382, - 3756 - ], - [ - 383, - 3738, - 394, - 3755 - ], - [ - 403, - 3738, - 414, - 3755 - ], - [ - 429, - 3738, - 440, - 3756 - ], - [ - 468, - 3738, - 480, - 3755 - ], - [ - 536, - 3738, - 548, - 3756 - ], - [ - 342, - 3739, - 355, - 3756 - ], - [ - 357, - 3739, - 369, - 3755 - ], - [ - 415, - 3739, - 428, - 3755 - ], - [ - 441, - 3739, - 455, - 3756 - ], - [ - 456, - 3739, - 468, - 3756 - ], - [ - 481, - 3740, - 491, - 3755 - ], - [ - 492, - 3739, - 495, - 3755 - ], - [ - 496, - 3739, - 507, - 3756 - ], - [ - 509, - 3739, - 521, - 3755 - ], - [ - 523, - 3739, - 536, - 3756 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 102, - 4134, - 581, - 4316 - ], - "bubble_bbox": [ - 51, - 3906, - 671, - 4468 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 404, - 4156, - 416, - 4162 - ], - [ - 234, - 4158, - 252, - 4172 - ], - [ - 333, - 4159, - 341, - 4166 - ], - [ - 400, - 4165, - 412, - 4171 - ], - [ - 357, - 4187, - 368, - 4193 - ], - [ - 509, - 4188, - 520, - 4195 - ], - [ - 255, - 4190, - 263, - 4197 - ], - [ - 313, - 4189, - 327, - 4200 - ], - [ - 531, - 4190, - 538, - 4197 - ], - [ - 353, - 4196, - 364, - 4202 - ], - [ - 419, - 4218, - 431, - 4226 - ], - [ - 154, - 4219, - 169, - 4231 - ], - [ - 229, - 4219, - 243, - 4231 - ], - [ - 457, - 4219, - 472, - 4231 - ], - [ - 513, - 4219, - 524, - 4226 - ], - [ - 531, - 4220, - 548, - 4233 - ], - [ - 273, - 4221, - 281, - 4228 - ], - [ - 399, - 4221, - 407, - 4228 - ], - [ - 224, - 4250, - 235, - 4257 - ], - [ - 326, - 4250, - 337, - 4257 - ], - [ - 266, - 4252, - 274, - 4259 - ], - [ - 399, - 4252, - 406, - 4259 - ], - [ - 316, - 4280, - 327, - 4288 - ], - [ - 390, - 4280, - 401, - 4288 - ], - [ - 277, - 4282, - 284, - 4289 - ], - [ - 354, - 4281, - 369, - 4293 - ], - [ - 204, - 4152, - 232, - 4176 - ], - [ - 254, - 4152, - 277, - 4176 - ], - [ - 304, - 4152, - 330, - 4177 - ], - [ - 324, - 4152, - 346, - 4177 - ], - [ - 348, - 4152, - 370, - 4176 - ], - [ - 458, - 4152, - 485, - 4176 - ], - [ - 231, - 4153, - 256, - 4177 - ], - [ - 277, - 4153, - 300, - 4176 - ], - [ - 364, - 4153, - 387, - 4176 - ], - [ - 396, - 4153, - 421, - 4176 - ], - [ - 418, - 4153, - 441, - 4176 - ], - [ - 439, - 4153, - 462, - 4176 - ], - [ - 224, - 4182, - 250, - 4207 - ], - [ - 465, - 4182, - 486, - 4207 - ], - [ - 521, - 4182, - 544, - 4208 - ], - [ - 129, - 4183, - 152, - 4207 - ], - [ - 148, - 4183, - 164, - 4207 - ], - [ - 163, - 4183, - 187, - 4207 - ], - [ - 181, - 4183, - 209, - 4207 - ], - [ - 205, - 4183, - 230, - 4207 - ], - [ - 246, - 4183, - 268, - 4208 - ], - [ - 271, - 4183, - 294, - 4207 - ], - [ - 288, - 4184, - 311, - 4207 - ], - [ - 308, - 4184, - 332, - 4207 - ], - [ - 348, - 4183, - 373, - 4207 - ], - [ - 370, - 4184, - 417, - 4207 - ], - [ - 421, - 4183, - 445, - 4207 - ], - [ - 441, - 4183, - 464, - 4207 - ], - [ - 481, - 4183, - 504, - 4207 - ], - [ - 502, - 4184, - 525, - 4207 - ], - [ - 542, - 4183, - 557, - 4208 - ], - [ - 328, - 4199, - 337, - 4211 - ], - [ - 109, - 4214, - 134, - 4238 - ], - [ - 127, - 4213, - 154, - 4238 - ], - [ - 150, - 4214, - 173, - 4237 - ], - [ - 169, - 4214, - 194, - 4238 - ], - [ - 191, - 4213, - 247, - 4238 - ], - [ - 264, - 4213, - 286, - 4239 - ], - [ - 285, - 4214, - 300, - 4238 - ], - [ - 300, - 4214, - 323, - 4238 - ], - [ - 331, - 4214, - 354, - 4237 - ], - [ - 351, - 4214, - 375, - 4238 - ], - [ - 371, - 4214, - 393, - 4238 - ], - [ - 389, - 4213, - 412, - 4239 - ], - [ - 411, - 4213, - 435, - 4238 - ], - [ - 432, - 4214, - 455, - 4237 - ], - [ - 453, - 4214, - 476, - 4237 - ], - [ - 485, - 4213, - 510, - 4238 - ], - [ - 506, - 4214, - 529, - 4238 - ], - [ - 527, - 4214, - 552, - 4239 - ], - [ - 550, - 4214, - 578, - 4238 - ], - [ - 244, - 4215, - 269, - 4238 - ], - [ - 257, - 4244, - 279, - 4269 - ], - [ - 278, - 4244, - 302, - 4269 - ], - [ - 374, - 4244, - 396, - 4269 - ], - [ - 389, - 4244, - 411, - 4269 - ], - [ - 480, - 4244, - 508, - 4269 - ], - [ - 503, - 4244, - 549, - 4269 - ], - [ - 128, - 4245, - 150, - 4269 - ], - [ - 143, - 4245, - 169, - 4269 - ], - [ - 164, - 4245, - 187, - 4268 - ], - [ - 200, - 4245, - 222, - 4269 - ], - [ - 216, - 4245, - 239, - 4269 - ], - [ - 237, - 4245, - 260, - 4268 - ], - [ - 298, - 4246, - 322, - 4268 - ], - [ - 319, - 4245, - 342, - 4269 - ], - [ - 339, - 4245, - 363, - 4268 - ], - [ - 411, - 4246, - 435, - 4269 - ], - [ - 430, - 4245, - 446, - 4269 - ], - [ - 449, - 4245, - 472, - 4269 - ], - [ - 542, - 4245, - 568, - 4269 - ], - [ - 497, - 4274, - 512, - 4292 - ], - [ - 180, - 4276, - 203, - 4299 - ], - [ - 196, - 4275, - 222, - 4300 - ], - [ - 216, - 4276, - 240, - 4299 - ], - [ - 248, - 4275, - 272, - 4299 - ], - [ - 267, - 4275, - 289, - 4300 - ], - [ - 289, - 4276, - 311, - 4299 - ], - [ - 308, - 4276, - 332, - 4300 - ], - [ - 329, - 4276, - 352, - 4299 - ], - [ - 350, - 4276, - 373, - 4299 - ], - [ - 382, - 4276, - 405, - 4300 - ], - [ - 403, - 4276, - 426, - 4299 - ], - [ - 423, - 4275, - 462, - 4300 - ], - [ - 456, - 4276, - 478, - 4299 - ], - [ - 475, - 4275, - 498, - 4299 - ], - [ - 493, - 4294, - 499, - 4300 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 73, - 4934, - 224, - 4966 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 189, - 4938, - 197, - 4963 - ], - [ - 199, - 4938, - 207, - 4963 - ], - [ - 209, - 4938, - 220, - 4962 - ], - [ - 78, - 4940, - 87, - 4964 - ], - [ - 88, - 4940, - 96, - 4964 - ], - [ - 98, - 4940, - 106, - 4964 - ], - [ - 108, - 4940, - 115, - 4964 - ], - [ - 117, - 4940, - 124, - 4964 - ], - [ - 126, - 4939, - 134, - 4964 - ], - [ - 136, - 4939, - 143, - 4964 - ], - [ - 145, - 4939, - 153, - 4963 - ], - [ - 154, - 4939, - 163, - 4963 - ], - [ - 165, - 4939, - 173, - 4963 - ], - [ - 175, - 4939, - 183, - 4963 - ], - [ - 184, - 4958, - 187, - 4963 - ], - [ - 202, - 4942, - 204, - 4959 - ], - [ - 91, - 4943, - 93, - 4961 - ], - [ - 101, - 4943, - 103, - 4950 - ], - [ - 157, - 4946, - 160, - 4955 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 168, - 5326, - 500, - 5432 - ], - "bubble_bbox": [ - 106, - 5210, - 570, - 5535 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 289, - 5347, - 297, - 5353 - ], - [ - 199, - 5374, - 215, - 5387 - ], - [ - 222, - 5374, - 238, - 5387 - ], - [ - 384, - 5375, - 391, - 5382 - ], - [ - 340, - 5402, - 351, - 5409 - ], - [ - 221, - 5403, - 234, - 5414 - ], - [ - 283, - 5403, - 299, - 5416 - ], - [ - 240, - 5340, - 266, - 5363 - ], - [ - 263, - 5340, - 287, - 5363 - ], - [ - 281, - 5339, - 301, - 5363 - ], - [ - 304, - 5340, - 343, - 5362 - ], - [ - 352, - 5340, - 373, - 5362 - ], - [ - 366, - 5340, - 391, - 5363 - ], - [ - 386, - 5340, - 407, - 5362 - ], - [ - 405, - 5340, - 428, - 5363 - ], - [ - 320, - 5357, - 327, - 5363 - ], - [ - 375, - 5368, - 396, - 5392 - ], - [ - 397, - 5368, - 418, - 5391 - ], - [ - 431, - 5368, - 456, - 5391 - ], - [ - 180, - 5369, - 201, - 5391 - ], - [ - 196, - 5369, - 219, - 5392 - ], - [ - 218, - 5369, - 242, - 5392 - ], - [ - 240, - 5369, - 265, - 5391 - ], - [ - 274, - 5369, - 295, - 5391 - ], - [ - 289, - 5369, - 313, - 5392 - ], - [ - 308, - 5369, - 329, - 5391 - ], - [ - 337, - 5369, - 361, - 5392 - ], - [ - 356, - 5369, - 378, - 5391 - ], - [ - 413, - 5369, - 434, - 5391 - ], - [ - 451, - 5369, - 466, - 5392 - ], - [ - 466, - 5369, - 489, - 5392 - ], - [ - 431, - 5396, - 445, - 5413 - ], - [ - 216, - 5398, - 239, - 5419 - ], - [ - 236, - 5398, - 258, - 5419 - ], - [ - 255, - 5397, - 281, - 5420 - ], - [ - 280, - 5398, - 303, - 5421 - ], - [ - 301, - 5397, - 326, - 5420 - ], - [ - 333, - 5398, - 355, - 5420 - ], - [ - 351, - 5397, - 375, - 5420 - ], - [ - 369, - 5397, - 393, - 5420 - ], - [ - 390, - 5397, - 413, - 5420 - ], - [ - 415, - 5397, - 434, - 5413 - ], - [ - 412, - 5414, - 418, - 5420 - ], - [ - 427, - 5415, - 434, - 5420 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 683, - 5614, - 700, - 5846 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/ddceb04ec58b4cd4bf6a30d16d134737.jpeg", - "context_path": "contexts/183/context.json", - "id": 86406 - }, - { - "blk_list": [ - { - "text_bbox": [ - 78, - 445, - 379, - 698 - ], - "bubble_bbox": [ - 28, - 428, - 426, - 703 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 143, - 576, - 159, - 589 - ], - [ - 168, - 575, - 179, - 584 - ], - [ - 344, - 576, - 355, - 589 - ], - [ - 276, - 578, - 280, - 584 - ], - [ - 243, - 540, - 252, - 556 - ], - [ - 115, - 542, - 129, - 564 - ], - [ - 137, - 542, - 150, - 563 - ], - [ - 152, - 542, - 169, - 564 - ], - [ - 186, - 542, - 201, - 564 - ], - [ - 208, - 542, - 222, - 563 - ], - [ - 224, - 542, - 240, - 563 - ], - [ - 261, - 542, - 274, - 564 - ], - [ - 283, - 542, - 305, - 563 - ], - [ - 306, - 542, - 323, - 564 - ], - [ - 323, - 542, - 341, - 564 - ], - [ - 131, - 543, - 134, - 564 - ], - [ - 202, - 543, - 206, - 564 - ], - [ - 170, - 557, - 174, - 567 - ], - [ - 241, - 558, - 246, - 563 - ], - [ - 91, - 572, - 94, - 593 - ], - [ - 96, - 572, - 114, - 593 - ], - [ - 127, - 572, - 141, - 593 - ], - [ - 140, - 572, - 163, - 593 - ], - [ - 164, - 572, - 182, - 594 - ], - [ - 183, - 572, - 203, - 593 - ], - [ - 205, - 572, - 221, - 593 - ], - [ - 221, - 572, - 240, - 593 - ], - [ - 249, - 571, - 262, - 593 - ], - [ - 271, - 571, - 285, - 593 - ], - [ - 287, - 572, - 305, - 593 - ], - [ - 306, - 571, - 322, - 592 - ], - [ - 323, - 572, - 340, - 593 - ], - [ - 341, - 572, - 358, - 593 - ], - [ - 110, - 587, - 115, - 593 - ], - [ - 360, - 588, - 365, - 593 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 202, - 1576, - 446, - 1651 - ], - "bubble_bbox": [ - 163, - 1491, - 487, - 1724 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 217, - 1592, - 232, - 1603 - ], - [ - 342, - 1591, - 351, - 1599 - ], - [ - 410, - 1592, - 419, - 1603 - ], - [ - 330, - 1594, - 333, - 1599 - ], - [ - 384, - 1593, - 387, - 1599 - ], - [ - 255, - 1618, - 270, - 1629 - ], - [ - 306, - 1618, - 315, - 1625 - ], - [ - 360, - 1618, - 369, - 1625 - ], - [ - 215, - 1588, - 235, - 1607 - ], - [ - 237, - 1588, - 249, - 1607 - ], - [ - 251, - 1588, - 266, - 1607 - ], - [ - 291, - 1588, - 304, - 1607 - ], - [ - 306, - 1588, - 325, - 1606 - ], - [ - 325, - 1588, - 338, - 1607 - ], - [ - 339, - 1588, - 354, - 1608 - ], - [ - 379, - 1588, - 392, - 1607 - ], - [ - 393, - 1588, - 405, - 1607 - ], - [ - 407, - 1588, - 422, - 1607 - ], - [ - 423, - 1588, - 436, - 1607 - ], - [ - 274, - 1589, - 291, - 1607 - ], - [ - 363, - 1589, - 379, - 1607 - ], - [ - 391, - 1612, - 398, - 1627 - ], - [ - 253, - 1614, - 273, - 1633 - ], - [ - 275, - 1614, - 287, - 1633 - ], - [ - 287, - 1614, - 302, - 1633 - ], - [ - 303, - 1614, - 318, - 1634 - ], - [ - 328, - 1614, - 340, - 1634 - ], - [ - 341, - 1614, - 356, - 1633 - ], - [ - 357, - 1614, - 372, - 1634 - ], - [ - 373, - 1614, - 388, - 1633 - ], - [ - 389, - 1628, - 393, - 1633 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 374, - 2815, - 587, - 2902 - ], - "bubble_bbox": [ - 317, - 2735, - 643, - 2979 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 447, - 2833, - 464, - 2848 - ], - [ - 498, - 2833, - 510, - 2842 - ], - [ - 536, - 2867, - 548, - 2882 - ], - [ - 481, - 2869, - 486, - 2876 - ], - [ - 487, - 2827, - 493, - 2838 - ], - [ - 429, - 2829, - 445, - 2853 - ], - [ - 444, - 2829, - 467, - 2852 - ], - [ - 469, - 2829, - 485, - 2853 - ], - [ - 494, - 2829, - 514, - 2854 - ], - [ - 515, - 2829, - 534, - 2853 - ], - [ - 409, - 2862, - 426, - 2886 - ], - [ - 448, - 2862, - 464, - 2887 - ], - [ - 476, - 2862, - 492, - 2886 - ], - [ - 388, - 2863, - 408, - 2886 - ], - [ - 427, - 2863, - 446, - 2886 - ], - [ - 505, - 2863, - 523, - 2886 - ], - [ - 526, - 2863, - 530, - 2886 - ], - [ - 533, - 2863, - 552, - 2886 - ], - [ - 553, - 2880, - 559, - 2886 - ], - [ - 561, - 2880, - 567, - 2886 - ], - [ - 568, - 2880, - 574, - 2886 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 688, - 3387, - 700, - 3404 - ], - "bubble_bbox": null, - "text_class": "text_free", - "inpaint_bboxes": [ - [ - 690, - 3391, - 697, - 3395 - ], - [ - 691, - 3396, - 698, - 3401 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - }, - { - "text_bbox": [ - 120, - 3946, - 384, - 4030 - ], - "bubble_bbox": [ - 60, - 3870, - 441, - 4101 - ], - "text_class": "text_bubble", - "inpaint_bboxes": [ - [ - 152, - 3997, - 171, - 4012 - ], - [ - 181, - 3996, - 193, - 4006 - ], - [ - 265, - 3997, - 284, - 4012 - ], - [ - 215, - 3999, - 220, - 4007 - ], - [ - 185, - 3957, - 202, - 3982 - ], - [ - 297, - 3957, - 318, - 3983 - ], - [ - 165, - 3958, - 184, - 3982 - ], - [ - 203, - 3958, - 223, - 3982 - ], - [ - 224, - 3958, - 241, - 3983 - ], - [ - 243, - 3958, - 264, - 3982 - ], - [ - 265, - 3958, - 284, - 3982 - ], - [ - 320, - 3958, - 339, - 3982 - ], - [ - 133, - 3992, - 150, - 4017 - ], - [ - 148, - 3992, - 175, - 4017 - ], - [ - 177, - 3992, - 197, - 4018 - ], - [ - 209, - 3992, - 226, - 4017 - ], - [ - 238, - 3992, - 260, - 4017 - ], - [ - 262, - 3992, - 288, - 4017 - ], - [ - 288, - 3992, - 310, - 4017 - ], - [ - 312, - 3992, - 331, - 4017 - ], - [ - 333, - 3992, - 348, - 4017 - ], - [ - 350, - 3992, - 368, - 4017 - ], - [ - 365, - 4010, - 371, - 4017 - ] - ], - "lines": null, - "text_segm_points": null, - "texts": [], - "translation": "", - "line_spacing": 1, - "alignment": "", - "source_lang": "", - "target_lang": "", - "min_font_size": 0, - "max_font_size": 0, - "font_color": "" - } - ], - "prompt": [ - { - "role": "system", - "content": [ - { - "type": "text", - "text": "You are an expert manga/manhwa translator from English to Portuguese (Brazilian). Produce natural, authentic Portuguese (Brazilian) translations.\n\n CRITICAL — OCR NOISE REMOVAL (HIGHEST PRIORITY):\n The input comes from OCR which frequently produces garbage artifacts. You MUST:\n - STRIP all sequences of repeated characters such as: ////, ++++, ====, ----, ...., ____, ~~~~, ****, ####, @@@@, !!!!, ????, $$$$, ^^^^ and ANY similar pattern of 3+ repeated symbols.\n - STRIP random sequences of symbols/punctuation that form no real word (e.g. \"/-_=+\", \";;::,,\", \"><><><\").\n - STRIP stray single characters or fragments that are clearly OCR artifacts, not actual text.\n - If a text block is ENTIRELY noise/garbage with no recoverable meaning, return an empty string \"\" for that block.\n - If a block contains a MIX of real text and noise, extract ONLY the real text, discard the noise, and translate the real text.\n - STRIP any HTML tags injected by OCR (e.g. , , , ,
,

, etc.). Keep only the plain text content inside the tags.\n - Correct obvious OCR typos/misspellings while preserving the original meaning.\n\n Translation Rules:\n - Translate naturally — use idioms, slang, and speech patterns appropriate for Portuguese (Brazilian).\n - Never use forbidden pronouns: 당신, 그녀, 그 (or Japanese equivalents). Use character names/titles instead.\n - Use page images and prior context to resolve ambiguous pronouns and character gender.\n - Maintain character reference consistency across all text blocks.\n\n Input/Output Protocol:\n - Input and output are JSON objects with block keys (block_0, block_1, etc.).\n - Keep ALL JSON keys unchanged.\n - If the block already contains Portuguese (Brazilian) text, keep it as-is.\n - Output ONLY the translated JSON. No explanations, no comments, no markdown.\n\n Priority Order:\n 1. Remove OCR noise/artifacts FIRST\n 2. Natural, fluent translation\n 3. Context-aware pronoun/gender resolution\n 4. Cross-block consistency" - } - ] - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"AND HOW MANY YEARS DID YOU EVEN KNOW HIM?\",\n \"block_1\": \"I KNEW HIM FOR TWENTY YEARS! TWENTY! A LONG TIME WHERE THE WORLD CHANGED TWICE OVER!\",\n \"block_2\": \"WAIT, DIDN'T YOU JUST SAY TIME WASN'T IMPORTANT?\",\n \"block_3\": \"QUIET! STOP TALKING NONSENSE AND FOLLOW ME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO THAT'S THE GUY MY FRIEND RECOMMENDED?\",\n \"block_6\": \"y My ED? I'LL HAVE TO SEE FOR MYSELF IF HIS SKILLS ARE ACTUALLY AS GOOD AS HE CLAIMED.\",\n \"block_7\": \"\\\"THE FINAL FEAST OF LIFE'S JOURNEY.\\\" THAT'S WHAT MY FRIEND USED TO CALL IT.\",\n \"block_8\": \"...\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E QUANTOS ANOS VOCÊ CONHECIA ELE, AFINAL?\",\n \"block_1\": \"CONHECI ELE POR VINTE ANOS! VINTE! TEMPO PRA CARAMBA, ONDE O MUNDO MUDA UMAS DUAS VEZES!\",\n \"block_2\": \"PERA, VOCÊ NÃO DISSE QUE TEMPO NÃO IMPORTAVA?\",\n \"block_3\": \"CALADO! PARA DE FALAR BESTEIRA E ME SEGUE.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO ESSE É O CARA QUE MEU AMIGO RECOMENDOU?\",\n \"block_6\": \"VOU TER QUE VER COM MEUS PRÓPRIOS OLHOS SE A HABILIDADE DELE É TÃO BOA QUANTO ELE ALEGAVA.\",\n \"block_7\": \"\\\"O ÚLTIMO BANQUETE DA JORNADA DA VIDA.\\\" ERA ASSIM QUE MEU AMIGO CHAMAVA.\",\n \"block_8\": \"...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"BY THE WAY, THERE ARE A HELL OF A LOT OF PEOPLE HERE.\",\n \"block_1\": \"IT WAS A BIG CITY TO BEGIN WITH. PLUS. LOOK AT THE SIZE OF THIS BANQUET.\",\n \"block_2\": \"WORD IS, EVERY MERCHANT IN THE SURROUNDING AREA HAS FLOCKED HERE.\",\n \"block_3\": \"WHAT KIND OF PARTY LASTS FOR THREE WHOLE DAYS? WELL, AT LEAST THERE'LL BE PLENTY TO EAT AND SEE.\",\n \"block_4\": \"I HEARD THERE'S A MARTIAL ARTS TOURNAMENT TOO. MAYBE I SHOULD JOIN?\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"DON'T BE RIDICULOUS. ARE YOU TRYING TO TURN THE WHOLE TOURNAMENT INTO A CRIME SCENE?\",\n \"block_7\": \"I'LL GO EASY ON THEM.\",\n \"block_8\": \"STILL NO. LOOK AT YOUR SIZE, YOU THINK YOU CAN HIDE THAT JUST BY \\\"GOING EASY\\\"?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FALANDO NISSO, TEM UMA PORÇÃO DE GENTE AQUI, HEIN.\",\n \"block_1\": \"A CIDADE JÁ ERA GRANDE. FORA ISSO, OLHA O TAMANHO DESSE BANQUETE.\",\n \"block_2\": \"DIZEM QUE TODO COMERCIANTE DA REGIÃO VEIO PRA CÁ.\",\n \"block_3\": \"QUE FESTA É ESSA QUE DURA TRÊS DIAS INTEIROS? BOM, PELO MENOS VAI TER COMIDA E ATRAÇÃO PRA CARAMBA.\",\n \"block_4\": \"OUVI FALAR QUE VAI TER TORNEIO DE ARTES MARCIAIS TAMBÉM. SERÁ QUE EU ENTRO?\",\n \"block_5\": \"\",\n \"block_6\": \"NÃO SEJA RIDÍCULO. CÊ QUER TRANSFORMAR O TORNEIO INTEIRO NUMA CENA DE CRIME?\",\n \"block_7\": \"EU PEGO LEVE COM ELES.\",\n \"block_8\": \"AINDA NÃO. OLHA O SEU TAMANHO, CÊ ACHA QUE DÁ PRA ESCONDER ISSO SÓ \\\"PEGANDO LEVE\\\"?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"HE CERTAINLY SEEMS TO HAVE BEEN TRAINED PROPERLY.\",\n \"block_1\": \"--- ,,,,,, .\",\n \"block_2\": \"ŀ\",\n \"block_3\": \"HE'S INCREDIBLY SKILLED.\",\n \"block_4\": \"IT'S BEYOND JUST \\\"SKILLED.\\\"\",\n \"block_5\": \"DIDN'T YOU SEE HIS BLADE WORK? HIS MOVEMENTS ARE SO CLEAN IT'S ALMOST CHILLING.\",\n \"block_6\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PARECE QUE ELE FOI BEM TREINADO MESMO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"ELE É INCRIVELMENTE HÁBIL.\",\n \"block_4\": \"ISSO VAI MUITO ALÉM DE SER SÓ \\\"HÁBIL\\\".\",\n \"block_5\": \"NÃO VIU O TRABALHO DE LÂMINA DELE? OS MOVIMENTOS SÃO TÃO LIMPOS QUE CHEGAM A ARREPIAR.\",\n \"block_6\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"OH! 15 THAT SO?\",\n \"block_1\": \"GO GRAB THAT LETTER FOR ME.\",\n \"block_2\": \"THIS IS THE LETTER HE LEFT FOR US TO SHOW TO ANYONE VISITING FROM THE HAHLI CLAN.\",\n \"block_3\": \"HE SAYS HIS HAND-PICKED SUCCESSORS ARE JUST AS SKILLED AS HE WAS, SO YOU CAN FULLY TRUST THEM WITH THE WORK ...\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"WELL, IF HE VOUCHED FOR YOUR SKILLS, THAT'S A RELIEF, BUT ... 1100\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AH! É MESMO?\",\n \"block_1\": \"VAI PEGAR AQUELA CARTA PRA MIM.\",\n \"block_2\": \"ESSA É A CARTA QUE ELE DEIXOU PRA GENTE MOSTRAR PRA QUALQUER UM QUE VIESSE DO CLÃ HAHLI.\",\n \"block_3\": \"ELE DIZ QUE OS SUCESSORES QUE ELE ESCOLHEU A DEDO SÃO TÃO HABILIDOSOS QUANTO ELE ERA, ENTÃO PODE CONFIAR TOTALMENTE NO TRABALHO DELES...\",\n \"block_4\": \"\",\n \"block_5\": \"BOM, SE ELE GARANTIU A HABILIDADE DE CÊS, ISSO É UM ALÍVIO, MAS...\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHOA!\",\n \"block_1\": \"THAT'S SOME UNBELIEVABLE STRENGTH!\",\n \"block_2\": \"HE TRULY HAS THE \\\"STRENGTH TO PLUCK A MOUNTAIN AND AN AURA TO COVER THE WORLD.\\\"\",\n \"block_3\": \"I DON'T THINK THAT'S POSSIBLE WITH JUST RAW STRENGTH ALONE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"IT'S ABSOLUTELY IMPOSSIBLE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"UAU!\",\n \"block_1\": \"ISSO SIM É UMA FORÇA INACREDITÁVEL!\",\n \"block_2\": \"ELE REALMENTE TEM A \\\"FORÇA PARA ARRANCAR UMA MONTANHA E UMA AURA PARA COBRIR O MUNDO.\\\"\",\n \"block_3\": \"ACHO QUE SÓ FORÇA BRUTA NÃO EXPLICA ISSO.\",\n \"block_4\": \"\",\n \"block_5\": \"É ABSOLUTAMENTE IMPOSSÍVEL.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINALLY...\",\n \"block_1\": \"VORTEXSCANS.COM\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"FINALMENTE...\",\n \"block_1\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"NOW THAT THE CULT LEADER AND THE COUNCIL OF ELDERS HAVE BEEN DEALT WITH, SEIZING CONTROL OF THE CULT IS ONLY A MATTER OF TIME!\",\n \"block_1\": \"\",\n \"block_2\": \"- . _\",\n \"block_3\": \"REPORTING,
SIR!\",\n \"block_4\": \"SPEAK, HAVE THE REMAINING RESISTANCE FORCES BEEN NEUTRALIZED?\",\n \"block_5\": \"MOST HAVE BEEN ELIMINATED, BUT SEVERAL INDIVIDUALS ESCAPED FROM THE TREASURE VAULT WITH THE SACRED RELICS!\",\n \"block_6\": \"VORTEXSCANS.COM\",\n \"block_7\": \"WHAT? THEY TOOK THE HEAVENLY DEMON RING?!\",\n \"block_8\": \"1 P / 1 _ = _ _\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"AGORA QUE O LÍDER DO SEITO E O CONSELHO DE ANCIÃOS FORAM ELIMINADOS, TOMAR O CONTROLE DO SEITO É SÓ QUESTÃO DE TEMPO!\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"RELATÓRIO, SENHOR!\",\n \"block_4\": \"FALA. AS FORÇAS DE RESISTÊNCIA RESTANTES FORAM NEUTRALIZADAS?\",\n \"block_5\": \"A MAIORIA FOI ELIMINADA, MAS ALGUNS INDIVÍDUOS FUGIRAM DO COFRE DO TESOURO COM AS RELÍQUIAS SAGRADAS!\",\n \"block_6\": \"\",\n \"block_7\": \"O QUÊ? ELES LEVARAM O ANEL DO DEMÔNIO CELESTIAL?!\",\n \"block_8\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"IT DOESN'T MATTER.\",\n \"block_1\": \"YOU'RE CLEARLY NO ORDINARY BUTCHER.\",\n \"block_2\": \"WHO THE HELL ARE YOU PEOPLE?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"NÃO IMPORTA.\",\n \"block_1\": \"CÊ CLARAMENTE NÃO É UM AÇOUGUEIRO COMUM.\",\n \"block_2\": \"QUEM DIABOS CÊS SÃO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"TÁ BOM, TÁ BOM! JÁ ENTENDI. ESQUECE O QUE EU PERGUNTEI.\",\n \"block_1\": \"UM DOCINHO AQUI!\",\n \"block_2\": \"CÊ É MUITO CRIANÇA...\",\n \"block_3\": \"\",\n \"block_4\": \"COM LICENÇA SÓ UM INSTANTE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WHAT IS IT?\",\n \"block_1\": \"MY APOLOGIES, BUT MAY I ASK WHERE YOU'RE FROM AND WHAT YOUR BUSINESS IS HERE?\",\n \"block_2\": \"IF YOU'RE SORRY, THEN DON'T ASK- MMPH!\",\n \"block_3\": \"WE'RE FROM SOHEUNG.\",\n \"block_4\": \"WE WERE TOLD A HEAD BUTCHER WAS NEEDED FOR THE BANQUET.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"O QUE FOI?\",\n \"block_1\": \"DESCULPE, MAS POSSO PERGUNTAR DE ONDE CÊS SÃO E O QUE VIERAM FAZER AQUI?\",\n \"block_2\": \"SE TÁ COM PENA, ENTÃO NÃO PERGUNTA — MMFF!\",\n \"block_3\": \"NÓS SOMOS DE SOHEUNG.\",\n \"block_4\": \"DISSERAM QUE PRECISAVA DE UM AÇOUGUEIRO-CHEFE PRO BANQUETE.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THEN WHO IS RUNNING THIS BUTCHER SHOP NOW?\",\n \"block_1\": \"MY OLDER BROTHERS ARE IN CHARGE OF IT.\",\n \"block_2\": \"I SEE... THIS IS QUITE A DILEMMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLACK\",\n \"block_5\": \"UGH.\",\n \"block_6\": \"OOPS! MY APOLOGIES.\",\n \"block_7\": \"\",\n \"block_8\": \"VORTEXSCANS.COM\",\n \"block_9\": \"HAHA! IT'S QUITE ALRIGHT.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ENTÃO QUEM É QUE TÁ TOCANDO O AÇOUGUE AGORA?\",\n \"block_1\": \"MEUS IRMÃOS MAIS VELHOS QUE TÃO CUIDANDO.\",\n \"block_2\": \"ENTENDO... ISSO É UM PROBLEMA.\",\n \"block_3\": \"....\",\n \"block_4\": \"CLAC\",\n \"block_5\": \"UG.\",\n \"block_6\": \"OPS! DESCULPA.\",\n \"block_7\": \"\",\n \"block_8\": \"\",\n \"block_9\": \"HAHA! TUDO BEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"MY FRIEND IS GONE, I TELL YOU! MY FRIEND! HOW CAN I BE AT PEACE?\",\n \"block_1\": \"! • • • 7\",\n \"block_2\": \"Mark Mark Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Market Ma A THE RESERVE THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THE PARTY OF THEY TALKED A LOT. BUT I NEVER GOT THE VIBE THEY WERE ACTUALLY \\\"FRIENDS.\\\" THEIR STATUS DIFFERENCE WAS HUGE, TOO. with the same dillet Manufital\",\n \"block_3\": \"WHAT? IS THE WORD \\\"FRIEND\\\" SO STRANGE TO YOU?\",\n \"block_4\": \"HONESTLY, YES.\",\n \"block_5\": \"VORTEXSCANS.COM\",\n \"block_6\": \"I DIDN'T THINK YOU TWO HAD SPENT ENOUGH TIME TOGETHER TO SHARE SUCH A DEEP BOND.\",\n \"block_7\": \"IT'S NOT ABOUT TIME, YOU FOOL! IT'S THE HEART THAT MATTERS!\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"MEU AMIGO SE FOI, TÔ TE DIZENDO! MEU AMIGO! COMO É QUE EU VOU FICAR EM PAZ?\",\n \"block_1\": \"\",\n \"block_2\": \"ELES CONVERSAVAM MUITO. MAS EU NUNCA TIVE A IMPRESSÃO QUE FOSSEM REALMENTE \\\"AMIGOS\\\". A DIFERENÇA DE STATUS ENTRE ELES ERA GIGANTESCA TAMBÉM.\",\n \"block_3\": \"QUÊ? A PALAVRA \\\"AMIGO\\\" É TÃO ESTRANHA ASSIM PRA VOCÊ?\",\n \"block_4\": \"SINCERAMENTE, SIM.\",\n \"block_5\": \"\",\n \"block_6\": \"EU NÃO ACHO QUE VOCÊS PASSARAM TEMPO SUFICIENTE JUNTOS PRA TER UM LAÇO TÃO PROFUNDO.\",\n \"block_7\": \"NÃO É SOBRE TEMPO, SEU TONTO! O QUE IMPORTA É O CORAÇÃO!\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"and this fit THE REALM OF SPIRIT-BREAKING INTENT\\\"! AS EXPECTED OF GREAT-GRANDFATHER!\",\n \"block_1\": \"SHOULD I JUST DODGE? OR SHOULD I COUNTER? dini\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"E ESSA COISA É O NÍVEL DA INTENÇÃO DE ROMPER O ESPÍRITO! COMO ERA DE SE ESPERAR DO BISAVÔ!\",\n \"block_1\": \"SERÁ QUE EU DESVIO? OU SERÁ QUE EU REVIDO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"WE HOLD A BANQUET EVERY YEAR FOR THE GREAT LORD'S BIRTHDAY, BUT THIS ONE IS ON A WHOLE DIFFERENT SCALE.\",\n \"block_1\": \"THE AMOUNT OF FOOD AND MEAT REQUIRED WILL BE BEYOND YOUR IMAGINATION. ARE YOU CONFIDENT?\",\n \"block_2\": \"WE WILL DO OUR ABSOLUTE BEST.\",\n \"block_3\": \"IT'S A COMMON ENOUGH PHRASE, BUT FOR SOME REASON, HE SOUNDS RELIABLE.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"THE BANQUET IS ON THE UPCOMING FULL MOON. MAKE SURE YOU AREN'T LATE.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A GENTE FAZ UM BANQUETE TODO ANO PRO ANIVERSÁRIO DO GRANDE LÍDER, MAS ESSE AQUI É DE UM NÍVEL TOTALMENTE DIFERENTE.\",\n \"block_1\": \"A QUANTIDADE DE COMIDA E CARNE VAI ALÉM DO QUE CÊ PODE IMAGINAR. TÃO CONFIANTES?\",\n \"block_2\": \"A GENTE VAI DAR O NOSSO MELHOR.\",\n \"block_3\": \"É UMA FRASE ATÉ QUE COMUM, MAS POR ALGUM MOTIVO, ELE PARECE CONFIÁVEL.\",\n \"block_4\": \"\",\n \"block_5\": \"O BANQUETE É NA PRÓXIMA LUA CHEIA. NÃO SE ATRASEM.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"TO THINK A MERE GATEKEEPER COULD RADIATE SUCH AN AURA.\",\n \"block_1\": \"HE GIVES OFF A SIMILAR VIBE TO THAT GUY.\",\n \"block_2\": \"THAT GUY?\",\n \"block_3\": \"NOE-JEON. HE HAS A SIMILAR FEEL.\",\n \"block_4\": \"3 OH! RIGHT, NOW THAT YOU MENTION IT, THEY REALLY DO LOOK ALIKE. THEIR FACES AND BUILDS ARE ALMOST IDENTICAL.\",\n \"block_5\": \"EVEN THE WAY HE CLUTCHES HIS SWORD TO HIS CHEST IS THE SAME. I'D BELIEVE IT IF SOMEONE SAID THEY WERE BROTHERS.\",\n \"block_6\": \"HEHE! SUDDENLY I MISS THAT GUY. IT WAS ALWAYS FUN PUTTING HIM IN HIS PLACE WHENEVER HE TRIED TO ACT TOUGH.\",\n \"block_7\": \"VORTEXSCANS.COM\",\n \"block_8\": \"I WONDER HOW THE REST OF THE BOYS ARE DOING.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"PENSAR QUE UM MERO GUARDA PODERIA EMITIR UMA AURA DESSAS.\",\n \"block_1\": \"ELE PASSA UMA VIBE PARECIDA COM A DAQUELE CARA.\",\n \"block_2\": \"AQUELE CARA?\",\n \"block_3\": \"O NOE-JEON. ELE TEM UMA SENSAÇÃO PARECIDA.\",\n \"block_4\": \"AH! É MESMO, AGORA QUE CÊ FALOU, ELES SE PARECEM MESMO. OS ROSTOS E A ESTRUTURA SÃO QUASE IDÊNTICOS.\",\n \"block_5\": \"ATÉ O JEITO QUE ELE SEGURA A ESPADA JUNTO AO PEITO É IGUAL. EU ACREDITARIA SE ALGUÉM DISSESSE QUE ERAM IRMÃOS.\",\n \"block_6\": \"HEHE! DE REPENTE, SENTI SAUDADES DAQUELE CARA. ERA SEMPRE DIVERTIDO BOTAR ELE NO LUGAR DELE QUANDO TENTAVA SE ACHAR.\",\n \"block_7\": \"\",\n \"block_8\": \"SERÁ QUE O RESTO DO PESSOAL TÁ BEM?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"I'M SORRY. IT SEEMS WE DON'T HAVE THE SPECIFIC CUT YOU'RE LOOKING FOR.\",\n \"block_1\": \"And de first de first de first de first de factorfactor factor of Businestation of the nestations of the party State of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the contract of the c the property of the property of ocean ocean ocean ocean Defice Defin veloce defice for\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, I DIDN'T COME HERE TO BUY MEAT.\",\n \"block_6\": \"IF YOU DIDN'T COME TO BUY MEAT, THEN ...?\",\n \"block_7\": \"THEY'RE FROM THE HAHLI CLAN. THEY'RE HERE TO RECRUIT A \\\"HEAD BUTCHER.\\\"\",\n \"block_8\": \"ARE YOU LOOKING FOR OLD MAN SO, THE PREVIOUS OWNER?\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"DESCULPE. PARECE QUE A GENTE NÃO TEM O CORTE ESPECÍFICO QUE CÊ TÁ PROCURANDO.\",\n \"block_1\": \"\",\n \"block_2\": \"\",\n \"block_3\": \"\",\n \"block_4\": \"\",\n \"block_5\": \"AH, EU NÃO VIM AQUI PRA COMPRAR CARNE.\",\n \"block_6\": \"SE NÃO VEIO PRA COMPRAR CARNE, ENTÃO...?\",\n \"block_7\": \"ELES SÃO DO CLÃ HAHLI. TÃO AQUI PRA CONTRATAR UM \\\"AÇOUGUEIRO-CHEFE\\\".\",\n \"block_8\": \"CÊS TÃO PROCURANDO O VELHO SO, O DONO ANTIGO?\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"And American State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the State of the S Manager 1 Married Married Land of the Lot of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the land of the lan N-NO WAY! HE'S FACING THE AURA OF GREAT-GRANDFATHER-ONE OF THE THREE MARTIAL ECCENTRICS- WITHOUT EVEN FLINCHING! MININ Name of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park of the Park o Wall Williams\",\n \"block_1\": \"HOW INTERESTING.\",\n \"block_2\": \"VORTEXSCANS.COM\",\n \"block_3\": \"YOU SHOULD STOP PLAYING AROUND, I WON'T BE ABLE TO HOLD HIM BACK A SECOND TIME.\",\n \"block_4\": \"VORTEXSCANS.COM\",\n \"block_5\": \"SO YOU'RE SAYING YOU WENT EASY ON ME? HAHAHA! SHOULD I BE THANKING YOU THEN?\",\n \"block_6\": \"_ ....\",\n \"block_7\": \"I'M ONLY SAYING THIS BECAUSE I'M WORRIED THE WORK HERE WILL BE DELAYED.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"N-NÃO ACREDITO! ELE ESTÁ ENFRENTANDO A AURA DO BISAVÔ — UM DOS TRÊS EXCÊNTRICOS DAS ARTES MARCIAIS — SEM NEM TREMER!\",\n \"block_1\": \"QUE INTERESSANTE.\",\n \"block_2\": \"\",\n \"block_3\": \"É MELHOR PARAR DE BRINCAR, NÃO VOU SEGURAR ELE DE NOVO.\",\n \"block_4\": \"\",\n \"block_5\": \"ENTÃO CÊ TÁ DIZENDO QUE PEGOU LEVE COMIGO? HAHAHA! DEVO AGRADECER ENTÃO?\",\n \"block_6\": \"\",\n \"block_7\": \"SÓ TÔ FALANDO ISSO PORQUE TÔ PREOCUPADO COM O SERVIÇO ATRASAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"// / THAT IS CORRECT.\",\n \"block_1\": \"EVERY YEAR AROUND THIS TIME, WE ORDER SOHELING LIQUOR AND INVITE OLD MAN SO TO HELP PREPARE FOR OUR MAIN FAMILY'S BANQUET.\",\n \"block_2\": \"IT'S BEEN WELL OVER TWENTY YEARS NOW. I NEVER IMAGINED HE WOULD HAVE PASSED AWAY.\",\n \"block_3\": \"SO YOU'RE HERE FOR THE GREAT LORD'S 70TH BIRTHDAY CELEBRATION.\",\n \"block_4\": \"THAT'S RIGHT. BUT HOW DID YOU ...\",\n \"block_5\": \"BEFORE HE PASSED. OLD MAN SO LEFT US SOME INSTRUCTIONS. HE SAID THAT PEOPLE FROM THE HAHLI CLAN WOULD EVENTUALLY COME, AND THAT WE SHOULD DO OUR BEST TO HELP THEM.\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"ISSO MESMO.\",\n \"block_1\": \"TODO ANO POR ESSA ÉPOCA, A GENTE ENCOMENDA A BEBIDA DE SOHELING E CHAMA O VELHO SO PRA AJUDAR A PREPARAR O BANQUETE DA FAMÍLIA PRINCIPAL.\",\n \"block_2\": \"JÁ FAZ BEM MAIS DE VINTE ANOS. NUNCA IMAGINEI QUE ELE TIVESSE FALECIDO.\",\n \"block_3\": \"ENTÃO CÊS TÃO AQUI PRA FESTA DE 70 ANOS DO GRANDE LÍDER.\",\n \"block_4\": \"ISSO MESMO. MAS COMO É QUE CÊ...\",\n \"block_5\": \"ANTES DE MORRER, O VELHO SO DEIXOU UMAS INSTRUÇÕES PRA GENTE. ELE DISSE QUE UMA HORA DESSAS VIRIA GENTE DO CLÃ HAHLI, E QUE A GENTE DEVIA FAZER O POSSÍVEL PRA AJUDAR.\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"THE DIVINE DEMONIC UNIT?\",\n \"block_1\": \"DONT TELL ME!\",\n \"block_2\": \"Alle Processis IS HE HEADING TOWARD SAMA GEON?! Mirestill 1\",\n \"block_3\": \"HMPH! THIS IS GOING TO BE A PROBLEM.\",\n \"block_4\": \"精肉店\"\n}" - } - ] - }, - { - "role": "assistant", - "content": "{\n \"block_0\": \"A UNIDADE DIVINA DEMONÍACA?\",\n \"block_1\": \"NÃO ME DIGA!\",\n \"block_2\": \"ELE ESTÁ INDO EM DIREÇÃO A SAMA GEON?!\",\n \"block_3\": \"HMPF! ISSO VAI SER UM PROBLEMA.\",\n \"block_4\": \"\"\n}" - }, - { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - } - ], - "new_message": { - "role": "user", - "content": [ - { - "type": "text", - "text": "Make the translation sound as natural as possible.\nTranslate this:\n{\n \"block_0\": \"FINE, FINE! I GET IT. FORGET I ASKED.\",\n \"block_1\": \"ONE SUGAR CANDY OVER HERE!\",\n \"block_2\": \"YOU'RE SUCH A KID ...\",\n \"block_3\": \"\",\n \"block_4\": \"EXCUSE ME FOR A MOMENT.\"\n}" - } - ] - }, - "folder": "chapters/5473", - "path_raw": "chapters/5473/raw/575c69c2991c4a34ba25d85b07e6df95.jpeg", - "context_path": "contexts/183/context.json", - "id": 86417 - } -] \ No newline at end of file diff --git a/brscans/manhwa/management/commands/fill_caps.py b/brscans/manhwa/management/commands/fill_caps.py deleted file mode 100644 index 8cf87e7..0000000 --- a/brscans/manhwa/management/commands/fill_caps.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.core.management.base import BaseCommand, CommandError -from django.db.models import Q - -from brscans.manhwa.models import Chapter -from brscans.manhwa.tasks.sync_chapter import sync_chapter - - -class Command(BaseCommand): - help = "Closes the specified poll for voting" - - def add_arguments(self, parser): - pass - - def handle(self, *args, **options): - chapters = Chapter.objects.filter( - ( - Q(pages__isnull=True) - | Q(pages__images__isnull=True) - | Q(pages__images__translated__isnull=True) - | Q(pages__images__original__isnull=True) - | Q(pages__images__original="") - | Q(pages__images__translated="") - ), - manhwa=48, - ) - - for chapter in chapters: - chapter.pages.all().delete() - sync_chapter(chapter.pk, 48) diff --git a/brscans/manhwa/management/commands/test_fill.py b/brscans/manhwa/management/commands/test_fill.py deleted file mode 100644 index d2bbcfb..0000000 --- a/brscans/manhwa/management/commands/test_fill.py +++ /dev/null @@ -1,54 +0,0 @@ -import json -from concurrent.futures import ThreadPoolExecutor - -import httpx -from django.conf import settings -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - help = "Fill a chapter and trigger translation pipeline for testing" - - def handle(self, *args, **options): - import os - - data_path = os.path.join( - settings.BASE_DIR, - "brscans", - "manhwa", - "management", - "commands", - "data.json", - ) - - with open(data_path, "r") as f: - payloads = json.load(f) - - self.stdout.write( - self.style.SUCCESS( - f"Loaded {len(payloads)} payloads from data.json" - ) - ) - - def process_payload(payload): - self.stdout.write( - f"Sending payload id {payload.get('id')} to fill server..." - ) - try: - res = httpx.post( - "https://9r4cs6g8pc.execute-api.sa-east-1.amazonaws.com/dev", - json=payload, - timeout=1.0, - ) - self.stdout.write( - self.style.SUCCESS( - f"Response for {payload.get('id')}: {res.status_code} - {res.text}" - ) - ) - except Exception as e: - self.stdout.write( - self.style.ERROR(f"Error for {payload.get('id')}: {e}") - ) - - with ThreadPoolExecutor() as executor: - executor.map(process_payload, payloads) diff --git a/brscans/manhwa/management/commands/test_translation_flow.py b/brscans/manhwa/management/commands/test_translation_flow.py deleted file mode 100644 index 8000138..0000000 --- a/brscans/manhwa/management/commands/test_translation_flow.py +++ /dev/null @@ -1,116 +0,0 @@ -from concurrent.futures import ThreadPoolExecutor - -from django.core.management.base import BaseCommand - -from brscans.manhwa.models import Chapter, ImageVariants, Manhwa, Page -from brscans.manhwa.tasks.images_variants import process_image_translate - - -class Command(BaseCommand): - help = "Clone a chapter and trigger translation pipeline for testing" - - def handle(self, *args, **options): - manhwa_id = 182 - chapter_ids = [5454] - - source_manhwa = Manhwa.objects.filter(id=manhwa_id).first() - if not source_manhwa: - self.stdout.write( - self.style.ERROR(f"Source Manhwa {manhwa_id} not found.") - ) - return - - test_manhwa, _ = Manhwa.objects.get_or_create( - title="Test Pipeline Bug Manhwa", - defaults={ - "status": "Test", - "description": "Used for testing translation pipeline", - }, - ) - - old_test_chapters = Chapter.objects.filter(manhwa=test_manhwa) - for otc in old_test_chapters: - self.stdout.write( - self.style.WARNING(f"Deleting old test chapter {otc.pk}") - ) - otc.delete() - - def process_chapter(c_id): - source_chapter = Chapter.objects.filter(pk=c_id).first() - if not source_chapter: - self.stdout.write( - self.style.ERROR(f"Source Chapter {c_id} not found.") - ) - return - - test_chapter = Chapter.objects.create( - title=f"Test Clone of {source_chapter.title}", - manhwa=test_manhwa, - source=source_chapter.source, - quantity_pages=source_chapter.quantity_pages, - ) - - self.proccess_test_chapter( - test_manhwa, test_chapter, source_chapter - ) - - self.stdout.write( - self.style.SUCCESS( - f"All translations triggered. Test Chapter ID: {test_chapter.pk}" - ) - ) - - with ThreadPoolExecutor() as executor: - executor.map(process_chapter, chapter_ids) - - def proccess_test_chapter(self, test_manhwa, test_chapter, source_chapter): - source_pages = Page.objects.filter(chapter=source_chapter).order_by( - "order" - ) - - cloned_variants = [] - - self.stdout.write( - self.style.SUCCESS(f"Cloning {source_pages.count()} pages...") - ) - - for sp in source_pages: - if not sp.images or not sp.images.original: - self.stdout.write( - self.style.WARNING( - f"Skipping page {sp.order} because no original." - ) - ) - continue - - new_variant = ImageVariants.objects.create() - new_variant.original.name = sp.images.original.name - new_variant.save() - - # create page record - Page.objects.create( - chapter=test_chapter, - images=new_variant, - order=sp.order, - quantity_merged=sp.quantity_merged, - ) - - cloned_variants.append(new_variant) - - self.stdout.write( - self.style.SUCCESS( - f"Triggering translation for {len(cloned_variants)} pages..." - ) - ) - - def proccess_merged(variant): - folder = ["chapters", str(test_chapter.pk)] - self.stdout.write( - f"Processing translate for variant {variant.pk} ..." - ) - process_image_translate( - variant.pk, variant.original.url, folder, test_manhwa.id - ) - - with ThreadPoolExecutor() as executor: - executor.map(proccess_merged, cloned_variants) diff --git a/brscans/manhwa/management/commands/teste.py b/brscans/manhwa/management/commands/teste.py deleted file mode 100644 index e61d4f0..0000000 --- a/brscans/manhwa/management/commands/teste.py +++ /dev/null @@ -1,33 +0,0 @@ -from django.core.management.base import BaseCommand - -from brscans.manhwa.tasks.images_variants import merge_pages_original - - -class Command(BaseCommand): - help = "Closes the specified poll for voting" - - def add_arguments(self, parser): - pass - - def handle(self, *args, **options): - merge_pages_original( - [ - "https://gg.asuracomic.net/storage/media/151882/conversions/01-optimized.webp", - "https://gg.asuracomic.net/storage/media/151929/conversions/02-optimized.webp", - "https://gg.asuracomic.net/storage/media/151969/conversions/03-optimized.webp", - "https://gg.asuracomic.net/storage/media/152014/conversions/04-optimized.webp", - "https://gg.asuracomic.net/storage/media/152055/conversions/05-optimized.webp", - "https://gg.asuracomic.net/storage/media/152100/conversions/06-optimized.webp", - "https://gg.asuracomic.net/storage/media/152132/conversions/07-optimized.webp", - "https://gg.asuracomic.net/storage/media/152175/conversions/08-optimized.webp", - "https://gg.asuracomic.net/storage/media/152221/conversions/09-optimized.webp", - "https://gg.asuracomic.net/storage/media/152271/conversions/10-optimized.webp", - "https://gg.asuracomic.net/storage/media/152323/conversions/11-optimized.webp", - "https://gg.asuracomic.net/storage/media/152371/conversions/12-optimized.webp", - "https://gg.asuracomic.net/storage/media/152421/conversions/13-optimized.webp", - "https://gg.asuracomic.net/storage/media/152472/conversions/14-optimized.webp", - ], - 4809, - ["chapters", str(4809)], - 158, - ) diff --git a/brscans/manhwa/management/commands/verify_translation_flow.py b/brscans/manhwa/management/commands/verify_translation_flow.py deleted file mode 100644 index b2fbd9f..0000000 --- a/brscans/manhwa/management/commands/verify_translation_flow.py +++ /dev/null @@ -1,101 +0,0 @@ -from django.core.management.base import BaseCommand - -from brscans.manhwa.models import Chapter, Page - - -class Command(BaseCommand): - help = "Verify the results of the translation pipeline test" - - def add_arguments(self, parser): - parser.add_argument( - "--chapter_id", - type=int, - required=False, - help="Specific test chapter ID to check", - ) - - def handle(self, *args, **options): - chapter_id = options.get("chapter_id") - - if chapter_id: - chapters = Chapter.objects.filter(pk=chapter_id) - else: - # Find all test chapters - chapters = Chapter.objects.filter( - title__startswith="Test Clone of " - ).order_by("id") - - if not chapters.exists(): - self.stdout.write( - self.style.ERROR( - "No test chapter found. Run test_translation_flow first." - ) - ) - return - - for chapter in chapters: - self.stdout.write( - self.style.SUCCESS( - f"\nChecking Chapter: {chapter.title} (ID: {chapter.pk})" - ) - ) - - pages = Page.objects.filter(chapter=chapter).order_by("order") - total = pages.count() - translated_count = 0 - raw_count = 0 - - for page in pages: - variant = page.images - if not variant: - self.stdout.write(f"Page {page.order}: No ImageVariant") - continue - - has_original = bool(variant.original) - has_raw = bool(variant.raw) - has_translated = bool(variant.translated) - - status = [] - if has_original: - status.append("original: OK") - else: - status.append("original: MISSING") - - if has_raw: - status.append("raw: OK") - raw_count += 1 - else: - status.append("raw: -") - - if has_translated: - status.append("translated: OK") - translated_count += 1 - else: - status.append("translated: PENDING/MISSING") - - msg = ( - f"Page {page.order:02d} (Variant {variant.pk}): " - + " | ".join(status) - ) - if has_translated: - self.stdout.write(self.style.SUCCESS(msg)) - elif has_raw: - self.stdout.write(self.style.WARNING(msg)) - else: - self.stdout.write(self.style.ERROR(msg)) - - self.stdout.write( - self.style.SUCCESS( - f"Summary: {translated_count}/{total} pages translated (Raw: {raw_count}/{total})." - ) - ) - if translated_count == total and total > 0: - self.stdout.write( - self.style.SUCCESS("PIPELINE TEST PASSED/COMPLETE!") - ) - else: - self.stdout.write( - self.style.WARNING( - "PIPELINE TEST STILL RUNNING OR FAILED! Some pages missing translations." - ) - ) diff --git a/brscans/manhwa/migrations/0001_initial.py b/brscans/manhwa/migrations/0001_initial.py deleted file mode 100644 index 3d30b8b..0000000 --- a/brscans/manhwa/migrations/0001_initial.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 5.0.1 on 2024-04-06 20:20 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Genre', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('slug', models.SlugField(max_length=40)), - ], - ), - migrations.CreateModel( - name='Source', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100)), - ('slug', models.SlugField(max_length=40)), - ('url', models.URLField()), - ], - ), - migrations.CreateModel( - name='Manhwa', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=100)), - ('author', models.CharField(max_length=100)), - ('status', models.CharField(max_length=100)), - ('description', models.TextField()), - ('external_id', models.CharField(max_length=100, unique=True)), - ('genres', models.ManyToManyField(related_name='manhwas', to='manhwa.genre')), - ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='manhwa.source')), - ], - ), - ] diff --git a/brscans/manhwa/migrations/0002_alter_manhwa_author.py b/brscans/manhwa/migrations/0002_alter_manhwa_author.py deleted file mode 100644 index 36208c9..0000000 --- a/brscans/manhwa/migrations/0002_alter_manhwa_author.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.1 on 2024-04-06 21:59 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manhwa', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='manhwa', - name='author', - field=models.CharField(blank=True, max_length=100, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0003_imagevariants_manhwa_thumbnail.py b/brscans/manhwa/migrations/0003_imagevariants_manhwa_thumbnail.py deleted file mode 100644 index 7ab0687..0000000 --- a/brscans/manhwa/migrations/0003_imagevariants_manhwa_thumbnail.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-07 16:40 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manhwa', '0002_alter_manhwa_author'), - ] - - operations = [ - migrations.CreateModel( - name='ImageVariants', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('identifier', models.CharField(max_length=40, unique=True)), - ('minimum', models.ImageField(null=True, upload_to='')), - ('medium', models.ImageField(null=True, upload_to='')), - ('large', models.ImageField(null=True, upload_to='')), - ('original', models.ImageField(null=True, upload_to='')), - ], - ), - migrations.AddField( - model_name='manhwa', - name='thumbnail', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='manhwa.imagevariants'), - ), - ] diff --git a/brscans/manhwa/migrations/0004_manhwa_external_hash_alter_manhwa_external_id.py b/brscans/manhwa/migrations/0004_manhwa_external_hash_alter_manhwa_external_id.py deleted file mode 100644 index 00b201d..0000000 --- a/brscans/manhwa/migrations/0004_manhwa_external_hash_alter_manhwa_external_id.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-09 01:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manhwa', '0003_imagevariants_manhwa_thumbnail'), - ] - - operations = [ - migrations.AddField( - model_name='manhwa', - name='external_hash', - field=models.CharField(max_length=64, null=True, unique=True), - ), - migrations.AlterField( - model_name='manhwa', - name='external_id', - field=models.CharField(max_length=64, null=True, unique=True), - ), - ] diff --git a/brscans/manhwa/migrations/0005_rename_external_hash_manhwa_hash_external_id_and_more.py b/brscans/manhwa/migrations/0005_rename_external_hash_manhwa_hash_external_id_and_more.py deleted file mode 100644 index 9e3a7fd..0000000 --- a/brscans/manhwa/migrations/0005_rename_external_hash_manhwa_hash_external_id_and_more.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-09 01:35 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manhwa', '0004_manhwa_external_hash_alter_manhwa_external_id'), - ] - - operations = [ - migrations.RenameField( - model_name='manhwa', - old_name='external_hash', - new_name='hash_external_id', - ), - migrations.AddField( - model_name='manhwa', - name='hash_slug', - field=models.CharField(max_length=64, null=True, unique=True), - ), - migrations.AddField( - model_name='manhwa', - name='slug', - field=models.SlugField(max_length=30, null=True), - ), - migrations.AlterField( - model_name='manhwa', - name='external_id', - field=models.SlugField(max_length=30, null=True), - ), - migrations.CreateModel( - name='Chapter', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=100)), - ('slug', models.SlugField(max_length=30)), - ('release_date', models.DateTimeField(null=True)), - ('manhwa', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chapters', to='manhwa.manhwa')), - ], - ), - ] diff --git a/brscans/manhwa/migrations/0006_remove_imagevariants_large.py b/brscans/manhwa/migrations/0006_remove_imagevariants_large.py deleted file mode 100644 index 15bebd3..0000000 --- a/brscans/manhwa/migrations/0006_remove_imagevariants_large.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-09 02:10 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('manhwa', '0005_rename_external_hash_manhwa_hash_external_id_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='imagevariants', - name='large', - ), - ] diff --git a/brscans/manhwa/migrations/0007_page.py b/brscans/manhwa/migrations/0007_page.py deleted file mode 100644 index 49a043e..0000000 --- a/brscans/manhwa/migrations/0007_page.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-13 23:35 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("manhwa", "0006_remove_imagevariants_large"), - ] - - operations = [ - migrations.CreateModel( - name="Page", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("indentifier", models.CharField(max_length=64, unique=True)), - ( - "chapter", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="pages", - to="manhwa.chapter", - ), - ), - ( - "images", - models.OneToOneField( - on_delete=django.db.models.deletion.CASCADE, - to="manhwa.imagevariants", - ), - ), - ], - ), - ] diff --git a/brscans/manhwa/migrations/0008_alter_page_images.py b/brscans/manhwa/migrations/0008_alter_page_images.py deleted file mode 100644 index ee696c4..0000000 --- a/brscans/manhwa/migrations/0008_alter_page_images.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-13 23:39 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("manhwa", "0007_page"), - ] - - operations = [ - migrations.AlterField( - model_name="page", - name="images", - field=models.OneToOneField( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="manhwa.imagevariants", - ), - ), - ] diff --git a/brscans/manhwa/migrations/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.py b/brscans/manhwa/migrations/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.py deleted file mode 100644 index bce375a..0000000 --- a/brscans/manhwa/migrations/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 5.0.4 on 2024-04-22 23:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("manhwa", "0008_alter_page_images"), - ] - - operations = [ - migrations.AlterField( - model_name="chapter", - name="slug", - field=models.SlugField(max_length=64), - ), - migrations.AlterField( - model_name="imagevariants", - name="identifier", - field=models.CharField(max_length=64, unique=True), - ), - migrations.AlterField( - model_name="manhwa", - name="external_id", - field=models.SlugField(max_length=64, null=True), - ), - migrations.AlterField( - model_name="manhwa", - name="slug", - field=models.SlugField(max_length=64, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0010_remove_imagevariants_identifier_and_more.py b/brscans/manhwa/migrations/0010_remove_imagevariants_identifier_and_more.py deleted file mode 100644 index 49045f7..0000000 --- a/brscans/manhwa/migrations/0010_remove_imagevariants_identifier_and_more.py +++ /dev/null @@ -1,36 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-07 16:34 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0009_alter_chapter_slug_alter_imagevariants_identifier_and_more"), - ] - - operations = [ - migrations.RemoveField( - model_name="imagevariants", - name="identifier", - ), - migrations.RemoveField( - model_name="page", - name="indentifier", - ), - migrations.AddField( - model_name="imagevariants", - name="translated", - field=models.ImageField(null=True, upload_to=""), - ), - migrations.AlterField( - model_name="chapter", - name="manhwa", - field=models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="chapters", - to="manhwa.manhwa", - ), - ), - ] diff --git a/brscans/manhwa/migrations/0011_chapter_identifier.py b/brscans/manhwa/migrations/0011_chapter_identifier.py deleted file mode 100644 index 606c530..0000000 --- a/brscans/manhwa/migrations/0011_chapter_identifier.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-07 16:35 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0010_remove_imagevariants_identifier_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="chapter", - name="identifier", - field=models.CharField(max_length=100, null=True, unique=True), - ), - ] diff --git a/brscans/manhwa/migrations/0012_alter_chapter_identifier_alter_chapter_slug_and_more.py b/brscans/manhwa/migrations/0012_alter_chapter_identifier_alter_chapter_slug_and_more.py deleted file mode 100644 index 95e4b82..0000000 --- a/brscans/manhwa/migrations/0012_alter_chapter_identifier_alter_chapter_slug_and_more.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 03:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0011_chapter_identifier"), - ] - - operations = [ - migrations.AlterField( - model_name="chapter", - name="identifier", - field=models.CharField(max_length=255, null=True, unique=True), - ), - migrations.AlterField( - model_name="chapter", - name="slug", - field=models.SlugField(max_length=255), - ), - migrations.AlterField( - model_name="chapter", - name="title", - field=models.CharField(max_length=255), - ), - ] diff --git a/brscans/manhwa/migrations/0013_manhwa_identifier.py b/brscans/manhwa/migrations/0013_manhwa_identifier.py deleted file mode 100644 index e6b6894..0000000 --- a/brscans/manhwa/migrations/0013_manhwa_identifier.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 21:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0012_alter_chapter_identifier_alter_chapter_slug_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="manhwa", - name="identifier", - field=models.CharField(max_length=255, null=True, unique=True), - ), - ] diff --git a/brscans/manhwa/migrations/0014_remove_manhwa_source_manhwa_url.py b/brscans/manhwa/migrations/0014_remove_manhwa_source_manhwa_url.py deleted file mode 100644 index 78d2461..0000000 --- a/brscans/manhwa/migrations/0014_remove_manhwa_source_manhwa_url.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 22:13 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0013_manhwa_identifier"), - ] - - operations = [ - migrations.RemoveField( - model_name="manhwa", - name="source", - ), - migrations.AddField( - model_name="manhwa", - name="url", - field=models.CharField(blank=True, max_length=255, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0015_rename_url_manhwa_source.py b/brscans/manhwa/migrations/0015_rename_url_manhwa_source.py deleted file mode 100644 index 25ac02f..0000000 --- a/brscans/manhwa/migrations/0015_rename_url_manhwa_source.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 22:13 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0014_remove_manhwa_source_manhwa_url"), - ] - - operations = [ - migrations.RenameField( - model_name="manhwa", - old_name="url", - new_name="source", - ), - ] diff --git a/brscans/manhwa/migrations/0016_delete_source_alter_manhwa_source.py b/brscans/manhwa/migrations/0016_delete_source_alter_manhwa_source.py deleted file mode 100644 index 634d66c..0000000 --- a/brscans/manhwa/migrations/0016_delete_source_alter_manhwa_source.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 22:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0015_rename_url_manhwa_source"), - ] - - operations = [ - migrations.DeleteModel( - name="Source", - ), - migrations.AlterField( - model_name="manhwa", - name="source", - field=models.URLField(blank=True, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0017_chapter_source.py b/brscans/manhwa/migrations/0017_chapter_source.py deleted file mode 100644 index 0dfaf2d..0000000 --- a/brscans/manhwa/migrations/0017_chapter_source.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2024-07-11 22:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0016_delete_source_alter_manhwa_source"), - ] - - operations = [ - migrations.AddField( - model_name="chapter", - name="source", - field=models.URLField(blank=True, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0018_chapter_quantity_pages_page_quantity_merged.py b/brscans/manhwa/migrations/0018_chapter_quantity_pages_page_quantity_merged.py deleted file mode 100644 index 2237ebf..0000000 --- a/brscans/manhwa/migrations/0018_chapter_quantity_pages_page_quantity_merged.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.2.9 on 2025-01-26 21:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0017_chapter_source"), - ] - - operations = [ - migrations.AddField( - model_name="chapter", - name="quantity_pages", - field=models.IntegerField(null=True), - ), - migrations.AddField( - model_name="page", - name="quantity_merged", - field=models.IntegerField(null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0019_manhwa_is_nsfw.py b/brscans/manhwa/migrations/0019_manhwa_is_nsfw.py deleted file mode 100644 index d035b9d..0000000 --- a/brscans/manhwa/migrations/0019_manhwa_is_nsfw.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2025-05-01 19:59 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0018_chapter_quantity_pages_page_quantity_merged"), - ] - - operations = [ - migrations.AddField( - model_name="manhwa", - name="is_nsfw", - field=models.BooleanField(default=False), - ), - ] diff --git a/brscans/manhwa/migrations/0020_imagevariants_raw_alter_manhwa_genres.py b/brscans/manhwa/migrations/0020_imagevariants_raw_alter_manhwa_genres.py deleted file mode 100644 index 99b9ecc..0000000 --- a/brscans/manhwa/migrations/0020_imagevariants_raw_alter_manhwa_genres.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.9 on 2025-05-18 17:36 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0019_manhwa_is_nsfw"), - ] - - operations = [ - migrations.AddField( - model_name="imagevariants", - name="raw", - field=models.ImageField(null=True, upload_to=""), - ), - migrations.AlterField( - model_name="manhwa", - name="genres", - field=models.ManyToManyField( - blank=True, related_name="manhwas", to="manhwa.genre" - ), - ), - ] diff --git a/brscans/manhwa/migrations/0021_imagevariants_upscaled.py b/brscans/manhwa/migrations/0021_imagevariants_upscaled.py deleted file mode 100644 index 79d4308..0000000 --- a/brscans/manhwa/migrations/0021_imagevariants_upscaled.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2025-08-03 03:40 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0020_imagevariants_raw_alter_manhwa_genres"), - ] - - operations = [ - migrations.AddField( - model_name="imagevariants", - name="upscaled", - field=models.ImageField(null=True, upload_to=""), - ), - ] diff --git a/brscans/manhwa/migrations/0022_alter_manhwa_external_id.py b/brscans/manhwa/migrations/0022_alter_manhwa_external_id.py deleted file mode 100644 index 1c96edd..0000000 --- a/brscans/manhwa/migrations/0022_alter_manhwa_external_id.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2025-09-17 23:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0021_imagevariants_upscaled"), - ] - - operations = [ - migrations.AlterField( - model_name="manhwa", - name="external_id", - field=models.CharField(db_index=True, max_length=64, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0023_page_order.py b/brscans/manhwa/migrations/0023_page_order.py deleted file mode 100644 index b61578d..0000000 --- a/brscans/manhwa/migrations/0023_page_order.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2025-09-18 01:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0022_alter_manhwa_external_id"), - ] - - operations = [ - migrations.AddField( - model_name="page", - name="order", - field=models.PositiveIntegerField(default=0), - ), - ] diff --git a/brscans/manhwa/migrations/0024_alter_page_options_page_translation_cache.py b/brscans/manhwa/migrations/0024_alter_page_options_page_translation_cache.py deleted file mode 100644 index 3e36954..0000000 --- a/brscans/manhwa/migrations/0024_alter_page_options_page_translation_cache.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.2.9 on 2026-02-19 22:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0023_page_order"), - ] - - operations = [ - migrations.AlterModelOptions( - name="page", - options={"ordering": ["order"]}, - ), - migrations.AddField( - model_name="page", - name="translation_cache", - field=models.JSONField(blank=True, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0025_remove_page_translation_cache.py b/brscans/manhwa/migrations/0025_remove_page_translation_cache.py deleted file mode 100644 index 72f9a69..0000000 --- a/brscans/manhwa/migrations/0025_remove_page_translation_cache.py +++ /dev/null @@ -1,16 +0,0 @@ -# Generated by Django 4.2.9 on 2026-02-19 22:17 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0024_alter_page_options_page_translation_cache"), - ] - - operations = [ - migrations.RemoveField( - model_name="page", - name="translation_cache", - ), - ] diff --git a/brscans/manhwa/migrations/0026_chapter_created_at.py b/brscans/manhwa/migrations/0026_chapter_created_at.py deleted file mode 100644 index 93c80f8..0000000 --- a/brscans/manhwa/migrations/0026_chapter_created_at.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.9 on 2026-03-01 00:16 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manhwa", "0025_remove_page_translation_cache"), - ] - - operations = [ - migrations.AddField( - model_name="chapter", - name="created_at", - field=models.DateTimeField(auto_now_add=True, null=True), - ), - ] diff --git a/brscans/manhwa/migrations/0027_readinghistory_readchapter.py b/brscans/manhwa/migrations/0027_readinghistory_readchapter.py deleted file mode 100644 index cbba6e1..0000000 --- a/brscans/manhwa/migrations/0027_readinghistory_readchapter.py +++ /dev/null @@ -1,102 +0,0 @@ -# Generated by Django 4.2.9 on 2026-03-01 01:45 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("manhwa", "0026_chapter_created_at"), - ] - - operations = [ - migrations.CreateModel( - name="ReadingHistory", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("page_number", models.PositiveIntegerField(default=1)), - ("updated_at", models.DateTimeField(auto_now=True)), - ( - "chapter", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="reading_history", - to="manhwa.chapter", - ), - ), - ( - "manhwa", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="reading_history", - to="manhwa.manhwa", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="reading_history", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-updated_at"], - "unique_together": {("user", "manhwa")}, - }, - ), - migrations.CreateModel( - name="ReadChapter", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("read_at", models.DateTimeField(auto_now_add=True)), - ( - "chapter", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="read_chapters", - to="manhwa.chapter", - ), - ), - ( - "manhwa", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="read_chapters", - to="manhwa.manhwa", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="read_chapters", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-read_at"], - "unique_together": {("user", "chapter")}, - }, - ), - ] diff --git a/brscans/manhwa/migrations/0028_comment.py b/brscans/manhwa/migrations/0028_comment.py deleted file mode 100644 index d4c20ee..0000000 --- a/brscans/manhwa/migrations/0028_comment.py +++ /dev/null @@ -1,60 +0,0 @@ -# Generated by Django 4.2.9 on 2026-03-01 01:50 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("manhwa", "0027_readinghistory_readchapter"), - ] - - operations = [ - migrations.CreateModel( - name="Comment", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("content", models.TextField()), - ("created_at", models.DateTimeField(auto_now_add=True)), - ( - "chapter", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="comments", - to="manhwa.chapter", - ), - ), - ( - "parent", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="replies", - to="manhwa.comment", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="comments", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-created_at"], - }, - ), - ] diff --git a/brscans/manhwa/migrations/0029_notification.py b/brscans/manhwa/migrations/0029_notification.py deleted file mode 100644 index 86efcc1..0000000 --- a/brscans/manhwa/migrations/0029_notification.py +++ /dev/null @@ -1,73 +0,0 @@ -# Generated by Django 4.2.9 on 2026-03-01 01:58 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("manhwa", "0028_comment"), - ] - - operations = [ - migrations.CreateModel( - name="Notification", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "type", - models.CharField( - choices=[ - ("new_chapter", "Novo Capítulo"), - ("system", "Sistema"), - ], - default="new_chapter", - max_length=20, - ), - ), - ("read", models.BooleanField(default=False)), - ("created_at", models.DateTimeField(auto_now_add=True)), - ( - "chapter", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="notifications", - to="manhwa.chapter", - ), - ), - ( - "manhwa", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="notifications", - to="manhwa.manhwa", - ), - ), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="notifications", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-created_at"], - }, - ), - ] diff --git a/brscans/manhwa/migrations/__init__.py b/brscans/manhwa/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-310.pyc b/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-310.pyc deleted file mode 100644 index df8d9a6..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-38.pyc deleted file mode 100644 index 294ed11..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0001_initial.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0002_alter_manhwa_author.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0002_alter_manhwa_author.cpython-38.pyc deleted file mode 100644 index 79914e2..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0002_alter_manhwa_author.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0003_imagevariants_manhwa_thumbnail.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0003_imagevariants_manhwa_thumbnail.cpython-38.pyc deleted file mode 100644 index 9b7cc29..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0003_imagevariants_manhwa_thumbnail.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0004_manhwa_external_hash_alter_manhwa_external_id.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0004_manhwa_external_hash_alter_manhwa_external_id.cpython-38.pyc deleted file mode 100644 index f691ffc..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0004_manhwa_external_hash_alter_manhwa_external_id.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0005_rename_external_hash_manhwa_hash_external_id_and_more.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0005_rename_external_hash_manhwa_hash_external_id_and_more.cpython-38.pyc deleted file mode 100644 index e9b2f9b..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0005_rename_external_hash_manhwa_hash_external_id_and_more.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0006_remove_imagevariants_large.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0006_remove_imagevariants_large.cpython-38.pyc deleted file mode 100644 index e2d31fc..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0006_remove_imagevariants_large.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0007_page.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0007_page.cpython-38.pyc deleted file mode 100644 index c25d311..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0007_page.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0008_alter_page_images.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0008_alter_page_images.cpython-38.pyc deleted file mode 100644 index 31add4a..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0008_alter_page_images.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.cpython-38.pyc deleted file mode 100644 index 4840e4a..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0009_alter_chapter_slug_alter_imagevariants_identifier_and_more.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0010_remove_imagevariants_identifier_and_more.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0010_remove_imagevariants_identifier_and_more.cpython-38.pyc deleted file mode 100644 index 7987fda..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0010_remove_imagevariants_identifier_and_more.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0011_chapter_identifier.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0011_chapter_identifier.cpython-38.pyc deleted file mode 100644 index 08efdad..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0011_chapter_identifier.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0012_alter_chapter_identifier_alter_chapter_slug_and_more.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0012_alter_chapter_identifier_alter_chapter_slug_and_more.cpython-38.pyc deleted file mode 100644 index 7e397cc..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0012_alter_chapter_identifier_alter_chapter_slug_and_more.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0013_manhwa_identifier.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0013_manhwa_identifier.cpython-38.pyc deleted file mode 100644 index e663f7c..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0013_manhwa_identifier.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0014_remove_manhwa_source_manhwa_url.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0014_remove_manhwa_source_manhwa_url.cpython-38.pyc deleted file mode 100644 index 5c1fa8e..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0014_remove_manhwa_source_manhwa_url.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0015_rename_url_manhwa_source.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0015_rename_url_manhwa_source.cpython-38.pyc deleted file mode 100644 index 62534bc..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0015_rename_url_manhwa_source.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0016_delete_source_alter_manhwa_source.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0016_delete_source_alter_manhwa_source.cpython-38.pyc deleted file mode 100644 index 6d5139b..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0016_delete_source_alter_manhwa_source.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/0017_chapter_source.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/0017_chapter_source.cpython-38.pyc deleted file mode 100644 index 7a3a846..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/0017_chapter_source.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/__init__.cpython-310.pyc b/brscans/manhwa/migrations/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e1f50a1..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/brscans/manhwa/migrations/__pycache__/__init__.cpython-38.pyc b/brscans/manhwa/migrations/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 252e550..0000000 Binary files a/brscans/manhwa/migrations/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/models.py b/brscans/manhwa/models.py deleted file mode 100644 index 9573c11..0000000 --- a/brscans/manhwa/models.py +++ /dev/null @@ -1,212 +0,0 @@ -from django.conf import settings -from django.db import models -from django.db.models.signals import post_save -from django.dispatch import receiver - - -class ImageVariants(models.Model): - minimum = models.ImageField(null=True) - medium = models.ImageField(null=True) - original = models.ImageField(null=True) - translated = models.ImageField(null=True) - raw = models.ImageField(null=True) - upscaled = models.ImageField(null=True) - - def save(self, *args, **kwargs): - if self.translated and self.translated.name.startswith( - settings.PUBLIC_MEDIA_LOCATION - ): - self.translated.name = self.translated.name.replace( - settings.PUBLIC_MEDIA_LOCATION, "" - ) - super().save(*args, **kwargs) - - -class Genre(models.Model): - name = models.CharField(max_length=100) - slug = models.SlugField(max_length=40) - - def __str__(self): - return self.name - - -class Manhwa(models.Model): - title = models.CharField(max_length=100) - author = models.CharField(max_length=100, blank=True, null=True) - status = models.CharField(max_length=100) - description = models.TextField() - external_id = models.CharField(max_length=64, db_index=True, null=True) - slug = models.SlugField(max_length=64, db_index=True, null=True) - hash_external_id = models.CharField(max_length=64, unique=True, null=True) - hash_slug = models.CharField(max_length=64, unique=True, null=True) - thumbnail = models.ForeignKey( - ImageVariants, on_delete=models.CASCADE, blank=True, null=True - ) - - source = models.URLField(null=True, blank=True) - identifier = models.CharField(max_length=255, null=True, unique=True) - - is_nsfw = models.BooleanField(default=False) - - genres = models.ManyToManyField(Genre, related_name="manhwas", blank=True) - - def __str__(self): - return self.title - - -class Chapter(models.Model): - identifier = models.CharField(max_length=255, null=True, unique=True) - title = models.CharField(max_length=255) - slug = models.SlugField(max_length=255, db_index=True) - release_date = models.DateTimeField(null=True) - created_at = models.DateTimeField(auto_now_add=True, null=True) - manhwa = models.ForeignKey( - Manhwa, on_delete=models.CASCADE, related_name="chapters", null=True - ) - quantity_pages = models.IntegerField(null=True) - - source = models.URLField(null=True, blank=True) - - -class Page(models.Model): - chapter = models.ForeignKey( - Chapter, on_delete=models.CASCADE, related_name="pages" - ) - images = models.OneToOneField( - ImageVariants, on_delete=models.CASCADE, null=True - ) - order = models.PositiveIntegerField(default=0) - quantity_merged = models.IntegerField(null=True) - - class Meta: - ordering = ["order"] - - -class ReadingHistory(models.Model): - user = models.ForeignKey( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="reading_history", - ) - manhwa = models.ForeignKey( - Manhwa, on_delete=models.CASCADE, related_name="reading_history" - ) - chapter = models.ForeignKey( - Chapter, on_delete=models.CASCADE, related_name="reading_history" - ) - page_number = models.PositiveIntegerField(default=1) - updated_at = models.DateTimeField(auto_now=True) - - class Meta: - unique_together = ("user", "manhwa") - ordering = ["-updated_at"] - - def __str__(self): - return f"{self.user} - {self.manhwa} (Cap. {self.chapter.title}, Pág. {self.page_number})" - - -class ReadChapter(models.Model): - user = models.ForeignKey( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="read_chapters", - ) - manhwa = models.ForeignKey( - Manhwa, on_delete=models.CASCADE, related_name="read_chapters" - ) - chapter = models.ForeignKey( - Chapter, on_delete=models.CASCADE, related_name="read_chapters" - ) - read_at = models.DateTimeField(auto_now_add=True) - - class Meta: - unique_together = ("user", "chapter") - ordering = ["-read_at"] - - def __str__(self): - return f"{self.user} leu {self.chapter.title} ({self.manhwa.title})" - - -class Comment(models.Model): - user = models.ForeignKey( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="comments", - ) - chapter = models.ForeignKey( - Chapter, on_delete=models.CASCADE, related_name="comments" - ) - parent = models.ForeignKey( - "self", - on_delete=models.CASCADE, - null=True, - blank=True, - related_name="replies", - ) - content = models.TextField() - created_at = models.DateTimeField(auto_now_add=True) - - class Meta: - ordering = ["-created_at"] - - def __str__(self): - return f"{self.user} em {self.chapter}: {self.content[:20]}" - - -class Notification(models.Model): - NOTIFICATION_TYPES = ( - ("new_chapter", "Novo Capítulo"), - ("system", "Sistema"), - ) - user = models.ForeignKey( - settings.AUTH_USER_MODEL, - on_delete=models.CASCADE, - related_name="notifications", - ) - type = models.CharField( - max_length=20, choices=NOTIFICATION_TYPES, default="new_chapter" - ) - manhwa = models.ForeignKey( - Manhwa, - on_delete=models.CASCADE, - null=True, - blank=True, - related_name="notifications", - ) - chapter = models.ForeignKey( - Chapter, - on_delete=models.CASCADE, - null=True, - blank=True, - related_name="notifications", - ) - read = models.BooleanField(default=False) - created_at = models.DateTimeField(auto_now_add=True) - - class Meta: - ordering = ["-created_at"] - - def __str__(self): - return f"Notificação para {self.user}: {self.type} - Lido: {self.read}" - - -@receiver(post_save, sender=Chapter) -def create_chapter_notification(sender, instance, created, **kwargs): - if created and instance.manhwa: - from brscans.authentication.models import Favorite - - favorites = Favorite.objects.filter( - manhwa=instance.manhwa - ).select_related("user") - notifications = [] - for fav in favorites: - notifications.append( - Notification( - user=fav.user, - type="new_chapter", - manhwa=instance.manhwa, - chapter=instance, - ) - ) - if notifications: - Notification.objects.bulk_create(notifications) diff --git a/brscans/manhwa/serializers.py b/brscans/manhwa/serializers.py deleted file mode 100644 index d52587c..0000000 --- a/brscans/manhwa/serializers.py +++ /dev/null @@ -1,303 +0,0 @@ -from django.db.models import Sum -from django.db.models.expressions import RawSQL -from rest_framework import serializers - -from brscans.manhwa.models import ( - Chapter, - Comment, - Genre, - ImageVariants, - Manhwa, - Notification, - Page, -) - - -class GenreSerializer(serializers.ModelSerializer): - class Meta: - model = Genre - fields = ("id", "name", "slug") - - -class VariantsSerializer(serializers.ModelSerializer): - class Meta: - model = ImageVariants - fields = "__all__" - - -class VariantsUpdateSerializer(serializers.ModelSerializer): - translated = serializers.CharField(required=False, max_length=255) - raw = serializers.CharField(required=False, max_length=255) - - class Meta: - model = ImageVariants - fields = "__all__" - - -class PageSerializer(serializers.ModelSerializer): - images = VariantsSerializer() - - class Meta: - model = Page - fields = "__all__" - - -class SimpleChapterSerializer(serializers.ModelSerializer): - quantity_merged = serializers.SerializerMethodField() - - def get_quantity_merged(self, obj): - return obj.pages.aggregate(total=Sum("quantity_merged"))["total"] - - class Meta: - model = Chapter - fields = ( - "id", - "title", - "slug", - "release_date", - "created_at", - "quantity_pages", - "quantity_merged", - ) - - -class ChapterSerializer(serializers.ModelSerializer): - pages = PageSerializer(many=True) - quantity_merged = serializers.SerializerMethodField() - - def get_quantity_merged(self, obj): - return obj.pages.aggregate(total=Sum("quantity_merged"))["total"] - - class Meta: - model = Chapter - fields = ( - "id", - "title", - "slug", - "release_date", - "quantity_pages", - "quantity_merged", - "pages", - ) - - -class ChapterNextPreviousSerializer(serializers.ModelSerializer): - next = serializers.SerializerMethodField() - previous = serializers.SerializerMethodField() - pages = PageSerializer(many=True) - quantity_merged = serializers.SerializerMethodField() - - def get_quantity_merged(self, obj): - return obj.pages.aggregate(total=Sum("quantity_merged"))["total"] - - def get_slug_number(self, slug): - """Extrai o primeiro número do slug como inteiro.""" - import re - - match = re.search(r"\d+", slug) - if match: - return int(match.group()) - return None - - def get_next(self, obj): - # Calcula o slug_number do capítulo atual - current_slug_number = self.get_slug_number(obj.slug) - if current_slug_number is None: - return None - - # Busca o próximo capítulo com slug_number maior que o atual - next_chapter = ( - Chapter.objects.filter(manhwa=obj.manhwa) - .annotate( - slug_number=RawSQL( - """ - CASE - WHEN slug ~ '[0-9]+' - THEN CAST( - (SELECT REGEXP_MATCHES(slug, '[0-9]+'))[1] - AS INTEGER - ) - ELSE NULL - END - """, - [], - ) - ) - .filter(slug_number__gt=current_slug_number) - .order_by("slug_number") - .first() - ) - if next_chapter: - return SimpleChapterSerializer(next_chapter).data - return None - - def get_previous(self, obj): - previous_chapter = ( - Chapter.objects.filter(manhwa=obj.manhwa, id__lt=obj.id) - .annotate( - slug_number=RawSQL( - """ - CASE - WHEN slug ~ '[0-9]+' - THEN CAST( - (SELECT REGEXP_MATCHES(slug, '[0-9]+'))[1] - AS INTEGER - ) - ELSE NULL - END - """, - [], - ) - ) - .order_by("-slug_number") - .first() - ) - if previous_chapter: - return SimpleChapterSerializer(previous_chapter).data - return None - - class Meta: - model = Chapter - fields = ( - "id", - "title", - "slug", - "release_date", - "quantity_pages", - "quantity_merged", - "pages", - "next", - "previous", - ) - - -class ManhwaSerializer(serializers.ModelSerializer): - thumbnail = VariantsSerializer() - latest_chapters = serializers.SerializerMethodField() - - def get_latest_chapters(self, obj): - chapters = obj.chapters.order_by("-id")[:2] - return SimpleChapterSerializer(chapters, many=True).data - - class Meta: - model = Manhwa - fields = ( - "id", - "is_nsfw", - "thumbnail", - "title", - "author", - "status", - "description", - "external_id", - "slug", - "hash_external_id", - "hash_slug", - "source", - "identifier", - "genres", - "latest_chapters", - ) - - -class ManhwaDetailSerializer(serializers.ModelSerializer): - thumbnail = VariantsSerializer() - chapters = SimpleChapterSerializer(many=True) - - class Meta: - model = Manhwa - fields = ( - "id", - "is_nsfw", - "thumbnail", - "title", - "author", - "status", - "description", - "external_id", - "slug", - "hash_external_id", - "hash_slug", - "source", - "identifier", - "genres", - "chapters", - ) - - -class ManhwaBriefSerializer(serializers.ModelSerializer): - """Lightweight serializer for embedding manga info inside chapter responses.""" - - thumbnail = VariantsSerializer() - - class Meta: - model = Manhwa - fields = ("id", "title", "slug", "thumbnail") - - -class RecentChapterSerializer(serializers.ModelSerializer): - """Chapter with parent manga info for the recent chapters carousel.""" - - manhwa = ManhwaBriefSerializer() - - class Meta: - model = Chapter - fields = ( - "id", - "title", - "slug", - "release_date", - "manhwa", - ) - - -class CommentSerializer(serializers.ModelSerializer): - user_name = serializers.CharField(source="user.username", read_only=True) - user_avatar = serializers.SerializerMethodField(read_only=True) - replies = serializers.SerializerMethodField() - - def get_user_avatar(self, obj): - if hasattr(obj.user, "profile") and obj.user.profile.avatar: - return obj.user.profile.avatar - return None - - def get_replies(self, obj): - # By removing the parent verification, we recursively gather replies indefinitely - return CommentSerializer(obj.replies.all(), many=True).data - - class Meta: - model = Comment - fields = ( - "id", - "user_name", - "user_avatar", - "content", - "created_at", - "parent", - "replies", - "chapter", - ) - - -class NotificationSerializer(serializers.ModelSerializer): - manhwa_title = serializers.CharField(source="manhwa.title", read_only=True) - manhwa_slug = serializers.CharField(source="manhwa.slug", read_only=True) - chapter_title = serializers.CharField( - source="chapter.title", read_only=True - ) - chapter_slug = serializers.CharField(source="chapter.slug", read_only=True) - - class Meta: - model = Notification - fields = ( - "id", - "type", - "manhwa", - "manhwa_title", - "manhwa_slug", - "chapter", - "chapter_title", - "chapter_slug", - "read", - "created_at", - ) diff --git a/brscans/manhwa/tasks/__init__.py b/brscans/manhwa/tasks/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/tasks/__pycache__/__init__.cpython-38.pyc b/brscans/manhwa/tasks/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 0e39c4a..0000000 Binary files a/brscans/manhwa/tasks/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/tasks/__pycache__/images_variants.cpython-38.pyc b/brscans/manhwa/tasks/__pycache__/images_variants.cpython-38.pyc deleted file mode 100644 index 29c5191..0000000 Binary files a/brscans/manhwa/tasks/__pycache__/images_variants.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/tasks/__pycache__/sync_chapter.cpython-38.pyc b/brscans/manhwa/tasks/__pycache__/sync_chapter.cpython-38.pyc deleted file mode 100644 index 5c13fb5..0000000 Binary files a/brscans/manhwa/tasks/__pycache__/sync_chapter.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/tasks/__pycache__/sync_chapters.cpython-38.pyc b/brscans/manhwa/tasks/__pycache__/sync_chapters.cpython-38.pyc deleted file mode 100644 index 1143734..0000000 Binary files a/brscans/manhwa/tasks/__pycache__/sync_chapters.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/tasks/fix_manhwas.py b/brscans/manhwa/tasks/fix_manhwas.py deleted file mode 100644 index 68795c2..0000000 --- a/brscans/manhwa/tasks/fix_manhwas.py +++ /dev/null @@ -1,21 +0,0 @@ -from brscans.manhwa.models import Chapter, Manhwa -from brscans.manhwa.tasks.sync_chapter import fix_pages -from brscans.manhwa.tasks.sync_chapters import sync_chapters -from django.db.models import Q - - -def fix_manhwas(): - chapters = Chapter.objects.filter( - ( - Q(pages__isnull=True) - | Q(pages__images__isnull=True) - | Q(pages__images__translated__isnull=True) - | Q(pages__images__translated="") - ), - pages__images__original__isnull=False, - ).distinct() - - for chapter in chapters[:20]: - fix_pages(chapter.pk) - - return True diff --git a/brscans/manhwa/tasks/images_variants.py b/brscans/manhwa/tasks/images_variants.py deleted file mode 100644 index f6405b8..0000000 --- a/brscans/manhwa/tasks/images_variants.py +++ /dev/null @@ -1,163 +0,0 @@ -from concurrent.futures import ThreadPoolExecutor -from io import BytesIO -from os.path import join -from uuid import uuid4 - -import httpx -from django.conf import settings -from django.core.files.base import ContentFile -from zappa.asynchronous import task - -from brscans.manhwa.models import ImageVariants, Page -from brscans.utils.generate_presigned_url import generate_presigned_url -from brscans.utils.image import ( - batch_images_with_split, - download_images, - process_merge_images, -) -from brscans.utils.image_url import image_url -from brscans.utils.resize_image import resize_image - - -@task -def merge_pages_original( - urls: list, chapter: int, folder: str, main_id: str = None -): - images = download_images(urls) - batches = batch_images_with_split(images) - - variants = [] - - for batch, idx in zip(batches, range(len(batches))): - if len(batch) == 0: - print("Empty batch, skipping...") - continue - variant = ImageVariants.objects.create() - Page.objects.create( - chapter_id=chapter, - images=variant, - quantity_merged=len(batch), - order=idx, - ) - variants.append( - { - "variant": variant.pk, - "batch": batch, - "folder": folder, - "main_id": main_id, - } - ) - - with ThreadPoolExecutor() as executor: - executor.map(proccess_merged, variants) - - return {"Message": "Created batches merged successfully."} - - -def proccess_merged(data): - print("Processing batch for variant", data.get("variant")) - return merge_batch_original( - data.get("batch"), - data.get("variant"), - data.get("folder"), - data.get("main_id"), - ) - - -def merge_batch_original( - images: list, variant_id: int, folder: str, main_id: str = None -): - image = process_merge_images(images) - filename = f"{uuid4().hex}.webp" - path = join(*folder, filename) - - image.content_type = "image/webp" - variants = ImageVariants.objects.filter(id=variant_id).first() - variants.original.save(path, image) - process_image_translate(variants.pk, variants.original.url, folder, main_id) - - return {"Message": "Pages merged successfully."} - - -@task -def add_original_image_variant( - id: int, url: str, folder: str, translate: bool = True -): - variant = ImageVariants.objects.filter(id=id).first() - - if variant: - filename = f"{uuid4().hex}.webp" - image = image_url(url, filename) - image.content_type = "image/webp" - variant.original.save(join(*folder, filename), image) - new_url = variant.original.url - # if translate: - # process_image_translate(variant.id, new_url, folder) - - return { - "message": "Image added to variant successfully.", - } - - -@task -def process_image_translate(id, url: str, folder: str, main_id: str = None): - filename = f"{uuid4().hex}.jpeg" - path = join(*folder, "raw", filename) - presign = generate_presigned_url( - join(settings.PUBLIC_MEDIA_LOCATION, path), - {"type": "image/jpeg"}, - ) - try: - httpx.post( - settings.TRANSLATOR_URL, - json={ - "presign": presign, - "link": url, - "image_id": id, - "context": join("contexts", str(main_id), "context.json"), - "path": path, - "folder": join(*folder), - }, - timeout=5, - ) - except Exception as e: - print(e) - pass - - return {"Message": "Image translated successfully."} - - -@task -def process_image_variant_medium(id: int, folder: str): - variant = ImageVariants.objects.filter(id=id).first() - - if variant: - image = variant.original - medium = resize_image(image, 300, 300) - medium = medium.convert("RGB") - buffer = BytesIO() - medium.save(buffer, format="WEBP") - medium_file = ContentFile(buffer.getvalue()) - - variant.medium.save(join(*folder, f"{uuid4().hex}.webp"), medium_file) - variant.save() - - return {"Message": "Image variant medium created successfully."} - - -@task -def process_image_variant_minimum(id: int, folder: str): - variant = ImageVariants.objects.filter(id=id).first() - - if variant: - image = variant.original - minimum = resize_image(image, 150, 150) - minimum = minimum.convert("RGB") - buffer = BytesIO() - minimum.save(buffer, format="WEBP") - medium_file = ContentFile(buffer.getvalue()) - - variant.minimum.save(join(*folder, f"{uuid4().hex}.webp"), medium_file) - variant.save() - - return {"Message": "Image variant minimum created successfully."} diff --git a/brscans/manhwa/tasks/sync_chapter.py b/brscans/manhwa/tasks/sync_chapter.py deleted file mode 100644 index d5111f3..0000000 --- a/brscans/manhwa/tasks/sync_chapter.py +++ /dev/null @@ -1,181 +0,0 @@ -from django.db.models import Q -from zappa.asynchronous import task - -from brscans.manhwa.models import Chapter, ImageVariants, Page -from brscans.manhwa.tasks.images_variants import ( - merge_batch_original, - merge_pages_original, - process_image_translate, -) -from brscans.utils.image import ( - batch_images_with_split, - batch_urls, - download_images, -) -from brscans.wrapper.sources import get_source_by_link -from brscans.wrapper.sources.Generic import Generic - - -@task -def sync_chapter(chapter_id: dict, manhwa_id: int): - chapter_records = Chapter.objects.filter(pk=chapter_id).first() - # manhwa = chapter_records.manhwa - Source: Generic = get_source_by_link(chapter_records.source) - chapter = Source.chapter(chapter_records) - chapter_records.quantity_pages = len(chapter["pages"]) - chapter_records.save() - - merge_pages_original( - chapter["pages"], - chapter_records.pk, - ["chapters", str(chapter_records.pk)], - manhwa_id, - ) - - return {"Message": "Chapter synced successfully."} - - -def sync_chapter_fix(chapter_id: dict): - chapter_records = Chapter.objects.filter(pk=chapter_id).first() - Source: Generic = get_source_by_link(chapter_records.source) - chapter = Source.chapter(chapter_records.source) - chapter_records.quantity_pages = len(chapter["pages"]) - chapter_records.save() - - pages = Page.objects.filter(chapter=chapter_records) - - batches = batch_urls(chapter["pages"]) - - return { - "chapter_name": chapter_records.title, - "chapter": chapter_records.pk, - "pages": len(chapter["pages"]), - "batches": len(batches), - "pages_db": pages.count(), - } - - -@task -def fix_pages(chapter_id: dict): - chapter_records = Chapter.objects.filter(pk=chapter_id).first() - - variants = ImageVariants.objects.filter( - Q(translated__isnull=True) | Q(translated=""), - page__chapter=chapter_records, - original__isnull=False, - ) - - for variant in variants: - if variant.original: - print("Iniciando tradução") - process_image_translate( - variant.pk, - variant.original.url, - ["chapters", str(chapter_records.pk)], - chapter_records.manhwa.pk, - ) - else: - print("Variante sem original") - - -@task -def sync_missing_original_pages(chapter_id: int, manhwa_id: int): - """ - Sincroniza páginas que não têm a variant original. - Verifica se o número de páginas no BD corresponde ao número de páginas na fonte. - Se não corresponder, recria todas as páginas para manter a ordem correta. - """ - chapter_records = Chapter.objects.filter(pk=chapter_id).first() - if not chapter_records: - return {"error": "Chapter not found"} - - # Buscar dados do capítulo na fonte - Source: Generic = get_source_by_link(chapter_records.source) - chapter_data = Source.chapter(chapter_records.source) - page_urls = chapter_data.get("pages", []) - - # Contar páginas atuais - current_pages = Page.objects.filter(chapter=chapter_records).order_by("id") - current_count = current_pages.count() - - # Calcular quantas páginas deveriam existir baseado nas URLs e merge - # Primeiro baixar as imagens para calcular corretamente - images = download_images(page_urls) - expected_pages = len(batch_images_with_split(images)) - - # Se o número de páginas não corresponder, recriar todas - if current_count != expected_pages: - # Deletar todas as páginas para recriar na ordem correta - current_pages.delete() - - # Recriar todas as páginas - merge_pages_original( - page_urls, - chapter_records.pk, - ["chapters", str(chapter_records.pk)], - manhwa_id, - ) - - return { - "message": "Chapter pages recreated successfully", - "pages_deleted": current_count, - "pages_created": expected_pages, - "chapter": chapter_records.title, - } - - # Se o número corresponder, apenas adicionar originals faltantes - pages_without_original = current_pages.filter( - Q(images__original__isnull=True) | Q(images__original="") - ) - - if pages_without_original.count() == 0: - return {"message": "No pages without original found"} - - # Processar cada página individualmente - processed_count = 0 - url_index = 0 - - for page in current_pages: - # Quantas URLs esta página precisa (baseado em quantity_merged) - urls_needed = page.quantity_merged or 1 - - # Se esta página não tem original - if page.images and ( - not page.images.original or page.images.original == "" - ): - if url_index + urls_needed <= len(page_urls): - # Obter as URLs para esta página - urls_for_page = page_urls[url_index : url_index + urls_needed] - - # Adicionar original à página - add_original_to_page( - page.images.pk, - urls_for_page, - ["chapters", str(chapter_records.pk)], - manhwa_id, - ) - processed_count += 1 - - # Avançar o índice de URLs - url_index += urls_needed - - return { - "message": "Missing originals added successfully", - "pages_processed": processed_count, - "total_pages": current_pages.count(), - "chapter": chapter_records.title, - } - - -def add_original_to_page( - variant_id: int, urls: list, folder: list, main_id: str -): - """ - Adiciona a variant original a uma página existente sem deletá-la. - """ - # Baixar as imagens das URLs - images = download_images(urls) - - if images: - # Processar o merge das imagens - merge_batch_original(images, variant_id, folder, main_id) diff --git a/brscans/manhwa/tasks/sync_chapters.py b/brscans/manhwa/tasks/sync_chapters.py deleted file mode 100644 index 1149d37..0000000 --- a/brscans/manhwa/tasks/sync_chapters.py +++ /dev/null @@ -1,33 +0,0 @@ -from zappa.asynchronous import task - -from brscans.manhwa.models import Chapter, Manhwa -from brscans.manhwa.tasks.sync_chapter import sync_chapter -from brscans.wrapper import sources -from brscans.wrapper.sources.Generic import Generic - - -@task -def sync_chapters(manhwa_id: int, limit: int = 5): - manhwa = Manhwa.objects.filter(id=manhwa_id).first() - Source: Generic = sources.get_source_by_link(manhwa.source) - chapters = Source.chapters(manhwa) - chapters = reversed(chapters) - records = [] - - for chapter in chapters: - chapter_records = Chapter.objects.filter( - slug=chapter["id"], manhwa=manhwa - ).first() - if chapter_records == None: - records.append(chapter) - - for chapter in records[:limit]: - chapter_records = Chapter.objects.create( - slug=chapter.get("id"), - title=chapter.get("title"), - manhwa=manhwa, - source=chapter.get("url"), - ) - sync_chapter(chapter_records.pk, manhwa_id) - - return {"Message": "Chapters synced successfully."} diff --git a/brscans/manhwa/tasks/sync_manhwas.py b/brscans/manhwa/tasks/sync_manhwas.py deleted file mode 100644 index 1090bef..0000000 --- a/brscans/manhwa/tasks/sync_manhwas.py +++ /dev/null @@ -1,11 +0,0 @@ -from brscans.manhwa.models import Manhwa -from brscans.manhwa.tasks.sync_chapters import sync_chapters - - -def sync_manhwas(): - manhwas = Manhwa.objects.all() - - for manhwa in manhwas: - sync_chapters(manhwa.pk) - - return True diff --git a/brscans/manhwa/tasks/sync_pages.py b/brscans/manhwa/tasks/sync_pages.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/tasks/upscale.py b/brscans/manhwa/tasks/upscale.py deleted file mode 100644 index 74672fe..0000000 --- a/brscans/manhwa/tasks/upscale.py +++ /dev/null @@ -1,34 +0,0 @@ -from os.path import join -from uuid import uuid4 -from zappa.asynchronous import task -import httpx - -from brscans.manhwa.models import Chapter, Page - -@task -def upscale_page(page_id: int): - page = Page.objects.get(pk=page_id) - if page.images.translated: - filename = f"{uuid4().hex}.jpeg" - path = join("chapters", str(page.chapter.id), "upscaled", filename) - try: - httpx.post( - "https://t6fx7fykca.execute-api.sa-east-1.amazonaws.com/dev/upscale", - json={ - "link": page.images.translated.url, - "path": path - }, - timeout=1, - ) - except Exception as e: - print(e) - pass - - -def upscale_pages(chapter_id: int): - chapter = Chapter.objects.get(pk=chapter_id) - pages = Page.objects.filter(chapter=chapter) - for page in pages: - upscale_page(page.id) - - return {"status": "upscaled"} \ No newline at end of file diff --git a/brscans/manhwa/views.py b/brscans/manhwa/views.py deleted file mode 100644 index e47974e..0000000 --- a/brscans/manhwa/views.py +++ /dev/null @@ -1,18 +0,0 @@ -from rest_framework import viewsets -from rest_framework.decorators import action -from rest_framework.response import Response - -from brscans.manhwa.models import Manhwa -from brscans.manhwa.serializers import ManhwaSerializer - - -class ManhwaViewSet(viewsets.ModelViewSet): - queryset = Manhwa.objects.all() - serializer_class = ManhwaSerializer - permission_classes = [] - - @action(detail=False, methods=["get"]) - def search(self, request): - query = request.GET.get("query") or "" - - return Response("ok") diff --git a/brscans/manhwa/views/__init__.py b/brscans/manhwa/views/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/manhwa/views/__pycache__/__init__.cpython-38.pyc b/brscans/manhwa/views/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 9454bb4..0000000 Binary files a/brscans/manhwa/views/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/views/__pycache__/chapter.cpython-38.pyc b/brscans/manhwa/views/__pycache__/chapter.cpython-38.pyc deleted file mode 100644 index 4fd6a4f..0000000 Binary files a/brscans/manhwa/views/__pycache__/chapter.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/views/__pycache__/manhwa_chapter.cpython-38.pyc b/brscans/manhwa/views/__pycache__/manhwa_chapter.cpython-38.pyc deleted file mode 100644 index 9c83aa9..0000000 Binary files a/brscans/manhwa/views/__pycache__/manhwa_chapter.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/views/__pycache__/manhwa_vw.cpython-38.pyc b/brscans/manhwa/views/__pycache__/manhwa_vw.cpython-38.pyc deleted file mode 100644 index 4628582..0000000 Binary files a/brscans/manhwa/views/__pycache__/manhwa_vw.cpython-38.pyc and /dev/null differ diff --git a/brscans/manhwa/views/chapter.py b/brscans/manhwa/views/chapter.py deleted file mode 100644 index a219134..0000000 --- a/brscans/manhwa/views/chapter.py +++ /dev/null @@ -1,99 +0,0 @@ -from hashlib import sha256 - -from django.db.models import Q -from django.utils.datetime_safe import datetime -from rest_framework import viewsets -from rest_framework.decorators import action -from rest_framework.response import Response -from slugify import slugify - -from brscans.manhwa.models import Chapter, ReadChapter -from brscans.manhwa.serializers import ( - ChapterNextPreviousSerializer, - ChapterSerializer, -) -from brscans.manhwa.tasks.images_variants import ( - merge_pages_original, - process_image_translate, -) -from brscans.pagination import TotalPagination -from brscans.wrapper.sources.Generic import Generic - - -class ChapterViewSet(viewsets.ModelViewSet): - serializer_class = ChapterSerializer - queryset = Chapter.objects.all().prefetch_related("pages", "pages__images") - pagination_class = TotalPagination - - def retrieve(self, request, *args, **kwargs): - self.serializer_class = ChapterNextPreviousSerializer - return super().retrieve(request, *args, **kwargs) - - @action(detail=True, methods=["get"]) - def fix(self, request, pk): - chapter = Chapter.objects.get(pk=pk) - pages = chapter.pages.filter( - Q(images__isnull=True) - | Q(images__translated__isnull=True) - | Q(images__original__isnull=True) - | Q(images__original="") - | Q(images__translated="") - ) - - for page in pages: - variants = page.images - process_image_translate( - variants.pk, - variants.original.url, - [ - "chapters", - str(chapter.pk), - ], - chapter.manhwa.pk, - ) - - return Response({"status": "ok"}) - - @action(detail=True, methods=["post"], url_path="mark-read") - def mark_read(self, request, pk=None): - if not request.user.is_authenticated: - return Response({"error": "Autenticação necessária."}, status=401) - - chapter = self.get_object() - ReadChapter.objects.get_or_create( - user=request.user, manhwa=chapter.manhwa, chapter=chapter - ) - return Response({"status": "Marcado como lido."}) - - @action(detail=False, methods=["get"]) - def download(self, request): - link = request.query_params.get("link") - identifier = sha256(link.encode("utf-8")).hexdigest() - - chapter = ( - Chapter.objects.filter(identifier=identifier) - .prefetch_related("pages", "pages__images") - .first() - ) - - if chapter: - serializer = ChapterSerializer(chapter) - return Response(serializer.data) - - chapter = Chapter.objects.create( - release_date=datetime.now(), - identifier=identifier, - source=link, - ) - - result = Generic.chapter(chapter) - chapter.title = result["title"] - chapter.slug = slugify(result["title"]) - chapter.save() - - merge_pages_original( - result["pages"], chapter.pk, ["chapters", str(chapter.pk)] - ) - - serializer = ChapterSerializer(chapter) - return Response(serializer.data) diff --git a/brscans/manhwa/views/comment_vw.py b/brscans/manhwa/views/comment_vw.py deleted file mode 100644 index 342f589..0000000 --- a/brscans/manhwa/views/comment_vw.py +++ /dev/null @@ -1,34 +0,0 @@ -from rest_framework import viewsets -from rest_framework.response import Response - -from brscans.manhwa.models import Comment -from brscans.manhwa.serializers import CommentSerializer - - -class CommentViewSet(viewsets.ModelViewSet): - serializer_class = CommentSerializer - - def get_queryset(self): - qs = ( - Comment.objects.all() - .select_related("user", "user__profile") - .prefetch_related( - "replies", "replies__user", "replies__user__profile" - ) - ) - chapter_id = self.request.query_params.get("chapter") - if chapter_id: - qs = qs.filter(chapter_id=chapter_id, parent__isnull=True) - return qs - - def perform_create(self, serializer): - serializer.save(user=self.request.user) - - def destroy(self, request, *args, **kwargs): - comment = self.get_object() - if comment.user != request.user: - return Response( - {"error": "Sem permissão para deletar este comentário."}, - status=403, - ) - return super().destroy(request, *args, **kwargs) diff --git a/brscans/manhwa/views/image.py b/brscans/manhwa/views/image.py deleted file mode 100644 index d7fa254..0000000 --- a/brscans/manhwa/views/image.py +++ /dev/null @@ -1,17 +0,0 @@ -from rest_framework import viewsets - -from brscans.manhwa.models import ImageVariants -from brscans.manhwa.serializers import VariantsSerializer, VariantsUpdateSerializer -from brscans.pagination import TotalPagination - - -class ImageVariantViewSet(viewsets.ModelViewSet): - serializer_class = VariantsSerializer - queryset = ImageVariants.objects.all() - pagination_class = TotalPagination - authentication_classes = [] - permission_classes = [] - - def partial_update(self, request, *args, **kwargs): - self.serializer_class = VariantsUpdateSerializer - return super().partial_update(request, *args, **kwargs) diff --git a/brscans/manhwa/views/manhwa_chapter.py b/brscans/manhwa/views/manhwa_chapter.py deleted file mode 100644 index a1076f6..0000000 --- a/brscans/manhwa/views/manhwa_chapter.py +++ /dev/null @@ -1,63 +0,0 @@ -from django.db.models.expressions import RawSQL -from rest_framework import viewsets -from rest_framework.decorators import action -from rest_framework.response import Response - -from brscans.manhwa.models import Chapter -from brscans.manhwa.serializers import ChapterSerializer, SimpleChapterSerializer -from brscans.manhwa.tasks.sync_chapter import fix_pages -from brscans.manhwa.tasks.upscale import upscale_pages -from brscans.wrapper.sources import get_source_by_link -from brscans.wrapper.sources.Generic import Generic -from rest_framework.permissions import IsAuthenticatedOrReadOnly - - -class ManhwaChapterViewSet(viewsets.ModelViewSet): - serializer_class = ChapterSerializer - queryset = Chapter.objects.all() - - def get_queryset(self): - return ( - Chapter.objects.filter(manhwa=self.kwargs["manhwa_pk"]) - .annotate( - slug_number=RawSQL( - """ - CASE - WHEN slug ~ '[0-9]+' - THEN CAST( - (SELECT REGEXP_MATCHES(slug, '[0-9]+'))[1] - AS INTEGER - ) - ELSE NULL - END - """, - [], - ) - ) - .order_by("slug_number") - ) - - def list(self, request, *args, **kwargs): - self.serializer_class = SimpleChapterSerializer - return super().list(request, *args, **kwargs) - - @action(detail=True, methods=["get"]) - def fix(self, request, manhwa_pk=None, pk=None): - chapter = Chapter.objects.get(manhwa=manhwa_pk, pk=pk) - - fix_pages(chapter.pk) - return Response({"status": "fixed"}) - - @action(detail=True, methods=["get"]) - def teste(self, request, manhwa_pk=None, pk=None): - chapter = Chapter.objects.get(manhwa=manhwa_pk, pk=pk) - - Source: Generic = get_source_by_link(chapter.source) - chapter = Source.chapter(chapter.source) - return Response(chapter) - - @action(detail=True, methods=["get"]) - def upscale(self, request, manhwa_pk=None, pk=None): - chapter = Chapter.objects.get(manhwa=manhwa_pk, pk=pk) - upscale_pages(chapter.pk) - return Response({"status": "upscaled"}) \ No newline at end of file diff --git a/brscans/manhwa/views/manhwa_vw.py b/brscans/manhwa/views/manhwa_vw.py deleted file mode 100644 index 11944a7..0000000 --- a/brscans/manhwa/views/manhwa_vw.py +++ /dev/null @@ -1,432 +0,0 @@ -from hashlib import sha256 - -from django.db.models import Count, Prefetch, Q -from django.db.models.expressions import RawSQL -from django_filters.rest_framework import DjangoFilterBackend -from rest_framework import viewsets -from rest_framework.decorators import action -from rest_framework.filters import OrderingFilter, SearchFilter -from rest_framework.response import Response - -from brscans.manhwa.models import ( - Chapter, - Genre, - ImageVariants, - Manhwa, - Page, - ReadChapter, - ReadingHistory, -) -from brscans.manhwa.serializers import ( - ChapterSerializer, - GenreSerializer, - ManhwaDetailSerializer, - ManhwaSerializer, - RecentChapterSerializer, -) -from brscans.manhwa.tasks.images_variants import add_original_image_variant -from brscans.manhwa.tasks.sync_chapter import ( - fix_pages, - sync_chapter, - sync_missing_original_pages, -) -from brscans.manhwa.tasks.sync_chapters import sync_chapters -from brscans.pagination import TotalPaginationManhwa - -# from brscans.utils.anime4k import Anime4k -from brscans.wrapper import sources -from brscans.wrapper.sources.Generic import Generic - - -class ManhwaViewSet(viewsets.ModelViewSet): - queryset = ( - Manhwa.objects.all() - .order_by("-id") - .select_related("thumbnail") - .prefetch_related("genres", "chapters") - ) - serializer_class = ManhwaSerializer - pagination_class = TotalPaginationManhwa - filter_backends = [SearchFilter, OrderingFilter, DjangoFilterBackend] - search_fields = ["title", "description", "author", "source"] - ordering = ["-id"] - - def list(self, request, *args, **kwargs): - self.queryset = self.queryset.filter(is_nsfw=False) - return super().list(request, *args, **kwargs) - - def retrieve(self, request, *args, **kwargs): - self.queryset = self.queryset.prefetch_related(None).prefetch_related( - "genres", - Prefetch( - "chapters", - queryset=Chapter.objects.all() - .annotate( - slug_number=RawSQL( - """ - CASE - WHEN slug ~ '[0-9]+' - THEN CAST( - (SELECT REGEXP_MATCHES(slug, '[0-9]+'))[1] - AS INTEGER - ) - ELSE NULL - END - """, - [], - ) - ) - .order_by("slug_number"), - ), - "chapters__pages", - "chapters__pages__images", - ) - self.serializer_class = ManhwaDetailSerializer - return super().retrieve(request, *args, **kwargs) - - @action(detail=False, methods=["get"]) - def search(self, request): - query = request.GET.get("query") or "" - - manhwas = Manhwa.objects.filter( - Q(title__icontains=query) - | Q(description__icontains=query) - | Q(author__icontains=query) - | Q(genres__name__icontains=query) - | Q(source__icontains=query) - ).distinct() - - serializer = ManhwaSerializer(manhwas, many=True) - return Response(serializer.data) - - @action(detail=False, methods=["get"]) - def recent_chapters(self, request): - """Latest chapters with parent manga data for the homepage carousel.""" - limit = int(request.query_params.get("limit", 20)) - chapters = ( - Chapter.objects.filter( - manhwa__is_nsfw=False, - release_date__isnull=False, - ) - .select_related("manhwa", "manhwa__thumbnail") - .order_by("-release_date")[:limit] - ) - serializer = RecentChapterSerializer(chapters, many=True) - return Response(serializer.data) - - @action(detail=False, methods=["get"]) - def top(self, request): - """Top mangas ranked by read chapters count (popularity proxy).""" - limit = int(request.query_params.get("limit", 10)) - manhwas = ( - Manhwa.objects.filter(is_nsfw=False) - .annotate(read_count=Count("read_chapters")) - .select_related("thumbnail") - .prefetch_related("genres") - .order_by("-read_count", "-id")[:limit] - ) - serializer = ManhwaSerializer(manhwas, many=True) - return Response(serializer.data) - - @action(detail=True, methods=["post"]) - def progress(self, request, pk=None): - if not request.user.is_authenticated: - return Response({"error": "Autenticação necessária."}, status=401) - - manhwa = self.get_object() - chapter_id = request.data.get("chapter_id") - page_number = request.data.get("page_number", 1) - - if not chapter_id: - return Response({"error": "chapter_id é obrigatório."}, status=400) - - ReadingHistory.objects.update_or_create( - user=request.user, - manhwa=manhwa, - defaults={"chapter_id": chapter_id, "page_number": page_number}, - ) - return Response({"status": "Progresso salvo."}) - - @action(detail=True, methods=["get"], url_path="read-chapters") - def read_chapters(self, request, pk=None): - if not request.user.is_authenticated: - return Response([]) - - manhwa = self.get_object() - read_chapters = ReadChapter.objects.filter( - user=request.user, manhwa=manhwa - ).values_list("chapter_id", flat=True) - - return Response(list(read_chapters)) - - @action(detail=False, methods=["get"], url_path="reading-history") - def reading_history(self, request): - if not request.user.is_authenticated: - return Response([]) - - limit = int(request.query_params.get("limit", 10)) - history = ( - ReadingHistory.objects.filter(user=request.user) - .select_related("manhwa", "manhwa__thumbnail", "chapter") - .order_by("-updated_at")[:limit] - ) - - data = [] - for h in history: - data.append( - { - "manhwa": ManhwaSerializer(h.manhwa).data, - "chapter": ChapterSerializer(h.chapter).data, - "page_number": h.page_number, - "updated_at": h.updated_at, - } - ) - - return Response(data) - - @action(detail=False, methods=["get"]) - def genres(self, request): - """List all available genres.""" - genres = Genre.objects.all().order_by("name") - serializer = GenreSerializer(genres, many=True) - return Response(serializer.data) - - @action(detail=True, methods=["get"]) - def count_fix_caps(self, request, pk=None): - chapters = Chapter.objects.filter( - ( - Q(pages__isnull=True) - | Q(pages__images__isnull=True) - | Q(pages__images__translated__isnull=True) - | Q(pages__images__translated="") - ), - manhwa=pk, - pages__images__original__isnull=False, - ).distinct() - - for chapter in chapters[:20]: - fix_pages(chapter.pk) - - return Response({"count": chapters.count()}) - - @action(detail=True, methods=["get"]) - def count_pages_original(self, request, pk=None): - page = Page.objects.filter(chapter__manhwa=pk).filter( - (Q(images__original__isnull=True) | Q(images__original="")), - ) - - return Response({"count": page.count()}) - - @action(detail=True, methods=["get"]) - def count_pages_to_fix(self, request, pk=None): - page = Page.objects.filter( - ( - Q(images__isnull=True) - | Q(images__translated__isnull=True) - | Q(images__translated="") - ), - ) - - return Response({"count": page.count()}) - - @action(detail=True, methods=["get"]) - def sync(self, request, pk=None): - limit = request.query_params.get("limit", "5") - manhwa = Manhwa.objects.get(pk=pk) - sync_chapters(manhwa.pk, int(limit)) - serializer = self.serializer_class(manhwa) - return Response(serializer.data) - - @action(detail=True, methods=["get"]) - def delete_chapter(self, request, pk=None): - manhwa = Manhwa.objects.get(pk=pk) - chapters = Chapter.objects.filter(manhwa=manhwa) - chapters.delete() - return Response({"message": "Chapter deleted successfully."}) - - @action(detail=True, methods=["get"]) - def fix_caps(self, request, pk=None): - chapters = Chapter.objects.filter( - ( - Q(pages__images__original__isnull=True) - | Q(pages__images__original="") - ), - manhwa=pk, - ).distinct()[:20] - - for chapter in chapters: - chapter.pages.all().delete() - sync_chapter(chapter.pk, pk) - - serializer_data = ChapterSerializer(chapters, many=True).data - - return Response( - { - "message": f"Corrigindo {chapters.count()} capítulos.", - "data": serializer_data, - } - ) - - @action(detail=True, methods=["get"]) - def sync_missing_pages(self, request, pk=None): - """ - Sincroniza páginas sem variant original. - Faz o fetch novamente do capítulo e processa apenas as páginas faltantes. - """ - # Buscar capítulos com páginas sem original - chapters = ( - Chapter.objects.filter(manhwa=pk, pages__images__isnull=False) - .filter( - Q(pages__images__original__isnull=True) - | Q(pages__images__original="") - ) - .distinct() - ) - - # Limitar para processar em lotes - limit = int(request.GET.get("limit", 10)) - chapters = chapters[:limit] - - results = [] - for chapter in chapters: - sync_missing_original_pages(chapter.pk, pk) - results.append( - { - "chapter_id": chapter.pk, - "chapter_title": chapter.title, - } - ) - - return Response( - { - "message": f"Sincronizando páginas faltantes de {chapters.count()} capítulos", - "total_chapters": chapters.count(), - "results": results, - } - ) - - @action(detail=True, methods=["get"]) - def count_missing_original_pages(self, request, pk=None): - """ - Conta quantas páginas estão sem variant original. - """ - # Contar páginas sem original neste manhwa - pages_without_original = ( - Page.objects.filter(chapter__manhwa=pk) - .filter(Q(images__original__isnull=True) | Q(images__original="")) - .count() - ) - - # Contar capítulos afetados - chapters_affected = ( - Chapter.objects.filter(manhwa=pk, pages__images__isnull=False) - .filter( - Q(pages__images__original__isnull=True) - | Q(pages__images__original="") - ) - .distinct() - .count() - ) - - # Detalhes por capítulo (primeiros 10) - chapter_details = [] - chapters = ( - Chapter.objects.filter(manhwa=pk, pages__images__isnull=False) - .filter( - Q(pages__images__original__isnull=True) - | Q(pages__images__original="") - ) - .distinct()[:10] - ) - - for chapter in chapters: - pages_missing = ( - Page.objects.filter(chapter=chapter) - .filter( - Q(images__original__isnull=True) | Q(images__original="") - ) - .count() - ) - - chapter_details.append( - { - "chapter_id": chapter.pk, - "chapter_title": chapter.title, - "pages_without_original": pages_missing, - } - ) - - return Response( - { - "total_pages_without_original": pages_without_original, - "total_chapters_affected": chapters_affected, - "sample_chapters": chapter_details, - } - ) - - @action(detail=True, methods=["get"]) - def fix(self, request, pk=None): - manhwa = Manhwa.objects.get(pk=pk) - - chapters = Chapter.objects.filter(manhwa=manhwa) - - results = [] - - for chapter in chapters: - results.append(sync_chapter(chapter.pk, pk)) - - return Response(results) - - @action(detail=False, methods=["get"]) - def download(self, request): - link = request.query_params.get("link") - limit = request.query_params.get("limit", 5) - identifier = sha256(link.encode("utf-8")).hexdigest() - - manhwa = Manhwa.objects.filter(identifier=identifier).first() - - if manhwa: - print("manhwa found") - sync_chapters(manhwa.pk, int(limit)) - - serializer = self.serializer_class(manhwa) - return Response(serializer.data) - - Source: Generic = sources.get_source_by_link(link) - print("Source", Source) - result = Source.info(link, capthers=False) - print("result", result) - - id = str(result.get("id")).encode("utf-8") - - manhwa = Manhwa.objects.create( - external_id=result.get("id"), - hash_external_id=sha256(id).hexdigest(), - title=result.get("title"), - slug=result.get("slug", None), - source=result.get("url"), - description=result.get("summary"), - identifier=identifier, - ) - thumbnail = ImageVariants.objects.create() - manhwa.thumbnail = thumbnail - manhwa.save() - - print(manhwa.pk) - add_original_image_variant( - thumbnail.pk, - result.get("image"), - ["chapters", str(manhwa.pk)], - False, - ) - sync_chapters(manhwa.pk, int(limit)) - - return Response(self.serializer_class(manhwa).data) - - # @action(detail=False, methods=["get"]) - # def anime4k(self, request): - # image = request.query_params.get("image") - # anime4k = Anime4k() - # path = anime4k.upscale_remote_image(image) - - # return FileResponse(open(path, "rb"), content_type="image/png") diff --git a/brscans/manhwa/views/notification_vw.py b/brscans/manhwa/views/notification_vw.py deleted file mode 100644 index f971c04..0000000 --- a/brscans/manhwa/views/notification_vw.py +++ /dev/null @@ -1,32 +0,0 @@ -from rest_framework import mixins, viewsets -from rest_framework.decorators import action -from rest_framework.permissions import IsAuthenticated -from rest_framework.response import Response - -from brscans.manhwa.models import Notification -from brscans.manhwa.serializers import NotificationSerializer - - -class NotificationViewSet( - mixins.ListModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet -): - permission_classes = [IsAuthenticated] - serializer_class = NotificationSerializer - - def get_queryset(self): - return Notification.objects.filter(user=self.request.user) - - @action(detail=True, methods=["post"]) - def read(self, request, pk=None): - notification = self.get_object() - notification.read = True - notification.save() - return Response({"status": "Notificação marcada como lida."}) - - @action(detail=False, methods=["post"], url_path="read-all") - def read_all(self, request): - notifications = self.get_queryset().filter(read=False) - updated = notifications.update(read=True) - return Response( - {"status": f"{updated} notificações marcadas como lidas."} - ) diff --git a/brscans/pagination.py b/brscans/pagination.py deleted file mode 100644 index 1911020..0000000 --- a/brscans/pagination.py +++ /dev/null @@ -1,35 +0,0 @@ -from rest_framework import pagination -from rest_framework.response import Response - - -class TotalPagination(pagination.PageNumberPagination): - page_size = 10 - page_size_query_param = "limit" - max_page_size = 100 - - def get_paginated_response(self, data): - return Response( - { - "next": self.get_next_link(), - "previous": self.get_previous_link(), - "count": self.page.paginator.count, - "total_pages": self.page.paginator.num_pages, - "results": data, - } - ) - -class TotalPaginationManhwa(pagination.PageNumberPagination): - page_size = 100 - page_size_query_param = "limit" - max_page_size = 100 - - def get_paginated_response(self, data): - return Response( - { - "next": self.get_next_link(), - "previous": self.get_previous_link(), - "count": self.page.paginator.count, - "total_pages": self.page.paginator.num_pages, - "results": data, - } - ) diff --git a/brscans/services/__init__.py b/brscans/services/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/services/__pycache__/__init__.cpython-38.pyc b/brscans/services/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 35623b8..0000000 Binary files a/brscans/services/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/services/__pycache__/s3.cpython-38.pyc b/brscans/services/__pycache__/s3.cpython-38.pyc deleted file mode 100644 index 1139ebd..0000000 Binary files a/brscans/services/__pycache__/s3.cpython-38.pyc and /dev/null differ diff --git a/brscans/services/s3.py b/brscans/services/s3.py deleted file mode 100644 index fcef4aa..0000000 --- a/brscans/services/s3.py +++ /dev/null @@ -1,17 +0,0 @@ -import boto3 -from django.conf import settings - - -session = boto3.Session() -s3_client = ( - session.client( - "s3", - aws_access_key_id=settings.AWS_ACCESS_KEY_ID, - aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY, - aws_session_token=settings.AWS_SESSION_TOKEN, - region_name=settings.AWS_S3_REGION_NAME, - endpoint_url=f"https://s3.{settings.AWS_S3_REGION_NAME}.amazonaws.com", - ) - if settings.USE_S3 - else None -) diff --git a/brscans/settings.py b/brscans/settings.py deleted file mode 100644 index a5379ec..0000000 --- a/brscans/settings.py +++ /dev/null @@ -1,195 +0,0 @@ -""" -Django settings for brscans project. - -Generated by 'django-admin startproject' using Django 5.0.1. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/5.0/ref/settings/ -""" - -import os -from pathlib import Path - -from dotenv import load_dotenv - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -load_dotenv() -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = ( - "django-insecure-y3ji3t=%kq$4%i95)-kqh6ey&dae795dve-r^+_xb_xm62s43&" -) - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True -PRODUCTION = os.environ.get("PRODUCTION", "False") == "True" - -USE_S3 = True -ALLOWED_HOSTS = [ - "*", -] -INTERNAL_IPS = ["127.0.0.1", "localhost"] - -CORS_ORIGIN_ALLOW_ALL = True - - -# Application definition - -INSTALLED_APPS = [ - "debug_toolbar", - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.messages", - "django.contrib.staticfiles", - "corsheaders", - "rest_framework", - "rest_framework.authtoken", - "brscans.manhwa.apps.manhwaConfig", - "brscans.authentication.apps.AuthenticationConfig", - "django_filters", - "drf_spectacular", -] - -MIDDLEWARE = [ - "debug_toolbar.middleware.DebugToolbarMiddleware", - "corsheaders.middleware.CorsMiddleware", - "django.middleware.security.SecurityMiddleware", - "whitenoise.middleware.WhiteNoiseMiddleware", - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", -] - -ROOT_URLCONF = "brscans.urls" - -TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [], - "APP_DIRS": True, - "OPTIONS": { - "context_processors": [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.auth.context_processors.auth", - "django.contrib.messages.context_processors.messages", - ], - }, - }, -] - -WSGI_APPLICATION = "brscans.wsgi.application" - - -# Database -# https://docs.djangoproject.com/en/5.0/ref/settings/#databases - -DATABASES = { - "default": { - "ENGINE": os.environ.get("DATABASE_ENGINE"), - "NAME": os.environ.get("DATABASE_NAME"), - "USER": os.environ.get("DATABASE_USER"), - "PASSWORD": os.environ.get("DATABASE_PASS"), - "HOST": os.environ.get("DATABASE_HOST"), - "PORT": os.environ.get("DATABASE_PORT"), - } -} - -REST_FRAMEWORK = { - "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema", - "DEFAULT_AUTHENTICATION_CLASSES": [ - "rest_framework.authentication.TokenAuthentication", - "rest_framework.authentication.SessionAuthentication", - ], - "DEFAULT_PERMISSION_CLASSES": [ - "rest_framework.permissions.IsAuthenticatedOrReadOnly", - ], -} - - -AUTHENTICATION_BACKENDS = [ - "django.contrib.auth.backends.ModelBackend", -] - -# Password validation -# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/5.0/topics/i18n/ - -LANGUAGE_CODE = "pt-br" - -TIME_ZONE = "UTC" - -USE_I18N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/5.0/howto/static-files/ - -# Default primary key field type -# https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" - -if PRODUCTION: - CLOUDFRONT_DOMAIN = os.environ.get("CLOUDFRONT_DOMAIN") - - AWS_ACCESS_KEY_ID = os.environ.get("aws_access_key_id") - AWS_SECRET_ACCESS_KEY = os.environ.get("aws_secret_access_key") - AWS_SESSION_TOKEN = os.environ.get("aws_session_token") - - AWS_STORAGE_BUCKET_NAME = os.environ.get("S3_STATIC_BUCKET") - AWS_S3_REGION_NAME = os.environ.get("S3_REGION") - AWS_QUERYSTRING_EXPIRE = 604800 - AWS_S3_CUSTOM_DOMAIN = f"{CLOUDFRONT_DOMAIN}" - - STATICFILES_STORAGE = "brscans.storage_backends.StaticStorage" - STATIC_URL = f"https://{CLOUDFRONT_DOMAIN}/static/" - STATIC_LOCATION = "static" - - DEFAULT_FILE_STORAGE = "brscans.storage_backends.MediaStorage" - MEDIA_URL = f"https://{CLOUDFRONT_DOMAIN}/media/" - PUBLIC_MEDIA_LOCATION = "media/" -else: - STATIC_ROOT = os.path.join(BASE_DIR, "..", "static") - STATIC_URL = "static/" - - # our configuration - MEDIA_ROOT = os.path.join(BASE_DIR, "..", "uploaded_files") - MEDIA_URL = "/media/" - - -MAX_UPLOAD_SIZE = 20 * 1024 * 1024 -TRANSLATOR_URL = os.environ.get("TRANSLATOR_URL") diff --git a/brscans/storage_backends.py b/brscans/storage_backends.py deleted file mode 100644 index d431699..0000000 --- a/brscans/storage_backends.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.conf import settings -from storages.backends.s3boto3 import S3Boto3Storage - - -class StaticStorage(S3Boto3Storage): - location = "static" - custom_domain = settings.CLOUDFRONT_DOMAIN - - -class MediaStorage(S3Boto3Storage): - location = "media" - custom_domain = settings.CLOUDFRONT_DOMAIN - file_overwrite = False diff --git a/brscans/urls.py b/brscans/urls.py deleted file mode 100644 index 81dfc24..0000000 --- a/brscans/urls.py +++ /dev/null @@ -1,55 +0,0 @@ -from debug_toolbar.toolbar import debug_toolbar_urls -from django.conf import settings -from django.conf.urls import include -from django.conf.urls.static import static -from django.contrib import admin -from django.urls import path -from drf_spectacular.views import ( - SpectacularAPIView, - SpectacularRedocView, - SpectacularSwaggerView, -) -from rest_framework.routers import DefaultRouter -from rest_framework_nested import routers - -from brscans.manhwa.views.chapter import ChapterViewSet -from brscans.manhwa.views.comment_vw import CommentViewSet -from brscans.manhwa.views.image import ImageVariantViewSet -from brscans.manhwa.views.manhwa_chapter import ManhwaChapterViewSet -from brscans.manhwa.views.manhwa_vw import ManhwaViewSet -from brscans.manhwa.views.notification_vw import NotificationViewSet -from brscans.wrapper.views import WrapperViewSet - -router = DefaultRouter() -router.register(r"manhwas", ManhwaViewSet, basename="manhwas") -router.register(r"wrapper", WrapperViewSet, basename="wrapper") -router.register(r"chapters", ChapterViewSet, basename="chapters") -router.register(r"images", ImageVariantViewSet, basename="image-variants") -router.register(r"comments", CommentViewSet, basename="comments") -router.register(r"notifications", NotificationViewSet, basename="notifications") - -client_router = routers.NestedSimpleRouter(router, r"manhwas", lookup="manhwa") -client_router.register(r"chapters", ManhwaChapterViewSet, basename="chapters") - - -urlpatterns = ( - [ - path(r"", include(router.urls)), - path(r"", include(client_router.urls)), - path(r"", include("brscans.authentication.urls")), - path("admin/", admin.site.urls), - path("api/schema/", SpectacularAPIView.as_view(), name="schema"), - path( - "api/swagger/", - SpectacularSwaggerView.as_view(url_name="schema"), - name="swagger-ui", - ), - path( - "api/redoc/", - SpectacularRedocView.as_view(url_name="schema"), - name="redoc", - ), - ] - + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) - + debug_toolbar_urls() -) diff --git a/brscans/utils/__init__.py b/brscans/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/utils/__pycache__/__init__.cpython-38.pyc b/brscans/utils/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 7f7522e..0000000 Binary files a/brscans/utils/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/__pycache__/anime4k.cpython-38.pyc b/brscans/utils/__pycache__/anime4k.cpython-38.pyc deleted file mode 100644 index 5479c2b..0000000 Binary files a/brscans/utils/__pycache__/anime4k.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/__pycache__/generate_presigned_url.cpython-38.pyc b/brscans/utils/__pycache__/generate_presigned_url.cpython-38.pyc deleted file mode 100644 index c56f0d9..0000000 Binary files a/brscans/utils/__pycache__/generate_presigned_url.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/__pycache__/image.cpython-38.pyc b/brscans/utils/__pycache__/image.cpython-38.pyc deleted file mode 100644 index 4504fca..0000000 Binary files a/brscans/utils/__pycache__/image.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/__pycache__/image_url.cpython-38.pyc b/brscans/utils/__pycache__/image_url.cpython-38.pyc deleted file mode 100644 index b32b993..0000000 Binary files a/brscans/utils/__pycache__/image_url.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/__pycache__/resize_image.cpython-38.pyc b/brscans/utils/__pycache__/resize_image.cpython-38.pyc deleted file mode 100644 index 3079ed2..0000000 Binary files a/brscans/utils/__pycache__/resize_image.cpython-38.pyc and /dev/null differ diff --git a/brscans/utils/anime4k.py b/brscans/utils/anime4k.py deleted file mode 100644 index ab1356e..0000000 --- a/brscans/utils/anime4k.py +++ /dev/null @@ -1,30 +0,0 @@ -# import os -# from pathlib import Path -# import tempfile -# import requests - -# from pyanime4k import ac -# from brscans import settings - - -# class Anime4k: -# def __init__(self): -# self.parameters = ac.Parameters() -# self.parameters.HDN = True - -# def upscale_image(self, image: Path, url: str): -# temp_up = os.path.join(settings.MEDIA_ROOT, "imagens", f"{hash(url)}.png") -# return temp_up - -# def upscale_remote_image(self, image: str, suffix_input: str = ".webp"): -# if os.path.exists( -# os.path.join(settings.MEDIA_ROOT, "imagens", f"{hash(image)}.png") -# ): -# return os.path.join(settings.MEDIA_ROOT, "imagens", f"{hash(image)}.png") - -# response = requests.get(image) -# temp = Path(tempfile.mkstemp(suffix=suffix_input)[1]) -# temp.write_bytes(response.content) - -# return self.upscale_image(temp, image) -# # return temp diff --git a/brscans/utils/generate_presigned_url.py b/brscans/utils/generate_presigned_url.py deleted file mode 100644 index 0b26896..0000000 --- a/brscans/utils/generate_presigned_url.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.conf import settings -from brscans.services.s3 import s3_client - - -def generate_presigned_url(key: str, file: dict): - response = s3_client.generate_presigned_post( - Bucket=settings.AWS_STORAGE_BUCKET_NAME, - Key=key, - Fields={"Content-Type": file.get("type", ""), "key": key}, - Conditions=[ - {"Content-Type": file.get("type", "")}, - ["content-length-range", 0, settings.MAX_UPLOAD_SIZE], - ], - ExpiresIn=3600, - ) - return {"url": response["url"], "fields": response["fields"]} diff --git a/brscans/utils/image.py b/brscans/utils/image.py deleted file mode 100644 index 0eebfbf..0000000 --- a/brscans/utils/image.py +++ /dev/null @@ -1,160 +0,0 @@ -from concurrent.futures import ThreadPoolExecutor -from datetime import datetime -from io import BytesIO - -import requests -from django.core.files.base import ContentFile -from PIL import Image -from requests.adapters import HTTPAdapter - -session = requests.Session() - -adapter = HTTPAdapter(pool_connections=50, pool_maxsize=50) -session.mount("http://", adapter) -session.mount("https://", adapter) - - -def normalize_url(url: str) -> str: - print("url", url) - """Remove barras extras ou corrige URLs malformadas.""" - if url.startswith("https:///"): - url = url.replace("https:///", "https://", 1) - elif url.startswith("http:///"): - url = url.replace("http:///", "http://", 1) - return url - - -def get_referer_from_url(url: str) -> str: - """Extrai o referer a partir do domínio da URL.""" - from urllib.parse import urlparse - - parsed = urlparse(url) - # Para CDNs do MangaBuddy, usar mangabuddy.com como referer - if "mbcdn" in parsed.netloc or "mangabuddy" in parsed.netloc: - return "https://mangabuddy.com/" - return f"{parsed.scheme}://{parsed.netloc}/" - - -def download_image(url, headers=None): - try: - normalized_url = normalize_url(url) - - default_headers = { - "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", - "Referer": get_referer_from_url(normalized_url), - "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8", - } - - if headers: - default_headers.update(headers) - - response = requests.get(normalized_url, headers=default_headers) - if response.status_code != 200: - print(f"Erro ao baixar imagem: {normalized_url}") - response.raise_for_status() - return Image.open(BytesIO(response.content)) - except Exception as e: - print(f"Erro ao baixar imagem: {url}") - print(e) - return None - - -# Função para fazer merge vertical de imagens -def merge_images(images): - widths, heights = zip(*(i.size for i in images)) - total_height = sum(heights) - max_width = max(widths) - - new_image = Image.new("RGB", (max_width, total_height)) - y_offset = 0 - for im in images: - new_image.paste(im, (0, y_offset)) - y_offset += im.height - - return new_image - - -def download_images(urls): - with ThreadPoolExecutor() as executor: - images = list(executor.map(download_image, urls)) - if any(img is None for img in images): - print("Algumas imagens falharam ao baixar.") - images = [img for img in images if img is not None] - return images - - -def images_height(images): - return [{"height": image.height, "width": image.width} for image in images] - - -# Função principal para processar URLs e retornar lista de ContentFile -def batch_urls(images): - time = datetime.now() - sizes = images_height(images) - - max_height = 8191 - grouped_images = [] - current_group = [] - current_height = 0 - current_width = None - - for image, size in zip(images, sizes): - if current_width is None: - current_width = size.get("width") - - if current_width == size.get("width"): - if current_height + size.get("height") <= max_height: - current_group.append(image) - current_height += size.get("height") - else: - grouped_images.append(current_group) - current_group = [image] - current_height = size.get("height") - current_width = size.get("width") - else: - grouped_images.append(current_group) - current_group = [image] - current_height = size.get("height") - current_width = size.get("width") - - if current_group: - grouped_images.append(current_group) - - print( - f"Levou {(time - datetime.now()).total_seconds():.2f} segundos para baixar as imagens." - ) - return grouped_images - - -def process_merge_images(images): - merged_image = merge_images(images) - buffer = BytesIO() - merged_image.convert("RGB").save(buffer, format="WEBP") - return ContentFile(buffer.getvalue(), name="merged_image.webp") - - -def split_large_image(image): - max_height = 16383 - - if image.height <= max_height: - return [image] - - num_parts = (image.height + max_height - 1) // max_height - parts = [] - - for i in range(num_parts): - top = i * max_height - bottom = min((i + 1) * max_height, image.height) - - part = image.crop((0, top, image.width, bottom)) - parts.append(part) - - return parts - - -def batch_images_with_split(images): - all_images = [] - for img in images: - all_images.extend(split_large_image(img)) - - return batch_urls(all_images) diff --git a/brscans/utils/image_url.py b/brscans/utils/image_url.py deleted file mode 100644 index 3394eb7..0000000 --- a/brscans/utils/image_url.py +++ /dev/null @@ -1,23 +0,0 @@ -from io import BytesIO - -import cloudscraper -from django.core.files.base import ContentFile -from PIL import Image - -scraper = cloudscraper.create_scraper() - - -def image_url(url: str, filename: str, referer_url: str = 'https://mangabuddy.com/'): # Adicione o referer como parâmetro - headers = { - 'Referer': referer_url, - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' # User-Agent real - } - response = scraper.get(url, headers=headers) - print(url) - - image = Image.open(BytesIO(response.content)) - buffer = BytesIO() - image.save(buffer, "WEBP", quality=95) - - content_file = ContentFile(buffer.getvalue(), name=filename) - return content_file \ No newline at end of file diff --git a/brscans/utils/resize_image.py b/brscans/utils/resize_image.py deleted file mode 100644 index 72242db..0000000 --- a/brscans/utils/resize_image.py +++ /dev/null @@ -1,25 +0,0 @@ -from PIL import Image - - -def resize_image(path_image, max_height=1080, max_width=1920) -> Image: - try: - img = Image.open(path_image) - - width, height = img.size - if height > max_height or width > max_width: - if width > max_width: - ratio = max_width / width - width = max_width - height = int(height * ratio) - - if height > max_height: - ratio = max_height / height - width = int(width * ratio) - height = max_height - - return img.resize((width, height), Image.LANCZOS) - else: - return None - except FileNotFoundError: - # should probably have a log here - pass diff --git a/brscans/wrapper/__init__.py b/brscans/wrapper/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/brscans/wrapper/__pycache__/__init__.cpython-310.pyc b/brscans/wrapper/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 54b01c7..0000000 Binary files a/brscans/wrapper/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/brscans/wrapper/__pycache__/__init__.cpython-38.pyc b/brscans/wrapper/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 70753c6..0000000 Binary files a/brscans/wrapper/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/__pycache__/utils.cpython-38.pyc b/brscans/wrapper/__pycache__/utils.cpython-38.pyc deleted file mode 100644 index 052b3fc..0000000 Binary files a/brscans/wrapper/__pycache__/utils.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/__pycache__/views.cpython-310.pyc b/brscans/wrapper/__pycache__/views.cpython-310.pyc deleted file mode 100644 index 9c56aa1..0000000 Binary files a/brscans/wrapper/__pycache__/views.cpython-310.pyc and /dev/null differ diff --git a/brscans/wrapper/__pycache__/views.cpython-38.pyc b/brscans/wrapper/__pycache__/views.cpython-38.pyc deleted file mode 100644 index 166a709..0000000 Binary files a/brscans/wrapper/__pycache__/views.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/apps.py b/brscans/wrapper/apps.py deleted file mode 100644 index 69c4f4b..0000000 --- a/brscans/wrapper/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class WrapperConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "brscans.wrapper" diff --git a/brscans/wrapper/sources/Cerise.py b/brscans/wrapper/sources/Cerise.py deleted file mode 100644 index 9fb53b5..0000000 --- a/brscans/wrapper/sources/Cerise.py +++ /dev/null @@ -1,128 +0,0 @@ -from copyreg import constructor -import re -from unidecode import unidecode -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag, NavigableString, Comment - - -class Cerise: - def __init__(self, headers=None) -> None: - self.headers = headers - self.url = "https://cerisescan.net" - self.client = httpx.Client(timeout=None) - self.name = "Cerise" - - def homepage(self): - response = self.client.get(self.url) - html = response.text - soup = BeautifulSoup(html, "html.parser") - capes: ResultSet[Tag] = soup.find_all("div", class_="page-item-detail") - manhwas = [] - - for cape in capes: - title = cape.find("h3").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title).upper(), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def search(self, query: str): - response = httpx.get(self.url, params={"s": query, "post_type": "wp-manga"}) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("div", class_="c-tabs-item__content") - manhwas = [] - - for cape in capes: - title = cape.find("div", class_="post-title").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def info(self, id: str, capthers: bool = False): - response = httpx.post(self.url + f"/manga/{id}/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - title = soup.find("div", id="manga-title").get_text().strip() - content: Tag = soup.find_all("div", class_="post-content_item")[-1] - image = soup.find("div", class_="summary_image").find("img").get("data-src") - - manhwa = { - "id": id, - "title": unidecode(title), - "summary": next(content.find("div").stripped_strings), - "image": image, - } - - if capthers: - manhwa["chapters"] = self.chapters(id) - - return manhwa - - def chapters(self, id: str): - response = httpx.post(self.url + f"/manga/{id}/ajax/chapters") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("li", class_="wp-manga-chapter") - - chapters = [] - - for cape in capes: - title = cape.find("a").get_text().strip() - url = cape.find("a").get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - "thumbnail": None, - } - chapters.append(chapter) - - return chapters - - def pages(self, manhwa: str, chapter: str, upscale: bool = False): - print(f"{self.url}/manga/{manhwa}/{chapter}") - response = httpx.get(f"{self.url}/manga/{manhwa}/{chapter}/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("img", class_="wp-manga-chapter-img") - - pages = [] - - for cape in capes: - url = cape.get("data-src").strip() - if upscale: - url = f"http://localhost:8000/wrapper/anime4k?image={url}" - pages.append(url) - - return pages diff --git a/brscans/wrapper/sources/FlowerManga.py b/brscans/wrapper/sources/FlowerManga.py deleted file mode 100644 index a15d27e..0000000 --- a/brscans/wrapper/sources/FlowerManga.py +++ /dev/null @@ -1,48 +0,0 @@ -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class FlowerManga(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "FlowerManga" - - @staticmethod - def chapters(manhwa: Manhwa): - response = FlowerManga.scraper.post(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - print(soup.prettify()) - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters diff --git a/brscans/wrapper/sources/Gekkou.py b/brscans/wrapper/sources/Gekkou.py deleted file mode 100644 index a6e24c7..0000000 --- a/brscans/wrapper/sources/Gekkou.py +++ /dev/null @@ -1,157 +0,0 @@ -from copyreg import constructor -from unidecode import unidecode -from bs4 import BeautifulSoup, ResultSet, Tag, NavigableString, Comment -import cloudscraper - - -class Gekkou: - def __init__(self, headers=None) -> None: - self.headers = headers - self.url = "https://gekkou.site" - self.client = cloudscraper.create_scraper() - self.name = "Gekkou" - - def homepage(self): - response = self.client.get(self.url) - html = response.text - soup = BeautifulSoup(html, "html.parser") - capes: ResultSet[Tag] = soup.find_all("div", class_="page-item-detail") - manhwas = [] - - for cape in capes: - title = cape.find("h3").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title).upper(), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def search(self, query: str): - response = self.client.get( - self.url, params={"s": query, "post_type": "wp-manga"} - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("div", class_="c-tabs-item__content") - manhwas = [] - - for cape in capes: - title = cape.find("div", class_="post-title").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def info(self, id: str, capthers: bool = False): - response = self.client.post(self.url + f"/manga/{id}/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - title = soup.find("div", id="manga-title").get_text().strip() - content: Tag = soup.find_all("div", class_="post-content_item")[-1] - image = soup.find("div", class_="summary_image").find("img").get("data-src") - - manhwa = { - "id": id, - "title": unidecode(title), - "summary": next(content.find("div").stripped_strings), - "image": image, - } - - if capthers: - manhwa["chapters"] = self.chapters(id) - - return manhwa - - def chapters(self, id: str): - response = self.client.post(self.url + f"/manga/{id}/ajax/chapters") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("li", class_="wp-manga-chapter") - - chapters = [] - - for cape in capes: - title = cape.find("a").get_text().strip() - url = cape.find("a").get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - "thumbnail": None, - } - chapters.append(chapter) - - return chapters - - def chapter(self, manhwa: str, chapter: str): - pages = self.pages(manhwa, chapter) - manhwa = self.info(manhwa) - chapters = self.chapters(manhwa["id"]) - - ids = [item["id"] for item in chapters] - print(ids.index(chapter)) - - next_chapter = ( - chapters[ids.index(chapter) - 1]["id"] if ids.index(chapter) > 0 else None - ) - prev_chapter = ( - chapters[ids.index(chapter) + 1]["id"] - if ids.index(chapter) < len(chapters) - 1 - else None - ) - # next_chapter = chapters[chapters.index(chapter) + 1]["id"] - # prev_chapter = chapters[chapters.index(chapter) - 1]["id"] - - return { - "id": chapter, - "title": manhwa["title"], - "next_chapter": next_chapter, - "prev_chapter": prev_chapter, - "chapters": chapters, - "pages": pages, - } - - def pages(self, manhwa: str, chapter: str, upscale: bool = False): - print(f"{self.url}/manga/{manhwa}/{chapter}") - response = self.client.get(f"{self.url}/manga/{manhwa}/{chapter}/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("img", class_="wp-manga-chapter-img") - - pages = [] - - for cape in capes: - url = cape.get("data-src").strip() - if upscale: - url = f"http://192.168.31.49:8000/wrapper/anime4k?image={url}" - pages.append(url) - - return pages diff --git a/brscans/wrapper/sources/Generic.py b/brscans/wrapper/sources/Generic.py deleted file mode 100644 index 30fd627..0000000 --- a/brscans/wrapper/sources/Generic.py +++ /dev/null @@ -1,150 +0,0 @@ -import re - -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.manhwa.models import Chapter, Manhwa - - -class Generic: - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "Generic" - - def homepage(self): - response = self.client.get(self.url, headers={"Referer": self.url}) - html = response.text - soup = BeautifulSoup(html, "html.parser") - capes: ResultSet[Tag] = soup.find_all("div", class_="page-item-detail") - manhwas = [] - - for cape in capes: - title = cape.find("h3").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title).upper(), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - @staticmethod - def info(url, capthers: bool = False): - response = Generic.scraper.get(url, headers={"Referer": url}) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - id = soup.find("meta", property="og:url").get("content").split("/")[-2] - title = ( - soup.find("div", class_="post-title").find("h1").get_text().strip() - ) - summary = soup.find("div", class_="summary__content") - image = soup.find("div", class_="summary_image").find("img") - image = image.get("data-src") or image.get("src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": summary.get_text().strip() - if summary - else "Resumo não encontrado", - "image": image, - } - - if capthers: - manhwa["chapters"] = Generic.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = Generic.scraper.post( - manhwa.source + "/ajax/chapters", headers={"Referer": manhwa.source} - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("li", class_="wp-manga-chapter") - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = cape.find("a").get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = Generic.scraper.get( - chapter.source, headers={"Referer": chapter.source} - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all( - "img", class_="wp-manga-chapter-img" - ) - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = Generic.scraper.get( - chapter.source, headers={"Referer": chapter.source} - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("li", class_="active") - title = soup.find("meta", property="og:title") - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get("content") - else: - title = "" - - return { - "title": title, - "chapter": chapter_element, - "pages": Generic.pages(chapter, html), - } diff --git a/brscans/wrapper/sources/KingOfShojo.py b/brscans/wrapper/sources/KingOfShojo.py deleted file mode 100644 index 178c47c..0000000 --- a/brscans/wrapper/sources/KingOfShojo.py +++ /dev/null @@ -1,141 +0,0 @@ -from copyreg import constructor -import re -from cloudscraper import CloudScraper -import requests -from unidecode import unidecode -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag, NavigableString, Comment - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class KingOfShojo(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "KingOfShojo" - - def homepage(self): - response = self.client.get(self.url) - html = response.text - soup = BeautifulSoup(html, "html.parser") - capes: ResultSet[Tag] = soup.find_all("div", class_="page-item-detail") - manhwas = [] - - for cape in capes: - title = cape.find("h3").get_text().strip() - image = cape.find("img").get("data-src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title).upper(), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - @staticmethod - def info(url, capthers: bool = False): - response = KingOfShojo.scraper.post(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - id = soup.find("meta", property="og:url").get("content").split("/")[-2] - title = soup.find("h1", class_="entry-title").get_text().strip() - summary = soup.find("div", class_="entry-content").get_text().strip() - image = soup.find("img", class_="wp-post-image") - image = image.get("src") or image.get("data-src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": summary, - "image": image, - } - - if capthers: - manhwa["chapters"] = KingOfShojo.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = KingOfShojo.scraper.get(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - print(soup) - - capes: ResultSet[Tag] = soup.find("div", id="chapterlist").find_all( - "div", class_="eph-num" - ) - - chapters = [] - - for cape in capes: - title = cape.find("span", class_="chapternum").get_text().strip() - url = cape.find("a").get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapterdate") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = Generic.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - container = soup.find("div", id="readerarea").find("p") - capes: ResultSet[Tag] = container.find_all("img") - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = KingOfShojo.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("li", class_="active") - title = soup.find("h1", class_="entry-title") - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get_text().strip() - - return { - "title": title, - "chapter": chapter_element, - "pages": KingOfShojo.pages(chapter, html), - } diff --git a/brscans/wrapper/sources/KunManga.py b/brscans/wrapper/sources/KunManga.py deleted file mode 100644 index 16388f9..0000000 --- a/brscans/wrapper/sources/KunManga.py +++ /dev/null @@ -1,54 +0,0 @@ -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -import cloudscraper -from unidecode import unidecode - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class KunManga(Generic): - scraper = cloudscraper.create_scraper( - interpreter='js2py', # Recommended for v3 challenges - delay=5, # Allow more time for complex challenges - debug=True # Enable debug output to see v3 detection - ) - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "KunManga" - - @staticmethod - def chapters(manhwa: Manhwa): - print("Fetching chapters from KunManga:", manhwa.source) - response = KunManga.scraper.get(manhwa.source) - html = response.text - print(html) - - soup = BeautifulSoup(html, "html.parser") - print(soup.prettify()) - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters diff --git a/brscans/wrapper/sources/MangaBuddy.py b/brscans/wrapper/sources/MangaBuddy.py deleted file mode 100644 index ad6fe0b..0000000 --- a/brscans/wrapper/sources/MangaBuddy.py +++ /dev/null @@ -1,164 +0,0 @@ -import re - -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.manhwa.models import Chapter, Manhwa -from brscans.wrapper.sources.Generic import Generic - - -class MangaBuddy(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "MangaBuddy" - - @staticmethod - def info(url, capthers: bool = False): - response = Generic.scraper.get(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - id = ( - soup.find("meta", property="og:url") - .get("content") - .rstrip("/") - .split("/")[-1] - ) - title = soup.find("div", class_="detail").find("h1").get_text().strip() - image = soup.find("div", class_="img-cover").find("img") - image = image.get("data-src") or image.get("src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": "", - "image": image, - } - - if capthers: - manhwa["chapters"] = MangaBuddy.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = Generic.scraper.get(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("ul", id="chapter-list").find_all( - "li" - ) - - chapters = [] - - for cape in capes: - title = cape.find("a").find("strong").get_text().strip() - chapter_url = "https://mangabuddy.com" + cape.find("a").get("href") - chapter = { - "id": chapter_url.split("/")[-1], - "title": unidecode(title), - "url": chapter_url, - "release_date": cape.find("time", class_="chapter-update") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = MangaBuddy.scraper.get(chapter.source) - html = response.text - - # Try to extract from chapImages JavaScript variable first (contains all URLs) - match = re.search(r"var chapImages = '([^']+)'", html) - if match: - images_str = match.group(1) - pages = [ - url.strip() for url in images_str.split(",") if url.strip() - ] - print(f"Found {len(pages)} images from chapImages variable") - return pages - - # Fallback to HTML parsing if chapImages not found - soup = BeautifulSoup(html, "html.parser") - container = soup.find("div", id="chapter-images") - if not container: - print("Warning: chapter-images container not found") - return [] - - capes: ResultSet[Tag] = container.find_all("img") - print(f"Found {len(capes)} images from HTML") - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - if src: - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = MangaBuddy.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("option", class_="selected") - title = soup.find("meta", property="og:title") - - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get("content") - else: - title = "" - - return { - "title": title, - "chapter": chapter_element, - "pages": MangaBuddy.pages(chapter, html), - } - - -def extract_vars(soup): - scripts = soup.find_all("script") - - js_text = " ".join(script.get_text() for script in scripts) - - patterns = { - "bookId": r"var\s+bookId\s*=\s*(\d+);", - "bookSlug": r'var\s+bookSlug\s*=\s*"([^"]+)";', - "chapterSlug": r'var\s+chapterSlug\s*=\s*"([^"]+)";', - "chapterId": r"var\s+chapterId\s*=\s*(\d+);", - "pageTitle": r'var\s+pageTitle\s*=\s*"([^"]+)";', - "pageSubTitle": r'var\s+pageSubTitle\s*=\s*"([^"]+)";', - "bookCover": r'var\s+bookCover\s*=\s*"([^"]+)";', - } - - result = {} - for key, pattern in patterns.items(): - match = re.search(pattern, js_text) - if match: - result[key] = match.group(1) - - return result diff --git a/brscans/wrapper/sources/MangaHub.py b/brscans/wrapper/sources/MangaHub.py deleted file mode 100644 index aa7b23b..0000000 --- a/brscans/wrapper/sources/MangaHub.py +++ /dev/null @@ -1,163 +0,0 @@ -import json -import os - -import httpx -from unidecode import unidecode - -from brscans.manhwa.models import Chapter, Manhwa - - -class MangaHub: - API_URL = "https://api.mghcdn.com/graphql" - # token = "8fd6c9b4407191fc0fc4b71fba011686" - token = os.environ.get("MANGAHUB_TOKEN") - - def __init__(self): - self.client = httpx.Client( - timeout=None, - headers={ - "User-Agent": ( - "Mozilla/5.0 (X11; Linux x86_64) " - "AppleWebKit/537.36 (KHTML, like Gecko) " - "Chrome/138.0.0.0 Safari/537.36" - ), - "Accept": "application/json", - "Accept-Language": "en-US,en;q=0.7", - "Origin": "https://mangahub.io", - "Referer": "https://mangahub.io/", - "Content-Type": "application/json", - "x-mhub-access": MangaHub.token, # 🔑 ESSENCIAL - }, - ) - - @staticmethod - def _post(query: str, variables: dict = None): - payload = {"query": query} - if variables: - payload["variables"] = variables - - r = MangaHub().client.post(MangaHub.API_URL, json=payload) - r.raise_for_status() - data = r.json() - - if "errors" in data: - print("é deu erro") - raise Exception(data["errors"]) - return data["data"] - - @staticmethod - def info(url, capthers: bool = False): - slug = url.split("/")[-1] - query = """ - query ($slug: String!) { - manga(x: m01, slug: $slug) { - id - title - slug - image - description - chapters { - id - number - title - slug - date - } - } - } - """ - data = MangaHub._post(query, {"slug": slug}) - print(data.get("manga").get("id")) - - manhwa = { - "id": int(data.get("manga").get("id")), - "url": url, - "title": unidecode(data.get("manga").get("title")), - "summary": data.get("manga").get("description"), - "image": f"https://thumb.mghcdn.com/{data.get('manga').get('image')}", - "slug": data.get("manga").get("slug"), - } - - if capthers: - chapters = [] - for ch in data["manga"]["chapters"]: - chapters.append( - { - "number": ch["number"], - "title": unidecode(ch["title"]), - "url": f"https://mangahub.io/chapter/{slug}/{ch['slug']}", - } - ) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - query = """ - query ($slug: String!) { - manga(x: m01, slug: $slug) { - chapters { - id - number - title - slug - } - } - } - """ - print("manhwa.slug", manhwa.slug) - data = MangaHub._post(query, {"slug": manhwa.slug}) - chapters = [] - - for ch in data["manga"]["chapters"]: - chapters.append( - { - "id": ch["number"], - "title": unidecode(ch["title"]), - "url": f"https://mangahub.io/chapter/{manhwa.slug}/{ch['slug']}", - } - ) - - return chapters - - @staticmethod - def chapter(chapter: Chapter): - slug = chapter.manhwa.slug - query = """ - query ($slug: String!, $number: Float!) { - chapter(x: m01, slug: $slug, number: $number) { - id - title - mangaID - number - slug - date - pages - manga { - id - title - slug - } - } - } - """ - data = MangaHub._post(query, {"slug": slug, "number": chapter.slug}) - ch = data["chapter"] - - pages = json.loads(ch["pages"]) - page_urls = [f"https://imgx.mghcdn.com/{pages['p']}{img}" for img in pages["i"]] - - return { - "id": ch["id"], - "title": ch["title"], - "number": ch["number"], - "slug": ch["slug"], - "date": ch["date"], - "pages": page_urls, - "manga": ch["manga"], - } - - @staticmethod - def pages(chapter: Chapter): - chapter_data = MangaHub.chapter(chapter) - return chapter_data["pages"] diff --git a/brscans/wrapper/sources/Mangadass.py b/brscans/wrapper/sources/Mangadass.py deleted file mode 100644 index f9524b5..0000000 --- a/brscans/wrapper/sources/Mangadass.py +++ /dev/null @@ -1,125 +0,0 @@ -import re - -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.manhwa.models import Chapter, Manhwa -from brscans.wrapper.sources.Generic import Generic - - -class Mangadass(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "Mangadass" - - @staticmethod - def info(url, capthers: bool = False): - response = Generic.scraper.get(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - id = ( - soup.find("meta", property="og:url") - .get("content") - .rstrip("/") - .split("/")[-1] - ) - title = ( - soup.find("div", class_="post-title").find("h1").get_text().strip() - ) - summary = soup.find("div", class_="ss-manga").get_text().strip() - image = soup.find("div", class_="summary_image").find("img") - image = image.get("data-src") or image.get("src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": summary, - "image": image, - } - - if capthers: - manhwa["chapters"] = Mangadass.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = Generic.scraper.post(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("li", class_=["a-h", "wleft"]) - - chapters = [] - - for cape in capes: - title = cape.find("a").get_text().strip() - chapter_url = "https://mangadass.com" + cape.find("a").get("href") - chapter = { - "id": chapter_url.split("/")[-1], - "title": unidecode(title), - "url": chapter_url, - "release_date": cape.find("span", class_="chapter-time") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = Mangadass.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find( - "div", class_="read-content" - ).find_all("img") - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = Mangadass.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("option", class_="selected") - title = soup.find("meta", property="og:title") - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get("content") - else: - title = "" - - return { - "title": title, - "chapter": chapter_element, - "pages": Mangadass.pages(chapter, html), - } diff --git a/brscans/wrapper/sources/ManhuaFast.py b/brscans/wrapper/sources/ManhuaFast.py deleted file mode 100644 index 40a9ce3..0000000 --- a/brscans/wrapper/sources/ManhuaFast.py +++ /dev/null @@ -1,56 +0,0 @@ -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.manhwa.models import Manhwa -from brscans.wrapper.sources.Generic import Generic - - -class ManhuaFast(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client( - timeout=None, - headers={ - "Referer": f"{self.url}", - }, - ) - self.name = "ManhuaFast" - - @staticmethod - def chapters(manhwa: Manhwa): - response = ManhuaFast.scraper.post( - f"{manhwa.source}/ajax/chapters/", - headers={ - "Referer": f"{manhwa.source}/ajax/chapters/", - }, - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - return chapters diff --git a/brscans/wrapper/sources/ManhuaRead.py b/brscans/wrapper/sources/ManhuaRead.py deleted file mode 100644 index 5463761..0000000 --- a/brscans/wrapper/sources/ManhuaRead.py +++ /dev/null @@ -1,47 +0,0 @@ -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class ManhuaRead(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "ManhuaRead" - - @staticmethod - def chapters(manhwa: Manhwa): - response = ManhuaRead.scraper.post(manhwa.source + "ajax/chapters/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters diff --git a/brscans/wrapper/sources/Manhuaus.py b/brscans/wrapper/sources/Manhuaus.py deleted file mode 100644 index d9e4607..0000000 --- a/brscans/wrapper/sources/Manhuaus.py +++ /dev/null @@ -1,47 +0,0 @@ -from cloudscraper import CloudScraper -from unidecode import unidecode -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class Manhuaus(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "Manhuaus" - - @staticmethod - def chapters(manhwa: Manhwa): - response = Manhuaus.scraper.post(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters diff --git a/brscans/wrapper/sources/Manhwahub.py b/brscans/wrapper/sources/Manhwahub.py deleted file mode 100644 index 645323b..0000000 --- a/brscans/wrapper/sources/Manhwahub.py +++ /dev/null @@ -1,121 +0,0 @@ -import re - -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class Manhwahub(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "Manhwahub" - - @staticmethod - def info(url, capthers: bool = False): - response = Manhwahub.scraper.get(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - print(soup.find("body").prettify()) - - print("url", soup.find("meta", property="og:url")) - id = soup.find("meta", property="og:url").get("content").split("/")[-2] - title = soup.find("div", class_="post-title").find("h1").get_text().strip() - summary = soup.find("div", class_="summary__content").get_text().strip() - image = soup.find("div", class_="summary_image").find("img") - image = image.get("data-src") or image.get("src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": summary, - "image": image, - } - - if capthers: - manhwa["chapters"] = Manhwahub.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = Manhwahub.scraper.get(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("ul", class_="box-list-chapter").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = Manhwahub.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("img", class_="chapter-img") - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = Manhwahub.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("li", class_="active") - title = soup.find("meta", property="og:title") - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get("content") - else: - title = "" - - return { - "title": title, - "chapter": chapter_element, - "pages": Manhwahub.pages(chapter, html), - } diff --git a/brscans/wrapper/sources/Neroxus.py b/brscans/wrapper/sources/Neroxus.py deleted file mode 100644 index ee09c0d..0000000 --- a/brscans/wrapper/sources/Neroxus.py +++ /dev/null @@ -1,48 +0,0 @@ -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag -from cloudscraper import CloudScraper -from unidecode import unidecode - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class Neroxus(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "Neroxus" - - @staticmethod - def chapters(manhwa: Manhwa): - response = Neroxus.scraper.post(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - print(soup.prettify()) - - capes: ResultSet[Tag] = soup.find("ul", class_="version-chap").find_all( - "li", class_="wp-manga-chapter" - ) - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.get_text().strip() - url = link.get("href") - chapter = { - "id": url.split("/")[-2], - "title": unidecode(title), - "url": url, - "release_date": cape.find("span", class_="chapter-release-date") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters diff --git a/brscans/wrapper/sources/Nexo.py b/brscans/wrapper/sources/Nexo.py deleted file mode 100644 index e6b2fc9..0000000 --- a/brscans/wrapper/sources/Nexo.py +++ /dev/null @@ -1,165 +0,0 @@ -from copyreg import constructor -import re -from unidecode import unidecode -import httpx -import xmltodict -from bs4 import BeautifulSoup, ResultSet, Tag, NavigableString, Comment - - -class Nexo: - def __init__(self, headers=None) -> None: - self.headers = headers - self.url = "https://nexoscans.net" - self.name = "NexoScans" - - def homepage(self): - response = httpx.get(self.url) - # print(response) - # return [] - html = response.text - soup = BeautifulSoup(html, "html.parser") - capes: ResultSet[Tag] = soup.find_all("div", class_="page-item-detail") - manhwas = [] - - for cape in capes: - title = cape.find("h3").get_text().strip() - image = cape.find("img").get("src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title).upper(), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def all(self): - response = httpx.get(self.url + "/wp-manga-sitemap.xml") - urls = xmltodict.parse(response.content)["urlset"]["url"] - return urls - - def search(self, query: str): - response = httpx.get(self.url, params={"s": query, "post_type": "wp-manga"}) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("div", class_="c-tabs-item__content") - manhwas = [] - - for cape in capes: - title = cape.find("div", class_="post-title").get_text().strip() - image = cape.find("img").get("src") - image = f"{image.rsplit('-', 1)[0]}.{image.split('.')[-1]}" - - manhwa = { - "id": cape.find("a").get("href").split("/")[-2], - "title": unidecode(title), - "url": cape.find("a").get("href"), - "image": image, - "upscaled_image": f"http://localhost:8000/wrapper/anime4k?image={image}", - } - manhwas.append(manhwa) - - return manhwas - - def info(self, id: str, capthers: bool = False, url: str = None): - response = httpx.post(url or self.url + f"/manga/{id}/", follow_redirects=False) - html = response.text - - if response.status_code == 301: - return None - - soup = BeautifulSoup(html, "html.parser") - - manga_extra = soup.find(id="wp-manga-js-extra").get_text() - madara_extra = soup.find(id="madara-js-js-extra").get_text() - - id = re.search(r'"manga_id":"(\d+)"', manga_extra).group(1) - slug = re.search(r'"manga-core":"([^"]+)"', madara_extra).group(1) - - title = soup.find("div", class_="post-title").find("h1").get_text().strip() - content: Tag = soup.find("div", class_="manga-excerpt").get_text().strip() - image = soup.find("div", class_="summary_image").find("img").get("src") - - status = ( - self.get_content_item(soup.find(class_="post-status"), "Status") - .get_text() - .strip() - ) - - genres = soup.find("div", class_="genres-content") - genres = genres.find_all("a") if genres else [] - genres = [genre.get_text().strip() for genre in genres] - - manhwa = { - "id": id, - "title": unidecode(title), - "summary": content, - "image": image, - "status": status, - "genres": genres, - "slug": slug, - } - - if capthers: - manhwa["chapters"] = self.chapters(id) - - return manhwa - - def get_content_item(self, content: Tag, searchable: str) -> str: - if content: - items = content.find_all("div", class_="post-content_item") or [] - for item in items: - title = item.find(class_="summary-heading").get_text().strip() - if title == searchable: - return item.find("div", class_="summary-content") - - def chapters(self, id: str): - response = httpx.post( - self.url + f"/wp-admin/admin-ajax.php", - data={ - "action": "manga_get_reading_nav", - "manga": id, - "style": "list", - "type": "manga", - "volume_id": 0, - }, - ) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("option") - - chapters = [] - - for cape in capes: - chapter = { - "id": cape.get("value"), - "title": cape.get_text().strip(), - } - chapters.append(chapter) - - return chapters - - def pages(self, manhwa: str, chapter: str): - print(f"{self.url}/manga/{manhwa}/{chapter}") - response = httpx.get(f"{self.url}/manga/{manhwa}/{chapter}/") - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find_all("img", class_="wp-manga-chapter-img") - - pages = [] - - for cape in capes: - url = cape.get("src").strip() - pages.append(url) - - return pages diff --git a/brscans/wrapper/sources/RizzFables.py b/brscans/wrapper/sources/RizzFables.py deleted file mode 100644 index b0f4e18..0000000 --- a/brscans/wrapper/sources/RizzFables.py +++ /dev/null @@ -1,123 +0,0 @@ -import re -from cloudscraper import CloudScraper -from slugify import slugify -from unidecode import unidecode -import httpx -from bs4 import BeautifulSoup, ResultSet, Tag - -from brscans.wrapper.sources.Generic import Generic -from brscans.manhwa.models import Chapter, Manhwa - - -class RizzFables(Generic): - scraper = CloudScraper.create_scraper() - - def __init__(self, url, headers=None) -> None: - self.headers = headers - self.url = url - self.client = httpx.Client(timeout=None) - self.name = "RizzFables" - - @staticmethod - def info(url, capthers: bool = False): - response = RizzFables.scraper.post(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - id = url.split("/")[-1] - title = soup.find("h1", class_="entry-title").get_text().strip() - # summary = soup.find("div", id="description-container").get_text().strip() - summary = soup.find("div", class_="entry-content").find("script") - match = re.search(r'var description = "(.*?)" ;', summary.string, re.DOTALL) - if match: - summary = match.group(1).encode().decode("unicode_escape") - - image = soup.find("div", class_="thumb").find("img") - image = image.get("data-src") or image.get("src") - image = re.sub(r"-\d+x\d+(?=\.\w{3,4}$)", "", image) - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": summary, - "image": image, - } - - if capthers: - manhwa["chapters"] = RizzFables.chapters(url) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - response = RizzFables.scraper.get(manhwa.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("div", id="chapterlist").find_all("li") - - chapters = [] - - for cape in capes: - link = cape.find("a") - title = link.find("span", class_="chapternum").get_text().strip() - title = unidecode(" ".join(title.split())) - url = link.get("href") - chapter = { - "id": slugify(title), - "title": title, - "url": url, - "release_date": cape.find("span", class_="chapterdate") - .get_text() - .strip() - .capitalize(), - } - chapters.append(chapter) - - return chapters - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - response = RizzFables.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - capes: ResultSet[Tag] = soup.find("div", id="readerarea").find_all("img") - - pages = [] - - for cape in capes: - src = cape.get("data-src") or cape.get("src") - url = src.strip() - pages.append(url) - - return pages - - @staticmethod - def chapter(chapter: Chapter): - response = RizzFables.scraper.get(chapter.source) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - chapter_element = soup.find("select", id="chapter").find("option", selected=True) - title = soup.find("meta", property="og:title") - if chapter_element: - chapter_element = chapter_element.get_text().strip() - - if title: - title = title.get("content") - else: - title = "" - - return { - "title": title, - "chapter": chapter_element, - "pages": RizzFables.pages(chapter, html), - } diff --git a/brscans/wrapper/sources/ThreeHentai.py b/brscans/wrapper/sources/ThreeHentai.py deleted file mode 100644 index 8c9cf9e..0000000 --- a/brscans/wrapper/sources/ThreeHentai.py +++ /dev/null @@ -1,140 +0,0 @@ -import re - -from bs4 import BeautifulSoup -from unidecode import unidecode - -from brscans.manhwa.models import Chapter, Manhwa -from brscans.wrapper.sources.Generic import Generic - - -class ThreeHentai(Generic): - def __init__(self, url, headers=None) -> None: - super().__init__(url, headers) - self.name = "ThreeHentai" - - @staticmethod - def info(url, capthers: bool = False): - response = Generic.scraper.get(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - # ID extraction: https://pt.3hentai.net/d/669632 -> 669632 - id = url.rstrip("/").split("/")[-1] - - # Title extraction - title_tag = soup.find("h1") - if title_tag: - title = title_tag.get_text().strip() - else: - # Fallback to meta title - meta_title = soup.find("meta", property="og:title") - title = meta_title.get("content") if meta_title else "Unknown Title" - - # Image extraction - # Try to find the cover image - image = "" - cover_img = soup.find("img", attrs={"src": re.compile(r"cover\.jpg")}) - if cover_img: - image = cover_img.get("src") - - if not image: - # Fallback: check other images - first_img = soup.find("img", attrs={"src": re.compile(r"\/d\d+\/")}) - if first_img: - image = first_img.get("data-src") or first_img.get("src") - - manhwa = { - "id": id, - "url": url, - "title": unidecode(title), - "summary": "Hentai Gallery", - "image": image, - } - - if capthers: - manhwa["chapters"] = ThreeHentai.chapters(manhwa) - - return manhwa - - @staticmethod - def chapters(manhwa: Manhwa): - # Return a single chapter representing the whole gallery - # If manhwa is a dict (from info calls), handle it - source_url = ( - manhwa.source if hasattr(manhwa, "source") else manhwa.get("url") - ) - - return [ - { - "id": "gallery", - "title": "Full Gallery", - "url": source_url, - "release_date": "Recently", - } - ] - - @staticmethod - def pages(chapter: Chapter, content: str = None): - if content: - html = content - else: - if isinstance(chapter, dict): - url = chapter.get("url") - else: - url = chapter.source - response = ThreeHentai.scraper.get(url) - html = response.text - - soup = BeautifulSoup(html, "html.parser") - - # Find all thumbnail images - # They seem to be standard tags with src containing /d.../ and ending in t.jpg - # Example: https://s9.3hentai.net/d1131110/1t.jpg - - pages = [] - - # Look for all likely gallery images. - # Strategy: Find images that have 't.jpg' or similar pattern. - imgs = soup.find_all("img") - - for img in imgs: - src = img.get("data-src") or img.get("src") - if not src: - continue - - # Check if it looks like a gallery thumbnail (contains numeric path and ends with t.jpg) - # We want to enable high res, so we strip the 't' before the extension - # e.g. 1t.jpg -> 1.jpg - - # Simple check: ends with t.jpg - if src.endswith("t.jpg"): - full_res = src[:-5] + ".jpg" - pages.append(full_res) - elif src.endswith("cover.jpg"): - # Skip the cover if it appears in the list - pass - elif "/d" in src and "t." in src: - # More generic replacement if extension varies - full_res = re.sub(r"t(\.[a-z]{3,4})$", r"\1", src) - pages.append(full_res) - - # Allow duplicates? Usually pages are unique. But list order matters. - # Ensure we don't have duplicates and preserve order if possible - # Set is unordered, but we can do a quick unique list - seen = set() - unique_pages = [] - for p in pages: - if p not in seen: - unique_pages.append(p) - seen.add(p) - - return unique_pages - - @staticmethod - def chapter(chapter: Chapter): - return { - "title": chapter.title, - "chapter": "Gallery", - "pages": ThreeHentai.pages(chapter), - } diff --git a/brscans/wrapper/sources/__init__.py b/brscans/wrapper/sources/__init__.py deleted file mode 100644 index f88e7ce..0000000 --- a/brscans/wrapper/sources/__init__.py +++ /dev/null @@ -1,37 +0,0 @@ -from brscans.wrapper.sources.FlowerManga import FlowerManga -from brscans.wrapper.sources.Generic import Generic -from brscans.wrapper.sources.KingOfShojo import KingOfShojo -from brscans.wrapper.sources.KunManga import KunManga -from brscans.wrapper.sources.MangaBuddy import MangaBuddy -from brscans.wrapper.sources.Mangadass import Mangadass -from brscans.wrapper.sources.MangaHub import MangaHub -from brscans.wrapper.sources.ManhuaFast import ManhuaFast -from brscans.wrapper.sources.ManhuaRead import ManhuaRead -from brscans.wrapper.sources.Manhuaus import Manhuaus -from brscans.wrapper.sources.Manhwahub import Manhwahub -from brscans.wrapper.sources.Neroxus import Neroxus -from brscans.wrapper.sources.RizzFables import RizzFables -from brscans.wrapper.sources.ThreeHentai import ThreeHentai - -sources = { - "kingofshojo.com": KingOfShojo, - "manhuaread.com": ManhuaRead, - "manhuaus.org": Manhuaus, - "rizzfables.com": RizzFables, - "manhwahub.net": Manhwahub, - "mangadass.com": Mangadass, - "flowermanga.net": FlowerManga, - "neroxus.com.br": Neroxus, - "kunmanga.com": KunManga, - "mangabuddy.com": MangaBuddy, - "mangahub.io": MangaHub, - "manhuafast.net": ManhuaFast, - "pt.3hentai.net": ThreeHentai, - "3hentai.net": ThreeHentai, - "other": Generic, -} - - -def get_source_by_link(link: str): - hostname = link.split("/")[2] - return sources.get(hostname, Generic) diff --git a/brscans/wrapper/sources/__pycache__/Cerise.cpython-38.pyc b/brscans/wrapper/sources/__pycache__/Cerise.cpython-38.pyc deleted file mode 100644 index 3f329bd..0000000 Binary files a/brscans/wrapper/sources/__pycache__/Cerise.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/Gekkou.cpython-310.pyc b/brscans/wrapper/sources/__pycache__/Gekkou.cpython-310.pyc deleted file mode 100644 index c53b543..0000000 Binary files a/brscans/wrapper/sources/__pycache__/Gekkou.cpython-310.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/Gekkou.cpython-38.pyc b/brscans/wrapper/sources/__pycache__/Gekkou.cpython-38.pyc deleted file mode 100644 index 1733bca..0000000 Binary files a/brscans/wrapper/sources/__pycache__/Gekkou.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/Generic.cpython-38.pyc b/brscans/wrapper/sources/__pycache__/Generic.cpython-38.pyc deleted file mode 100644 index e6029d7..0000000 Binary files a/brscans/wrapper/sources/__pycache__/Generic.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/Nexo.cpython-38.pyc b/brscans/wrapper/sources/__pycache__/Nexo.cpython-38.pyc deleted file mode 100644 index df2c162..0000000 Binary files a/brscans/wrapper/sources/__pycache__/Nexo.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/__init__.cpython-310.pyc b/brscans/wrapper/sources/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index 72e6d27..0000000 Binary files a/brscans/wrapper/sources/__pycache__/__init__.cpython-310.pyc and /dev/null differ diff --git a/brscans/wrapper/sources/__pycache__/__init__.cpython-38.pyc b/brscans/wrapper/sources/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 5a82f04..0000000 Binary files a/brscans/wrapper/sources/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/brscans/wrapper/views.py b/brscans/wrapper/views.py deleted file mode 100644 index 2564081..0000000 --- a/brscans/wrapper/views.py +++ /dev/null @@ -1,57 +0,0 @@ -from django.http import HttpResponseRedirect -from django.utils.decorators import method_decorator -from django.views.decorators.cache import cache_page - -from rest_framework import viewsets -from rest_framework.decorators import action - -from rest_framework.response import Response -from rest_framework.request import Request -from brscans import settings - -from brscans.wrapper.sources.Nexo import Nexo -from brscans.wrapper.sources.Cerise import Cerise -from brscans.wrapper.sources.Gekkou import Gekkou - - -class WrapperViewSet(viewsets.ViewSet): - """ - A simple ViewSet for listing or retrieving users. - """ - - @action(detail=False, methods=["get"]) - def homepage(self, request): - gekkou = Gekkou() - return Response(gekkou.homepage()) - - @action(detail=False, methods=["get"]) - def search(self, request: Request): - query = request.query_params.get("query") - gekkou = Gekkou() - return Response(gekkou.search(query)) - - @action(detail=True, methods=["get"]) - def info(self, request: Request, pk=None): - is_full = request.query_params.get("full", False) == "true" - gekkou = Gekkou() - return Response(gekkou.info(pk, capthers=is_full)) - - @action(detail=True, methods=["get"]) - def chapters(self, request: Request, pk=None): - gekkou = Gekkou() - return Response(gekkou.chapters(pk)) - - @action(detail=True, methods=["get"]) - def chapter(self, request: Request, pk=None): - cap = request.query_params.get("cap") - gekkou = Gekkou() - return Response(gekkou.chapter(pk, cap)) - - @action(detail=True, methods=["get"]) - @method_decorator(cache_page(60 * 60 * 2)) - def pages(self, request: Request, pk=None): - cap = request.query_params.get("cap") - upscale = request.query_params.get("upscale") - - gekkou = Gekkou() - return Response(gekkou.pages(pk, cap, upscale == "true")) diff --git a/brscans/wsgi.py b/brscans/wsgi.py deleted file mode 100644 index 4845a99..0000000 --- a/brscans/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for brscans project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'brscans.settings') - -application = get_wsgi_application() diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..38df12d --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,26 @@ +package main + +import ( + "log" + "net/http" + "os" + + "github.com/SMCodesP/brscans-backend/internal/api" + "github.com/SMCodesP/brscans-backend/internal/app" +) + +func main() { + store := app.NewStore() + router := api.NewRouter(store) + + port := os.Getenv("PORT") + if port == "" { + port = "8080" + } + + addr := ":" + port + log.Printf("brscans-backend Go server listening on %s", addr) + if err := http.ListenAndServe(addr, router); err != nil { + log.Fatal(err) + } +} diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index 475f2fa..0000000 Binary files a/db.sqlite3 and /dev/null differ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..ee72187 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/SMCodesP/brscans-backend + +go 1.24.0 diff --git a/internal/api/auth.go b/internal/api/auth.go new file mode 100644 index 0000000..4c31548 --- /dev/null +++ b/internal/api/auth.go @@ -0,0 +1,86 @@ +package api + +import ( + "net/http" + "strings" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type registerPayload struct { + Username string `json:"username"` + Password string `json:"password"` +} + +func (r *router) register(w http.ResponseWriter, req *http.Request) { + var payload registerPayload + if err := decodeJSON(req, &payload); err != nil || strings.TrimSpace(payload.Username) == "" || payload.Password == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + for _, user := range r.store.Users { + if strings.EqualFold(user.Username, payload.Username) { + r.store.Mu.Unlock() + writeJSON(w, http.StatusConflict, map[string]string{"error": "username already exists"}) + return + } + } + + id := r.store.NextUserID + r.store.NextUserID++ + user := app.User{ID: id, Username: strings.TrimSpace(payload.Username), Password: payload.Password} + r.store.Users[id] = user + r.store.Mu.Unlock() + + writeJSON(w, http.StatusCreated, map[string]any{"id": user.ID, "username": user.Username}) +} + +func (r *router) login(w http.ResponseWriter, req *http.Request) { + var payload registerPayload + if err := decodeJSON(req, &payload); err != nil || strings.TrimSpace(payload.Username) == "" || payload.Password == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + defer r.store.Mu.Unlock() + for _, user := range r.store.Users { + if strings.EqualFold(user.Username, payload.Username) && user.Password == payload.Password { + token := app.NewSessionToken() + r.store.Sessions[token] = user.ID + writeJSON(w, http.StatusOK, map[string]any{"token": token, "user_id": user.ID, "username": user.Username}) + return + } + } + + writeJSON(w, http.StatusUnauthorized, map[string]string{"error": "invalid credentials"}) +} + +func (r *router) me(w http.ResponseWriter, req *http.Request) { + uid := r.userID(req) + if uid <= 0 { + writeJSON(w, http.StatusUnauthorized, map[string]string{"error": "not authenticated"}) + return + } + + r.store.Mu.RLock() + user, exists := r.store.Users[uid] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "user not found"}) + return + } + + writeJSON(w, http.StatusOK, map[string]any{"id": user.ID, "username": user.Username}) +} + +func (r *router) discordAuth(w http.ResponseWriter, req *http.Request) { + var payload map[string]any + if err := decodeJSON(req, &payload); err != nil { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + writeJSON(w, http.StatusOK, map[string]any{"status": "accepted", "provider": "discord", "payload": payload}) +} diff --git a/internal/api/chapter.go b/internal/api/chapter.go new file mode 100644 index 0000000..08bccce --- /dev/null +++ b/internal/api/chapter.go @@ -0,0 +1,110 @@ +package api + +import ( + "net/http" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type chapterPayload struct { + ManhwaID int `json:"manhwa_id"` + Number int `json:"number"` + Title string `json:"title"` +} + +func (r *router) listChapters(w http.ResponseWriter, _ *http.Request) { + r.store.Mu.RLock() + items := make([]app.Chapter, 0, len(r.store.Chapters)) + for _, chapter := range r.store.Chapters { + items = append(items, chapter) + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) createChapter(w http.ResponseWriter, req *http.Request) { + var payload chapterPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Title == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + id := r.store.NextChapterID + r.store.NextChapterID++ + item := app.Chapter{ID: id, ManhwaID: payload.ManhwaID, Number: payload.Number, Title: payload.Title, CreatedAt: nowUTC()} + r.store.Chapters[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusCreated, item) +} + +func (r *router) getChapter(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + r.store.Mu.RLock() + item, exists := r.store.Chapters[id] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + writeJSON(w, http.StatusOK, item) +} + +func (r *router) updateChapter(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + var payload chapterPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Title == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + item, exists := r.store.Chapters[id] + if !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + item.ManhwaID = payload.ManhwaID + item.Number = payload.Number + item.Title = payload.Title + r.store.Chapters[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusOK, item) +} + +func (r *router) deleteChapter(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Chapters[id]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + delete(r.store.Chapters, id) + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} diff --git a/internal/api/comment.go b/internal/api/comment.go new file mode 100644 index 0000000..1f21c4c --- /dev/null +++ b/internal/api/comment.go @@ -0,0 +1,110 @@ +package api + +import ( + "net/http" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type commentPayload struct { + ManhwaID int `json:"manhwa_id"` + Author string `json:"author"` + Content string `json:"content"` +} + +func (r *router) listComments(w http.ResponseWriter, _ *http.Request) { + r.store.Mu.RLock() + items := make([]app.Comment, 0, len(r.store.Comments)) + for _, comment := range r.store.Comments { + items = append(items, comment) + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) createComment(w http.ResponseWriter, req *http.Request) { + var payload commentPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Content == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + id := r.store.NextCommentID + r.store.NextCommentID++ + item := app.Comment{ID: id, ManhwaID: payload.ManhwaID, Author: payload.Author, Content: payload.Content, CreatedAt: nowUTC()} + r.store.Comments[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusCreated, item) +} + +func (r *router) getComment(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + r.store.Mu.RLock() + item, exists := r.store.Comments[id] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + writeJSON(w, http.StatusOK, item) +} + +func (r *router) updateComment(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + var payload commentPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Content == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + item, exists := r.store.Comments[id] + if !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + item.ManhwaID = payload.ManhwaID + item.Author = payload.Author + item.Content = payload.Content + r.store.Comments[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusOK, item) +} + +func (r *router) deleteComment(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Comments[id]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + delete(r.store.Comments, id) + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} diff --git a/internal/api/image.go b/internal/api/image.go new file mode 100644 index 0000000..e1d2c1f --- /dev/null +++ b/internal/api/image.go @@ -0,0 +1,110 @@ +package api + +import ( + "net/http" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type imagePayload struct { + ChapterID int `json:"chapter_id"` + URL string `json:"url"` + Variant string `json:"variant"` +} + +func (r *router) listImages(w http.ResponseWriter, _ *http.Request) { + r.store.Mu.RLock() + items := make([]app.ImageVariant, 0, len(r.store.Images)) + for _, image := range r.store.Images { + items = append(items, image) + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) createImage(w http.ResponseWriter, req *http.Request) { + var payload imagePayload + if err := decodeJSON(req, &payload); err != nil || payload.ChapterID <= 0 || payload.URL == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Chapters[payload.ChapterID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "chapter not found"}) + return + } + id := r.store.NextImageID + r.store.NextImageID++ + item := app.ImageVariant{ID: id, ChapterID: payload.ChapterID, URL: payload.URL, Variant: payload.Variant, CreatedAt: nowUTC()} + r.store.Images[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusCreated, item) +} + +func (r *router) getImage(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + r.store.Mu.RLock() + item, exists := r.store.Images[id] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + writeJSON(w, http.StatusOK, item) +} + +func (r *router) updateImage(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + var payload imagePayload + if err := decodeJSON(req, &payload); err != nil || payload.ChapterID <= 0 || payload.URL == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Chapters[payload.ChapterID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "chapter not found"}) + return + } + item, exists := r.store.Images[id] + if !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + item.ChapterID = payload.ChapterID + item.URL = payload.URL + item.Variant = payload.Variant + r.store.Images[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusOK, item) +} + +func (r *router) deleteImage(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Images[id]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + delete(r.store.Images, id) + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} diff --git a/internal/api/manhwa.go b/internal/api/manhwa.go new file mode 100644 index 0000000..e0654f2 --- /dev/null +++ b/internal/api/manhwa.go @@ -0,0 +1,186 @@ +package api + +import ( + "net/http" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type manhwaPayload struct { + Title string `json:"title"` + Slug string `json:"slug"` + Description string `json:"description"` +} + +func (r *router) listManhwas(w http.ResponseWriter, _ *http.Request) { + r.store.Mu.RLock() + items := make([]app.Manhwa, 0, len(r.store.Manhwas)) + for _, m := range r.store.Manhwas { + items = append(items, m) + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) createManhwa(w http.ResponseWriter, req *http.Request) { + var payload manhwaPayload + if err := decodeJSON(req, &payload); err != nil || payload.Title == "" || payload.Slug == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + id := r.store.NextManhwaID + r.store.NextManhwaID++ + item := app.Manhwa{ID: id, Title: payload.Title, Slug: payload.Slug, Description: payload.Description, CreatedAt: nowUTC()} + r.store.Manhwas[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusCreated, item) +} + +func (r *router) getManhwa(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + r.store.Mu.RLock() + item, exists := r.store.Manhwas[id] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + writeJSON(w, http.StatusOK, item) +} + +func (r *router) updateManhwa(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + var payload manhwaPayload + if err := decodeJSON(req, &payload); err != nil || payload.Title == "" || payload.Slug == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + item, exists := r.store.Manhwas[id] + if !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + item.Title = payload.Title + item.Slug = payload.Slug + item.Description = payload.Description + r.store.Manhwas[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusOK, item) +} + +func (r *router) deleteManhwa(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[id]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + delete(r.store.Manhwas, id) + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} + +func (r *router) listManhwaChapters(w http.ResponseWriter, req *http.Request) { + manhwaID, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.RLock() + items := make([]app.Chapter, 0) + for _, chapter := range r.store.Chapters { + if chapter.ManhwaID == manhwaID { + items = append(items, chapter) + } + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) favoriteManhwa(w http.ResponseWriter, req *http.Request) { + manhwaID, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + uid := r.userID(req) + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[manhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + if _, exists := r.store.Favorites[uid]; !exists { + r.store.Favorites[uid] = map[int]bool{} + } + r.store.Favorites[uid][manhwaID] = true + r.store.Mu.Unlock() + + writeJSON(w, http.StatusOK, map[string]any{"favorite": true, "manhwa_id": manhwaID}) +} + +func (r *router) unfavoriteManhwa(w http.ResponseWriter, req *http.Request) { + manhwaID, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + uid := r.userID(req) + + r.store.Mu.Lock() + if Favorites, exists := r.store.Favorites[uid]; exists { + delete(Favorites, manhwaID) + } + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} + +func (r *router) isFavorite(w http.ResponseWriter, req *http.Request) { + manhwaID, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + uid := r.userID(req) + + r.store.Mu.RLock() + favorite := r.store.Favorites[uid][manhwaID] + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, map[string]any{"favorite": favorite, "manhwa_id": manhwaID}) +} + +func (r *router) listFavorites(w http.ResponseWriter, req *http.Request) { + uid := r.userID(req) + + r.store.Mu.RLock() + ids := r.store.Favorites[uid] + items := make([]app.Manhwa, 0, len(ids)) + for id := range ids { + if m, exists := r.store.Manhwas[id]; exists { + items = append(items, m) + } + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} diff --git a/internal/api/notification.go b/internal/api/notification.go new file mode 100644 index 0000000..556cb67 --- /dev/null +++ b/internal/api/notification.go @@ -0,0 +1,110 @@ +package api + +import ( + "net/http" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type notificationPayload struct { + ManhwaID int `json:"manhwa_id"` + Message string `json:"message"` + Read bool `json:"read"` +} + +func (r *router) listNotifications(w http.ResponseWriter, _ *http.Request) { + r.store.Mu.RLock() + items := make([]app.Notification, 0, len(r.store.Notifications)) + for _, n := range r.store.Notifications { + items = append(items, n) + } + r.store.Mu.RUnlock() + writeJSON(w, http.StatusOK, items) +} + +func (r *router) createNotification(w http.ResponseWriter, req *http.Request) { + var payload notificationPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Message == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + id := r.store.NextNotificationID + r.store.NextNotificationID++ + item := app.Notification{ID: id, ManhwaID: payload.ManhwaID, Message: payload.Message, Read: payload.Read, CreatedAt: nowUTC()} + r.store.Notifications[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusCreated, item) +} + +func (r *router) getNotification(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + r.store.Mu.RLock() + item, exists := r.store.Notifications[id] + r.store.Mu.RUnlock() + if !exists { + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + writeJSON(w, http.StatusOK, item) +} + +func (r *router) updateNotification(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + var payload notificationPayload + if err := decodeJSON(req, &payload); err != nil || payload.ManhwaID <= 0 || payload.Message == "" { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid payload"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Manhwas[payload.ManhwaID]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "manhwa not found"}) + return + } + item, exists := r.store.Notifications[id] + if !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + item.ManhwaID = payload.ManhwaID + item.Message = payload.Message + item.Read = payload.Read + r.store.Notifications[id] = item + r.store.Mu.Unlock() + writeJSON(w, http.StatusOK, item) +} + +func (r *router) deleteNotification(w http.ResponseWriter, req *http.Request) { + id, ok := parseID(req, "id") + if !ok { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid id"}) + return + } + + r.store.Mu.Lock() + if _, exists := r.store.Notifications[id]; !exists { + r.store.Mu.Unlock() + writeJSON(w, http.StatusNotFound, map[string]string{"error": "not found"}) + return + } + delete(r.store.Notifications, id) + r.store.Mu.Unlock() + w.WriteHeader(http.StatusNoContent) +} diff --git a/internal/api/router.go b/internal/api/router.go new file mode 100644 index 0000000..dc13f23 --- /dev/null +++ b/internal/api/router.go @@ -0,0 +1,140 @@ +package api + +import ( + "encoding/json" + "net/http" + "strconv" + "strings" + "time" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +type router struct { + store *app.Store +} + +func NewRouter(store *app.Store) http.Handler { + r := &router{store: store} + mux := http.NewServeMux() + + mux.HandleFunc("GET /healthz", r.healthz) + mux.HandleFunc("GET /wrapper", r.wrapper) + mux.HandleFunc("GET /api/schema/", r.schema) + mux.HandleFunc("GET /api/swagger/", r.swagger) + mux.HandleFunc("GET /api/redoc/", r.redoc) + + mux.HandleFunc("GET /manhwas", r.listManhwas) + mux.HandleFunc("POST /manhwas", r.createManhwa) + mux.HandleFunc("GET /manhwas/{id}", r.getManhwa) + mux.HandleFunc("PUT /manhwas/{id}", r.updateManhwa) + mux.HandleFunc("DELETE /manhwas/{id}", r.deleteManhwa) + mux.HandleFunc("GET /manhwas/{id}/chapters", r.listManhwaChapters) + mux.HandleFunc("POST /manhwas/{id}/favorite", r.favoriteManhwa) + mux.HandleFunc("DELETE /manhwas/{id}/favorite", r.unfavoriteManhwa) + mux.HandleFunc("GET /manhwas/{id}/is-favorite", r.isFavorite) + mux.HandleFunc("GET /favorites", r.listFavorites) + + mux.HandleFunc("GET /chapters", r.listChapters) + mux.HandleFunc("POST /chapters", r.createChapter) + mux.HandleFunc("GET /chapters/{id}", r.getChapter) + mux.HandleFunc("PUT /chapters/{id}", r.updateChapter) + mux.HandleFunc("DELETE /chapters/{id}", r.deleteChapter) + + mux.HandleFunc("GET /images", r.listImages) + mux.HandleFunc("POST /images", r.createImage) + mux.HandleFunc("GET /images/{id}", r.getImage) + mux.HandleFunc("PUT /images/{id}", r.updateImage) + mux.HandleFunc("DELETE /images/{id}", r.deleteImage) + + mux.HandleFunc("GET /comments", r.listComments) + mux.HandleFunc("POST /comments", r.createComment) + mux.HandleFunc("GET /comments/{id}", r.getComment) + mux.HandleFunc("PUT /comments/{id}", r.updateComment) + mux.HandleFunc("DELETE /comments/{id}", r.deleteComment) + + mux.HandleFunc("GET /notifications", r.listNotifications) + mux.HandleFunc("POST /notifications", r.createNotification) + mux.HandleFunc("GET /notifications/{id}", r.getNotification) + mux.HandleFunc("PUT /notifications/{id}", r.updateNotification) + mux.HandleFunc("DELETE /notifications/{id}", r.deleteNotification) + + mux.HandleFunc("POST /auth/register", r.register) + mux.HandleFunc("POST /auth/login", r.login) + mux.HandleFunc("GET /auth/me", r.me) + mux.HandleFunc("POST /auth/discord", r.discordAuth) + + return mux +} + +func (r *router) healthz(w http.ResponseWriter, _ *http.Request) { + writeJSON(w, http.StatusOK, map[string]any{"status": "ok", "service": "brscans-backend-go"}) +} + +func (r *router) wrapper(w http.ResponseWriter, req *http.Request) { + url := req.URL.Query().Get("url") + writeJSON(w, http.StatusOK, map[string]any{ + "url": url, + "normalized": strings.TrimSpace(url), + "status": "received", + }) +} + +func (r *router) schema(w http.ResponseWriter, _ *http.Request) { + writeJSON(w, http.StatusOK, map[string]any{ + "openapi": "3.0.0", + "info": map[string]string{ + "title": "Brscans Backend API", + "version": "v1", + }, + }) +} + +func (r *router) swagger(w http.ResponseWriter, _ *http.Request) { + writeJSON(w, http.StatusOK, map[string]string{"message": "Swagger UI not embedded in this build. Use /api/schema/."}) +} + +func (r *router) redoc(w http.ResponseWriter, _ *http.Request) { + writeJSON(w, http.StatusOK, map[string]string{"message": "ReDoc UI not embedded in this build. Use /api/schema/."}) +} + +func parseID(req *http.Request, key string) (int, bool) { + id, err := strconv.Atoi(req.PathValue(key)) + if err != nil || id <= 0 { + return 0, false + } + return id, true +} + +func writeJSON(w http.ResponseWriter, status int, payload any) { + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) + _ = json.NewEncoder(w).Encode(payload) +} + +func decodeJSON(req *http.Request, target any) error { + return json.NewDecoder(req.Body).Decode(target) +} + +func (r *router) userID(req *http.Request) int { + token := req.Header.Get("Authorization") + if strings.HasPrefix(strings.ToLower(token), "bearer ") { + token = strings.TrimSpace(token[7:]) + r.store.Mu.RLock() + uid := r.store.Sessions[token] + r.store.Mu.RUnlock() + if uid > 0 { + return uid + } + } + if raw := strings.TrimSpace(req.Header.Get("X-User-ID")); raw != "" { + if id, err := strconv.Atoi(raw); err == nil && id > 0 { + return id + } + } + return 1 +} + +func nowUTC() time.Time { + return time.Now().UTC() +} diff --git a/internal/api/router_test.go b/internal/api/router_test.go new file mode 100644 index 0000000..17857aa --- /dev/null +++ b/internal/api/router_test.go @@ -0,0 +1,133 @@ +package api + +import ( + "bytes" + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/SMCodesP/brscans-backend/internal/app" +) + +func newTestRouter() http.Handler { + return NewRouter(app.NewStore()) +} + +func TestHealthz(t *testing.T) { + r := newTestRouter() + req := httptest.NewRequest(http.MethodGet, "/healthz", nil) + rr := httptest.NewRecorder() + r.ServeHTTP(rr, req) + + if rr.Code != http.StatusOK { + t.Fatalf("expected %d, got %d", http.StatusOK, rr.Code) + } +} + +func TestManhwaCRUDAndNestedChapters(t *testing.T) { + r := newTestRouter() + + manhwaBody := bytes.NewBufferString(`{"title":"Solo Leveling","slug":"solo-leveling"}`) + createManhwaReq := httptest.NewRequest(http.MethodPost, "/manhwas", manhwaBody) + createManhwaReq.Header.Set("Content-Type", "application/json") + createManhwaRes := httptest.NewRecorder() + r.ServeHTTP(createManhwaRes, createManhwaReq) + if createManhwaRes.Code != http.StatusCreated { + t.Fatalf("expected %d, got %d", http.StatusCreated, createManhwaRes.Code) + } + + var createdManhwa map[string]any + if err := json.Unmarshal(createManhwaRes.Body.Bytes(), &createdManhwa); err != nil { + t.Fatalf("failed to decode manhwa: %v", err) + } + manhwaID := int(createdManhwa["id"].(float64)) + + chapterBody := bytes.NewBufferString(`{"manhwa_id":1,"number":1,"title":"Chapter 1"}`) + createChapterReq := httptest.NewRequest(http.MethodPost, "/chapters", chapterBody) + createChapterReq.Header.Set("Content-Type", "application/json") + createChapterRes := httptest.NewRecorder() + r.ServeHTTP(createChapterRes, createChapterReq) + if createChapterRes.Code != http.StatusCreated { + t.Fatalf("expected %d, got %d", http.StatusCreated, createChapterRes.Code) + } + + nestedReq := httptest.NewRequest(http.MethodGet, "/manhwas/"+itoa(manhwaID)+"/chapters", nil) + nestedRes := httptest.NewRecorder() + r.ServeHTTP(nestedRes, nestedReq) + if nestedRes.Code != http.StatusOK { + t.Fatalf("expected %d, got %d", http.StatusOK, nestedRes.Code) + } + + var Chapters []map[string]any + if err := json.Unmarshal(nestedRes.Body.Bytes(), &Chapters); err != nil { + t.Fatalf("failed to decode Chapters: %v", err) + } + if len(Chapters) != 1 { + t.Fatalf("expected 1 chapter, got %d", len(Chapters)) + } +} + +func TestFavoriteFlow(t *testing.T) { + r := newTestRouter() + + registerReq := httptest.NewRequest(http.MethodPost, "/auth/register", bytes.NewBufferString(`{"username":"sam","password":"123"}`)) + registerReq.Header.Set("Content-Type", "application/json") + registerRes := httptest.NewRecorder() + r.ServeHTTP(registerRes, registerReq) + if registerRes.Code != http.StatusCreated { + t.Fatalf("expected %d, got %d", http.StatusCreated, registerRes.Code) + } + + createManhwaReq := httptest.NewRequest(http.MethodPost, "/manhwas", bytes.NewBufferString(`{"title":"A","slug":"a"}`)) + createManhwaReq.Header.Set("Content-Type", "application/json") + createManhwaRes := httptest.NewRecorder() + r.ServeHTTP(createManhwaRes, createManhwaReq) + if createManhwaRes.Code != http.StatusCreated { + t.Fatalf("expected %d, got %d", http.StatusCreated, createManhwaRes.Code) + } + + favoriteReq := httptest.NewRequest(http.MethodPost, "/manhwas/1/favorite", nil) + favoriteReq.Header.Set("X-User-ID", "1") + favoriteRes := httptest.NewRecorder() + r.ServeHTTP(favoriteRes, favoriteReq) + if favoriteRes.Code != http.StatusOK { + t.Fatalf("expected %d, got %d", http.StatusOK, favoriteRes.Code) + } + + favoritesReq := httptest.NewRequest(http.MethodGet, "/favorites", nil) + favoritesReq.Header.Set("X-User-ID", "1") + favoritesRes := httptest.NewRecorder() + r.ServeHTTP(favoritesRes, favoritesReq) + if favoritesRes.Code != http.StatusOK { + t.Fatalf("expected %d, got %d", http.StatusOK, favoritesRes.Code) + } + + var Favorites []map[string]any + if err := json.Unmarshal(favoritesRes.Body.Bytes(), &Favorites); err != nil { + t.Fatalf("failed to decode Favorites: %v", err) + } + if len(Favorites) != 1 { + t.Fatalf("expected 1 favorite, got %d", len(Favorites)) + } +} + +func itoa(n int) string { + if n == 0 { + return "0" + } + neg := false + if n < 0 { + neg = true + n = -n + } + buf := make([]byte, 0, 12) + for n > 0 { + buf = append([]byte{byte('0' + (n % 10))}, buf...) + n /= 10 + } + if neg { + buf = append([]byte{'-'}, buf...) + } + return string(buf) +} diff --git a/internal/app/store.go b/internal/app/store.go new file mode 100644 index 0000000..f555d1e --- /dev/null +++ b/internal/app/store.go @@ -0,0 +1,102 @@ +package app + +import ( + "crypto/rand" + "encoding/hex" + "sync" + "time" +) + +type Manhwa struct { + ID int `json:"id"` + Title string `json:"title"` + Slug string `json:"slug"` + Description string `json:"description,omitempty"` + CreatedAt time.Time `json:"created_at"` +} + +type Chapter struct { + ID int `json:"id"` + ManhwaID int `json:"manhwa_id"` + Number int `json:"number"` + Title string `json:"title"` + CreatedAt time.Time `json:"created_at"` +} + +type ImageVariant struct { + ID int `json:"id"` + ChapterID int `json:"chapter_id"` + URL string `json:"url"` + Variant string `json:"variant"` + CreatedAt time.Time `json:"created_at"` +} + +type Comment struct { + ID int `json:"id"` + ManhwaID int `json:"manhwa_id"` + Author string `json:"author"` + Content string `json:"content"` + CreatedAt time.Time `json:"created_at"` +} + +type Notification struct { + ID int `json:"id"` + ManhwaID int `json:"manhwa_id"` + Message string `json:"message"` + Read bool `json:"read"` + CreatedAt time.Time `json:"created_at"` +} + +type User struct { + ID int `json:"id"` + Username string `json:"username"` + Password string `json:"-"` +} + +type Store struct { + Mu sync.RWMutex + + Manhwas map[int]Manhwa + Chapters map[int]Chapter + Images map[int]ImageVariant + Comments map[int]Comment + Notifications map[int]Notification + Users map[int]User + + Sessions map[string]int + Favorites map[int]map[int]bool + + NextManhwaID int + NextChapterID int + NextImageID int + NextCommentID int + NextNotificationID int + NextUserID int +} + +func NewStore() *Store { + return &Store{ + Manhwas: map[int]Manhwa{}, + Chapters: map[int]Chapter{}, + Images: map[int]ImageVariant{}, + Comments: map[int]Comment{}, + Notifications: map[int]Notification{}, + Users: map[int]User{}, + Sessions: map[string]int{}, + Favorites: map[int]map[int]bool{}, + NextManhwaID: 1, + NextChapterID: 1, + NextImageID: 1, + NextCommentID: 1, + NextNotificationID: 1, + NextUserID: 1, + } +} + +func NewSessionToken() string { + b := make([]byte, 16) + if _, err := rand.Read(b); err != nil { + return time.Now().UTC().Format("20060102150405.000000000") + } + return hex.EncodeToString(b) +} diff --git a/manage.py b/manage.py deleted file mode 100644 index 09f70cc..0000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'brscans.settings') - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == '__main__': - main() diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 9aab691..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,47 +0,0 @@ -[project] -name = "brscans-backend" -version = "0.1.0" -description = "" -authors = [{ name = "Samuel Pereira da Silva", email = "samuel.silva513@etec.sp.gov.br" }] -requires-python = ">=3.11.13,<3.12" -readme = "README.md" -dependencies = [ - "django==4.2.9", - "djangorestframework==3.14.0", - "black==23.12.1", - "httpx==0.26.0", - "bs4==0.0.2", - "unidecode==1.3.8", - "requests>=2.32.3,<3", - "django-cors-headers>=4.4.0,<5", - "whitenoise>=6.7.0,<7", - "gunicorn>=22.0.0,<23", - "drf-nested-routers>=0.94.1,<0.95", - "pillow>=10.4.0,<11", - "xmltodict>=0.13.0,<0.14", - "psycopg2-binary>=2.9.9,<3", - "django-storages>=1.14.3,<2", - "tldextract>=5.1.2,<6", - "replicate>=0.28.0,<0.29", - "django-debug-toolbar>=4.4.6,<5", - "setuptools>=75.8.0,<76", - "load-dotenv>=0.1.0,<0.2", - "python-dotenv>=1.0.1,<2", - "drf-spectacular>=0.28.0,<0.29", - "django-filter>=25.1,<26", - "zappa>=0.61.4", - "cloudscraper>=1.2.71", -] - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" - -[tool.hatch.build.targets.wheel] -packages = ["brscans"] - -[dependency-groups] -dev = ["ruff>=0.13.1"] - -[tool.ruff] -line-length = 80 diff --git a/uv.lock b/uv.lock deleted file mode 100644 index 638a8a4..0000000 --- a/uv.lock +++ /dev/null @@ -1,1116 +0,0 @@ -version = 1 -revision = 3 -requires-python = ">=3.11.13, <3.12" - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, -] - -[[package]] -name = "anyio" -version = "4.10.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/b4/636b3b65173d3ce9a38ef5f0522789614e590dab6a8d505340a4efe4c567/anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6", size = 213252, upload-time = "2025-08-04T08:54:26.451Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/12/e5e0282d673bb9746bacfb6e2dba8719989d3660cdb2ea79aee9a9651afb/anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1", size = 107213, upload-time = "2025-08-04T08:54:24.882Z" }, -] - -[[package]] -name = "argcomplete" -version = "3.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/61/0b9ae6399dd4a58d8c1b1dc5a27d6f2808023d0b5dd3104bb99f45a33ff6/argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c", size = 73754, upload-time = "2025-10-20T03:33:34.741Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce", size = 43846, upload-time = "2025-10-20T03:33:33.021Z" }, -] - -[[package]] -name = "asgiref" -version = "3.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/61/0aa957eec22ff70b830b22ff91f825e70e1ef732c06666a805730f28b36b/asgiref-3.9.1.tar.gz", hash = "sha256:a5ab6582236218e5ef1648f242fd9f10626cfd4de8dc377db215d5d5098e3142", size = 36870, upload-time = "2025-07-08T09:07:43.344Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/3c/0464dcada90d5da0e71018c04a140ad6349558afb30b3051b4264cc5b965/asgiref-3.9.1-py3-none-any.whl", hash = "sha256:f3bba7092a48005b5f5bacd747d36ee4a5a61f4a269a6df590b43144355ebd2c", size = 23790, upload-time = "2025-07-08T09:07:41.548Z" }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.13.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/2e/3e5079847e653b1f6dc647aa24549d68c6addb4c595cc0d902d1b19308ad/beautifulsoup4-4.13.5.tar.gz", hash = "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", size = 622954, upload-time = "2025-08-24T14:06:13.168Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/eb/f4151e0c7377a6e08a38108609ba5cede57986802757848688aeedd1b9e8/beautifulsoup4-4.13.5-py3-none-any.whl", hash = "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a", size = 105113, upload-time = "2025-08-24T14:06:14.884Z" }, -] - -[[package]] -name = "black" -version = "23.12.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/f4/a57cde4b60da0e249073009f4a9087e9e0a955deae78d3c2a493208d0c5c/black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5", size = 620809, upload-time = "2023-12-22T23:06:17.382Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/2c/d9b1a77101e6e5f294f6553d76c39322122bfea2a438aeea4eb6d4b22749/black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba", size = 1541926, upload-time = "2023-12-22T23:23:17.72Z" }, - { url = "https://files.pythonhosted.org/packages/72/e2/d981a3ff05ba9abe3cfa33e70c986facb0614fd57c4f802ef435f4dd1697/black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b", size = 1388465, upload-time = "2023-12-22T23:19:00.611Z" }, - { url = "https://files.pythonhosted.org/packages/eb/59/1f5c8eb7bba8a8b1bb5c87f097d16410c93a48a6655be3773db5d2783deb/black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59", size = 1691993, upload-time = "2023-12-22T23:08:32.018Z" }, - { url = "https://files.pythonhosted.org/packages/37/bf/a80abc6fcdb00f0d4d3d74184b172adbf2197f6b002913fa0fb6af4dc6db/black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50", size = 1340929, upload-time = "2023-12-22T23:09:37.088Z" }, - { url = "https://files.pythonhosted.org/packages/7b/14/4da7b12a9abc43a601c215cb5a3d176734578da109f0dbf0a832ed78be09/black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e", size = 194363, upload-time = "2023-12-22T23:06:14.278Z" }, -] - -[[package]] -name = "boto3" -version = "1.42.24" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "botocore" }, - { name = "jmespath" }, - { name = "s3transfer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ee/21/8be0e3685c3a4868be48d8d2f6e5b4641727e1d8a5d396b8b401d2b5f06e/boto3-1.42.24.tar.gz", hash = "sha256:c47a2f40df933e3861fc66fd8d6b87ee36d4361663a7e7ba39a87f5a78b2eae1", size = 112788, upload-time = "2026-01-07T20:30:51.019Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/75/bbfccb268f9faa4f59030888e859dca9797a980b77d6a074113af73bd4bf/boto3-1.42.24-py3-none-any.whl", hash = "sha256:8ed6ad670a5a2d7f66c1b0d3362791b48392c7a08f78479f5d8ab319a4d9118f", size = 140572, upload-time = "2026-01-07T20:30:49.431Z" }, -] - -[[package]] -name = "botocore" -version = "1.42.24" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jmespath" }, - { name = "python-dateutil" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/12/d7/bb4a4e839b238ffb67b002d7326b328ebe5eb23ed5180f2ca10399a802de/botocore-1.42.24.tar.gz", hash = "sha256:be8d1bea64fb91eea08254a1e5fea057e4428d08e61f4e11083a02cafc1f8cc6", size = 14878455, upload-time = "2026-01-07T20:30:40.379Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/d4/f2655d777eed8b069ecab3761454cb83f830f8be8b5b0d292e4b3a980d00/botocore-1.42.24-py3-none-any.whl", hash = "sha256:8fca9781d7c84f7ad070fceffaff7179c4aa7a5ffb27b43df9d1d957801e0a8d", size = 14551806, upload-time = "2026-01-07T20:30:38.103Z" }, -] - -[[package]] -name = "brscans-backend" -version = "0.1.0" -source = { editable = "." } -dependencies = [ - { name = "black" }, - { name = "bs4" }, - { name = "cloudscraper" }, - { name = "django" }, - { name = "django-cors-headers" }, - { name = "django-debug-toolbar" }, - { name = "django-filter" }, - { name = "django-storages" }, - { name = "djangorestframework" }, - { name = "drf-nested-routers" }, - { name = "drf-spectacular" }, - { name = "gunicorn" }, - { name = "httpx" }, - { name = "load-dotenv" }, - { name = "pillow" }, - { name = "psycopg2-binary" }, - { name = "python-dotenv" }, - { name = "replicate" }, - { name = "requests" }, - { name = "setuptools" }, - { name = "tldextract" }, - { name = "unidecode" }, - { name = "whitenoise" }, - { name = "xmltodict" }, - { name = "zappa" }, -] - -[package.dev-dependencies] -dev = [ - { name = "ruff" }, -] - -[package.metadata] -requires-dist = [ - { name = "black", specifier = "==23.12.1" }, - { name = "bs4", specifier = "==0.0.2" }, - { name = "cloudscraper", specifier = ">=1.2.71" }, - { name = "django", specifier = "==4.2.9" }, - { name = "django-cors-headers", specifier = ">=4.4.0,<5" }, - { name = "django-debug-toolbar", specifier = ">=4.4.6,<5" }, - { name = "django-filter", specifier = ">=25.1,<26" }, - { name = "django-storages", specifier = ">=1.14.3,<2" }, - { name = "djangorestframework", specifier = "==3.14.0" }, - { name = "drf-nested-routers", specifier = ">=0.94.1,<0.95" }, - { name = "drf-spectacular", specifier = ">=0.28.0,<0.29" }, - { name = "gunicorn", specifier = ">=22.0.0,<23" }, - { name = "httpx", specifier = "==0.26.0" }, - { name = "load-dotenv", specifier = ">=0.1.0,<0.2" }, - { name = "pillow", specifier = ">=10.4.0,<11" }, - { name = "psycopg2-binary", specifier = ">=2.9.9,<3" }, - { name = "python-dotenv", specifier = ">=1.0.1,<2" }, - { name = "replicate", specifier = ">=0.28.0,<0.29" }, - { name = "requests", specifier = ">=2.32.3,<3" }, - { name = "setuptools", specifier = ">=75.8.0,<76" }, - { name = "tldextract", specifier = ">=5.1.2,<6" }, - { name = "unidecode", specifier = "==1.3.8" }, - { name = "whitenoise", specifier = ">=6.7.0,<7" }, - { name = "xmltodict", specifier = ">=0.13.0,<0.14" }, - { name = "zappa", specifier = ">=0.61.4" }, -] - -[package.metadata.requires-dev] -dev = [{ name = "ruff", specifier = ">=0.13.1" }] - -[[package]] -name = "bs4" -version = "0.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/aa/4acaf814ff901145da37332e05bb510452ebed97bc9602695059dd46ef39/bs4-0.0.2.tar.gz", hash = "sha256:a48685c58f50fe127722417bae83fe6badf500d54b55f7e39ffe43b798653925", size = 698, upload-time = "2024-01-17T18:15:47.371Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/bb/bf7aab772a159614954d84aa832c129624ba6c32faa559dfb200a534e50b/bs4-0.0.2-py2.py3-none-any.whl", hash = "sha256:abf8742c0805ef7f662dce4b51cca104cffe52b835238afc169142ab9b3fbccc", size = 1189, upload-time = "2024-01-17T18:15:48.613Z" }, -] - -[[package]] -name = "certifi" -version = "2025.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" }, -] - -[[package]] -name = "cfn-flip" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "pyyaml" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ca/75/8eba0bb52a6c58e347bc4c839b249d9f42380de93ed12a14eba4355387b4/cfn_flip-1.3.0.tar.gz", hash = "sha256:003e02a089c35e1230ffd0e1bcfbbc4b12cc7d2deb2fcc6c4228ac9819307362", size = 16113, upload-time = "2021-10-07T10:05:14.956Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/a8/a67297cd63ef99c3391c1d143161b187b71afa715a988655758269e3d02f/cfn_flip-1.3.0-py3-none-any.whl", hash = "sha256:faca8e77f0d32fb84cce1db1ef4c18b14a325d31125dae73c13bcc01947d2722", size = 21387, upload-time = "2021-10-07T10:05:13.378Z" }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7f/b5/991245018615474a60965a7c9cd2b4efbaabd16d582a5547c47ee1c7730b/charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", size = 204483, upload-time = "2025-08-09T07:55:53.12Z" }, - { url = "https://files.pythonhosted.org/packages/c7/2a/ae245c41c06299ec18262825c1569c5d3298fc920e4ddf56ab011b417efd/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", size = 145520, upload-time = "2025-08-09T07:55:54.712Z" }, - { url = "https://files.pythonhosted.org/packages/3a/a4/b3b6c76e7a635748c4421d2b92c7b8f90a432f98bda5082049af37ffc8e3/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", size = 158876, upload-time = "2025-08-09T07:55:56.024Z" }, - { url = "https://files.pythonhosted.org/packages/e2/e6/63bb0e10f90a8243c5def74b5b105b3bbbfb3e7bb753915fe333fb0c11ea/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", size = 156083, upload-time = "2025-08-09T07:55:57.582Z" }, - { url = "https://files.pythonhosted.org/packages/87/df/b7737ff046c974b183ea9aa111b74185ac8c3a326c6262d413bd5a1b8c69/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", size = 150295, upload-time = "2025-08-09T07:55:59.147Z" }, - { url = "https://files.pythonhosted.org/packages/61/f1/190d9977e0084d3f1dc169acd060d479bbbc71b90bf3e7bf7b9927dec3eb/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", size = 148379, upload-time = "2025-08-09T07:56:00.364Z" }, - { url = "https://files.pythonhosted.org/packages/4c/92/27dbe365d34c68cfe0ca76f1edd70e8705d82b378cb54ebbaeabc2e3029d/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", size = 160018, upload-time = "2025-08-09T07:56:01.678Z" }, - { url = "https://files.pythonhosted.org/packages/99/04/baae2a1ea1893a01635d475b9261c889a18fd48393634b6270827869fa34/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", size = 157430, upload-time = "2025-08-09T07:56:02.87Z" }, - { url = "https://files.pythonhosted.org/packages/2f/36/77da9c6a328c54d17b960c89eccacfab8271fdaaa228305330915b88afa9/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", size = 151600, upload-time = "2025-08-09T07:56:04.089Z" }, - { url = "https://files.pythonhosted.org/packages/64/d4/9eb4ff2c167edbbf08cdd28e19078bf195762e9bd63371689cab5ecd3d0d/charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", size = 99616, upload-time = "2025-08-09T07:56:05.658Z" }, - { url = "https://files.pythonhosted.org/packages/f4/9c/996a4a028222e7761a96634d1820de8a744ff4327a00ada9c8942033089b/charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", size = 107108, upload-time = "2025-08-09T07:56:07.176Z" }, - { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" }, -] - -[[package]] -name = "click" -version = "8.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, -] - -[[package]] -name = "cloudscraper" -version = "1.2.71" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyparsing" }, - { name = "requests" }, - { name = "requests-toolbelt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ac/25/6d0481860583f44953bd791de0b7c4f6d7ead7223f8a17e776247b34a5b4/cloudscraper-1.2.71.tar.gz", hash = "sha256:429c6e8aa6916d5bad5c8a5eac50f3ea53c9ac22616f6cb21b18dcc71517d0d3", size = 93261, upload-time = "2023-04-25T23:20:19.467Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/97/fc88803a451029688dffd7eb446dc1b529657577aec13aceff1cc9628c5d/cloudscraper-1.2.71-py2.py3-none-any.whl", hash = "sha256:76f50ca529ed2279e220837befdec892626f9511708e200d48d5bb76ded679b0", size = 99652, upload-time = "2023-04-25T23:20:15.974Z" }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, -] - -[[package]] -name = "django" -version = "4.2.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asgiref" }, - { name = "sqlparse" }, - { name = "tzdata", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ef/16/d1f016f8e65d300e23a9745ca849e657999dc1a5e491e5347579308593d2/Django-4.2.9.tar.gz", hash = "sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14", size = 10428500, upload-time = "2024-01-02T09:16:24.448Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/7c/e11e300ed554f8626b75eae9bb8f450f830daefb8b40681873ab54d9eaa8/Django-4.2.9-py3-none-any.whl", hash = "sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984", size = 7991172, upload-time = "2024-01-02T09:16:15.344Z" }, -] - -[[package]] -name = "django-cors-headers" -version = "4.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asgiref" }, - { name = "django" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/8e/6225441edcfe179bf4861e9e67489e33375e0b66316c8d7b9edaae863d37/django_cors_headers-4.8.0.tar.gz", hash = "sha256:0a12a2efcd59a3cea741e44db8ab589e929949de5bc4cdf35a29c6ae77297686", size = 21425, upload-time = "2025-09-08T15:58:05.34Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/b3/29ef49d6ff7800f323f3d98cde7777b3cfdda133de8feea84cffafea4578/django_cors_headers-4.8.0-py3-none-any.whl", hash = "sha256:3b883f4c6d07848673218456a5e070d8ab51f97341c1f27d0242ca167e7272ab", size = 12804, upload-time = "2025-09-08T15:58:03.882Z" }, -] - -[[package]] -name = "django-debug-toolbar" -version = "4.4.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "sqlparse" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d4/9c/0a3238eda0a46df20f2e3fe2a30313d34f5042a1a737d08230b77c29a3e9/django_debug_toolbar-4.4.6.tar.gz", hash = "sha256:36e421cb908c2f0675e07f9f41e3d1d8618dc386392ec82d23bcfcd5d29c7044", size = 272610, upload-time = "2024-07-10T13:18:13.302Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/33/2036a472eedfbe49240dffea965242b3f444de4ea4fbeceb82ccea33a2ce/django_debug_toolbar-4.4.6-py3-none-any.whl", hash = "sha256:3beb671c9ec44ffb817fad2780667f172bd1c067dbcabad6268ce39a81335f45", size = 229621, upload-time = "2024-07-10T13:18:35.71Z" }, -] - -[[package]] -name = "django-filter" -version = "25.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b5/40/c702a6fe8cccac9bf426b55724ebdf57d10a132bae80a17691d0cf0b9bac/django_filter-25.1.tar.gz", hash = "sha256:1ec9eef48fa8da1c0ac9b411744b16c3f4c31176c867886e4c48da369c407153", size = 143021, upload-time = "2025-02-14T16:30:53.238Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/a6/70dcd68537c434ba7cb9277d403c5c829caf04f35baf5eb9458be251e382/django_filter-25.1-py3-none-any.whl", hash = "sha256:4fa48677cf5857b9b1347fed23e355ea792464e0fe07244d1fdfb8a806215b80", size = 94114, upload-time = "2025-02-14T16:30:50.435Z" }, -] - -[[package]] -name = "django-storages" -version = "1.14.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ff/d6/2e50e378fff0408d558f36c4acffc090f9a641fd6e084af9e54d45307efa/django_storages-1.14.6.tar.gz", hash = "sha256:7a25ce8f4214f69ac9c7ce87e2603887f7ae99326c316bc8d2d75375e09341c9", size = 87587, upload-time = "2025-04-02T02:34:55.103Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/21/3cedee63417bc5553eed0c204be478071c9ab208e5e259e97287590194f1/django_storages-1.14.6-py3-none-any.whl", hash = "sha256:11b7b6200e1cb5ffcd9962bd3673a39c7d6a6109e8096f0e03d46fab3d3aabd9", size = 33095, upload-time = "2025-04-02T02:34:53.291Z" }, -] - -[[package]] -name = "djangorestframework" -version = "3.14.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "pytz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8e/53/5b2a002c5ebafd60dff1e1945a7d63dee40155830997439a9ba324f0fd50/djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8", size = 1055343, upload-time = "2022-09-22T11:38:44.245Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/4b/3b46c0914ba4b7546a758c35fdfa8e7f017fcbe7f23c878239e93623337a/djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08", size = 1062761, upload-time = "2022-09-22T11:38:41.825Z" }, -] - -[[package]] -name = "drf-nested-routers" -version = "0.94.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "djangorestframework" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1e/24/9e6a070dc491a416c93e4ec41950c7ea66d6a63b8db8d8abc0c128355978/drf-nested-routers-0.94.1.tar.gz", hash = "sha256:2b846385ed95c9f17bf4242db3b264ac826b5af00dda6c737d3fe7cc7bf2c7db", size = 18347, upload-time = "2024-05-10T22:36:55.553Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/a2/313a95268ffae9773a59aeb15c3f6932d4c905616d4797b371e6257fc8f9/drf_nested_routers-0.94.1-py2.py3-none-any.whl", hash = "sha256:3a8ec45a025c0f39188ec1ec415244beb875a6f4db87911a1f5a606d09b68c9f", size = 36260, upload-time = "2024-05-10T22:36:53.092Z" }, -] - -[[package]] -name = "drf-spectacular" -version = "0.28.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "djangorestframework" }, - { name = "inflection" }, - { name = "jsonschema" }, - { name = "pyyaml" }, - { name = "uritemplate" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/b9/741056455aed00fa51a1df41fad5ad27c8e0d433b6bf490d4e60e2808bc6/drf_spectacular-0.28.0.tar.gz", hash = "sha256:2c778a47a40ab2f5078a7c42e82baba07397bb35b074ae4680721b2805943061", size = 237849, upload-time = "2024-11-30T08:49:02.355Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/66/c2929871393b1515c3767a670ff7d980a6882964a31a4ca2680b30d7212a/drf_spectacular-0.28.0-py3-none-any.whl", hash = "sha256:856e7edf1056e49a4245e87a61e8da4baff46c83dbc25be1da2df77f354c7cb4", size = 103928, upload-time = "2024-11-30T08:48:57.288Z" }, -] - -[[package]] -name = "durationpy" -version = "0.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9d/a4/e44218c2b394e31a6dd0d6b095c4e1f32d0be54c2a4b250032d717647bab/durationpy-0.10.tar.gz", hash = "sha256:1fa6893409a6e739c9c72334fc65cca1f355dbdd93405d30f726deb5bde42fba", size = 3335, upload-time = "2025-05-17T13:52:37.26Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/0d/9feae160378a3553fa9a339b0e9c1a048e147a4127210e286ef18b730f03/durationpy-0.10-py3-none-any.whl", hash = "sha256:3b41e1b601234296b4fb368338fdcd3e13e0b4fb5b67345948f4f2bf9868b286", size = 3922, upload-time = "2025-05-17T13:52:36.463Z" }, -] - -[[package]] -name = "filelock" -version = "3.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload-time = "2025-08-14T16:56:03.016Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload-time = "2025-08-14T16:56:01.633Z" }, -] - -[[package]] -name = "gunicorn" -version = "22.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1e/88/e2f93c5738a4c1f56a458fc7a5b1676fc31dcdbb182bef6b40a141c17d66/gunicorn-22.0.0.tar.gz", hash = "sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63", size = 3639760, upload-time = "2024-04-16T22:58:19.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/97/6d610ae77b5633d24b69c2ff1ac3044e0e565ecbd1ec188f02c45073054c/gunicorn-22.0.0-py3-none-any.whl", hash = "sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9", size = 84443, upload-time = "2024-04-16T22:58:15.233Z" }, -] - -[[package]] -name = "h11" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, -] - -[[package]] -name = "hjson" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/e5/0b56d723a76ca67abadbf7fb71609fb0ea7e6926e94fcca6c65a85b36a0e/hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75", size = 40541, upload-time = "2022-08-13T02:53:01.919Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/7f/13cd798d180af4bf4c0ceddeefba2b864a63c71645abc0308b768d67bb81/hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89", size = 54018, upload-time = "2022-08-13T02:52:59.899Z" }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, -] - -[[package]] -name = "httpx" -version = "0.26.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, - { name = "sniffio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bd/26/2dc654950920f499bd062a211071925533f821ccdca04fa0c2fd914d5d06/httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf", size = 125671, upload-time = "2023-12-20T11:02:58.032Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/9b/4937d841aee9c2c8102d9a4eeb800c7dad25386caabb4a1bf5010df81a57/httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd", size = 75862, upload-time = "2023-12-20T11:02:55.395Z" }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, -] - -[[package]] -name = "inflection" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04/inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", size = 15091, upload-time = "2020-08-22T08:16:29.139Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2", size = 9454, upload-time = "2020-08-22T08:16:27.816Z" }, -] - -[[package]] -name = "jmespath" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, -] - -[[package]] -name = "jsonschema" -version = "4.25.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "jsonschema-specifications" }, - { name = "referencing" }, - { name = "rpds-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2025.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" }, -] - -[[package]] -name = "load-dotenv" -version = "0.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dotenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d7/95/055d123dde74bd54b99b27a3c2d8c6e218f544e0bd437480f61ccf85a07f/load-dotenv-0.1.0.tar.gz", hash = "sha256:bbe5f40072d4a61eadca66de6c222df5a2d935d6d41b703be1ff75396f635145", size = 6404, upload-time = "2022-09-02T19:55:01.349Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/2e/268a528dfa1f76999435634b0453fdd917ea878a818a6d5981632f7acffb/load_dotenv-0.1.0-py3-none-any.whl", hash = "sha256:614803f720153fb8a5f97124a72aaa3930a67aa5547cbe8603d01ea7f9ac1adf", size = 7175, upload-time = "2022-09-02T19:54:59.85Z" }, -] - -[[package]] -name = "markupsafe" -version = "3.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/db/fefacb2136439fc8dd20e797950e749aa1f4997ed584c62cfb8ef7c2be0e/markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad", size = 11631, upload-time = "2025-09-27T18:36:18.185Z" }, - { url = "https://files.pythonhosted.org/packages/e1/2e/5898933336b61975ce9dc04decbc0a7f2fee78c30353c5efba7f2d6ff27a/markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a", size = 12058, upload-time = "2025-09-27T18:36:19.444Z" }, - { url = "https://files.pythonhosted.org/packages/1d/09/adf2df3699d87d1d8184038df46a9c80d78c0148492323f4693df54e17bb/markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50", size = 24287, upload-time = "2025-09-27T18:36:20.768Z" }, - { url = "https://files.pythonhosted.org/packages/30/ac/0273f6fcb5f42e314c6d8cd99effae6a5354604d461b8d392b5ec9530a54/markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf", size = 22940, upload-time = "2025-09-27T18:36:22.249Z" }, - { url = "https://files.pythonhosted.org/packages/19/ae/31c1be199ef767124c042c6c3e904da327a2f7f0cd63a0337e1eca2967a8/markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f", size = 21887, upload-time = "2025-09-27T18:36:23.535Z" }, - { url = "https://files.pythonhosted.org/packages/b2/76/7edcab99d5349a4532a459e1fe64f0b0467a3365056ae550d3bcf3f79e1e/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a", size = 23692, upload-time = "2025-09-27T18:36:24.823Z" }, - { url = "https://files.pythonhosted.org/packages/a4/28/6e74cdd26d7514849143d69f0bf2399f929c37dc2b31e6829fd2045b2765/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115", size = 21471, upload-time = "2025-09-27T18:36:25.95Z" }, - { url = "https://files.pythonhosted.org/packages/62/7e/a145f36a5c2945673e590850a6f8014318d5577ed7e5920a4b3448e0865d/markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a", size = 22923, upload-time = "2025-09-27T18:36:27.109Z" }, - { url = "https://files.pythonhosted.org/packages/0f/62/d9c46a7f5c9adbeeeda52f5b8d802e1094e9717705a645efc71b0913a0a8/markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19", size = 14572, upload-time = "2025-09-27T18:36:28.045Z" }, - { url = "https://files.pythonhosted.org/packages/83/8a/4414c03d3f891739326e1783338e48fb49781cc915b2e0ee052aa490d586/markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01", size = 15077, upload-time = "2025-09-27T18:36:29.025Z" }, - { url = "https://files.pythonhosted.org/packages/35/73/893072b42e6862f319b5207adc9ae06070f095b358655f077f69a35601f0/markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c", size = 13876, upload-time = "2025-09-27T18:36:29.954Z" }, -] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, -] - -[[package]] -name = "packaging" -version = "25.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, -] - -[[package]] -name = "pillow" -version = "10.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, - { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, - { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, - { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, - { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, - { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, - { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, - { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, -] - -[[package]] -name = "pip" -version = "25.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/6e/74a3f0179a4a73a53d66ce57fdb4de0080a8baa1de0063de206d6167acc2/pip-25.3.tar.gz", hash = "sha256:8d0538dbbd7babbd207f261ed969c65de439f6bc9e5dbd3b3b9a77f25d95f343", size = 1803014, upload-time = "2025-10-25T00:55:41.394Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/3c/d717024885424591d5376220b5e836c2d5293ce2011523c9de23ff7bf068/pip-25.3-py3-none-any.whl", hash = "sha256:9655943313a94722b7774661c21049070f6bbb0a1516bf02f7c8d5d9201514cd", size = 1778622, upload-time = "2025-10-25T00:55:39.247Z" }, -] - -[[package]] -name = "placebo" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/35/a60e29abebe274da55a62261a070c173bbb5faf1e6f3b35ac292d944d632/placebo-0.9.0.tar.gz", hash = "sha256:03157f8527bbc2965b71b88f4a139ef8038618b346787f20d63e3c5da541b047", size = 13555, upload-time = "2019-02-16T17:15:26.88Z" } - -[[package]] -name = "platformdirs" -version = "4.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, -] - -[[package]] -name = "psycopg2-binary" -version = "2.9.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/bdc8274dc0585090b4e3432267d7be4dfbfd8971c0fa59167c711105a6bf/psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2", size = 385764, upload-time = "2024-10-16T11:24:58.126Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9c/8f/9feb01291d0d7a0a4c6a6bab24094135c2b59c6a81943752f632c75896d6/psycopg2_binary-2.9.10-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:04392983d0bb89a8717772a193cfaac58871321e3ec69514e1c4e0d4957b5aff", size = 3043397, upload-time = "2024-10-16T11:19:40.033Z" }, - { url = "https://files.pythonhosted.org/packages/15/30/346e4683532011561cd9c8dfeac6a8153dd96452fee0b12666058ab7893c/psycopg2_binary-2.9.10-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1a6784f0ce3fec4edc64e985865c17778514325074adf5ad8f80636cd029ef7c", size = 3274806, upload-time = "2024-10-16T11:19:43.5Z" }, - { url = "https://files.pythonhosted.org/packages/66/6e/4efebe76f76aee7ec99166b6c023ff8abdc4e183f7b70913d7c047701b79/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5f86c56eeb91dc3135b3fd8a95dc7ae14c538a2f3ad77a19645cf55bab1799c", size = 2851370, upload-time = "2024-10-16T11:19:46.986Z" }, - { url = "https://files.pythonhosted.org/packages/7f/fd/ff83313f86b50f7ca089b161b8e0a22bb3c319974096093cd50680433fdb/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b3d2491d4d78b6b14f76881905c7a8a8abcf974aad4a8a0b065273a0ed7a2cb", size = 3080780, upload-time = "2024-10-16T11:19:50.242Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c4/bfadd202dcda8333a7ccafdc51c541dbdfce7c2c7cda89fa2374455d795f/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2286791ececda3a723d1910441c793be44625d86d1a4e79942751197f4d30341", size = 3264583, upload-time = "2024-10-16T11:19:54.424Z" }, - { url = "https://files.pythonhosted.org/packages/5d/f1/09f45ac25e704ac954862581f9f9ae21303cc5ded3d0b775532b407f0e90/psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:512d29bb12608891e349af6a0cccedce51677725a921c07dba6342beaf576f9a", size = 3019831, upload-time = "2024-10-16T11:19:57.762Z" }, - { url = "https://files.pythonhosted.org/packages/9e/2e/9beaea078095cc558f215e38f647c7114987d9febfc25cb2beed7c3582a5/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5a507320c58903967ef7384355a4da7ff3f28132d679aeb23572753cbf2ec10b", size = 2871822, upload-time = "2024-10-16T11:20:04.693Z" }, - { url = "https://files.pythonhosted.org/packages/01/9e/ef93c5d93f3dc9fc92786ffab39e323b9aed066ba59fdc34cf85e2722271/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6d4fa1079cab9018f4d0bd2db307beaa612b0d13ba73b5c6304b9fe2fb441ff7", size = 2820975, upload-time = "2024-10-16T11:20:11.401Z" }, - { url = "https://files.pythonhosted.org/packages/a5/f0/049e9631e3268fe4c5a387f6fc27e267ebe199acf1bc1bc9cbde4bd6916c/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:851485a42dbb0bdc1edcdabdb8557c09c9655dfa2ca0460ff210522e073e319e", size = 2919320, upload-time = "2024-10-16T11:20:17.959Z" }, - { url = "https://files.pythonhosted.org/packages/dc/9a/bcb8773b88e45fb5a5ea8339e2104d82c863a3b8558fbb2aadfe66df86b3/psycopg2_binary-2.9.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:35958ec9e46432d9076286dda67942ed6d968b9c3a6a2fd62b48939d1d78bf68", size = 2957617, upload-time = "2024-10-16T11:20:24.711Z" }, - { url = "https://files.pythonhosted.org/packages/e2/6b/144336a9bf08a67d217b3af3246abb1d027095dab726f0687f01f43e8c03/psycopg2_binary-2.9.10-cp311-cp311-win32.whl", hash = "sha256:ecced182e935529727401b24d76634a357c71c9275b356efafd8a2a91ec07392", size = 1024618, upload-time = "2024-10-16T11:20:27.718Z" }, - { url = "https://files.pythonhosted.org/packages/61/69/3b3d7bd583c6d3cbe5100802efa5beacaacc86e37b653fc708bf3d6853b8/psycopg2_binary-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:ee0e8c683a7ff25d23b55b11161c2663d4b099770f6085ff0a20d4505778d6b4", size = 1163816, upload-time = "2024-10-16T11:20:30.777Z" }, -] - -[[package]] -name = "pydantic" -version = "2.11.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495, upload-time = "2025-09-13T11:26:39.325Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/d3/108f2006987c58e76691d5ae5d200dd3e0f532cb4e5fa3560751c3a1feba/pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2", size = 444855, upload-time = "2025-09-13T11:26:36.909Z" }, -] - -[[package]] -name = "pydantic-core" -version = "2.33.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, -] - -[[package]] -name = "pyparsing" -version = "3.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, -] - -[[package]] -name = "python-dotenv" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" }, -] - -[[package]] -name = "python-slugify" -version = "8.0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "text-unidecode" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, -] - -[[package]] -name = "pytz" -version = "2025.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, -] - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, -] - -[[package]] -name = "replicate" -version = "0.28.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "httpx" }, - { name = "packaging" }, - { name = "pydantic" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b4/02/64ad485ed1e0a773ce34b56d5e13e9a7997368119f3712c9b0b23bb7f227/replicate-0.28.0.tar.gz", hash = "sha256:e9f02ae6a237009f852864108f170b12319396248710a2d49ad67b097f46c391", size = 48559, upload-time = "2024-07-05T18:54:45.732Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/70/8b26e7ec1edc3c63000faf20c16c8d85139b1da745461e14fda866a144a1/replicate-0.28.0-py3-none-any.whl", hash = "sha256:9b0eb21634379eba0b77fe5125f70cb570d82e1cd57831f9d61e9e38fa037020", size = 42474, upload-time = "2024-07-05T18:54:43.294Z" }, -] - -[[package]] -name = "requests" -version = "2.32.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, -] - -[[package]] -name = "requests-file" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload-time = "2024-05-21T16:28:00.24Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload-time = "2024-05-21T16:27:57.733Z" }, -] - -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/61/d7545dafb7ac2230c70d38d31cbfe4cc64f7144dc41f6e4e4b78ecd9f5bb/requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", size = 206888, upload-time = "2023-05-01T04:11:33.229Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06", size = 54481, upload-time = "2023-05-01T04:11:28.427Z" }, -] - -[[package]] -name = "rpds-py" -version = "0.27.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload-time = "2025-08-27T12:16:36.024Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/c1/7907329fbef97cbd49db6f7303893bd1dd5a4a3eae415839ffdfb0762cae/rpds_py-0.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:be898f271f851f68b318872ce6ebebbc62f303b654e43bf72683dbdc25b7c881", size = 371063, upload-time = "2025-08-27T12:12:47.856Z" }, - { url = "https://files.pythonhosted.org/packages/11/94/2aab4bc86228bcf7c48760990273653a4900de89c7537ffe1b0d6097ed39/rpds_py-0.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:62ac3d4e3e07b58ee0ddecd71d6ce3b1637de2d373501412df395a0ec5f9beb5", size = 353210, upload-time = "2025-08-27T12:12:49.187Z" }, - { url = "https://files.pythonhosted.org/packages/3a/57/f5eb3ecf434342f4f1a46009530e93fd201a0b5b83379034ebdb1d7c1a58/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4708c5c0ceb2d034f9991623631d3d23cb16e65c83736ea020cdbe28d57c0a0e", size = 381636, upload-time = "2025-08-27T12:12:50.492Z" }, - { url = "https://files.pythonhosted.org/packages/ae/f4/ef95c5945e2ceb5119571b184dd5a1cc4b8541bbdf67461998cfeac9cb1e/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:abfa1171a9952d2e0002aba2ad3780820b00cc3d9c98c6630f2e93271501f66c", size = 394341, upload-time = "2025-08-27T12:12:52.024Z" }, - { url = "https://files.pythonhosted.org/packages/5a/7e/4bd610754bf492d398b61725eb9598ddd5eb86b07d7d9483dbcd810e20bc/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b507d19f817ebaca79574b16eb2ae412e5c0835542c93fe9983f1e432aca195", size = 523428, upload-time = "2025-08-27T12:12:53.779Z" }, - { url = "https://files.pythonhosted.org/packages/9f/e5/059b9f65a8c9149361a8b75094864ab83b94718344db511fd6117936ed2a/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:168b025f8fd8d8d10957405f3fdcef3dc20f5982d398f90851f4abc58c566c52", size = 402923, upload-time = "2025-08-27T12:12:55.15Z" }, - { url = "https://files.pythonhosted.org/packages/f5/48/64cabb7daced2968dd08e8a1b7988bf358d7bd5bcd5dc89a652f4668543c/rpds_py-0.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb56c6210ef77caa58e16e8c17d35c63fe3f5b60fd9ba9d424470c3400bcf9ed", size = 384094, upload-time = "2025-08-27T12:12:57.194Z" }, - { url = "https://files.pythonhosted.org/packages/ae/e1/dc9094d6ff566bff87add8a510c89b9e158ad2ecd97ee26e677da29a9e1b/rpds_py-0.27.1-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:d252f2d8ca0195faa707f8eb9368955760880b2b42a8ee16d382bf5dd807f89a", size = 401093, upload-time = "2025-08-27T12:12:58.985Z" }, - { url = "https://files.pythonhosted.org/packages/37/8e/ac8577e3ecdd5593e283d46907d7011618994e1d7ab992711ae0f78b9937/rpds_py-0.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e5e54da1e74b91dbc7996b56640f79b195d5925c2b78efaa8c5d53e1d88edde", size = 417969, upload-time = "2025-08-27T12:13:00.367Z" }, - { url = "https://files.pythonhosted.org/packages/66/6d/87507430a8f74a93556fe55c6485ba9c259949a853ce407b1e23fea5ba31/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ffce0481cc6e95e5b3f0a47ee17ffbd234399e6d532f394c8dce320c3b089c21", size = 558302, upload-time = "2025-08-27T12:13:01.737Z" }, - { url = "https://files.pythonhosted.org/packages/3a/bb/1db4781ce1dda3eecc735e3152659a27b90a02ca62bfeea17aee45cc0fbc/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a205fdfe55c90c2cd8e540ca9ceba65cbe6629b443bc05db1f590a3db8189ff9", size = 589259, upload-time = "2025-08-27T12:13:03.127Z" }, - { url = "https://files.pythonhosted.org/packages/7b/0e/ae1c8943d11a814d01b482e1f8da903f88047a962dff9bbdadf3bd6e6fd1/rpds_py-0.27.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:689fb5200a749db0415b092972e8eba85847c23885c8543a8b0f5c009b1a5948", size = 554983, upload-time = "2025-08-27T12:13:04.516Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/0b2a55415931db4f112bdab072443ff76131b5ac4f4dc98d10d2d357eb03/rpds_py-0.27.1-cp311-cp311-win32.whl", hash = "sha256:3182af66048c00a075010bc7f4860f33913528a4b6fc09094a6e7598e462fe39", size = 217154, upload-time = "2025-08-27T12:13:06.278Z" }, - { url = "https://files.pythonhosted.org/packages/24/75/3b7ffe0d50dc86a6a964af0d1cc3a4a2cdf437cb7b099a4747bbb96d1819/rpds_py-0.27.1-cp311-cp311-win_amd64.whl", hash = "sha256:b4938466c6b257b2f5c4ff98acd8128ec36b5059e5c8f8372d79316b1c36bb15", size = 228627, upload-time = "2025-08-27T12:13:07.625Z" }, - { url = "https://files.pythonhosted.org/packages/8d/3f/4fd04c32abc02c710f09a72a30c9a55ea3cc154ef8099078fd50a0596f8e/rpds_py-0.27.1-cp311-cp311-win_arm64.whl", hash = "sha256:2f57af9b4d0793e53266ee4325535a31ba48e2f875da81a9177c9926dfa60746", size = 220998, upload-time = "2025-08-27T12:13:08.972Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ed/e1fba02de17f4f76318b834425257c8ea297e415e12c68b4361f63e8ae92/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdfe4bb2f9fe7458b7453ad3c33e726d6d1c7c0a72960bcc23800d77384e42df", size = 371402, upload-time = "2025-08-27T12:15:51.561Z" }, - { url = "https://files.pythonhosted.org/packages/af/7c/e16b959b316048b55585a697e94add55a4ae0d984434d279ea83442e460d/rpds_py-0.27.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:8fabb8fd848a5f75a2324e4a84501ee3a5e3c78d8603f83475441866e60b94a3", size = 354084, upload-time = "2025-08-27T12:15:53.219Z" }, - { url = "https://files.pythonhosted.org/packages/de/c1/ade645f55de76799fdd08682d51ae6724cb46f318573f18be49b1e040428/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda8719d598f2f7f3e0f885cba8646644b55a187762bec091fa14a2b819746a9", size = 383090, upload-time = "2025-08-27T12:15:55.158Z" }, - { url = "https://files.pythonhosted.org/packages/1f/27/89070ca9b856e52960da1472efcb6c20ba27cfe902f4f23ed095b9cfc61d/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c64d07e95606ec402a0a1c511fe003873fa6af630bda59bac77fac8b4318ebc", size = 394519, upload-time = "2025-08-27T12:15:57.238Z" }, - { url = "https://files.pythonhosted.org/packages/b3/28/be120586874ef906aa5aeeae95ae8df4184bc757e5b6bd1c729ccff45ed5/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93a2ed40de81bcff59aabebb626562d48332f3d028ca2036f1d23cbb52750be4", size = 523817, upload-time = "2025-08-27T12:15:59.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ef/70cc197bc11cfcde02a86f36ac1eed15c56667c2ebddbdb76a47e90306da/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:387ce8c44ae94e0ec50532d9cb0edce17311024c9794eb196b90e1058aadeb66", size = 403240, upload-time = "2025-08-27T12:16:00.923Z" }, - { url = "https://files.pythonhosted.org/packages/cf/35/46936cca449f7f518f2f4996e0e8344db4b57e2081e752441154089d2a5f/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aaf94f812c95b5e60ebaf8bfb1898a7d7cb9c1af5744d4a67fa47796e0465d4e", size = 385194, upload-time = "2025-08-27T12:16:02.802Z" }, - { url = "https://files.pythonhosted.org/packages/e1/62/29c0d3e5125c3270b51415af7cbff1ec587379c84f55a5761cc9efa8cd06/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_31_riscv64.whl", hash = "sha256:4848ca84d6ded9b58e474dfdbad4b8bfb450344c0551ddc8d958bf4b36aa837c", size = 402086, upload-time = "2025-08-27T12:16:04.806Z" }, - { url = "https://files.pythonhosted.org/packages/8f/66/03e1087679227785474466fdd04157fb793b3b76e3fcf01cbf4c693c1949/rpds_py-0.27.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bde09cbcf2248b73c7c323be49b280180ff39fadcfe04e7b6f54a678d02a7cf", size = 419272, upload-time = "2025-08-27T12:16:06.471Z" }, - { url = "https://files.pythonhosted.org/packages/6a/24/e3e72d265121e00b063aef3e3501e5b2473cf1b23511d56e529531acf01e/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:94c44ee01fd21c9058f124d2d4f0c9dc7634bec93cd4b38eefc385dabe71acbf", size = 560003, upload-time = "2025-08-27T12:16:08.06Z" }, - { url = "https://files.pythonhosted.org/packages/26/ca/f5a344c534214cc2d41118c0699fffbdc2c1bc7046f2a2b9609765ab9c92/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:df8b74962e35c9249425d90144e721eed198e6555a0e22a563d29fe4486b51f6", size = 590482, upload-time = "2025-08-27T12:16:10.137Z" }, - { url = "https://files.pythonhosted.org/packages/ce/08/4349bdd5c64d9d193c360aa9db89adeee6f6682ab8825dca0a3f535f434f/rpds_py-0.27.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dc23e6820e3b40847e2f4a7726462ba0cf53089512abe9ee16318c366494c17a", size = 556523, upload-time = "2025-08-27T12:16:12.188Z" }, -] - -[[package]] -name = "ruff" -version = "0.14.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/08/52232a877978dd8f9cf2aeddce3e611b40a63287dfca29b6b8da791f5e8d/ruff-0.14.10.tar.gz", hash = "sha256:9a2e830f075d1a42cd28420d7809ace390832a490ed0966fe373ba288e77aaf4", size = 5859763, upload-time = "2025-12-18T19:28:57.98Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/01/933704d69f3f05ee16ef11406b78881733c186fe14b6a46b05cfcaf6d3b2/ruff-0.14.10-py3-none-linux_armv6l.whl", hash = "sha256:7a3ce585f2ade3e1f29ec1b92df13e3da262178df8c8bdf876f48fa0e8316c49", size = 13527080, upload-time = "2025-12-18T19:29:25.642Z" }, - { url = "https://files.pythonhosted.org/packages/df/58/a0349197a7dfa603ffb7f5b0470391efa79ddc327c1e29c4851e85b09cc5/ruff-0.14.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:674f9be9372907f7257c51f1d4fc902cb7cf014b9980152b802794317941f08f", size = 13797320, upload-time = "2025-12-18T19:29:02.571Z" }, - { url = "https://files.pythonhosted.org/packages/7b/82/36be59f00a6082e38c23536df4e71cdbc6af8d7c707eade97fcad5c98235/ruff-0.14.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d85713d522348837ef9df8efca33ccb8bd6fcfc86a2cde3ccb4bc9d28a18003d", size = 12918434, upload-time = "2025-12-18T19:28:51.202Z" }, - { url = "https://files.pythonhosted.org/packages/a6/00/45c62a7f7e34da92a25804f813ebe05c88aa9e0c25e5cb5a7d23dd7450e3/ruff-0.14.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6987ebe0501ae4f4308d7d24e2d0fe3d7a98430f5adfd0f1fead050a740a3a77", size = 13371961, upload-time = "2025-12-18T19:29:04.991Z" }, - { url = "https://files.pythonhosted.org/packages/40/31/a5906d60f0405f7e57045a70f2d57084a93ca7425f22e1d66904769d1628/ruff-0.14.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16a01dfb7b9e4eee556fbfd5392806b1b8550c9b4a9f6acd3dbe6812b193c70a", size = 13275629, upload-time = "2025-12-18T19:29:21.381Z" }, - { url = "https://files.pythonhosted.org/packages/3e/60/61c0087df21894cf9d928dc04bcd4fb10e8b2e8dca7b1a276ba2155b2002/ruff-0.14.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7165d31a925b7a294465fa81be8c12a0e9b60fb02bf177e79067c867e71f8b1f", size = 14029234, upload-time = "2025-12-18T19:29:00.132Z" }, - { url = "https://files.pythonhosted.org/packages/44/84/77d911bee3b92348b6e5dab5a0c898d87084ea03ac5dc708f46d88407def/ruff-0.14.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c561695675b972effb0c0a45db233f2c816ff3da8dcfbe7dfc7eed625f218935", size = 15449890, upload-time = "2025-12-18T19:28:53.573Z" }, - { url = "https://files.pythonhosted.org/packages/e9/36/480206eaefa24a7ec321582dda580443a8f0671fdbf6b1c80e9c3e93a16a/ruff-0.14.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4bb98fcbbc61725968893682fd4df8966a34611239c9fd07a1f6a07e7103d08e", size = 15123172, upload-time = "2025-12-18T19:29:23.453Z" }, - { url = "https://files.pythonhosted.org/packages/5c/38/68e414156015ba80cef5473d57919d27dfb62ec804b96180bafdeaf0e090/ruff-0.14.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f24b47993a9d8cb858429e97bdf8544c78029f09b520af615c1d261bf827001d", size = 14460260, upload-time = "2025-12-18T19:29:27.808Z" }, - { url = "https://files.pythonhosted.org/packages/b3/19/9e050c0dca8aba824d67cc0db69fb459c28d8cd3f6855b1405b3f29cc91d/ruff-0.14.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59aabd2e2c4fd614d2862e7939c34a532c04f1084476d6833dddef4afab87e9f", size = 14229978, upload-time = "2025-12-18T19:29:11.32Z" }, - { url = "https://files.pythonhosted.org/packages/51/eb/e8dd1dd6e05b9e695aa9dd420f4577debdd0f87a5ff2fedda33c09e9be8c/ruff-0.14.10-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:213db2b2e44be8625002dbea33bb9c60c66ea2c07c084a00d55732689d697a7f", size = 14338036, upload-time = "2025-12-18T19:29:09.184Z" }, - { url = "https://files.pythonhosted.org/packages/6a/12/f3e3a505db7c19303b70af370d137795fcfec136d670d5de5391e295c134/ruff-0.14.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b914c40ab64865a17a9a5b67911d14df72346a634527240039eb3bd650e5979d", size = 13264051, upload-time = "2025-12-18T19:29:13.431Z" }, - { url = "https://files.pythonhosted.org/packages/08/64/8c3a47eaccfef8ac20e0484e68e0772013eb85802f8a9f7603ca751eb166/ruff-0.14.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1484983559f026788e3a5c07c81ef7d1e97c1c78ed03041a18f75df104c45405", size = 13283998, upload-time = "2025-12-18T19:29:06.994Z" }, - { url = "https://files.pythonhosted.org/packages/12/84/534a5506f4074e5cc0529e5cd96cfc01bb480e460c7edf5af70d2bcae55e/ruff-0.14.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:c70427132db492d25f982fffc8d6c7535cc2fd2c83fc8888f05caaa248521e60", size = 13601891, upload-time = "2025-12-18T19:28:55.811Z" }, - { url = "https://files.pythonhosted.org/packages/0d/1e/14c916087d8598917dbad9b2921d340f7884824ad6e9c55de948a93b106d/ruff-0.14.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5bcf45b681e9f1ee6445d317ce1fa9d6cba9a6049542d1c3d5b5958986be8830", size = 14336660, upload-time = "2025-12-18T19:29:16.531Z" }, - { url = "https://files.pythonhosted.org/packages/f2/1c/d7b67ab43f30013b47c12b42d1acd354c195351a3f7a1d67f59e54227ede/ruff-0.14.10-py3-none-win32.whl", hash = "sha256:104c49fc7ab73f3f3a758039adea978869a918f31b73280db175b43a2d9b51d6", size = 13196187, upload-time = "2025-12-18T19:29:19.006Z" }, - { url = "https://files.pythonhosted.org/packages/fb/9c/896c862e13886fae2af961bef3e6312db9ebc6adc2b156fe95e615dee8c1/ruff-0.14.10-py3-none-win_amd64.whl", hash = "sha256:466297bd73638c6bdf06485683e812db1c00c7ac96d4ddd0294a338c62fdc154", size = 14661283, upload-time = "2025-12-18T19:29:30.16Z" }, - { url = "https://files.pythonhosted.org/packages/74/31/b0e29d572670dca3674eeee78e418f20bdf97fa8aa9ea71380885e175ca0/ruff-0.14.10-py3-none-win_arm64.whl", hash = "sha256:e51d046cf6dda98a4633b8a8a771451107413b0f07183b2bef03f075599e44e6", size = 13729839, upload-time = "2025-12-18T19:28:48.636Z" }, -] - -[[package]] -name = "s3transfer" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "botocore" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/05/04/74127fc843314818edfa81b5540e26dd537353b123a4edc563109d8f17dd/s3transfer-0.16.0.tar.gz", hash = "sha256:8e990f13268025792229cd52fa10cb7163744bf56e719e0b9cb925ab79abf920", size = 153827, upload-time = "2025-12-01T02:30:59.114Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/51/727abb13f44c1fcf6d145979e1535a35794db0f6e450a0cb46aa24732fe2/s3transfer-0.16.0-py3-none-any.whl", hash = "sha256:18e25d66fed509e3868dc1572b3f427ff947dd2c56f844a5bf09481ad3f3b2fe", size = 86830, upload-time = "2025-12-01T02:30:57.729Z" }, -] - -[[package]] -name = "setuptools" -version = "75.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/df/ec5ad16b0ec305081c372bd0550fd638fa96e472cd5a03049c344076ea76/setuptools-75.9.1.tar.gz", hash = "sha256:b6eca2c3070cdc82f71b4cb4bb2946bc0760a210d11362278cf1ff394e6ea32c", size = 1345088, upload-time = "2025-03-09T03:18:44.129Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/28/19ad82a0549d73ec6feffa6711eacf9246035a9426b8a8b528440c9959d2/setuptools-75.9.1-py3-none-any.whl", hash = "sha256:0a6f876d62f4d978ca1a11ab4daf728d1357731f978543ff18ecdbf9fd071f73", size = 1231632, upload-time = "2025-03-09T03:18:42.453Z" }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, -] - -[[package]] -name = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, -] - -[[package]] -name = "soupsieve" -version = "2.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" }, -] - -[[package]] -name = "sqlparse" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/40/edede8dd6977b0d3da179a342c198ed100dd2aba4be081861ee5911e4da4/sqlparse-0.5.3.tar.gz", hash = "sha256:09f67787f56a0b16ecdbde1bfc7f5d9c3371ca683cfeaa8e6ff60b4807ec9272", size = 84999, upload-time = "2024-12-10T12:05:30.728Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415, upload-time = "2024-12-10T12:05:27.824Z" }, -] - -[[package]] -name = "text-unidecode" -version = "1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, -] - -[[package]] -name = "tldextract" -version = "5.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "filelock" }, - { name = "idna" }, - { name = "requests" }, - { name = "requests-file" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/97/78/182641ea38e3cfd56e9c7b3c0d48a53d432eea755003aa544af96403d4ac/tldextract-5.3.0.tar.gz", hash = "sha256:b3d2b70a1594a0ecfa6967d57251527d58e00bb5a91a74387baa0d87a0678609", size = 128502, upload-time = "2025-04-22T06:19:37.491Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/7c/ea488ef48f2f544566947ced88541bc45fae9e0e422b2edbf165ee07da99/tldextract-5.3.0-py3-none-any.whl", hash = "sha256:f70f31d10b55c83993f55e91ecb7c5d84532a8972f22ec578ecfbe5ea2292db2", size = 107384, upload-time = "2025-04-22T06:19:36.304Z" }, -] - -[[package]] -name = "toml" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, -] - -[[package]] -name = "troposphere" -version = "4.9.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cfn-flip" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f5/96/17510294fbd3e8a179548401308343e612a85712be0556034ed100a11ce5/troposphere-4.9.6.tar.gz", hash = "sha256:0a1184f981d94eab96dd9831cd752d489e6f37b4fd24636fca0f397e9696b1bf", size = 520722, upload-time = "2025-12-03T22:08:12.998Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/72/7db9ca93e9654c3b712c201fcc39965663d6d3aa6f9dbadc432e013f9fe5/troposphere-4.9.6-py3-none-any.whl", hash = "sha256:8e878ba79dc2e95e3f9e9b8dcb21d1c43f2c2bdcc93d0b1c3d14dbedfc78d09d", size = 601853, upload-time = "2025-12-03T22:08:11.725Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, -] - -[[package]] -name = "typing-inspection" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, -] - -[[package]] -name = "tzdata" -version = "2025.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, -] - -[[package]] -name = "unidecode" -version = "1.3.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f7/89/19151076a006b9ac0dd37b1354e031f5297891ee507eb624755e58e10d3e/Unidecode-1.3.8.tar.gz", hash = "sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4", size = 192701, upload-time = "2024-01-11T11:58:35.609Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/b7/6ec57841fb67c98f52fc8e4a2d96df60059637cba077edc569a302a8ffc7/Unidecode-1.3.8-py3-none-any.whl", hash = "sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39", size = 235494, upload-time = "2024-01-11T11:58:33.012Z" }, -] - -[[package]] -name = "uritemplate" -version = "4.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/60/f174043244c5306c9988380d2cb10009f91563fc4b31293d27e17201af56/uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e", size = 33267, upload-time = "2025-06-02T15:12:06.318Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686", size = 11488, upload-time = "2025-06-02T15:12:03.405Z" }, -] - -[[package]] -name = "urllib3" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, -] - -[[package]] -name = "werkzeug" -version = "3.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/45/ea/b0f8eeb287f8df9066e56e831c7824ac6bab645dd6c7a8f4b2d767944f9b/werkzeug-3.1.4.tar.gz", hash = "sha256:cd3cd98b1b92dc3b7b3995038826c68097dcb16f9baa63abe35f20eafeb9fe5e", size = 864687, upload-time = "2025-11-29T02:15:22.841Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/f9/9e082990c2585c744734f85bec79b5dae5df9c974ffee58fe421652c8e91/werkzeug-3.1.4-py3-none-any.whl", hash = "sha256:2ad50fb9ed09cc3af22c54698351027ace879a0b60a3b5edf5730b2f7d876905", size = 224960, upload-time = "2025-11-29T02:15:21.13Z" }, -] - -[[package]] -name = "wheel" -version = "0.45.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload-time = "2024-11-23T00:18:23.513Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, -] - -[[package]] -name = "whitenoise" -version = "6.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/27/9a/4f4b84ff1f3a5c3cbc8070b6ecbbab6cd121c385244c9d24d80bb284190f/whitenoise-6.10.0.tar.gz", hash = "sha256:7b7e53de65d749cb1ce4a7100e751d9742e323b52746f9f93944c0d348ea2d02", size = 26412, upload-time = "2025-09-09T11:07:24.694Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/3b/4fa26e02935334fa0eb1422c938b1db796c55de7a432cc86b9d8cf97260c/whitenoise-6.10.0-py3-none-any.whl", hash = "sha256:bad74a40b33b055ba59731b6048dd08d5647f273b72bef922aa43ddd287b02da", size = 20194, upload-time = "2025-09-09T11:07:23.544Z" }, -] - -[[package]] -name = "xmltodict" -version = "0.13.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/39/0d/40df5be1e684bbaecdb9d1e0e40d5d482465de6b00cbb92b84ee5d243c7f/xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56", size = 33813, upload-time = "2022-05-08T07:00:04.916Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/db/fd0326e331726f07ff7f40675cd86aa804bfd2e5016c727fa761c934990e/xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852", size = 9971, upload-time = "2022-05-08T07:00:02.898Z" }, -] - -[[package]] -name = "zappa" -version = "0.61.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argcomplete" }, - { name = "boto3" }, - { name = "durationpy" }, - { name = "hjson" }, - { name = "jmespath" }, - { name = "pip" }, - { name = "placebo" }, - { name = "python-dateutil" }, - { name = "python-slugify" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "setuptools" }, - { name = "toml" }, - { name = "tqdm" }, - { name = "troposphere" }, - { name = "werkzeug" }, - { name = "wheel" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/de/2337eefd42427ca0325554b6e98f4e2decfd06f74e1ebf3134eea30ae6b1/zappa-0.61.4.tar.gz", hash = "sha256:f941285c07a65bdbb37ee793099d198740fb552c4b0bfc6069340337730b2d5c", size = 239444, upload-time = "2026-01-08T06:08:56.652Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/8a/ae3c4da855640a0825c19ccdd7117abb2cbc77775898a665c1b876dd778e/zappa-0.61.4-py3-none-any.whl", hash = "sha256:ee60bce0654f4223458b58bd39529d7a52a82fe2c084e09b67976dd6b73dbe17", size = 136214, upload-time = "2026-01-08T06:08:54.452Z" }, -] diff --git a/zappa_settings.json b/zappa_settings.json deleted file mode 100644 index a28e62b..0000000 --- a/zappa_settings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "dev": { - "aws_region": "sa-east-1", - "django_settings": "brscans.settings", - "exclude": [ - "boto3", - "dateutil", - "botocore", - "s3transfer", - "concurrent", - ".env" - ], - "profile_name": "brscans", - "project_name": "brscans-backend", - "runtime": "python3.11", - "s3_bucket": "brscans-zappa", - "environment_variables": { - "CLOUDFRONT_DOMAIN": "d47sf0ah3vbtc.cloudfront.net", - "PRODUCTION": "True", - "S3_STATIC_BUCKET": "brscans-media", - "S3_REGION": "sa-east-1" - }, - "timeout_seconds": 30, - "memory_size": 3008 - } -} \ No newline at end of file