From 67c20287ba4d9387e4df4611e5e4086cc12fd659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A2=85=EC=9A=B0=20=28Lee=20Jongwoo=29?= Date: Thu, 16 Jan 2025 14:00:52 +0900 Subject: [PATCH 01/16] merge to main (#103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 코드 추가 * 크롤링 에이전트를 병렬로 수행하도록 RunnableParallel 추가 및 불필요한 상태 삭제 * pnpm 관련 코드 및 파일 삭제 * python 에 맞게 gitignore 수정 * readme 수정 * gitignore에 .idea 폴더 추가 * 필요 없는 gitignore 삭제 * typing-extensions 추가 * env 가져오는 것을 config 파일로 분리 * mongoengine 추가 및 연결 코드 추가 * 기존 파일 삭제 * agent node 추가 * config 추가 * graph 관련 코드 추가 * db 연결 추가 * db 스키마 추가 * 사이트, 메시지 정보 가져오는 함수 추가 * 그래프 이미지 저장, kst 시간으로 변환하는 유틸 함수 추가 * main 함수 추가 * 사용하지 않는 모듈 import 삭제 * import 통일된 형태로 수정 * fixed untracked files * 디버깅용 print 삭제 * Crawling agent 두번 호출되는 문제 수정 * fakeLLM 사용을 위한 langchain-community 추가 * fakeLLM 추가 하면서 코드 일부 수정 * 껍데기 parser 노드 추가 * langfuse 삭제 * 코드 리뷰 반영 * 기존 프로젝트 삭제 * 기본 코드 작성 * Dockerfile 수정, requirements 추가 * 테스트용 event json 추가 * event 삭제 * repository, tag 관련 설정 추가 * ecr 레지스트리 수동지정, 로그 관련 및 필요권한 추가, 메모리와 이름 수정 * 오타수정, 불필요한 옵션 삭제 * test용 html 주소 수정 * readme 작성 * readme의 build 내용 수정 * 삭제되지 않은 기존 프로젝트 일부 코드 삭제 * black 추가 * 코드 리포맷팅 * 의존성 업데이트 * github workflows 파일 삭제 * scaper-lambda 에 black 의존성 추가 * scraper-lambda 코드 리포맷팅 * 이름변경, package-mode 변경 * typing 패키지가 아닌 내장 타입 이용하도록 변경 (list, dict) * pydantic기반 타입 추가, 질문 추가 * 타입 수정 * type 수정, 타입에 맞게 코드 수정 * 코드정렬, deprecated 메서드 수정 * 변수명 일반적인 컨벤션에 맞게 수정 * llm 타입수정 * __init__에 Import 하는 부분 삭제 * lambda payload에 body만 넣을 수 있도록 변경 * query_selector -> query_selector_all로 변경 * timeout 수정 * timeout 수정 * 결과 return 시 ensure ascii 옵션 수정 * 람다가 outer html을 반환하도록 수정 * html parser agent 구현 * logger 추가, 일부 Logger 적용 * agent 별로 모델을 다르게 사용할 수 있도록 매개변수 llm 삭제 * ai 관련 뉴스 필터링 에이전트 구성 * type 변경 * 필터링된 기사 순서 정렬하는 에이전트 구현 * parser_result 타입수정 * JsonOutputParser 대신 with_structured_output() 를 쓰도록 수정 * print -> logger로 수정 * 시간에 대한 주석 추가 * 4o-mini로 수정 * 정렬 에이전트의 경우 llm 4o로 수정 * merge 전에 원래 코드 형태로 되돌리기 * parser_result 타입수정 * prompt_config.py 추가 * prompt_config 를 사용하도록 코드 수정 * 불필요한 import 삭제 * 잘못 선언된 parser_result 삭제 * agent 구현, 긱뉴스 테스트 추가 * aitimes, 데보션 구현 및 테스트 * sds 테스트 추가 * 디버깅용 로그 삭제 * 테스트 경로문제 해결 * 타입을 생성의도대로 사용 * sorting agent 로깅 방식 수정 * message 가져오는 로직 수정 * 카카오메시지 데이터 타입 생성 * 메시지 생성 및 요청 구현 * 모듈 export, import 방식 변경 * 필터링 에이전트 모델 변경 * message 가져오는 함수 수정 * init 삭제하고 주석 추가 * 객체 중 site_data 가 없는 경우 예외처리 추가 * 워크 채팅 메시지에 표시될 문자 추가 * 로그 및 변수 네이밍 수정 * Union 대신 | 사용 * 환경변수용 데이터클래스 사용방식 변경 * 사용하지 않는 변수 정리 및 새로운 키 추가 * prompt template 사용방식 변경 * external 패키지 밑에 위치하도록 수정 * 사용 방식 변경 * import 수정 * selector에 매칭되는 요소가 없는 경우 에러 발생 * 람다의 타임아웃을 180으로 조정 * request, playwright의 타임아웃 에러 체크 * 사용하지않는 함수 삭제 * timeout 200초로 수정 * 외부 호출 오류에 대한 예외처리 추가 * 수정내용 적용 * 변수 생성방식 수정 * 에러 프린트 추가 * try except 범위 수정 * env 사용방식 수정 * 공통 logger 이름변경, create_logger 추가 * 포매팅 * llogger에 이름 추가 * 각 에이전트 수행 전, 후, 실행시간 출력 * 에이전트 로그 출력형식 일부 수정, 람다 호출 시 로그 추가 * LLM 호출 로그 추가 * raise 구문 삭제 * state 로그 추가 * 삭제된 코드 추가 * llm caller의 로거 생성방식 변경 * llm caller 로깅방식 변경 * lambda invoker에 args 삭제 * LangChainLLMCallerWithStructure 삭제 * 테이블 출력 형식 수정 * state 출력 로직 수정 * message agent 데이터 로깅 로직 수정 * 로깅 여부를 환경변수로 수정 * 잘못된 import 수정 * local 실행을 위한 __name__ 추가 * 잘못된 import 수정 * Dockerfile 추가 * sam deploy 를 위한 toml, yaml 파일 추가 * EventBridge 스케줄러 설정 추가 * 최상위 폴더에 ai-news-agent 라는 스택 이름으로 scraper-lambda와 news-scraper-agent가 모두 생성되도록 template.yaml 추가 * browser.close()를 finally에서 호출 * browser.close() 삭제, 페이지 대기를 더 안정적으로 수정 * sds, 데보션 테스트코드 추가 * wait 조건 수정 * timeout 관련 에러 로깅 추가 * 누락된 스케줄링 타임존 추가 * rich 라이브러리를 logging 에 추가 * 로컬에서는 테이블로 그 외에서는 dict 형태의 json 포맷으로 표시되도록 코드 수정 * lambda 호출에 retry 추가 * 재시도 간격을 파라미터로 받을수 있게 변경 * env.PROFILE 값을 파라미터로 넘겨주지 않고 내부에서 바로 참조해서 분기타도록 수정 * NewsScraperAgentLogger 클래스 생성하여 하위 메서드로 관련 메서드를 구현하도록 코드 수정 * 코드 전체적으로 NewsScraperAgentLogger를 사용하도록 코드 수정 * 각 print state 별로 logger 생성하도록 코드 수정 * README.md 추가 * 중복되는 레벨, 시간 삭제하고 richHandler의 시간으로 표시되도록 코드 수정 * 재시도 횟수 및 간격을 변수화 * retry를 어노테이션으로 사용 * 잘못된 Enum 타입 사용 수정 * retry after 로그 추가, lambda 에러 보완 * lambda 결과 파싱에 에러처리 추가 * exception 로깅방식 수정 * invoke 에러처리방식 수정 * invoke 에러처리 순서 수정 * get()의 default 인자 삭제 * sds 관련 코드 삭제 * 람다 자동재시작 횟수 1로 조정 * 각 람다 타임아웃 증가 * phase별 template 설정 변경 및 코드 수정 * Environment 추가 * samconfig 모든 파일에 적용 * Scheduler 이름에 PROFILE 추가, samconfig phase별 설정 추가 * 이전 Dockerfile 삭제 * 이전 dockerignore 삭제 * gitignore 추가 * agent Dockerfile에 env 덮어쓰는부분 삭제 * dockerignore 추가 * 각 모듈안의 samconfig, template 삭제 * ecr 분리 * schedule 조건부 생성 * 환경변수에 람다이름 삭제, PROFILE 기본값 변경 * 종속성 업데이트 * 기존의 사이트 추가, 페이지에 대한 배포는 가장 최신 코드 (main) 기준으로 수동 배포 하도록 추가 * ai-news-agent-stack 배포하는 workflow 추가 * 테스트를 위해 pr 시에 실행되도록 코드 수정 * .env 파일 경로 수정 * 주석 삭제 * 주석 삭제 * phase 분리 및 dev 배포는 수동으로 하도록 수정 * web, api 는 아예 삭제 * poetry install 추가 및 pr에서 테스트하기 위한 코드 추가 * 버전 삭제 * POETRY 삭제하고, docker build 시 requirement 파일로 설치하도록 코드 수정 * 자세한 내용 확인을 위해 debug 모드 추가 * 파이썬 버전 업데이트 * 파이썬 버전을 개발 환경과 맞춤 * poetry 설치 및 poetry install 코드 변경 * 공식 문서처럼 lambda_task_root 변수로 경로 지정하도록 코드 수정 * 공식 문서처럼 --use-container 옵션 추가 * 공식 문서처럼 --no-confirm-changeset --no-fail-on-empty-changeset 옵션 추가 * poetry 설치 시 Python3.12 -m pip로 실행하도록 수정 * Python3.12 -m pip로 변경 * dockerfile 변경 * dockerfile 원복 & 옵션 추가 * pip로 sam 설치하도록 변경 * root user action ignore 추가 * pip debug 옵션 추가 * docker 설치 과정 추가 * docker 설치 과정 수정 * no use container 사용 * architecture 수정 * architecture 수정 * playwright 아키텍쳐 수정 * debug용 플래그 제거 * debug용 플래그 제거 * debug용 플래그 제거 * debug용 플래그 제거 * pr 에서 실행되지 않도록 코드 삭제 * main 브랜치에서도 따로 배포 가능하도록 코드 추가 * pyproject 및 lock 파일 수정 * export plugin 추가 및 requirements.txt 갱신 * 버전을 기본값으로 수정 --------- Co-authored-by: hyejungg Co-authored-by: 김혜정 (hyejung kim) <68772751+hyejungg@users.noreply.github.com> Co-authored-by: 김혜정(molly.ouo) Co-authored-by: Justin --- .dockerignore | 3 - .eslintignore | 2 - .eslintrc.js | 6 - .github/workflows/deploy.yml | 86 - .../dev-deploy-ai-news-agent-stack.yml | 41 + .../workflows/develop-news-scraper-deploy.yml | 66 - .../develop-register-site-deploy.yml | 34 - .../prod-deploy-ai-news-agent-stack.yml | 45 + .gitignore | 300 +- Dockerfile | 45 - DockerfileApi | 32 - DockerfileLocal | 54 - README.md | 18 +- common/config/index.ts | 36 - common/loader/index.ts | 30 - common/model/Message.ts | 46 - common/model/Site.ts | 34 - common/package.json | 21 - common/tsconfig.json | 18 - common/types/model/MessageInfo.ts | 6 - common/types/model/Messages.ts | 5 - common/types/model/SiteInfo.ts | 7 - common/types/model/index.ts | 5 - lambdas/news-scraper/package.json | 31 - lambdas/news-scraper/samconfig.toml | 8 - lambdas/news-scraper/scripts/invokeLambda.sh | 12 - lambdas/news-scraper/scripts/updateLambda.sh | 23 - lambdas/news-scraper/src/.DS_Store | Bin 6148 -> 0 bytes .../news-scraper/src/extractor/Extractor.ts | 5 - .../implementation/AiTimesExtractor.ts | 93 - .../implementation/DevoceanExtractor.ts | 75 - .../implementation/GeekNewsExtractor.ts | 105 - .../implementation/SamsungSdsExtractor.ts | 72 - .../src/factory/ExcractorFactory.ts | 24 - lambdas/news-scraper/src/index.ts | 30 - lambdas/news-scraper/src/local.ts | 6 - .../src/service/KakaoWorkService.ts | 129 - .../news-scraper/src/service/TrendService.ts | 26 - lambdas/news-scraper/src/service/index.ts | 4 - lambdas/news-scraper/src/types/.DS_Store | Bin 6148 -> 0 bytes lambdas/news-scraper/src/types/aws/lambda.ts | 12 - .../src/types/class/GoogleSheetsManager.ts | 63 - .../types/class/KakaoworkMessageManager.ts | 121 - .../src/types/class/PuppeteerManager.ts | 66 - .../src/types/interface/BlockType.ts | 13 - .../src/types/interface/ButtonBlockType.ts | 5 - .../src/types/interface/SectionBlockType.ts | 7 - .../src/types/interface/SendMessageDto.ts | 6 - .../src/types/interface/SiteData.ts | 4 - .../types/news/ClueitArchiveResponseItem.ts | 5 - lambdas/news-scraper/template.yaml | 36 - lambdas/news-scraper/tsconfig.json | 18 - lambdas/register-site-api/package.json | 21 - lambdas/register-site-api/src/index.ts | 54 - lambdas/register-site-api/src/test.ts | 9 - lambdas/register-site-api/tsconfig.json | 18 - news-scraper-agent/.dockerignore | 6 + news-scraper-agent/.gitignore | 324 ++ news-scraper-agent/Dockerfile | 11 + news-scraper-agent/README.md | 41 + news-scraper-agent/agents/__init__.py | 0 news-scraper-agent/agents/crawling_agent.py | 56 + news-scraper-agent/agents/filtering_agent.py | 51 + .../agents/html_parser_agent.py | 101 + news-scraper-agent/agents/message_agent.py | 97 + news-scraper-agent/agents/sorting_agent.py | 57 + news-scraper-agent/config/__init__.py | 0 news-scraper-agent/config/env_config.py | 43 + news-scraper-agent/config/log.py | 80 + news-scraper-agent/config/prompt_config.py | 110 + news-scraper-agent/decorations/__init__.py | 0 news-scraper-agent/decorations/log_time.py | 54 + .../external/aws_lambda/client.py | 106 + .../external/kakaowork/client.py | 43 + .../external/kakaowork/message_blocks.py | 70 + .../external/kakaowork/message_builder.py | 74 + news-scraper-agent/graph/__init__.py | 0 news-scraper-agent/graph/build_graph.py | 85 + news-scraper-agent/graph/state.py | 203 ++ news-scraper-agent/loader/__init__.py | 0 news-scraper-agent/loader/connect.py | 34 + news-scraper-agent/main.py | 23 + news-scraper-agent/models/__init__.py | 0 news-scraper-agent/models/message.py | 60 + news-scraper-agent/models/site.py | 45 + news-scraper-agent/poetry.lock | 2498 +++++++++++++++ news-scraper-agent/pyproject.toml | 35 + news-scraper-agent/requirements.txt | 1429 +++++++++ news-scraper-agent/service/__init__.py | 0 news-scraper-agent/service/message_service.py | 24 + news-scraper-agent/service/site_service.py | 25 + .../tests/crawling_agent_test.py | 127 + .../fixtures/crawling_agent_test_aitimes.json | 16 + .../fixtures/crawling_agent_test_dvc.json | 3 + .../fixtures/crawling_agent_test_gn.json | 22 + news-scraper-agent/utils/__init__.py | 0 news-scraper-agent/utils/graph_image_utils.py | 16 + news-scraper-agent/utils/time_utils.py | 10 + nodemon.json | 6 - package.json | 20 - pages/postSiteForm/error.html | 53 - pages/postSiteForm/images/Mar-Business_18.jpg | Bin 1285635 -> 0 bytes pages/postSiteForm/index.html | 230 -- pages/postSiteForm/success.html | 52 - pnpm-lock.yaml | 2680 ----------------- pnpm-workspace.yaml | 3 - samconfig.toml | 51 + scraper-lambda/.gitignore | 244 ++ scraper-lambda/README.md | 45 + scraper-lambda/__init__.py | 0 scraper-lambda/events/event_json.json | 4 + scraper-lambda/events/event_render.json | 5 + scraper-lambda/events/event_static.json | 5 + scraper-lambda/poetry.lock | 488 +++ scraper-lambda/pyproject.toml | 31 + scraper-lambda/src/.dockerignore | 1 + scraper-lambda/src/Dockerfile | 30 + scraper-lambda/src/__init__.py | 0 scraper-lambda/src/app.py | 120 + scraper-lambda/src/requirements.txt | 193 ++ scraper-lambda/src/used_type.py | 7 + scraper-lambda/tests/__init__.py | 0 scraper-lambda/tests/unit/__init__.py | 0 scraper-lambda/tests/unit/test_handler.py | 55 + template.yaml | 185 ++ tsconfig.json | 24 - 126 files changed, 7704 insertions(+), 4848 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js delete mode 100644 .github/workflows/deploy.yml create mode 100644 .github/workflows/dev-deploy-ai-news-agent-stack.yml delete mode 100644 .github/workflows/develop-news-scraper-deploy.yml delete mode 100644 .github/workflows/develop-register-site-deploy.yml create mode 100644 .github/workflows/prod-deploy-ai-news-agent-stack.yml delete mode 100644 Dockerfile delete mode 100644 DockerfileApi delete mode 100644 DockerfileLocal delete mode 100644 common/config/index.ts delete mode 100644 common/loader/index.ts delete mode 100644 common/model/Message.ts delete mode 100644 common/model/Site.ts delete mode 100644 common/package.json delete mode 100644 common/tsconfig.json delete mode 100644 common/types/model/MessageInfo.ts delete mode 100644 common/types/model/Messages.ts delete mode 100644 common/types/model/SiteInfo.ts delete mode 100644 common/types/model/index.ts delete mode 100644 lambdas/news-scraper/package.json delete mode 100644 lambdas/news-scraper/samconfig.toml delete mode 100644 lambdas/news-scraper/scripts/invokeLambda.sh delete mode 100644 lambdas/news-scraper/scripts/updateLambda.sh delete mode 100644 lambdas/news-scraper/src/.DS_Store delete mode 100644 lambdas/news-scraper/src/extractor/Extractor.ts delete mode 100644 lambdas/news-scraper/src/extractor/implementation/AiTimesExtractor.ts delete mode 100644 lambdas/news-scraper/src/extractor/implementation/DevoceanExtractor.ts delete mode 100644 lambdas/news-scraper/src/extractor/implementation/GeekNewsExtractor.ts delete mode 100644 lambdas/news-scraper/src/extractor/implementation/SamsungSdsExtractor.ts delete mode 100644 lambdas/news-scraper/src/factory/ExcractorFactory.ts delete mode 100644 lambdas/news-scraper/src/index.ts delete mode 100644 lambdas/news-scraper/src/local.ts delete mode 100644 lambdas/news-scraper/src/service/KakaoWorkService.ts delete mode 100644 lambdas/news-scraper/src/service/TrendService.ts delete mode 100644 lambdas/news-scraper/src/service/index.ts delete mode 100644 lambdas/news-scraper/src/types/.DS_Store delete mode 100644 lambdas/news-scraper/src/types/aws/lambda.ts delete mode 100644 lambdas/news-scraper/src/types/class/GoogleSheetsManager.ts delete mode 100644 lambdas/news-scraper/src/types/class/KakaoworkMessageManager.ts delete mode 100644 lambdas/news-scraper/src/types/class/PuppeteerManager.ts delete mode 100644 lambdas/news-scraper/src/types/interface/BlockType.ts delete mode 100644 lambdas/news-scraper/src/types/interface/ButtonBlockType.ts delete mode 100644 lambdas/news-scraper/src/types/interface/SectionBlockType.ts delete mode 100644 lambdas/news-scraper/src/types/interface/SendMessageDto.ts delete mode 100644 lambdas/news-scraper/src/types/interface/SiteData.ts delete mode 100644 lambdas/news-scraper/src/types/news/ClueitArchiveResponseItem.ts delete mode 100644 lambdas/news-scraper/template.yaml delete mode 100644 lambdas/news-scraper/tsconfig.json delete mode 100644 lambdas/register-site-api/package.json delete mode 100644 lambdas/register-site-api/src/index.ts delete mode 100644 lambdas/register-site-api/src/test.ts delete mode 100644 lambdas/register-site-api/tsconfig.json create mode 100644 news-scraper-agent/.dockerignore create mode 100644 news-scraper-agent/.gitignore create mode 100644 news-scraper-agent/Dockerfile create mode 100644 news-scraper-agent/README.md create mode 100644 news-scraper-agent/agents/__init__.py create mode 100644 news-scraper-agent/agents/crawling_agent.py create mode 100644 news-scraper-agent/agents/filtering_agent.py create mode 100644 news-scraper-agent/agents/html_parser_agent.py create mode 100644 news-scraper-agent/agents/message_agent.py create mode 100644 news-scraper-agent/agents/sorting_agent.py create mode 100644 news-scraper-agent/config/__init__.py create mode 100644 news-scraper-agent/config/env_config.py create mode 100644 news-scraper-agent/config/log.py create mode 100644 news-scraper-agent/config/prompt_config.py create mode 100644 news-scraper-agent/decorations/__init__.py create mode 100644 news-scraper-agent/decorations/log_time.py create mode 100644 news-scraper-agent/external/aws_lambda/client.py create mode 100644 news-scraper-agent/external/kakaowork/client.py create mode 100644 news-scraper-agent/external/kakaowork/message_blocks.py create mode 100644 news-scraper-agent/external/kakaowork/message_builder.py create mode 100644 news-scraper-agent/graph/__init__.py create mode 100644 news-scraper-agent/graph/build_graph.py create mode 100644 news-scraper-agent/graph/state.py create mode 100644 news-scraper-agent/loader/__init__.py create mode 100644 news-scraper-agent/loader/connect.py create mode 100644 news-scraper-agent/main.py create mode 100644 news-scraper-agent/models/__init__.py create mode 100644 news-scraper-agent/models/message.py create mode 100644 news-scraper-agent/models/site.py create mode 100644 news-scraper-agent/poetry.lock create mode 100644 news-scraper-agent/pyproject.toml create mode 100644 news-scraper-agent/requirements.txt create mode 100644 news-scraper-agent/service/__init__.py create mode 100644 news-scraper-agent/service/message_service.py create mode 100644 news-scraper-agent/service/site_service.py create mode 100644 news-scraper-agent/tests/crawling_agent_test.py create mode 100644 news-scraper-agent/tests/fixtures/crawling_agent_test_aitimes.json create mode 100644 news-scraper-agent/tests/fixtures/crawling_agent_test_dvc.json create mode 100644 news-scraper-agent/tests/fixtures/crawling_agent_test_gn.json create mode 100644 news-scraper-agent/utils/__init__.py create mode 100644 news-scraper-agent/utils/graph_image_utils.py create mode 100644 news-scraper-agent/utils/time_utils.py delete mode 100644 nodemon.json delete mode 100644 package.json delete mode 100644 pages/postSiteForm/error.html delete mode 100644 pages/postSiteForm/images/Mar-Business_18.jpg delete mode 100644 pages/postSiteForm/index.html delete mode 100644 pages/postSiteForm/success.html delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml create mode 100644 samconfig.toml create mode 100644 scraper-lambda/.gitignore create mode 100644 scraper-lambda/README.md create mode 100644 scraper-lambda/__init__.py create mode 100644 scraper-lambda/events/event_json.json create mode 100644 scraper-lambda/events/event_render.json create mode 100644 scraper-lambda/events/event_static.json create mode 100644 scraper-lambda/poetry.lock create mode 100644 scraper-lambda/pyproject.toml create mode 100644 scraper-lambda/src/.dockerignore create mode 100644 scraper-lambda/src/Dockerfile create mode 100644 scraper-lambda/src/__init__.py create mode 100644 scraper-lambda/src/app.py create mode 100644 scraper-lambda/src/requirements.txt create mode 100644 scraper-lambda/src/used_type.py create mode 100644 scraper-lambda/tests/__init__.py create mode 100644 scraper-lambda/tests/unit/__init__.py create mode 100644 scraper-lambda/tests/unit/test_handler.py create mode 100644 template.yaml delete mode 100644 tsconfig.json diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 2fd83a6..0000000 --- a/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea -node_modules -dist diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f06235c..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index fca472f..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - root: true, - parser: "@typescript-eslint/parser", - plugins: ["@typescript-eslint"], - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"], -}; diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index b0ef115..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: deploy -on: - push: - branches: - - main - # 아래는 PR 올라온 환경에서 동작하는지 확인하는 용도 추후에 삭제하기 !! -# pull_request: -# branches: -# - main -# - dev - -jobs: - prod_CICD: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [ 18.16.0 ] # 개발환경과 동일하게 맞춤 - - steps: - - name: Checkout source code. - uses: actions/checkout@v2 - - - name: Create .env file - run: | - touch .env - echo "${{ secrets.REAL_ENV }}" >> ./common/.env - - - name: Install AWS CLI - run: | - sudo apt-get update - sudo apt-get install -y awscli - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY }} - aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - - name: Sync static web files - run: aws s3 sync ./pages/postSiteForm s3://${{ secrets.AWS_S3_BUCKET_NAME }} - - - name: AWS ECR login - run: aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_REGISTRY_URL }} - - - name: Build docker image and push docker images to ecr - run: | - docker build -t ai-news-noti-bot-real . - docker tag ai-news-noti-bot-real:latest ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-real:latest - docker push ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-real:latest - - - name: Update lambda function - run: aws lambda update-function-code --function-name ai-news-noti-bot-real --image-uri ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-real:latest - - - name: Delete untagged images in ECR - run: | - # Get untagged image digest - UNTAGGED_IMAGES=$(aws ecr describe-images --repository-name ai-news-noti-bot-real --query 'imageDetails[?imageTags==null].imageDigest' --output json) - - # Delete untagged images - if [ -n "$UNTAGGED_IMAGES" ]; then - for IMAGE_DIGEST in $(echo "$UNTAGGED_IMAGES" | jq -r '.[]'); do - aws ecr batch-delete-image --repository-name ai-news-noti-bot-real --image-ids imageDigest=$IMAGE_DIGEST - done - fi - - - name: Build docker image and push docker images to ecr (api) - run: | - docker build -t ai-news-noti-bot-api-real -f DockerfileApi . - docker tag ai-news-noti-bot-api-real:latest ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-api-real:latest - docker push ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-api-real:latest - - - name: Update lambda function (api) - run: aws lambda update-function-code --function-name ai-news-noti-bot-api-real --image-uri ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-api-real:latest - - - name: Delete untagged images in ECR (api) - run: | - # Get untagged image digest - UNTAGGED_IMAGES=$(aws ecr describe-images --repository-name ai-news-noti-bot-api-real --query 'imageDetails[?imageTags==null].imageDigest' --output json) - - # Delete untagged images - if [ -n "$UNTAGGED_IMAGES" ]; then - for IMAGE_DIGEST in $(echo "$UNTAGGED_IMAGES" | jq -r '.[]'); do - aws ecr batch-delete-image --repository-name ai-news-noti-bot-api-real --image-ids imageDigest=$IMAGE_DIGEST - done - fi diff --git a/.github/workflows/dev-deploy-ai-news-agent-stack.yml b/.github/workflows/dev-deploy-ai-news-agent-stack.yml new file mode 100644 index 0000000..e8dea7b --- /dev/null +++ b/.github/workflows/dev-deploy-ai-news-agent-stack.yml @@ -0,0 +1,41 @@ +name: dev-deploy-ai-news-agent-stack +on: + workflow_dispatch: + inputs: + branch: + description: '배포할 브랜치' + required: true + default: 'develop' + +jobs: + deploy-ai-news-agent-stack: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.event.inputs.branch }} + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.12.2' # 개발 환경과 맞춤 + + - name: Setup SAM CLI + uses: aws-actions/setup-sam@v2 + + - name: Create .env file + run: echo "${{ secrets.NEWS_SCRAPER_LAMBDA_ENV_DEV }}" >> ./news-scraper-agent/.env + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: AWS Sam build + run: sam build --config-env dev + + - name: AWS Sam Deploy + run: sam deploy --config-env dev --no-confirm-changeset --no-fail-on-empty-changeset diff --git a/.github/workflows/develop-news-scraper-deploy.yml b/.github/workflows/develop-news-scraper-deploy.yml deleted file mode 100644 index 413d46b..0000000 --- a/.github/workflows/develop-news-scraper-deploy.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: develop-news-scraper-deploy -on: - workflow_dispatch: - inputs: - branch: - description: '배포할 브랜치' - required: true - default: 'develop' - -jobs: - develop_news_scraper: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [ 18.16.0 ] # 개발환경과 동일하게 맞춤 - - steps: - - name: Checkout source code. - uses: actions/checkout@v2 - with: - ref: ${{ github.event.inputs.branch }} - - - name: Create .env file # DEV_ENV 필요 - run: | - touch .env - echo "${{ secrets.DEV_ENV }}" >> ./common/.env - - - name: Install AWS CLI - run: | - sudo apt-get update - sudo apt-get install -y awscli - - - name: Install AWS SAM - uses: aws-actions/setup-sam@v2 - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY }} - aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - - name: AWS ECR login - run: aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ secrets.AWS_REGISTRY_URL }} - - - name: Build docker image and push docker images to ecr - run: | - docker build -t ai-news-noti-bot-develop . - docker tag ai-news-noti-bot-develop:latest ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-develop:latest - docker push ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-develop:latest - - # TODO sam으로 변경 - - name: Update lambda function - run: aws lambda update-function-code --function-name ai-news-noti-bot-develop --image-uri ${{ secrets.AWS_REGISTRY_URL }}/ai-news-noti-bot-dev:latest - - - name: Delete untagged images in ECR - run: | - # Get untagged image digest - UNTAGGED_IMAGES=$(aws ecr describe-images --repository-name ai-news-noti-bot-develop --query 'imageDetails[?imageTags==null].imageDigest' --output json) - - # Delete untagged images - if [ -n "$UNTAGGED_IMAGES" ]; then - for image in $UNTAGGED_IMAGES; do - aws ecr batch-delete-image --repository-name ai-news-noti-bot-develop --image-ids imageDigest=$image - done - fi diff --git a/.github/workflows/develop-register-site-deploy.yml b/.github/workflows/develop-register-site-deploy.yml deleted file mode 100644 index 1026430..0000000 --- a/.github/workflows/develop-register-site-deploy.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: develop-register-site-deploy -on: - workflow_dispatch: - inputs: - branch: - description: '배포할 브랜치' - required: true - default: 'develop' - -jobs: - deploy_static_page: - runs-on: ubuntu-latest - steps: - - name: Checkout source code. - uses: actions/checkout@v2 - with: - ref: ${{ github.event.inputs.branch }} - - - name: Install AWS CLI - run: | - sudo apt-get update - sudo apt-get install -y awscli - - - name: Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY }} - aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - - name: Sync static web files - run: aws s3 sync ./pages/postSiteForm s3://${{ secrets.AWS_S3_BUCKET_NAME }} - - # 테스트 후 api 배포도 추가 \ No newline at end of file diff --git a/.github/workflows/prod-deploy-ai-news-agent-stack.yml b/.github/workflows/prod-deploy-ai-news-agent-stack.yml new file mode 100644 index 0000000..4f6922d --- /dev/null +++ b/.github/workflows/prod-deploy-ai-news-agent-stack.yml @@ -0,0 +1,45 @@ +name: prod-deploy-ai-news-agent-stack +on: + push: + branches: + - main + + workflow_dispatch: + inputs: + branch: + description: '배포할 브랜치' + required: true + default: 'main' + +jobs: + deploy-ai-news-agent-stack: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.event.inputs.branch }} + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.12.2' # 개발 환경과 맞춤 + + - name: Setup SAM CLI + uses: aws-actions/setup-sam@v2 + + - name: Create .env file + run: echo "${{ secrets.NEWS_SCRAPER_LAMBDA_ENV_PROD }}" >> ./news-scraper-agent/.env + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_DEPLOY_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_DEPLOY_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: AWS Sam build + run: sam build --config-env prod + + - name: AWS Sam Deploy + run: sam deploy --config-env prod --no-confirm-changeset --no-fail-on-empty-changeset diff --git a/.gitignore b/.gitignore index bf77205..981c0f2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,137 +1,167 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# vuepress v2.x temp and cache directory -.temp -.cache - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -# Jetbrains IDE files .idea -.DS_Store - -.aws-sam/ \ No newline at end of file +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ +.aws-sam/ + +ai-news-noti-bot.iml diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index e7971b4..0000000 --- a/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -# build stage -FROM node:20 AS builder - - -# 전체 파일 복사 -COPY . ./build - -# 디렉터리 위치 이동 -WORKDIR ./build - -# pnpm 설치 -RUN npm install -g typescript pnpm \ - && pnpm install - -# 의존성 설치를 위한 작업 디렉토리로 변경 -WORKDIR ./lambdas/news-scraper - -# 실행 환경 구성 -RUN pnpm build \ - && cp ../../pnpm-workspace.yaml ./dist \ - && cp ./package.json ./dist/lambdas/news-scraper \ - && cp ../../common/package.json ./dist/common \ - && cd ./dist \ - && pnpm install \ - && cp ../../../common/.env ./common/.env \ - && echo "import { handler as test } from './lambdas/news-scraper/src/index.js'" > index.mjs \ - && echo "export const handler = test;" >> index.mjs - -# production stage -# AWS Lambda의 Node.js 20 베이스 이미지 사용 -FROM public.ecr.aws/lambda/nodejs:20 - -# phase -ENV PHASE=prod - -# amazonlinux2023 에서 chrome 실행에 필요한 라이브러리 설치 -RUN dnf install -y libXcomposite libXdamage libXrandr libxkbcommon pango alsa-lib atk at-spi2-atk cups-libs libdrm mesa-libgbm dbus-libs.x86_64 nss - -WORKDIR ${LAMBDA_TASK_ROOT} -COPY --from=builder /build/lambdas/news-scraper/dist ./ - -# production stage 이미지에 chrome 설치 -RUN lambdas/news-scraper/node_modules/.bin/puppeteer browsers install chrome - -CMD ["index.handler"] diff --git a/DockerfileApi b/DockerfileApi deleted file mode 100644 index a470354..0000000 --- a/DockerfileApi +++ /dev/null @@ -1,32 +0,0 @@ -# AWS Lambda의 Node.js 18 베이스 이미지 사용 -FROM public.ecr.aws/lambda/nodejs:18 - -# pnpm 설치 -RUN npm install -g typescript -RUN npm install -g pnpm - -# 전체 파일 복사 -COPY . ${LAMBDA_TASK_ROOT} - -# 디렉터리 위치 이동 -WORKDIR ${LAMBDA_TASK_ROOT} - -RUN pnpm install - -# 의존성 설치를 위한 작업 디렉토리로 변경 -WORKDIR ./lambdas/register-site-api - -# 실행 환경 구성 -RUN pnpm build \ - && cp ../../pnpm-workspace.yaml ./dist \ - && cp ./package.json ./dist/lambdas/register-site-api \ - && cp ../../common/package.json ./dist/common \ - && cd ./dist \ - && pnpm install \ - && cp ../../../common/.env ./common/.env \ - && echo "import { handler as test } from './lambdas/register-site-api/src/index.js'" > index.mjs \ - && echo "export const handler = test;" >> index.mjs - -WORKDIR ${LAMBDA_TASK_ROOT} - -CMD ["lambdas/register-site-api/dist/index.handler"] diff --git a/DockerfileLocal b/DockerfileLocal deleted file mode 100644 index 4ad63f0..0000000 --- a/DockerfileLocal +++ /dev/null @@ -1,54 +0,0 @@ -# Node.js 16과 alpine Linux를 기반으로 하는 이미지 사용 -FROM node:18-alpine - -# puppeteer 실행을 위해 필요한 패키지들을 설치 -RUN apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont udev xvfb x11vnc fluxbox dbus - -RUN apk add --no-cache --virtual .build-deps curl \ - && echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \ - && echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \ - && echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \ - && apk add --no-cache curl wget \ - && apk del .build-deps # puppeteer 다운로드를 위해 필요한 라이브러리들을 설치하고 마지막에는 빌드를 위해 추가적으로 설치한 패키지들을 삭제 - -# puppeteer가 chromium-browser를 실행할 수 있도록 설정 -ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser -# 이미 chromium을 설치했기 때문에 puppeteer가 chromium을 다시 다운로드하지 않도록 설정 -ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true -# Xvfb에서 사용할 디스플레이 설정 -ENV DISPLAY=:99 - -# phase -ENV PHASE=local - -# pnpm 설치 -RUN npm install -g typescript -RUN npm install -g pnpm - -# 전체 파일 복사 -COPY . /home/app - -# 디렉터리 위치 이동 -WORKDIR /home/app - -RUN pnpm install - -# 의존성 설치를 위한 작업 디렉토리로 변경 -WORKDIR /home/app/lambdas/news-scraper - -# 실행 환경 구성 -RUN pnpm build \ - && cp ../../pnpm-workspace.yaml ./dist \ - && cp ./package.json ./dist/lambdas/news-scraper \ - && cp ../../common/package.json ./dist/common - -WORKDIR /home/app/lambdas/news-scraper/dist -RUN pnpm install \ - && cp ../../../common/.env ./common/.env - -# 메모리 사용량 설정 -ENV NODE_OPTIONS="--max-old-space-size=2048" - -# 실행 -WORKDIR /home/app/lambdas/news-scraper/dist/lambdas/news-scraper/src -CMD Xvfb :99 -screen 0 1024x768x16 -ac & node local.js diff --git a/README.md b/README.md index fbf98be..89b894a 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,21 @@ AI 트렌드 알림 봇 +## modules +### news-scraper-agent +> 뉴스 스크래핑 + 알림 python 봇 + ## git convention ### branch - -- 별도의 개발 브랜치 없음 - ``` ---------main-------- +-------- main -------- \ - --------feat/#3------ - \ - --------feat/#4------ + -------- develop -------- + \ + --------feat/#3------ + \ + --------feat/#4------ ``` - PR이 Merge되면 해당 브랜치는 삭제한다. @@ -28,5 +31,4 @@ AI 트렌드 알림 봇 - comment :주석 추가 및 수정 ### commit - - 별도의 규칙 없음 diff --git a/common/config/index.ts b/common/config/index.ts deleted file mode 100644 index f277a45..0000000 --- a/common/config/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import dotenv from "dotenv"; -import path from "node:path"; - -const commonRoot = path.resolve(__dirname, "../"); - -const envFound = dotenv.config({ path: `${commonRoot}/.env` }); -if (envFound.error) { - // This error should crash whole process - - throw new Error("⚠️ Couldn't find .env file ⚠️"); -} - -export default { - nodeEnv: (process.env.NODE_ENV as string) || ("development" as string), - /** - * Your favorite port - */ - mongoDbUri: process.env.MONGO_DB_URI as string, - mongoDbRealUri: process.env.MONGO_DB_REAL_URI as string, - /** - * spread sheets id - */ - spreadsheetsId: process.env.SPREADSHEET_DOC_ID as string, - /** - * google service key json - */ - googleServiceKey: process.env.GOOGLE_SERVICE_KEY as string, - /** - * google service email - */ - googleServiceEmail: process.env.GOOGLE_SERVICE_EMAIL as string, - /** - * kakaowork webhook url - */ - kakaoWorkWebHookUrl: process.env.KAWORK_WEBHOOK_URI as string, -}; diff --git a/common/loader/index.ts b/common/loader/index.ts deleted file mode 100644 index 68c074e..0000000 --- a/common/loader/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import mongoose from "mongoose"; -import config from "../config"; -import Message from "../model/Message"; -import Site from "../model/Site"; - -const connectDB = async () => { - try { - if (process.env.NODE_ENV === "real") { - await mongoose.connect(config.mongoDbRealUri); - } else { - await mongoose.connect(config.mongoDbUri); - } - - mongoose.set("autoCreate", true); - - console.log(`Mongoose Connected ...`); - - Site.createCollection().then(function (collection) { - console.log("Site Collection is created!"); - }); - Message.createCollection().then(function (collection) { - console.log("Message Collection is created!"); - }); - } catch (err: any) { - console.error(err.message); - process.exit(1); - } -}; - -export default connectDB; diff --git a/common/model/Message.ts b/common/model/Message.ts deleted file mode 100644 index cce37a0..0000000 --- a/common/model/Message.ts +++ /dev/null @@ -1,46 +0,0 @@ -import mongoose from "mongoose"; -import { MessageInfo } from "../types/model"; - -const MessageSchema = new mongoose.Schema( - { - type: { - type: String, - required: true, - }, - status: { - type: String, - required: true, - }, - messages: [ - { - name: { - type: String, - required: false, - }, - title: { - type: String, - required: false, - }, - url: { - type: String, - required: false, - }, - }, - ], - }, - { - timestamps: true, - versionKey: false, // __v(버전 필드) 생성 방지 - }, -); - -// timestamps 로 선언 시 생성되는 createdAt, updatedAt -MessageSchema.index( - { createdAt: 1 }, - { expireAfterSeconds: 60 * 60 * 24 * 180 }, -); // 180일 - -export default mongoose.model( - "Messages", - MessageSchema, -); diff --git a/common/model/Site.ts b/common/model/Site.ts deleted file mode 100644 index 7737591..0000000 --- a/common/model/Site.ts +++ /dev/null @@ -1,34 +0,0 @@ -import mongoose from "mongoose"; -import { SiteInfo } from "../types/model"; - -const SiteSchema = new mongoose.Schema( - { - name: { - type: String, - required: true, - }, - url: { - type: String, - required: true, - }, - keywords: { - type: [String], - required: false, - }, - verified: { - type: Boolean, - required: true, - default: false, - }, - requestedBy: { - type: String, - required: false, - }, - }, - { - timestamps: true, - versionKey: false, // __v(버전 필드) 생성 방지 - }, -); - -export default mongoose.model("Site", SiteSchema); diff --git a/common/package.json b/common/package.json deleted file mode 100644 index e15492d..0000000 --- a/common/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@ai-news-noti-bot/common", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc && tsc-alias" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "dotenv": "^16.4.5", - "mongoose": "^8.2.2" - }, - "devDependencies": { - "@types/node": "^20.11.28", - "tsc-alias": "^1.8.8" - } -} diff --git a/common/tsconfig.json b/common/tsconfig.json deleted file mode 100644 index ea12afd..0000000 --- a/common/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "./dist", - "baseUrl": "./", - "paths": { - "@ai-news-noti-bot/news-scraper/*": ["../lambdas/news-scraper/src/*"], - "@ai-news-noti-bot/register-site-api/*": ["../lambdas/register-site-api/src/*"], - } - }, - "include": [ - "./**/*" - ], - "exclude": [ - "node_modules", // build 시 제외 - "tests" - ] -} diff --git a/common/types/model/MessageInfo.ts b/common/types/model/MessageInfo.ts deleted file mode 100644 index 5261272..0000000 --- a/common/types/model/MessageInfo.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Messages } from "./Messages"; - -export interface MessageInfo { - type: string; - messages: Messages[]; -} diff --git a/common/types/model/Messages.ts b/common/types/model/Messages.ts deleted file mode 100644 index 569e12a..0000000 --- a/common/types/model/Messages.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Messages { - name: string; - title: string; - url: string; -} diff --git a/common/types/model/SiteInfo.ts b/common/types/model/SiteInfo.ts deleted file mode 100644 index 9076037..0000000 --- a/common/types/model/SiteInfo.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface SiteInfo { - name: string; - url: string; - keywords: string[]; - verified?: boolean; - requestedBy?: string; -} diff --git a/common/types/model/index.ts b/common/types/model/index.ts deleted file mode 100644 index ad00d4e..0000000 --- a/common/types/model/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { MessageInfo } from "./MessageInfo"; -import { Messages } from "./Messages"; -import { SiteInfo } from "./SiteInfo"; - -export { MessageInfo, Messages, SiteInfo }; diff --git a/lambdas/news-scraper/package.json b/lambdas/news-scraper/package.json deleted file mode 100644 index 9093e29..0000000 --- a/lambdas/news-scraper/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@ai-news-noti-bot/news-scraper", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc && tsc-alias", - "update-lambda": "sh scripts/updateLambda.sh", - "invoke-lambda": "sh scripts/invokeLambda.sh", - "local": "ts-node src/local.ts" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@types/aws-lambda": "^8.10.136", - "@types/node": "^20.11.28", - "google-auth-library": "^9.7.0", - "google-spreadsheet": "^4.1.1", - "nodemon": "^3.1.0", - "ts-node": "^10.9.2", - "tsc-alias": "^1.8.8" - }, - "dependencies": { - "@ai-news-noti-bot/common": "workspace:^", - "@sparticuz/chromium": "^127.0.0", - "mongoose": "^8.2.2", - "puppeteer": "23.1.1" - } -} diff --git a/lambdas/news-scraper/samconfig.toml b/lambdas/news-scraper/samconfig.toml deleted file mode 100644 index 18ce039..0000000 --- a/lambdas/news-scraper/samconfig.toml +++ /dev/null @@ -1,8 +0,0 @@ -version = 0.1 -[develop.deploy.parameters] -stack_name = "news-scraper" -resolve_s3 = true -s3_prefix = "news-scraper" -region = "ap-northeast-2" -capabilities = "CAPABILITY_IAM" -image_repositories = ["NewsScraperDevelop=339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-noti-bot-develop"] diff --git a/lambdas/news-scraper/scripts/invokeLambda.sh b/lambdas/news-scraper/scripts/invokeLambda.sh deleted file mode 100644 index 2905da2..0000000 --- a/lambdas/news-scraper/scripts/invokeLambda.sh +++ /dev/null @@ -1,12 +0,0 @@ -# 자동배포 구성 전 테스트용 스크립트 -# npm script를 통한 실행을 기준으로 작성 - -# 람다 실행 -# 실행 전 인증관련 환경변수 설정 필요 (https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-envvars.html) - -aws lambda invoke \ - --function-name aws-news-noti-bot-test \ - --log-type Tail \ - --query 'LogResult' \ - --output json \ - --payload '{}' /dev/stdout | awk -F '"' '{print $2}' | base64 --decode diff --git a/lambdas/news-scraper/scripts/updateLambda.sh b/lambdas/news-scraper/scripts/updateLambda.sh deleted file mode 100644 index da8fba9..0000000 --- a/lambdas/news-scraper/scripts/updateLambda.sh +++ /dev/null @@ -1,23 +0,0 @@ -# 자동배포 구성 전 테스트용 스크립트 -# npm script를 통한 실행을 기준으로 작성 - -# zip파일 생성 -pnpm run build \ -&& cp ../../pnpm-workspace.yaml ./dist \ -&& cp ./package.json ./dist/lambdas/news-scraper \ -&& cp ../../common/package.json ./dist/common \ -&& cd ./dist \ -&& pnpm install - -cp ../../../common/.env ./common/.env - -echo "const handler = require('./lambdas/news-scraper/src/index.js');" > index.js -echo "module.exports = handler;" >> index.js - -zip -r ./ai-news-noti-bot.zip ./ - -# AWS Lambda에 배포 -# 실행 전 인증관련 환경변수 설정 필요 (https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-configure-envvars.html) -aws lambda update-function-code \ - --function-name aws-news-noti-bot-test \ - --zip-file fileb://ai-news-noti-bot.zip diff --git a/lambdas/news-scraper/src/.DS_Store b/lambdas/news-scraper/src/.DS_Store deleted file mode 100644 index eec5cf4d063da97e7aa18314f3af8eaf34500542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5T0$L7JKPI#ABX7>>I?Io;()s+8?Wsm|#`#mM8EXM9`bB;6=s9@|&Ht zWRnz6ipUJ?e(CH?=F1nd(2eU{jEDpe;wCZ!9568ia zC^Kk^XsEwI3s!(`@IEFq^EqtafkP#t!sGQ>w5UaSTvkN+eD+WbPkcqUl!Md4=hD6R zS1UYrpM*y#-+v?25aHL4xW3xYD1e^L*69lBtO}?Cs=!hK-XB5?#>inIXtxeb_6PtB z;I@Wq+slC=JAjeHLJ%I9kyN0h8h6Ank`909;v$EIprn(rm2n?e*|-ymvDM)ZZ8(`o zP-j&@74Q{k%g-M7|KaNMzn`SPQ~_1sUnyXMcoYxtNUpcm9*%o$h;fX;#&Lz9O~K^a hvAy6{yn|s4Yaw3%BZq|`JTUzuU}exr75G&JJ^`Kfo>~9^ diff --git a/lambdas/news-scraper/src/extractor/Extractor.ts b/lambdas/news-scraper/src/extractor/Extractor.ts deleted file mode 100644 index 022b039..0000000 --- a/lambdas/news-scraper/src/extractor/Extractor.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { SendMessageDto } from "../types/interface/SendMessageDto"; - -export default interface Extractor { - extractToMessage(): Promise; -} diff --git a/lambdas/news-scraper/src/extractor/implementation/AiTimesExtractor.ts b/lambdas/news-scraper/src/extractor/implementation/AiTimesExtractor.ts deleted file mode 100644 index a70d1c6..0000000 --- a/lambdas/news-scraper/src/extractor/implementation/AiTimesExtractor.ts +++ /dev/null @@ -1,93 +0,0 @@ -import Extractor from "../Extractor"; -import PuppeteerManager from "../../types/class/PuppeteerManager"; -import { ElementHandle } from "puppeteer"; -import { SiteData } from "../../types/interface/SiteData"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model"; -import { SendMessageDto } from "../../types/interface/SendMessageDto"; - -export default class AiTimesExtractor implements Extractor { - private puppeteerManager: PuppeteerManager; - private site: SiteInfo; - - constructor(site: SiteInfo) { - this.puppeteerManager = new PuppeteerManager(); - this.site = site; - } - - private async processLink( - link: ElementHandle, - ): Promise { - let titleName; - let detailUrl; - try { - titleName = await link.$eval("a > span", (el) => el.textContent); - } catch (e) { - console.error( - `${this.site.name} : titleName을 가져오는데 실패했습니다. error = ${e}`, - ); - throw e; - } - - try { - const aiTimesLink = await link.$eval("a", (el) => el.getAttribute("href")); - detailUrl = `https://www.aitimes.com${aiTimesLink}` - } catch (e) { - console.error( - `${this.site.name} : detailUrl을 가져오는데 실패했습니다. error = ${e}`, - ); - throw e; - } - - if (String(titleName).trim() !== "" && detailUrl) { - return { - title: titleName, - url: detailUrl, - }; - } - - return null; - } - - private async extract(): Promise { - const page = this.puppeteerManager.getPage(); - - await page.goto(this.site.url, { - waitUntil: "networkidle2", - }); - - const selector = `aside.side div.auto-article > div.item`; - const links = await page.$$(selector); - return Promise.all( - links.map((link) => this.processLink(link)) - ).then((results) => - results.filter((siteData): siteData is SiteData => siteData !== null) - ); - } - - async extractToMessage(): Promise { - await this.puppeteerManager.initialize(); - - let extractedSiteData; - try { - extractedSiteData = await this.extract(); - } catch (e) { - console.error( - `${this.site.name} : extract에서 에러가 발생했습니다. error = ${e}`, - ); - throw e; - } - - const filteredSiteData = extractedSiteData.filter((siteData) => - this.site.keywords.some((keyword) => siteData.title?.includes(keyword)), - ); - - await this.puppeteerManager.close(); - - console.log(`${this.site.name} : 데이터 추출 성공`); - console.log(filteredSiteData); - return { - siteName: this.site.name, - siteDataArray: filteredSiteData, - }; - } -} diff --git a/lambdas/news-scraper/src/extractor/implementation/DevoceanExtractor.ts b/lambdas/news-scraper/src/extractor/implementation/DevoceanExtractor.ts deleted file mode 100644 index b9288ac..0000000 --- a/lambdas/news-scraper/src/extractor/implementation/DevoceanExtractor.ts +++ /dev/null @@ -1,75 +0,0 @@ -import Extractor from "../Extractor"; -import PuppeteerManager from "../../types/class/PuppeteerManager"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model"; -import { SiteData } from "../../types/interface/SiteData"; -import { SendMessageDto } from "../../types/interface/SendMessageDto"; - -export default class DevoceanExtractor implements Extractor { - private puppeteerManager: PuppeteerManager; - private site: SiteInfo; - - constructor(site: SiteInfo) { - this.puppeteerManager = new PuppeteerManager(); - this.site = site; - } - - private async extract(): Promise { - const page = this.puppeteerManager.getPage(); - - await page.goto(this.site.url, { - waitUntil: "networkidle2", - }); - - const clickSelector = `div.sec-area > ul.sec-area-list01 > li:first-child > div a > h3.pc_view`; - await page.click(clickSelector); - await page.waitForNavigation(); - - return await page.evaluate((keywords) => { - const spanElements = Array.from(document.querySelectorAll("a > span")); // 모든 태그 밑의 태그를 선택합니다. - - return spanElements - .map((span): SiteData | null => { - const isKeywordIncluded = keywords.some((keyword: string) => - span.textContent?.trim().includes(keyword), - ); - if (!isKeywordIncluded) { - return null; - } - - const aTag = span.parentElement; - if (!aTag) { - return null; - } - - return { - url: aTag.getAttribute("href"), - title: span.innerHTML, - }; - }) - .filter((siteData): siteData is SiteData => siteData !== null); - }, this.site.keywords); - } - - async extractToMessage(): Promise { - await this.puppeteerManager.initialize(); - - let siteDataArray: SiteData[] = []; - try { - siteDataArray = await this.extract(); - } catch (e) { - console.error( - `${this.site.name} : extract에서 에러가 발생했습니다. error = ${e}`, - ); - throw e; - } - - await this.puppeteerManager.close(); - - console.log(`${this.site.name} : 데이터 추출 성공`); - console.log(siteDataArray); - return { - siteName: this.site.name, - siteDataArray, - }; - } -} diff --git a/lambdas/news-scraper/src/extractor/implementation/GeekNewsExtractor.ts b/lambdas/news-scraper/src/extractor/implementation/GeekNewsExtractor.ts deleted file mode 100644 index e16ab3b..0000000 --- a/lambdas/news-scraper/src/extractor/implementation/GeekNewsExtractor.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { SiteData } from "../../types/interface/SiteData"; -import Extractor from "../Extractor"; -import PuppeteerManager from "../../types/class/PuppeteerManager"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model"; -import { ElementHandle } from "puppeteer"; -import { SendMessageDto } from "../../types/interface/SendMessageDto"; - -export default class GeekNewsExtractor implements Extractor { - private puppeteerManager: PuppeteerManager; - private site: SiteInfo; - - constructor(site: SiteInfo) { - this.puppeteerManager = new PuppeteerManager(); - this.site = site; - } - - private async processLink( - link: ElementHandle, - ): Promise { - let titleName; - try { - titleName = await link.$eval( - "div.topictitle > a > h1", - (el) => el.textContent, - ); - } catch (e) { - console.error( - `${this.site.name} : titleName을 가져오는데 실패했습니다. error = ${e}`, - ); - throw e; - } - - let detailUrl = ""; - try { - // 'div.topicdesc > a' 선택자가 존재하는지 확인 - const hasDetailUrl = await link.$("div.topicdesc > a"); - if (hasDetailUrl) { - const geekNewsDetailUrl = await link.$eval( - "div.topicdesc > a", - (el) => el.getAttribute("href") ?? "", - ); - detailUrl = `https://news.hada.io/${geekNewsDetailUrl}`; - } else { - detailUrl = await link.$eval( - "div.topictitle > a", - (el) => el.getAttribute("href") ?? "", - ); - } - } catch (e) { - console.error( - `${this.site.name} : detailUrl을 가져오는데 실패했습니다. error = ${e}`, - ); - throw e; - } - - return { - title: titleName, - url: detailUrl, - }; - } - - private async extract(): Promise { - const page = this.puppeteerManager.getPage(); - - await page.goto(this.site.url, { - waitUntil: "networkidle2", - }); - - const selector = `body > main > article > div.topics > div.topic_row`; - const links = await page.$$(selector); - return Promise.all(links.map((link) => this.processLink(link))); - } - - async extractToMessage(): Promise { - console.log("geeknews extractToMessage before initialize"); - await this.puppeteerManager.initialize(); - - console.log("geeknews extractToMessage after initialize"); - let filteredSiteDataArray: SiteData[] = []; - try { - filteredSiteDataArray = (await this.extract()).filter((siteData) => { - return this.site.keywords.some((keyword) => - siteData.title?.includes(keyword), - ); - }); - console.log("filtered site data array", filteredSiteDataArray); - } catch (e) { - console.error( - `${this.site.name} : extract에서 에러가 발생했습니다. error = ${e}`, - ); - throw e; - } - - console.log("geeknews extractToMessage before close"); - await this.puppeteerManager.close(); - console.log("geeknews extractToMessage after close"); - - console.log(`${this.site.name} : 데이터 추출 성공`); - console.log(filteredSiteDataArray); - return { - siteName: this.site.name, - siteDataArray: filteredSiteDataArray, - }; - } -} diff --git a/lambdas/news-scraper/src/extractor/implementation/SamsungSdsExtractor.ts b/lambdas/news-scraper/src/extractor/implementation/SamsungSdsExtractor.ts deleted file mode 100644 index 8054700..0000000 --- a/lambdas/news-scraper/src/extractor/implementation/SamsungSdsExtractor.ts +++ /dev/null @@ -1,72 +0,0 @@ -import PuppeteerManager from "../../types/class/PuppeteerManager"; -import Extractor from "../Extractor"; -import { SiteData } from "../../types/interface/SiteData"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model"; -import { SendMessageDto } from "../../types/interface/SendMessageDto"; -import Site from "@ai-news-noti-bot/common/model/Site"; - -export default class SamsungSdsExtractor implements Extractor { - private puppeteerManager: PuppeteerManager; - private site: SiteInfo; - - constructor(site: SiteInfo) { - this.puppeteerManager = new PuppeteerManager(); - this.site = site; - } - - private async extract(): Promise { - const page = this.puppeteerManager.getPage(); - - await page.goto(this.site.url, { - waitUntil: "networkidle2", - }); - - return await page.evaluate((keywords) => { - const elements = Array.from( - document.querySelectorAll(".cont_list .item strong.md_tit"), - ); - return elements - .map((element): SiteData | null => { - const aTag = element.querySelector("a"); - if (!aTag) { - return null; - } - - const isKeywordIncluded = keywords.some((keyword: string) => - aTag.textContent?.trim().includes(keyword), - ); - if (!isKeywordIncluded) { - return null; - } - - return { - title: aTag.textContent!.trim(), - url: `https://www.samsungsds.com${aTag.getAttribute("href")}`, - }; - }) - .filter((siteData): siteData is SiteData => siteData !== null); - }, this.site.keywords); - } - - async extractToMessage(): Promise { - await this.puppeteerManager.initialize(); - - let siteDataArray: SiteData[] = []; - try { - siteDataArray = await this.extract(); - } catch (e) { - console.error( - `${this.site.name} : extract에서 에러가 발생했습니다. error = ${e}`, - ); - throw e; - } - await this.puppeteerManager.close(); - - console.log(`${this.site.name} : 데이터 추출 성공`); - console.log(siteDataArray); - return { - siteName: this.site.name, - siteDataArray, - }; - } -} diff --git a/lambdas/news-scraper/src/factory/ExcractorFactory.ts b/lambdas/news-scraper/src/factory/ExcractorFactory.ts deleted file mode 100644 index eea0c1c..0000000 --- a/lambdas/news-scraper/src/factory/ExcractorFactory.ts +++ /dev/null @@ -1,24 +0,0 @@ -import AiTimesExtractor from "../extractor/implementation/AiTimesExtractor"; -import SamsungSdsExtractor from "../extractor/implementation/SamsungSdsExtractor"; -import DevoceanExtractor from "../extractor/implementation/DevoceanExtractor"; -import Extractor from "../extractor/Extractor"; -import GeekNewsExtractor from "../extractor/implementation/GeekNewsExtractor"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model"; - -export default class ExtractorFactory { - static createExtractor(site: SiteInfo): Extractor { - console.log(`${site.name} : 데이터 추출 시작`); - switch (site.name) { - case "긱뉴스": - return new GeekNewsExtractor(site); - case "AI 타임즈": - return new AiTimesExtractor(site); - case "삼성 SDS": - return new SamsungSdsExtractor(site); - case "데보션": - return new DevoceanExtractor(site); - default: - throw new Error(`지원하지 않는 사이트입니다. : ${site.name}`); - } - } -} diff --git a/lambdas/news-scraper/src/index.ts b/lambdas/news-scraper/src/index.ts deleted file mode 100644 index 96d237d..0000000 --- a/lambdas/news-scraper/src/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { EventBridgeHandler } from "aws-lambda"; -import connectDB from "@ai-news-noti-bot/common/loader"; -import { KakaoWorkService, TrendService } from "./service"; -import { - EventBridgeDetail, - EventBridgeDetailType, - LambdaResult, -} from "./types/aws/lambda"; - -export const handler: EventBridgeHandler< - EventBridgeDetailType, - EventBridgeDetail, - LambdaResult -> = async (event, context) => { - try { - // 데이터베이스 연결 - await connectDB(); - - // 데이터베이스 로드가 완료된 후 TrendService.getInfoFromSite 호출 - const messageData = await TrendService.getInfoFromSite(); - - if (messageData === undefined) { - console.error("크롤링을 통해 뉴스 메시지 생성 실패"); - return; - } - await KakaoWorkService.processMessages(messageData); - } catch (e) { - console.error(e); - } -}; diff --git a/lambdas/news-scraper/src/local.ts b/lambdas/news-scraper/src/local.ts deleted file mode 100644 index 1453d04..0000000 --- a/lambdas/news-scraper/src/local.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { handler } from "./index"; - -// @ts-ignore -handler().then(() => { - process.exit(0); -}); diff --git a/lambdas/news-scraper/src/service/KakaoWorkService.ts b/lambdas/news-scraper/src/service/KakaoWorkService.ts deleted file mode 100644 index bfa8098..0000000 --- a/lambdas/news-scraper/src/service/KakaoWorkService.ts +++ /dev/null @@ -1,129 +0,0 @@ -import Message from "@ai-news-noti-bot/common/model/Message"; -import KakaoworkMessageManager from "../types/class/KakaoworkMessageManager"; -import { Messages } from "@ai-news-noti-bot/common/types/model"; -import { BlockType } from "../types/interface/BlockType"; -import { SendMessageDto } from "../types/interface/SendMessageDto"; - -const buildKakaoworkMessagesAndMessageDtos = ( - existsNewsData: boolean, - messageData: SendMessageDto[], - blockManager: KakaoworkMessageManager, -) => { - const messageDto: Messages[] = []; - blockManager.appendDateHeaderBlock("blue"); - - if (!existsNewsData) { - const inlinesTextData: BlockType[] = []; - inlinesTextData.push( - blockManager.createTextBlock("오늘은 소식이 없어요! 😅", false), - ); - blockManager.appendTextBlockWithInlines(inlinesTextData); - blockManager.appendTextButtonBlock( - "사이트 추가하기", - "https://d1qbk7p5aewspc.cloudfront.net/index.html", - ); - return messageDto; - } - - // 카카오워크 메시지 생성 및 db 저장 dto 생성 - messageData - .filter((data) => data.siteDataArray.length !== 0) - .forEach((data) => { - const name = data.siteName; - const inlineTextData: BlockType[] = [ - blockManager.createTextBlock(`${data.siteName}\n\n`, true), - ...data.siteDataArray - .filter((item) => item.title !== null && item.url !== null) - .map((item, index, array) => { - const isLastItem = index === array.length - 1; - // 가독성을 위해 뉴스 타이틀 간 \n 추가 - const title = isLastItem ? `${item.title}\n` : `${item.title}\n\n`; - const url = item.url!; - messageDto.push({ name, title: item.title!, url }); - return blockManager.createLinkBlock(title, url); - }), - ]; - blockManager.appendSectionBlockWithInlines(inlineTextData); - blockManager.appendDividerBlock(); - }); - - blockManager.appendTextButtonBlock( - "사이트 추가하기", - "https://d1qbk7p5aewspc.cloudfront.net/index.html", - ); - - return messageDto; -}; - -const getUniqueMessageData = async (messageData: SendMessageDto[]) => { - const targetTitles: string[] = messageData.flatMap((data) => { - const validSiteDataArray = data.siteDataArray ?? []; - const filteredSiteDataArray = validSiteDataArray.filter( - (item): item is { title: string; url: string } => item.title != null, - ); - const titles = filteredSiteDataArray.map((item) => item.title); - return titles; - }); - - // db 에서 status 가 SEND_MESSAGE_SUCCESS 면서 현재 뉴스 타이틀과 일치하는 값들 조회 - const duplicateMessages = await Message.find({ - status: "SEND_MESSAGE_SUCCESS", - "messages.title": { $in: targetTitles }, - }); - - // 중복된 메시지 db 값 중의 제목을 추출 - const duplicateTitles = duplicateMessages.flatMap((doc) => - doc.messages.map((message) => message.title), - ); - - // targetTitles 중에서 duplicateTitles에 없는 제목만 필터링 - const uniqueTitles = targetTitles.filter( - (title) => !duplicateTitles.includes(title), - ); - - for (const data of messageData) { - data.siteDataArray = data.siteDataArray.filter((item) => { - return item.title != null && uniqueTitles.includes(item.title); - }); - } - return messageData; -}; - -const sendMessageAndSave = async ( - messageDto: Messages[], - blockManager: KakaoworkMessageManager, -) => { - try { - const statusCode = await blockManager.sendMessageBlocks(); - console.log(`Status Code: ${statusCode}`); - const status = - statusCode === 200 ? "SEND_MESSAGE_SUCCESS" : "SEND_MESSAGE_FAIL"; - const message = new Message({ - type: "KAKAOWORK", - status, - messages: messageDto, - }); - await message.save(); - } catch (error) { - console.error(error); - } -}; - -const processMessages = async (messageData: SendMessageDto[]) => { - const uniqueMessageData = await getUniqueMessageData(messageData); - - const newsCount = uniqueMessageData.filter( - (data) => data.siteDataArray.length !== 0, - ).length; - const existsNewsData = newsCount > 0; - - const blockManager = new KakaoworkMessageManager(); - const messageDto = buildKakaoworkMessagesAndMessageDtos( - existsNewsData, - uniqueMessageData, - blockManager, - ); - - await sendMessageAndSave(messageDto, blockManager); -}; -export default { processMessages }; diff --git a/lambdas/news-scraper/src/service/TrendService.ts b/lambdas/news-scraper/src/service/TrendService.ts deleted file mode 100644 index c3a6270..0000000 --- a/lambdas/news-scraper/src/service/TrendService.ts +++ /dev/null @@ -1,26 +0,0 @@ -import Site from "@ai-news-noti-bot/common/model/Site"; -import ExtractorFactory from "../factory/ExcractorFactory"; - -const getInfoFromSite = async () => { - const sites = await Site.find({ verified: true }); - console.log(`sites: ${sites}`); - - if (!sites || sites.length === 0) { - console.error("site 정보를 가져오는 것을 실패했습니다!"); - return; - } - - const result = []; - for await (const site of sites) { - try { - const message = await ExtractorFactory.createExtractor(site).extractToMessage(); - result.push(message); - } catch (error) { - console.error(`${site.name} : 데이터 추출 중 에러가 발생했습니다.`, error); - } - } - - return result; -}; - -export default { getInfoFromSite }; diff --git a/lambdas/news-scraper/src/service/index.ts b/lambdas/news-scraper/src/service/index.ts deleted file mode 100644 index b6a5252..0000000 --- a/lambdas/news-scraper/src/service/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import KakaoWorkService from "./KakaoWorkService"; -import TrendService from "./TrendService"; - -export { KakaoWorkService, TrendService }; diff --git a/lambdas/news-scraper/src/types/.DS_Store b/lambdas/news-scraper/src/types/.DS_Store deleted file mode 100644 index 415d1cf48a4f267df406c5545afd848081f876eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOHRWu5PdF1YGKnQOJAWk2vs;iSL~o^`A7+=C`c@Q8Mp=#61U+Hyzy97^8t3K zs%E6|bH+2y?Z@V zcE>1C;u;&Y*6-x2Ia<|uz9{PjtrGY0`u=&|_E`SmvA)}VLp;MV#yuYJgcTlf!#oPC zTJOi1-D?Z3sKD6w_Bq@fkG=?Or;>EMZWjg<>0lNP{)Tz`ru^4XAibTL1t6 diff --git a/lambdas/news-scraper/src/types/aws/lambda.ts b/lambdas/news-scraper/src/types/aws/lambda.ts deleted file mode 100644 index 45bd5f0..0000000 --- a/lambdas/news-scraper/src/types/aws/lambda.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * EventBridgeEvent 관련 타입 선언 - * 참고: https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events-structure.html - */ -// EventBridgeEvent의 'detail-type' 항목 타입 -export type EventBridgeDetailType = string; - -// EventBridgeEvent의 'detail' 항목 타입 -export type EventBridgeDetail = Record; - -// Lambda 반환 타입 -export type LambdaResult = any; diff --git a/lambdas/news-scraper/src/types/class/GoogleSheetsManager.ts b/lambdas/news-scraper/src/types/class/GoogleSheetsManager.ts deleted file mode 100644 index 133fe2a..0000000 --- a/lambdas/news-scraper/src/types/class/GoogleSheetsManager.ts +++ /dev/null @@ -1,63 +0,0 @@ -import config from "@ai-news-noti-bot/common/config"; -import { JWT } from "google-auth-library"; -import { - GoogleSpreadsheet, - GoogleSpreadsheetWorksheet, -} from "google-spreadsheet"; - -const googleServiceKey = JSON.parse(config.googleServiceKey); - -const serviceAccountAuth = new JWT({ - email: config.googleServiceEmail, - key: googleServiceKey.private_key, - scopes: ["https://www.googleapis.com/auth/spreadsheets"], -}); - -export default class GoogleSheetsManager { - private docs: GoogleSpreadsheet | null = null; - private sheets: GoogleSpreadsheetWorksheet | null = null; - - constructor() { - try { - this.docs = new GoogleSpreadsheet( - config.spreadsheetsId, - serviceAccountAuth, - ); - } catch (err) { - console.error("구글 연결 실패"); - } - } - - public async getDocs() { - if (!this.docs) { - throw new Error("docs is not initialized. Call initialize() first."); - } - return this.docs; - } - - public async getSheetsByIndex(index: number) { - if (!this.docs) { - throw new Error("docs is not initialized. Call initialize() first."); - } - await this.docs.loadInfo(); - this.sheets = this.docs.sheetsByIndex[index]; - if (!this.sheets) { - throw new Error(`Sheet at index ${index} not found.`); - } - return this.sheets; - } - - public async getRows() { - if (!this.docs) { - throw new Error("docs is not initialized. Call initialize() first."); - } - if (!this.sheets) { - throw new Error("sheets is not initialized. Call initialize() first."); - } - const rows = await this.sheets.getRows(); - if (!rows) { - throw new Error("가져오기 실패"); - } - return rows; - } -} diff --git a/lambdas/news-scraper/src/types/class/KakaoworkMessageManager.ts b/lambdas/news-scraper/src/types/class/KakaoworkMessageManager.ts deleted file mode 100644 index b0652e2..0000000 --- a/lambdas/news-scraper/src/types/class/KakaoworkMessageManager.ts +++ /dev/null @@ -1,121 +0,0 @@ -import config from "@ai-news-noti-bot/common/config"; -import { BlockType } from "../interface/BlockType"; - -const HTTP_METHOD_POST = "POST"; -const HTTP_CONTENT_TYPE = "application/json"; - -const getFormattedNowDate = () => { - const today = new Date(); - const year = today.getFullYear(); - const month = String(today.getMonth() + 1).padStart(2, "0"); - const day = String(today.getDate()).padStart(2, "0"); - - return `${year}-${month}-${day}`; -}; - -export default class KakaoworkMessageManager { - private blocks: BlockType[] = []; - private webhookUrl: string = config.kakaoWorkWebHookUrl; - private nowDate: string = ""; - - constructor() { - this.nowDate = getFormattedNowDate(); - } - - createMessagePayload() { - return { - text: `📢 ${this.nowDate} AI 소식`, - blocks: this.blocks, - }; - } - - async sendMessageBlocks() { - const data = JSON.stringify(this.createMessagePayload()); - if (process.env.PHASE !== "prod") { - console.log("Sending message..."); - return 200; - } - const response = await fetch(this.webhookUrl, { - method: HTTP_METHOD_POST, - headers: { - "Content-Type": HTTP_CONTENT_TYPE, - }, - body: data, - }); - return response.status; - } - - appendHeaderBlock(text: string, style: string) { - this.blocks.push({ - type: "header", - text: text, - style: style, - }); - } - - appendDateHeaderBlock(style: string) { - this.blocks.push({ - type: "header", - text: `📢 ${this.nowDate} AI 소식`, - style: style, - }); - } - - appendDividerBlock() { - this.blocks.push({ - type: "divider", - }); - } - - createLinkBlock(text: string, url: string) { - return { - type: "link", - text: text, - url: `${url}`, - }; - } - - createTextBlock(text: string, isBold: boolean) { - return { - type: "styled", - text: text, - bold: isBold, - }; - } - - appendTextButtonBlock( - buttonText: string, - openWebUrl: string, - style: string = "default", - ) { - this.blocks.push({ - type: "button", - text: buttonText, - style: style, - action: { - type: "open_system_browser", - name: "button1", - value: openWebUrl, - }, - }); - } - - appendTextBlockWithInlines(inlines: BlockType[]) { - this.blocks.push({ - type: "text", - text: "test sample", - inlines: [...inlines], - }); - } - - appendSectionBlockWithInlines(inlines: BlockType[]) { - this.blocks.push({ - type: "section", - content: { - type: "text", - text: "section text", - inlines: [...inlines], - }, - }); - } -} diff --git a/lambdas/news-scraper/src/types/class/PuppeteerManager.ts b/lambdas/news-scraper/src/types/class/PuppeteerManager.ts deleted file mode 100644 index 8c0d16b..0000000 --- a/lambdas/news-scraper/src/types/class/PuppeteerManager.ts +++ /dev/null @@ -1,66 +0,0 @@ -import chromium from "@sparticuz/chromium"; -import puppeteer, { Browser, Page } from "puppeteer"; - -export default class PuppeteerManager { - private browser: Browser | null = null; - private page: Page | null = null; - - public async initialize(): Promise { - console.log("initialize puppeteer"); - console.log("real"); - if (process.env.PHASE !== "prod") { - this.browser = await puppeteer.launch({ - executablePath: puppeteer.executablePath(), - args: [...puppeteer.defaultArgs(), "--no-sandbox"], - defaultViewport: chromium.defaultViewport, - headless: false, - }); - } else { - this.browser = await puppeteer.launch({ - args: chromium.args, - defaultViewport: chromium.defaultViewport, - executablePath: await chromium.executablePath(), - headless: !!chromium.headless, - }); - } - // if (config.nodeEnv === "real") { - // } else { - // console.log("dev"); - // this.browser = await puppeteer.launch({ - // args: [ - // "--no-sandbox", - // "--disable-setuid-sandbox", - // "--disable-dev-shm-usage", - // "--disable-gpu", - // ], - // headless: false, // 브라우저 창을 보이게 설정 - // executablePath: puppeteer.executablePath(), - // }); - // } - console.log("initialize puppeteer 2"); - this.page = await this.browser.newPage(); - console.log("initialize puppeteer 3"); - await this.page.setViewport({ - width: 1920, - height: 1080, - }); - console.log("initialize puppeteer 4"); - } - - public getPage(): Page { - if (!this.page) { - throw new Error("Page is not initialized. Call initialize() first."); - } - return this.page; - } - - public async close(): Promise { - if (this.browser) { - console.log("close puppeteer"); - await this.browser.close(); - console.log("close puppeteer 2"); - } - this.browser = null; - this.page = null; - } -} diff --git a/lambdas/news-scraper/src/types/interface/BlockType.ts b/lambdas/news-scraper/src/types/interface/BlockType.ts deleted file mode 100644 index 8c8afc6..0000000 --- a/lambdas/news-scraper/src/types/interface/BlockType.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { ButtonBlockType } from "./ButtonBlockType"; -import { SectionBlockType } from "./SectionBlockType"; - -export interface BlockType { - type: string; - content?: SectionBlockType; - text?: string; - style?: string; - url?: string; - bold?: boolean; - inlines?: BlockType[]; - action?: ButtonBlockType; -} diff --git a/lambdas/news-scraper/src/types/interface/ButtonBlockType.ts b/lambdas/news-scraper/src/types/interface/ButtonBlockType.ts deleted file mode 100644 index e33c7c2..0000000 --- a/lambdas/news-scraper/src/types/interface/ButtonBlockType.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ButtonBlockType { - type: string; - name: string; - value: string; -} diff --git a/lambdas/news-scraper/src/types/interface/SectionBlockType.ts b/lambdas/news-scraper/src/types/interface/SectionBlockType.ts deleted file mode 100644 index 85c7830..0000000 --- a/lambdas/news-scraper/src/types/interface/SectionBlockType.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { BlockType } from "./BlockType"; - -export interface SectionBlockType { - type: string; - text: string; - inlines?: BlockType[]; -} diff --git a/lambdas/news-scraper/src/types/interface/SendMessageDto.ts b/lambdas/news-scraper/src/types/interface/SendMessageDto.ts deleted file mode 100644 index 61b29b6..0000000 --- a/lambdas/news-scraper/src/types/interface/SendMessageDto.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { SiteData } from "./SiteData"; - -export interface SendMessageDto { - siteName: string; - siteDataArray: SiteData[]; -} diff --git a/lambdas/news-scraper/src/types/interface/SiteData.ts b/lambdas/news-scraper/src/types/interface/SiteData.ts deleted file mode 100644 index 20cb0de..0000000 --- a/lambdas/news-scraper/src/types/interface/SiteData.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface SiteData { - title: string | null; - url: string | null; -} diff --git a/lambdas/news-scraper/src/types/news/ClueitArchiveResponseItem.ts b/lambdas/news-scraper/src/types/news/ClueitArchiveResponseItem.ts deleted file mode 100644 index 34f0e0d..0000000 --- a/lambdas/news-scraper/src/types/news/ClueitArchiveResponseItem.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type ClueitArchiveResponseItem = { - title: string; - canonical_url: string; - [key: string]: string | unknown; // 필요없지만 다른 속성도 있음 -}; diff --git a/lambdas/news-scraper/template.yaml b/lambdas/news-scraper/template.yaml deleted file mode 100644 index af55ac7..0000000 --- a/lambdas/news-scraper/template.yaml +++ /dev/null @@ -1,36 +0,0 @@ -AWSTemplateFormatVersion: '2010-09-09' -Transform: AWS::Serverless-2016-10-31 -Description: > - lambda-test - - Sample SAM Template for lambda-test - -# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst -#Globals: -# Function: -# Timeout: 30 - -Resources: - NewsScraperDevelop: - Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction - Properties: - FunctionName: ai-news-noti-bot-dev - CodeUri: src/ - MemorySize: 1024 - Timeout: 180 - Architectures: - - x86_64 - Environment: - Variables: - ENV: development - PHASE: dev - PackageType: Image - Metadata: - DockerTag: latest - DockerContext: ../../ - Dockerfile: Dockerfile - -Outputs: - NewsScraperDevelop: - Description: "Lambda Function ARN" - Value: !GetAtt NewsScraperDevelop.Arn diff --git a/lambdas/news-scraper/tsconfig.json b/lambdas/news-scraper/tsconfig.json deleted file mode 100644 index 55938bb..0000000 --- a/lambdas/news-scraper/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./dist", - "baseUrl": "./", - "paths": { - "@ai-news-noti-bot/common/*": ["../../common/*"], - "@ai-news-noti-bot/register-site-api/*": ["../register-site-api/src/*"], - } - }, - "include": [ - "./src/**/*" - ], - "exclude": [ - "node_modules", // build 시 제외 - "tests" - ] -} diff --git a/lambdas/register-site-api/package.json b/lambdas/register-site-api/package.json deleted file mode 100644 index 1c4a9ff..0000000 --- a/lambdas/register-site-api/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "@ai-news-noti-bot/register-site-api", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc && tsc-alias" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@types/aws-lambda": "^8.10.136", - "@types/node": "^20.11.28", - "tsc-alias": "^1.8.8" - }, - "dependencies": { - "@ai-news-noti-bot/common": "workspace:^" - } -} diff --git a/lambdas/register-site-api/src/index.ts b/lambdas/register-site-api/src/index.ts deleted file mode 100644 index 85d72db..0000000 --- a/lambdas/register-site-api/src/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { APIGatewayProxyHandler } from "aws-lambda"; -import Site from "@ai-news-noti-bot/common/model/Site"; -import { SiteInfo } from "@ai-news-noti-bot/common/types/model/SiteInfo"; -import connectDB from "@ai-news-noti-bot/common/loader"; - -const errorResponse = { - statusCode: 302, - headers: { - Location: "https://d1qbk7p5aewspc.cloudfront.net/error.html", - }, - body: "", -}; -const successResponse = { - statusCode: 302, - headers: { - Location: "https://d1qbk7p5aewspc.cloudfront.net/success.html", - }, - body: "", -}; - -export const handler: APIGatewayProxyHandler = async (event, context) => { - try { - const contentType = event.headers?.["content-type"]; - - if (contentType !== "application/x-www-form-urlencoded") { - return errorResponse; - } - if (!event.body) { - return errorResponse; - } - - await connectDB(); - - const formData = new URLSearchParams(event.body); - const siteInfo: SiteInfo = { - name: formData.get("name") ?? "", - url: formData.get("url") ?? "", - keywords: - formData.get("keywords") === "" - ? [] - : formData - .get("keywords") - ?.split(",") - ?.map((keyword) => keyword.trim()) ?? [], - requestedBy: formData.get("requestedBy") ?? "", - }; - - await Site.create(siteInfo); - - return successResponse; - } catch (e) { - return errorResponse; - } -}; diff --git a/lambdas/register-site-api/src/test.ts b/lambdas/register-site-api/src/test.ts deleted file mode 100644 index d8c14d1..0000000 --- a/lambdas/register-site-api/src/test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { handler } from "./index"; - -// @ts-ignore -handler({ - headers: { - "content-type": "application/x-www-form-urlencoded", - }, - body: "name=test&url=https%3A%2F%2Ftools.jongwoo.me&keywords=&requestBy=", -}); diff --git a/lambdas/register-site-api/tsconfig.json b/lambdas/register-site-api/tsconfig.json deleted file mode 100644 index b488e93..0000000 --- a/lambdas/register-site-api/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./dist", - "baseUrl": "./", - "paths": { - "@ai-news-noti-bot/common/*": ["../../common/*"], - "@ai-news-noti-bot/news-scraper/*": ["../news-scraper/src/*"], - } - }, - "include": [ - "./src/**/*" - ], - "exclude": [ - "node_modules", // build 시 제외 - "tests" - ] -} diff --git a/news-scraper-agent/.dockerignore b/news-scraper-agent/.dockerignore new file mode 100644 index 0000000..7b1e759 --- /dev/null +++ b/news-scraper-agent/.dockerignore @@ -0,0 +1,6 @@ +.aws-sam/ +.idea/ +news-scraper-agent.iml +.gitignore +Dockerfile +README.md diff --git a/news-scraper-agent/.gitignore b/news-scraper-agent/.gitignore new file mode 100644 index 0000000..d75f0ee --- /dev/null +++ b/news-scraper-agent/.gitignore @@ -0,0 +1,324 @@ +# Created by https://www.toptal.com/developers/gitignore/api/python,intellij,macos +# Edit at https://www.toptal.com/developers/gitignore?templates=python,intellij,macos + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +# Azure Toolkit for IntelliJ plugin +# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij +.idea/**/azureSettings.xml + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### macOS Patch ### +# iCloud generated files +*.icloud + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +### Python Patch ### +# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration +poetry.toml + +# ruff +.ruff_cache/ + +# LSP config files +pyrightconfig.json + +# End of https://www.toptal.com/developers/gitignore/api/python,intellij,macos + +news-scraper-agent.iml diff --git a/news-scraper-agent/Dockerfile b/news-scraper-agent/Dockerfile new file mode 100644 index 0000000..64be0e9 --- /dev/null +++ b/news-scraper-agent/Dockerfile @@ -0,0 +1,11 @@ +FROM public.ecr.aws/lambda/python:3.12 + +# Copy all files to container +COPY . ${LAMBDA_TASK_ROOT} + +WORKDIR ${LAMBDA_TASK_ROOT} + +# Replace profile in .env and install poetry +RUN python3.12 -m pip install -r requirements.txt + +CMD [ "main.lambda_handler" ] diff --git a/news-scraper-agent/README.md b/news-scraper-agent/README.md new file mode 100644 index 0000000..83405b8 --- /dev/null +++ b/news-scraper-agent/README.md @@ -0,0 +1,41 @@ +# news-scraper-agent +- python, lanchain 을 이용하여 뉴스 사이트를 크롤링 하고, 키워드에 맞는 기사제목과 링크를 추출하는 agent 구성 + +## required +- python 3.12.2 + +## 실행 방법 +```shell +poetry shell +poetry install +python {파일명}.py +``` + +## 배포 방법 +```shell +# 로컬에서 실행 방법 +sam local invoke + +# 빌드 후 배포 +sam build +sam deploy +``` + +## memo +- 현재는 langsmith 로 연결해두었는데 .. 만약에 이게 사내망에서 서비스 하는 걸로 변경된다면 langfuse 써보기! +- 의존성 내보내기 + - -f, --format: 내보낼 파일의 형식을 지정합니다. 현재는 requirements.txt 형식만 지원합니다. + - --output, -o: 내보낸 의존성 목록을 저장할 파일의 경로를 지정합니다. 지정하지 않으면 표준 출력으로 결과가 나타납니다. + - --without-hashes: 이 옵션을 사용하면, 의존성 목록에서 해시값을 제외할 수 있습니다. 일부 환경이나 도구에서는 해시값이 문제를 일으킬 수 있기 때문에 유용할 수 있습니다. + - --dev: 이 옵션을 사용하면, 개발용 의존성도 포함하여 내보냅니다. + - --with, --without: 특정 의존성 그룹을 포함하거나 제외할 때 사용합니다. +```shell +poetry export -f requirements.txt --output requirements.txt +``` +- 프로젝트 빌드 및 배포 + - 이 명령어는 wheel과 source archive를 생성 + - PyPI에 배포하려면 먼저 PyPI 계정이 있어야 하며, 다음과 같이 배포 가능 +```shell +poetry build +poetry publish +``` diff --git a/news-scraper-agent/agents/__init__.py b/news-scraper-agent/agents/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/agents/crawling_agent.py b/news-scraper-agent/agents/crawling_agent.py new file mode 100644 index 0000000..de541fb --- /dev/null +++ b/news-scraper-agent/agents/crawling_agent.py @@ -0,0 +1,56 @@ +from langchain.prompts import PromptTemplate +from langchain_core.language_models import BaseLanguageModel + +from config.log import NewsScraperAgentLogger +from config.prompt_config import DefaultPromptTemplate +from decorations.log_time import log_time_agent_method +from graph.state import ( + SiteState, + AgentResponse, +) +from models.site import SiteDto + + +class CrawlingAgent: + crawling_prompt = ( + DefaultPromptTemplate.CRAWLING_AGENT_PROMPT_EN + or DefaultPromptTemplate.CRAWLING_AGENT_PROMPT_KO + ) + + def __init__(self, llm: BaseLanguageModel, site: SiteDto, prompt: str = None): + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + self.prompt = PromptTemplate.from_template( + prompt if prompt else self.crawling_prompt + ) + self.site = site + self.llm = llm + + @log_time_agent_method + def __call__(self, state: SiteState) -> SiteState: + if ( + state.parser_result[self.site.name] is None + or len(state.parser_result[self.site.name]) == 0 + ): + self.logger.warning(f"No data to crawl for {self.site.name}") + state.crawling_result[self.site.name] = [] + return state + + try: + formatted_prompt = self.crawling_prompt.format( + site_name=self.site.name, + site_url=self.site.url, + parser_result=state.parser_result[self.site.name], + ) + + llm_with_structured_output = self.llm.with_structured_output(AgentResponse) + response: AgentResponse = llm_with_structured_output.invoke( + formatted_prompt + ) + + state.crawling_result[self.site.name] = response.items + except Exception as e: + self.logger.error(f"Error occurred while crawling {self.site.name}: {e}") + state.crawling_result[self.site.name] = [] + + state.print_state(crawling_result=True) + return state diff --git a/news-scraper-agent/agents/filtering_agent.py b/news-scraper-agent/agents/filtering_agent.py new file mode 100644 index 0000000..6f44f0a --- /dev/null +++ b/news-scraper-agent/agents/filtering_agent.py @@ -0,0 +1,51 @@ +from langchain.prompts import PromptTemplate +from langchain_core.language_models import BaseLanguageModel + +from config.log import NewsScraperAgentLogger +from config.prompt_config import DefaultPromptTemplate +from decorations.log_time import log_time_agent_method +from graph.state import SiteState, AgentResponse +from models.site import SiteDto + + +class FilteringAgent: + filtering_prompt = ( + DefaultPromptTemplate.FILTERING_AGENT_PROMPT_EN + or DefaultPromptTemplate.FILTERING_AGENT_PROMPT_KO + ) + + def __init__(self, llm: BaseLanguageModel, site: SiteDto, prompt: str = None): + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + self.site = site + self.prompt = PromptTemplate.from_template( + prompt if prompt else self.filtering_prompt + ) + self.llm = llm + + @log_time_agent_method + def __call__(self, state: SiteState) -> SiteState: + if ( + not state.crawling_result[self.site.name] + or len(state.crawling_result[self.site.name]) == 0 + ): + self.logger.warning(f"No data to filter for {self.site.name}") + state.filtering_result[self.site.name] = [] + return state + + try: + formatted_prompt = self.prompt.format( + crawling_result=state.crawling_result[self.site.name] + ) + + llm_with_structured_output = self.llm.with_structured_output(AgentResponse) + response: AgentResponse = llm_with_structured_output.invoke( + formatted_prompt + ) + + state.filtering_result[self.site.name] = response.items + except Exception as e: + self.logger.error(f"Error occurred while filtering {self.site.name}: {e}") + state.filtering_result[self.site.name] = [] + + state.print_state(filtering_result=True) + return state diff --git a/news-scraper-agent/agents/html_parser_agent.py b/news-scraper-agent/agents/html_parser_agent.py new file mode 100644 index 0000000..681334d --- /dev/null +++ b/news-scraper-agent/agents/html_parser_agent.py @@ -0,0 +1,101 @@ +import json +import re +from typing import TypedDict, Literal, NotRequired + +from config.env_config import env +from config.log import NewsScraperAgentLogger +from decorations.log_time import log_time_agent_method +from external.aws_lambda.client import LambdaInvoker +from graph.state import SiteState +from models.site import SiteDto + + +class ParsingLambdaRequestBody(TypedDict): + url: str + content_type: Literal["html"] | Literal["json"] + selector: NotRequired[str] + + +class HtmlParserAgent: + def __init__(self, site: SiteDto): + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + self.site = site + self.lambda_invoker = LambdaInvoker() + self.function_name = f"scraper-lambda-{env.PROFILE}" + if env.PROFILE == "local": + self.function_name = "scraper-lambda-dev" + + @log_time_agent_method + def __call__(self, state: SiteState = None) -> SiteState: + request_body = json.dumps(self.__create_payload()) + try: + response = self.lambda_invoker.invoke( + FunctionName=self.function_name, + InvocationType="RequestResponse", + Payload=request_body, + logging_name=f"scraper-lambda for {self.site.name}", + ) + + response_data: list[str] = response["result"] + + if self.site.name == "데보션": + response_data = self.__parse_devocean_detail(response_data) + + state.parser_result[self.site.name] = response_data + except Exception as e: + self.logger.error(f"Error occurred while parsing {self.site.name}: {e}") + state.parser_result[self.site.name] = [] + return state + + def __create_payload(self) -> ParsingLambdaRequestBody: + match url := self.site.url: + case url if "news.hada.io" in url: + return { + "url": url, + "content_type": "html", + "selector": "body > main > article > div.topics > div.topic_row", + } + case url if "aitimes.com" in url: + return { + "url": url, + "content_type": "html", + "selector": ".header-line", + } + case url if "devocean.sk.com" in url: + return { + "url": url, + "content_type": "html", + "selector": "div.sec-area > ul.sec-area-list01 > li:first-child > div a > h3.pc_view", + } + case _: + self.logger.error(f"정의되지 않은 페이지 (url: ${url})") + raise ValueError("정의되지 않은 페이지 입니다.") + + def __parse_devocean_detail(self, result: list[str]): + title_html = result[0] + pattern = r"onclick=\"goDetail\(this,'(\d+)',event\)" + + matched = re.search(pattern, title_html) + if not matched: + raise ValueError(f"{self.site.name} 파싱 실패") + + detail_page = ( + f"https://devocean.sk.com/blog/techBoardDetail.do?ID={matched.group(1)}" + ) + + body = json.dumps( + { + "url": detail_page, + "content_type": "html", + "selector": ".toastui-editor-contents", + } + ) + + response = self.lambda_invoker.invoke( + FunctionName=self.function_name, + InvocationType="RequestResponse", + Payload=body, + logging_name=f"scraper-lambda for devocean detail", + ) + + return response["result"] diff --git a/news-scraper-agent/agents/message_agent.py b/news-scraper-agent/agents/message_agent.py new file mode 100644 index 0000000..e370200 --- /dev/null +++ b/news-scraper-agent/agents/message_agent.py @@ -0,0 +1,97 @@ +from config.env_config import env +from config.log import ConsoleDataType, NewsScraperAgentLogger +from decorations.log_time import log_time_agent_method +from external.kakaowork.client import KakaoworkClient +from external.kakaowork.message_builder import KakaoworkMessageBuilder +from graph.state import State, CrawlingResult, PageCrawlingData +from models.message import Message +from models.message import MessageContent, MessageContentDto +from rich.table import Table +from service.message_service import get_messages + +MESSAGE_TYPE = "KAKAOWORK" +SEND_MESSAGE_SUCCESS = "SEND_MESSAGE_SUCCESS" +SEND_MESSAGE_FAIL = "SEND_MESSAGE_FAIL" + + +class MessageAgent: + def __init__(self): + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + + @log_time_agent_method + def __call__(self, state: State) -> None: + parallel_result = state.parallel_result.copy() + + # 1. db 조회를 위해 list[PageCrawlingData]로 변환 + flatten_parallel_result = [ + page_crawling_data + for page_crawling_data_list in parallel_result.values() + for page_crawling_data in page_crawling_data_list + ] + + # 2. title만 뽑아서 db 전체 조회해서 이미 보낸 뉴스가 있는지 확인 + target_titles: set[str] = { + item.title for item in flatten_parallel_result if item.title is not None + } + messages = get_messages(list(target_titles)) + + # 3. db에서 가져온 messages 중 messages 필드의 title만 추출 + duplicate_message_titles: set[str] = { + message.title + for doc in messages + for message in doc.messages + if message.title + } + + # 4. 중복된 title 제거하여 unique한 뉴스 제목만 추출 + unique_news_titles = target_titles - duplicate_message_titles + + # 5. 원본 딕셔너리(parallel_result)에서 중복된 value 제거한 새로운 딕셔너리 생성 + unique_parallel_result: CrawlingResult = { + site_name: [ + PageCrawlingData(title=item.title, url=item.url) + for item in site_data + if item.title in unique_news_titles + ] + for site_name, site_data in parallel_result.items() + } + + if env.ENABLE_MESSAGE_AGENT_LOG: + self.logger.console_print( + ConsoleDataType.TABLE, + self._get_parallel_result_table(unique_parallel_result), + ) + + # 6. unique_parallel_result를 카카오워크 메세지로 생성 + request = KakaoworkMessageBuilder().build(unique_parallel_result) + status_code = KakaoworkClient(env.PROFILE).send_message(request) + status = SEND_MESSAGE_SUCCESS if status_code == 200 else SEND_MESSAGE_FAIL + + # 7. 성공/실패 여부를 db에 기록 + message_dto_list = [ + MessageContentDto(name=site_name, title=data.title, url=data.url) + for site_name, page_crawling_data in unique_parallel_result.items() + for data in page_crawling_data + ] + message_contents = [ + MessageContent(**dto.model_dump()) for dto in message_dto_list + ] + message = Message( + type=MESSAGE_TYPE, + status=status, + messages=message_contents, + ) + message.save() + + def _get_parallel_result_table(self, result: CrawlingResult) -> Table: + table = Table(title="unique_parallel_result", title_justify="left") + table.add_column("idx", no_wrap=True) + table.add_column("site_name", style="cyan", no_wrap=True) + table.add_column("url", overflow="fold") + table.add_column("title", style="magenta", overflow="fold") + for idx_1, (site_name, page_crawling_data) in enumerate( + result.items(), start=1 + ): + for idx_2, item in enumerate(page_crawling_data, start=1): + table.add_row(str(idx_1 + idx_2 - 1), site_name, item.url, item.title) + return table diff --git a/news-scraper-agent/agents/sorting_agent.py b/news-scraper-agent/agents/sorting_agent.py new file mode 100644 index 0000000..acaff2c --- /dev/null +++ b/news-scraper-agent/agents/sorting_agent.py @@ -0,0 +1,57 @@ +from langchain.prompts import PromptTemplate +from langchain_core.language_models import BaseLanguageModel + +from config.log import NewsScraperAgentLogger +from config.prompt_config import DefaultPromptTemplate +from decorations.log_time import log_time_agent_method +from graph.state import SiteState, SortAgentResponse, SortedFilteringData +from models.site import SiteDto + + +class SortingAgent: + sorting_prompt = ( + DefaultPromptTemplate.SORTING_AGENT_PROMPT_EN + or DefaultPromptTemplate.SORTING_AGENT_PROMPT_KO + ) + + def __init__(self, llm: BaseLanguageModel, site: SiteDto, prompt: str = None): + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + self.site = site + self.prompt = PromptTemplate.from_template( + prompt if prompt else self.sorting_prompt + ) + self.llm = llm + + @log_time_agent_method + def __call__(self, state: SiteState) -> SiteState: + if ( + not state.filtering_result[self.site.name] + or len(state.filtering_result[self.site.name]) == 0 + ): + self.logger.warning(f"No data to sort for {self.site.name}") + state.sorted_result[self.site.name] = [] + return state + + try: + formatted_prompt = self.prompt.format( + filtering_result=state.filtering_result[self.site.name] + ) + + llm_with_structured_output = self.llm.with_structured_output( + SortAgentResponse + ) + response: SortAgentResponse = llm_with_structured_output.invoke( + formatted_prompt + ) + + state.sorted_result[self.site.name] = response.items + except Exception as e: + self.logger.error(f"Error occurred while sorting {self.site.name}: {e}") + self.logger.warning(f"Skip sorting {self.site.name}") + state.sorted_result[self.site.name] = [ + SortedFilteringData(url=result.url, title=result.title, reason="") + for result in state.filtering_result[self.site.name] + ] + + state.print_state(sorted_result=True) + return state diff --git a/news-scraper-agent/config/__init__.py b/news-scraper-agent/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/config/env_config.py b/news-scraper-agent/config/env_config.py new file mode 100644 index 0000000..141f81b --- /dev/null +++ b/news-scraper-agent/config/env_config.py @@ -0,0 +1,43 @@ +from typing import Optional + +from dotenv import load_dotenv +from pydantic_settings import BaseSettings, SettingsConfigDict + + +load_dotenv() + + +class Environment(BaseSettings): + # app + PROFILE: str + + # db + MONGO_DB_LOCAL_URI: str + MONGO_DB_DEV_URI: str + MONGO_DB_REAL_URI: str + + # kakaoworks + KAWORK_WEBHOOK_LOCAL_URI: str + KAWORK_WEBHOOK_DEV_URI: str + KAWORK_WEBHOOK_REAL_URI: str + + # langsmith + LANGCHAIN_ENDPOINT: Optional[str] = None + LANGCHAIN_API_KEY: Optional[str] = None + LANGCHAIN_PROJECT: Optional[str] = None + + # llm + OPENAI_API_KEY: str + + # aws + AWS_ACCESS_KEY_ID: str + AWS_SECRET_ACCESS_KEY: str + + ENABLE_MESSAGE_AGENT_LOG: bool + + model_config = SettingsConfigDict( + env_file=".env", env_file_encoding="utf-8", extra="ignore" + ) + + +env = Environment() diff --git a/news-scraper-agent/config/log.py b/news-scraper-agent/config/log.py new file mode 100644 index 0000000..2e4ff8c --- /dev/null +++ b/news-scraper-agent/config/log.py @@ -0,0 +1,80 @@ +import logging +from config.env_config import env +from datetime import datetime, timezone, timedelta +from enum import Enum +from rich.console import Console +from rich.json import JSON +from rich.logging import RichHandler +from rich.table import Table +from rich.text import Text +from typing import Any + + +class ConsoleDataType(Enum): + TABLE = "TABLE" + JSON = "JSON" + TEXT = "TEXT" + DICT = "DICT" + + +class NewsScraperAgentLogger(logging.Logger): + def __init__(self, name: str = "NewsScraperAgent"): + super().__init__(name) + + self.console = Console() + self._initialize_logger() + + def _initialize_logger(self): + # Formatter 설정 + formatter = logging.Formatter(fmt="%(name)16s - %(message)s") + + # Logger 레벨 설정 + self.setLevel(logging.DEBUG if env.PROFILE != "real" else logging.INFO) + + # RichHandler 추가 + rich_handler = RichHandler( + rich_tracebacks=True, + console=self.console, + log_time_format=lambda dt: Text( + datetime.fromtimestamp( + dt.timestamp(), tz=timezone(timedelta(hours=9)) + ).strftime("%Y-%m-%d %H:%M:%S") + ), + ) + rich_handler.setLevel(logging.DEBUG) + rich_handler.setFormatter(formatter) + self.addHandler(rich_handler) + + def console_print(self, data_type: ConsoleDataType, data: Any): + display_text = self._to_console_text(data_type, data) + self.info(f"{display_text}") + + def _to_console_text(self, data_type: ConsoleDataType, data: Any): + with self.console.capture() as capture: + if data_type == ConsoleDataType.TABLE and isinstance(data, Table): + self.console.print(data) + elif data_type == ConsoleDataType.JSON: + self.console.print(JSON.from_data(data)) # JSON 문자열로 표시 (" 포함) + elif data_type == ConsoleDataType.DICT: + self.console.print( + JSON.from_data(data) + ) # dict를 JSON 형태로 예쁘게 표시 + elif data_type == ConsoleDataType.TEXT: + self.console.print(data) + return Text.from_ansi(capture.get()) + + +if __name__ == "__main__": + # 로그 테스트 (python -m config.log) + logger = NewsScraperAgentLogger("NewsScraperAgent") + + # 로그 메시지 테스트 + logger.debug("Debug message") + logger.info("Info message") + logger.warning("Warning message") + logger.error("Error message") + logger.critical("Critical message") + + # console_print 사용 예시 + sample_data = {"key": "value", "another_key": "another_value"} + logger.console_print(ConsoleDataType.DICT, sample_data) diff --git a/news-scraper-agent/config/prompt_config.py b/news-scraper-agent/config/prompt_config.py new file mode 100644 index 0000000..a682748 --- /dev/null +++ b/news-scraper-agent/config/prompt_config.py @@ -0,0 +1,110 @@ +class DefaultPromptTemplate: + CRAWLING_AGENT_PROMPT_EN = """ +Please find the articles by extracting information from the html based on the information below + + +The site information is as follows. +- Site name: {site_name} +- Site link: {site_url} +- html: {parser_result} + + +1. Make sure to extract information from the html that is delivered. +2. If additional information is available, use the additional information to extract the article title and website link. +3. The extracted information should not be changed arbitrarily. +4. The answer must be in JSON array form, responding to the article title and the article's website link in key-value form as follows. +5. If the article information has not been imported, respond in the form of an empty array: ex. '[]' +6. If the url is not a full url starting with a protocol(http, https), use relative paths based on the provided site link to convert it into a complete url. +7. If the site name is 데보션(Devocean), exclude the content corresponding to Geeknews. +8. Be sure to follow the instructions above.""" + + CRAWLING_AGENT_PROMPT_KO = """<역할 및 목표> +아래 정보를 바탕으로 html에서 아티클을 찾아주세요 + +<문맥> +사이트 정보는 다음과 같습니다. +- 사이트 이름: {site_name} +- 사이트 링크: {site_url} +- html: {parser_result} + + +<지시문> +1. 반드시 전달되는 html 내에서 정보를 추출합니다. +2. 추가 정보가 있는 경우 추가 정보를 활용하여 기사 제목과 웹사이트 링크를 추출합니다. +3. 추출한 정보를 임의로 변경해선 안됩니다. +4. 답변은 반드시 JSON 배열 형태로 기사 제목(title)과 기사의 웹사이트 링크(url)를 다음과 같은 key-value 형태로 응답합니다. +5. 기사 정보를 못가져 온 경우 다음과 같이 빈 배열 형태로 응답합니다. ex. '[]' +6. 주소가 프로토콜(http, https)로 시작하는 전체 url이 아닌 경우 제공된 사이트 링크를 기준으로 상대경로를 사용하여 완전한 url로 변환하여 사용하세요. +7. 사이트 이름이 데보션(devocean)인 경우, Geeknews에 해당하는 내용은 제외하세요 +8. 반드시 위 지침을 따르세요.""" + + # filtering llm agent prompt + FILTERING_AGENT_PROMPT_EN = """ +The tool aims to filter AI-related news articles, focusing on the latest AI technologies and research trends, generative AI, AI application domains, notable AI use cases, and the societal and economic impacts of AI. + + +{crawling_result} + + +1. From the given list of news articles, filter only those related to AI and output them in JSON format. Each article object should include only the 'title' and 'url' attributes. +2. The main keywords are as follows: +- AI Technology and Research Keywords: 'LLM,' 'Generative AI,' 'AI,' 'Deep Learning,' 'Machine Learning,' 'Natural Language Processing' (NLP), 'Reinforcement Learning,' 'Transformers,' 'Language Model,' 'Neural Network,' 'Classification Model,' 'Clustering,' 'Regression Analysis,' 'Time Series Analysis' +- Generative AI Keywords: 'Generative Model,' 'Image Generation,' 'Text Generation,' 'Speech Recognition,' 'Image Recognition,' 'Computer Vision,' 'Natural Language Generation' (NLG), 'Generative Adversarial Networks' (GAN), 'Natural Language Understanding,' 'Multimodal AI' +- Application Fields and Use Cases: 'Recommendation Systems,' 'Automation,' 'Chatbot,' 'Healthcare AI,' 'Finance AI,' 'Robotics,' 'Smart Home,' 'Autonomous Driving,' 'Edge Computing,' 'Cloud AI' +- AI Technology and Research Trends: 'AI Ethics,' 'Explainable AI,' 'AI Safety,' 'Model Compression,' 'Scalability,' 'Large-Scale Training,' 'Hyperparameters,' 'Lightweight Models,' 'Model Optimization,' 'Transfer Learning' +- Unique AI Applications: 'Client-side AI,' 'Browser-based AI,' 'Experimental AI,' 'AI Service,' 'AI solutions for developers,' 'Novel AI applications' +- Societal and Economic Impact Keywords: 'AI Regulation', 'AI Policy', 'Social Impact of AI', 'Job Impact', 'Economics of AI', 'AI Market Growth', 'AI Investment', 'Industry Disruption', 'Future Technology', 'AI Innovation', 'Future of AI', 'AI Competition', 'AI Leadership'""" + + FILTERING_AGENT_PROMPT_KO = """<역할 및 목표> +AI 관련 뉴스 기사를 필터링하는 도구로서, 최신 AI 기술과 연구 동향, 생성형 AI, AI 응용 분야, 특별한 AI 응용 사례, 그리고 AI의 사회적, 경제적 영향 등을 다루는 기사만을 추출하는 것이 목표입니다. + +<문맥> +{crawling_result} + +<지시문> +1. 주어진 뉴스 목록에서 AI와 관련된 기사만 필터링하여 JSON 형식으로 출력하세요. 각 기사 객체에는 'title'과 'url' 속성만 포함합니다. +2. 주요 키워드는 다음과 같습니다: +- AI 기술 및 연구 관련 키워드 : 'LLM', '생성형 AI', 'AI', '딥러닝' (Deep Learning), '머신러닝' (Machine Learning), '자연어 처리' (NLP, Natural Language Processing), '강화 학습' (Reinforcement Learning), '트랜스포머' (Transformers), '언어 모델' (Language Model), '신경망' (Neural Network), '분류 모델' (Classification Model), '군집화' (Clustering), '회귀 분석' (Regression Analysis), '시계열 분석' (Time Series Analysis) +- 생성형 AI 관련 키워드 : '생성 모델' (Generative Model), '이미지 생성' (Image Generation), '텍스트 생성' (Text Generation), '음성 인식' (Speech Recognition), '이미지 인식' (Image Recognition), '컴퓨터 비전' (Computer Vision), '자연어 생성' (NLG, Natural Language Generation), 'GAN' (Generative Adversarial Networks), '자연어 이해' (Natural Language Understanding), '멀티모달 AI' (Multimodal AI) +- 응용 분야와 사례 : '추천 시스템' (Recommendation Systems), '자동화' (Automation), '챗봇' (Chatbot), '의료 AI' (Healthcare AI), '금융 AI' (Finance AI), '로보틱스' (Robotics), '스마트 홈' (Smart Home), '자율 주행' (Autonomous Driving), '엣지 컴퓨팅' (Edge Computing), '클라우드 AI' (Cloud AI) +- AI 기술 및 연구 동향 : 'AI 윤리' (AI Ethics), '설명 가능한 AI' (Explainable AI), 'AI 안전성' (AI Safety), '모델 압축' (Model Compression), '확장성' (Scalability), '대규모 학습' (Large-Scale Training), '하이퍼파라미터' (Hyperparameters), '경량화 모델' (Lightweight Models), '모델 최적화' (Model Optimization), '전이 학습' (Transfer Learning) +- AI 응용 : '클라이언트 측 AI' (Client-side AI), '브라우저 기반 AI' (Browser-based AI), '실험적 AI' (Experimental AI), 'AI 서비스' (AI Service), '개발자를 위한 AI 솔루션' (AI solutions for developers), '신규 AI 애플리케이션' (Novel AI applications) +- AI의 사회적 및 경제적 시사점 관련 키워드: 'AI 규제' (AI Regulation), 'AI 정책' (AI Policy), 'AI의 사회적 영향' (Social Impact of AI), '일자리 영향' (Job Impact), 'AI 경제학' (Economics of AI), 'AI 시장 성장' (AI Market Growth), 'AI 투자' (AI Investment), '산업 변화' (Industry Disruption), '미래 기술' (Future Technology), 'AI 혁신' (AI Innovation), '미래 AI' (Future of AI), 'AI 경쟁' (AI Competition), 'AI 리더십' (AI Leadership)" +""" + + # sorting llm agent prompt + SORTING_AGENT_PROMPT_EN = """ +As a tool for ranking AI-related news articles by importance, the goal is to evaluate each article's significance based on practical applications of AI, the latest technological trends, creative use cases, and tangible benefits for developers and users. + + +{filtering_result} + + +1. Rank the given list of news articles in order of importance. +2. Do not modify or restructure the provided list of articles arbitrarily. +3. Evaluate the importance of each article based on the following criteria (higher rank indicates greater importance): +- **1st Priority: Practical AI Applications** : Articles showcasing AI technologies that are commercialized to solve problems or improve user experience. +- **2nd Priority: Latest AI Technological Trends** : Articles covering advancements in AI technology, performance improvements, or research-driven insights. +- **3rd Priority: Latest AI Development Frameworks** : Articles about AI management frameworks, developer tools, or techniques such as RAG or fine-tuning. +- **4th Priority: Creative and Innovative Use Cases** : Articles demonstrating novel or fun applications of AI, showcasing new possibilities or creative implementations. +- **5th Priority: Social Impact and Policy Relevance** : Articles discussing AI-related legislation, policies, or contributions to solving societal challenges. +- **6th Priority: Industrial Scalability and Investment Trends** : Articles addressing AI's expansion into new industries, investments, or business growth. +4. Provide the ranked output in JSON format, including the 'title' and 'url' of each article, and add a 'reason' field to explain the rationale for its ranking.""" + + SORTING_AGENT_PROMPT_KO = """<역할 및 목표> +AI 관련 뉴스 기사를 중요도에 따라 정렬하는 도구로서, AI의 실질적 활용 사례, 최신 기술 트렌드, 창의적 활용, 개발자와 사용자에게 실질적 이점을 제공하는 요소를 고려해 기사의 중요도를 평가하는 것이 목표입니다. + +<문맥> +{filtering_result} + +<지시문> +1. 주어진 뉴스 목록에서 각 기사를 중요도에 따라 순서대로 정렬하세요. +2. 임의로 뉴스 목록을 수정하거나 재구성하지 않습니다. +3. 중요도를 평가하는 기준은 다음과 같습니다 (순위가 높을수록 중요도가 높음): +- **1순위: 실질적인 AI 기술 활용 사례** : AI 기술이 상용화되어 문제를 해결하거나 사용자 경험을 개선하는 기사 +- **2순위: 최신 AI 기술 트렌드** : 최신 AI 기술의 발전 방향, 성능 개선, 연구 중심의 내용을 다룬 기사 +- **3순위: 최신 AI 개발 프레임워크** : 최신 I 관리 프레임워크나 개발자 도구, AI 활용 기법 (RAG, 파인튜닝 등)에 대한 기사 +- **4순위: 창의적이고 혁신적인 활용 사례** : 기존과 다른 창의적인 방식으로 AI를 응용하여 새로운 가능성을 보여주거나 재미있는 활용 사례에 대한 기사. +- **5순위: 사회적 영향 및 정책적 중요성** : AI 관련 입법, 정책, 사회 문제 해결 사례를 다룬 기사. +- **6순위: 산업적 확장성 및 투자 동향** : AI 기술의 확장성, 투자 및 신사업 관련 내용을 다룬 기사. +4. 각 기사의 'title'과 'url'을 포함한 JSON 형식으로 출력하고, 정렬된 순서마다 'reason' 속성을 추가하여 선택 이유를 간단히 설명하세요.""" diff --git a/news-scraper-agent/decorations/__init__.py b/news-scraper-agent/decorations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/decorations/log_time.py b/news-scraper-agent/decorations/log_time.py new file mode 100644 index 0000000..6305b61 --- /dev/null +++ b/news-scraper-agent/decorations/log_time.py @@ -0,0 +1,54 @@ +import time + +from config.log import NewsScraperAgentLogger + + +def log_time_agent_method(func): + # agent 안에 있는 method에서 사용 (site도 함께 로깅) + def wrapper(self, *args, **kwargs): + has_site = hasattr(self, "site") + logger = ( + self.logger + if hasattr(self, "logger") and self.logger + else NewsScraperAgentLogger() + ) + + logger.info( + f"Started {self.__class__.__name__} " + f"{f'with site: {self.site.name}. ' if has_site else ''}" + ) + + start_time = time.time() + result = func(self, *args, **kwargs) + end_time = time.time() + + logger.info( + f"Finished {self.__class__.__name__} " + f"{f'with site: {self.site.name}. ' if has_site else ''}" + f"({end_time - start_time:.2f}s)" + ) + return result + + return wrapper + + +def log_time_method(func): + # 일반적인 클래스 메서드에서 사용 + def wrapper(self, *args, **kwargs): + logger = ( + self.logger + if hasattr(self, "logger") and self.logger + else NewsScraperAgentLogger() + ) + logger.info(f"Started {self.__class__.__name__}.{func.__name__}") + + start_time = time.time() + result = func(self, *args, **kwargs) + end_time = time.time() + + logger.info( + f"Finished {self.__class__.__name__}.{func.__name__} ({end_time - start_time:.2f}s)" + ) + return result + + return wrapper diff --git a/news-scraper-agent/external/aws_lambda/client.py b/news-scraper-agent/external/aws_lambda/client.py new file mode 100644 index 0000000..fbc7868 --- /dev/null +++ b/news-scraper-agent/external/aws_lambda/client.py @@ -0,0 +1,106 @@ +import json +import time + +import boto3 +from pydantic import BaseModel +from tenacity import retry, wait_fixed, stop_after_attempt, RetryCallState + +from config.log import NewsScraperAgentLogger + + +class ScraperLambdaResponseBody(BaseModel): + statusCode: int + body: dict + + +class LambdaResponse(BaseModel): + StatusCode: int + ResponseMetadata: dict + Payload: ScraperLambdaResponseBody + ExecutedVersion: str + + +def log_before_retry(max_retry: int): + def log_before(retry_state: RetryCallState): + lambda_invoker: LambdaInvoker = retry_state.args[ + 0 + ] # invoke 함수의 첫번째 파라미터 (self) + logging_name: str = retry_state.kwargs.get("logging_name", "") + if retry_state.attempt_number > 1: + lambda_invoker.logger.info( + f"Retrying Invoke lambda {logging_name}... {retry_state.attempt_number - 1}/{max_retry - 1}" + ) + + return log_before + + +def log_after_retry(): + def log_after(retry_state: RetryCallState): + if retry_state.outcome.failed: + lambda_invoker: LambdaInvoker = retry_state.args[ + 0 + ] # invoke 함수의 첫번째 파라미터 (self) + lambda_invoker.logger.error(f"{retry_state.outcome.exception()}") + + return log_after + + +class LambdaInvoker: + def __init__(self): + self.client = boto3.client("lambda", region_name="ap-northeast-2") + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + + @retry( + wait=wait_fixed(wait=3), # 초 + stop=stop_after_attempt(max_attempt_number=3), + before=log_before_retry(max_retry=3), + after=log_after_retry(), + ) + def invoke( + self, + logging_name: str = None, + **kwargs, + ) -> dict: + name = logging_name if logging_name else "Lambda invocation" + start = time.time() + self.logger.info(f"Started {name} ") + + response = self.parse_response(self.client.invoke(**kwargs)) + + end = time.time() + self.logger.info(f"Finished {name} ({end - start:.2f}s)") + return response.Payload.body + + def parse_response(self, response: dict): + # StatusCode 확인 + if response.get("StatusCode") != 200: + self.logger.error(response) + raise RuntimeError(f"Lambda 호출 실패") + + # Payload 파싱 + try: + payload: dict = json.load(response["Payload"]) + except Exception as e: + self.logger.exception("Failed to parse response") + raise e + + # 파싱 성공하면 statusCode를 확인 + if payload.get("statusCode") != 200: + self.logger.error(payload) + raise RuntimeError(f"Lambda 호출 실패") + + # statusCode가 정상이면 body 파싱 + try: + body = json.loads(payload["body"]) + except Exception as e: + self.logger.exception("Failed to parse response") + raise e + + return LambdaResponse( + StatusCode=response["StatusCode"], + ResponseMetadata=response["ResponseMetadata"], + Payload=ScraperLambdaResponseBody( + statusCode=payload["statusCode"], body=body + ), + ExecutedVersion=response["ExecutedVersion"], + ) diff --git a/news-scraper-agent/external/kakaowork/client.py b/news-scraper-agent/external/kakaowork/client.py new file mode 100644 index 0000000..340c4f8 --- /dev/null +++ b/news-scraper-agent/external/kakaowork/client.py @@ -0,0 +1,43 @@ +import requests + +from config.env_config import env +from config.log import ConsoleDataType, NewsScraperAgentLogger +from decorations.log_time import log_time_method +from external.kakaowork.message_blocks import KakaoworkMessageRequest + +HTTP_METHOD_POST = "POST" +HTTP_CONTENT_TYPE = "application/json" + +WEBHOOK_URL_MAP = { + "real": env.KAWORK_WEBHOOK_REAL_URI, + "dev": env.KAWORK_WEBHOOK_DEV_URI, + "local": env.KAWORK_WEBHOOK_LOCAL_URI, +} + + +class KakaoworkClient: + def __init__(self, profile: str): + self.webhook_url = WEBHOOK_URL_MAP.get(profile) + self.logger = NewsScraperAgentLogger(self.__class__.__name__) + + @log_time_method + def send_message(self, request: KakaoworkMessageRequest) -> int: + try: + self.logger.info("request body 👇") + self.logger.console_print( + ConsoleDataType.DICT, request.model_dump(exclude_none=True) + ) + + response = requests.post( + self.webhook_url, + headers={"Content-Type": "application/json"}, + data=request.model_dump_json(exclude_none=True), + ) + # 응답 코드와 상세 정보 로깅 + self.logger.info(f"response status_code: {response.status_code}") + self.logger.info("response body 👇") # 응답 본문 텍스트 + self.logger.console_print(ConsoleDataType.DICT, response.json()) + return response.status_code + except requests.RequestException as e: + self.logger.error(f"Error sending message: {e}") + return 500 # 에러 상태 코드 반환 diff --git a/news-scraper-agent/external/kakaowork/message_blocks.py b/news-scraper-agent/external/kakaowork/message_blocks.py new file mode 100644 index 0000000..c4d78c5 --- /dev/null +++ b/news-scraper-agent/external/kakaowork/message_blocks.py @@ -0,0 +1,70 @@ +from typing import Optional, Literal + +from pydantic import BaseModel + + +# block 내부에서 추가로 사용되는 Block +class InnerTextBlock(BaseModel): + type: str = "styled" + text: str + bold: Optional[bool] = False + color: Literal["red", "blue", "gray", "default"] = "default" + + +class InnerTextUrlBlock(BaseModel): + type: str = "link" + text: str + url: str + + +class ButtonActionBlock(BaseModel): + type: Literal[ + "call_modal", + "exclusive", + "open_external_app", + "open_inapp_browser", + "open_system_browser", + "submit_action", + ] = "open_system_browser" + name: str = "button" + value: str + + +class SectionAccessoryBlock(BaseModel): + type: str = "image_link" + url: str + + +# 기본 Block +class HeaderBlock(BaseModel): + type: str = "header" + text: str + style: Literal["red", "blue", "yellow", "white"] = "white" + + +class DividerBlock(BaseModel): + type: str = "divider" + + +class ButtonBlock(BaseModel): + type: str = "button" + text: str + style: Literal["danger", "primary", "default"] = "default" + action: ButtonActionBlock + + +class TextBlock(BaseModel): + type: str = "text" + text: str = "text sample" + inlines: list[InnerTextBlock | InnerTextUrlBlock] + + +class SectionBlock(BaseModel): + type: str = "section" + content: TextBlock + accessory: Optional[SectionAccessoryBlock] = None + + +class KakaoworkMessageRequest(BaseModel): + text: str = "카카오워크 메시지" + blocks: list[HeaderBlock | TextBlock | DividerBlock | SectionBlock | ButtonBlock] diff --git a/news-scraper-agent/external/kakaowork/message_builder.py b/news-scraper-agent/external/kakaowork/message_builder.py new file mode 100644 index 0000000..3a1a116 --- /dev/null +++ b/news-scraper-agent/external/kakaowork/message_builder.py @@ -0,0 +1,74 @@ +from zoneinfo import ZoneInfo + +from datetime import datetime + +from graph.state import CrawlingResult +from external.kakaowork.message_blocks import ( + KakaoworkMessageRequest, + HeaderBlock, + DividerBlock, + ButtonBlock, + ButtonActionBlock, + TextBlock, + InnerTextBlock, + SectionBlock, + InnerTextUrlBlock, +) + + +class KakaoworkMessageBuilder: + def __init__(self): + # none + pass + + @staticmethod + def build(unique_site_news_dict: CrawlingResult) -> KakaoworkMessageRequest: + has_empty_list = all( + len(page_crawling_data_list) == 0 + for site_name, page_crawling_data_list in unique_site_news_dict.items() + ) + + today = datetime.now(tz=ZoneInfo("Asia/Seoul")).strftime("%Y-%m-%d") + + blocks = [HeaderBlock(text=f"📢 {today} AI 소식", style="blue")] + if has_empty_list: + blocks.append( + TextBlock( + inlines=[ + InnerTextBlock(text="오늘은 소식이 없어요! 😅", bold=False) + ] + ) + ) + else: + for site_name, site_data in unique_site_news_dict.items(): + if len(site_data) == 0: + continue + + blocks.append( + TextBlock( + text=site_name, + inlines=[InnerTextBlock(text=site_name, bold=True)], + ) + ) + inlines = [] + for idx, item in enumerate(site_data): + if item.title and item.url: + is_last_item = idx == len(site_data) - 1 + # 가독성을 위해 각 뉴스별 마지막 기사는 구분선(\n) 한 개 더 추가 + title = ( + f"{item.title}\n" if is_last_item else f"{item.title}\n\n" + ) + inlines.append(InnerTextUrlBlock(text=title, url=item.url)) + blocks.append(SectionBlock(content=TextBlock(inlines=inlines))) + blocks.append(DividerBlock()) + + blocks.append( + ButtonBlock( + text="사이트 추가하기", + action=ButtonActionBlock( + value="https://d1qbk7p5aewspc.cloudfront.net/index.html" + ), + ) + ) + + return KakaoworkMessageRequest(text=f"📢 {today} AI 소식", blocks=blocks) diff --git a/news-scraper-agent/graph/__init__.py b/news-scraper-agent/graph/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/graph/build_graph.py b/news-scraper-agent/graph/build_graph.py new file mode 100644 index 0000000..ce692f4 --- /dev/null +++ b/news-scraper-agent/graph/build_graph.py @@ -0,0 +1,85 @@ +from typing import Callable + +from langchain.schema.runnable import RunnableParallel +from langchain_community.llms import FakeListLLM +from langchain_openai import ChatOpenAI +from langgraph.graph import StateGraph, START, END + +from agents.crawling_agent import CrawlingAgent +from agents.filtering_agent import FilteringAgent +from agents.html_parser_agent import HtmlParserAgent +from agents.message_agent import MessageAgent +from agents.sorting_agent import SortingAgent +from graph.state import SiteState, State, PageCrawlingData +from models.site import SiteDto +from service.site_service import get_sites + +# FakeListLLM 설정 +fake_responses = [ + "[]", + "[]", +] +# llm = FakeListLLM(responses=fake_responses) # FIXME 테스트 시 사용 + + +def create_crawl_filter_sequence(site: SiteDto) -> Callable[[State], SiteState]: + html_parser_agent = HtmlParserAgent(site=site) + crawling_agent = CrawlingAgent(ChatOpenAI(model_name="gpt-4o"), site=site) + filtering_agent = FilteringAgent(ChatOpenAI(model_name="gpt-4o"), site=site) + sorting_agent = SortingAgent(ChatOpenAI(model_name="gpt-4o"), site=site) + + def process_site(state: State) -> SiteState: + initial_site_state = SiteState( + crawling_result={}, filtering_result={}, parser_result={}, sorted_result={} + ) + state = html_parser_agent(initial_site_state) + state = crawling_agent(state) + state = filtering_agent(state) + state = sorting_agent(state) + return state + + return process_site + + +def parallel_crawl_filter(state: State) -> State: + sites = state.sites + + parallel_sequences = { + f"{site.name}": create_crawl_filter_sequence(site) + for i, site in enumerate(sites) + } + + parallel_runner = RunnableParallel(**parallel_sequences) + results: dict[str, SiteState] = parallel_runner.invoke(state) + + filtered_results = {} + for site_name, result in results.items(): + exclusive_reason_results = [ + PageCrawlingData(url=item.url, title=item.title) + for item in result.sorted_result[site_name] + ] + filtered_results[site_name] = exclusive_reason_results + + state.parallel_result = filtered_results + + return state + + +def build_graph(initial_state: State): + builder = StateGraph(State) + + # init node + builder.add_node("start", lambda x: initial_state) + builder.add_node("get_sites", get_sites) + builder.add_node("parallel_crawl_filter", parallel_crawl_filter) + builder.add_node("send_message", MessageAgent()) + + # connect edge + builder.add_edge(START, "start") + builder.add_edge("start", "get_sites") + builder.add_edge("get_sites", "parallel_crawl_filter") + builder.add_edge("parallel_crawl_filter", "send_message") + builder.add_edge("send_message", END) + + # graph run + return builder.compile() diff --git a/news-scraper-agent/graph/state.py b/news-scraper-agent/graph/state.py new file mode 100644 index 0000000..1ffdab3 --- /dev/null +++ b/news-scraper-agent/graph/state.py @@ -0,0 +1,203 @@ +from config.env_config import env +from config.log import ConsoleDataType, NewsScraperAgentLogger +from models.site import SiteDto +from pydantic import BaseModel, Field +from rich.table import Table + + +class SortedFilteringData(BaseModel): + url: str + title: str + reason: str + + +class PageCrawlingData(BaseModel): + url: str + title: str + + +type SortedFilterResult = dict[str, list[SortedFilteringData]] +type CrawlingResult = dict[str, list[PageCrawlingData]] +type ParserResult = dict[str, list[str]] + + +class SiteState(BaseModel): + crawling_result: CrawlingResult + filtering_result: CrawlingResult + parser_result: ParserResult + sorted_result: SortedFilterResult + + def _get_print_table(self, title: str, columns: list[dict], data: dict) -> Table: + """ + 공통 테이블 출력 메서드. + :param title: 테이블 제목. + :param columns: 열 정의 리스트 (각 열의 이름, 스타일, overflow 등). + :param data: 출력할 데이터 딕셔너리. + """ + for site, results in data.items(): + table = Table(title=f"[{site}] {title}", title_justify="left") + # 열 정의 추가 + for column in columns: + table.add_column(**{k: v for k, v in column.items() if k != "key"}) + # 데이터 추가 + for idx, result in enumerate(results, start=1): + if isinstance(result, str): + table.add_row(str(idx), result) + else: + table.add_row( + str(idx), + *( + getattr(result, column["key"], "") + for column in columns + if "key" in column + ), + ) + return table + + def print_state( + self, + crawling_result: bool = False, + filtering_result: bool = False, + parser_result: bool = False, + sorted_result: bool = False, + ): + logger_name = "ParserResult" + logger = NewsScraperAgentLogger(logger_name) + if parser_result: + if env.PROFILE == "local": + table = self._get_print_table( + title=logger_name, + columns=[ + {"header": "idx", "no_wrap": True}, + { + "header": "result", + "overflow": "fold", + "key": "result", + "max_width": 80, + }, + ], + data=self.parser_result, + ) + logger.console_print(ConsoleDataType.TABLE, table) + else: + logger.console_print(ConsoleDataType.DICT, self.parser_result) + + if crawling_result: + logger_name = "CrawlingResult" + logger = NewsScraperAgentLogger(logger_name) + if env.PROFILE == "local": + table = self._get_print_table( + title=logger_name, + columns=[ + {"header": "idx", "no_wrap": True}, + { + "header": "url", + "overflow": "fold", + "key": "url", + "max_width": 80, + }, + { + "header": "title", + "style": "magenta", + "overflow": "fold", + "key": "title", + "max_width": 80, + }, + ], + data=self.crawling_result, + ) + logger.console_print(ConsoleDataType.TABLE, table) + else: + dict_result = { + site: [item.model_dump() for item in items] + for site, items in self.crawling_result.items() + } + logger.console_print(ConsoleDataType.DICT, dict_result) + + if filtering_result: + logger_name = "FilteringResult" + logger = NewsScraperAgentLogger(logger_name) + if env.PROFILE == "local": + table = self._get_print_table( + title=logger_name, + columns=[ + {"header": "idx", "no_wrap": True}, + { + "header": "url", + "overflow": "fold", + "key": "url", + "max_width": 80, + }, + { + "header": "title", + "style": "magenta", + "overflow": "fold", + "key": "title", + "max_width": 80, + }, + ], + data=self.filtering_result, + ) + logger.console_print(ConsoleDataType.TABLE, table) + else: + dict_result = { + site: [item.model_dump() for item in items] + for site, items in self.filtering_result.items() + } + logger.console_print(ConsoleDataType.DICT, dict_result) + + if sorted_result: + logger_name = "SortedResult" + logger = NewsScraperAgentLogger(logger_name) + if env.PROFILE == "local": + table = self._get_print_table( + title=logger_name, + columns=[ + {"header": "idx", "no_wrap": True}, + { + "header": "url", + "overflow": "fold", + "key": "url", + "max_width": 40, + }, + { + "header": "title", + "style": "magenta", + "overflow": "fold", + "key": "title", + "max_width": 40, + }, + { + "header": "reason", + "style": "cyan", + "overflow": "fold", + "key": "reason", + "max_width": 40, + }, + ], + data=self.sorted_result, + ) + logger.console_print(ConsoleDataType.TABLE, table) + else: + dict_result = { + site: [item.model_dump() for item in items] + for site, items in self.sorted_result.items() + } + logger.console_print(ConsoleDataType.DICT, dict_result) + + +class State(BaseModel): + sites: list[SiteDto] + parallel_result: CrawlingResult + + +class AgentResponse(BaseModel): + items: list[PageCrawlingData] = Field( + description="List of agent response items (title, url)" + ) + + +class SortAgentResponse(BaseModel): + items: list[SortedFilteringData] = Field( + description="List of agent response items (title, url, reason)" + ) diff --git a/news-scraper-agent/loader/__init__.py b/news-scraper-agent/loader/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/loader/connect.py b/news-scraper-agent/loader/connect.py new file mode 100644 index 0000000..28c7032 --- /dev/null +++ b/news-scraper-agent/loader/connect.py @@ -0,0 +1,34 @@ +from mongoengine import connect + +from config.env_config import env +from config.log import NewsScraperAgentLogger +from models.message import Message +from models.site import Site + +logger = NewsScraperAgentLogger() + + +def connect_db(): + try: + if env.PROFILE == "real": + connect(host=env.MONGO_DB_REAL_URI) + elif env.PROFILE == "develop": + connect(host=env.MONGO_DB_DEV_URI) + else: + connect(host=env.MONGO_DB_LOCAL_URI) + + logger.info("MongoDB Connected ...") + + # 컬렉션 생성 확인 + Site.ensure_indexes() + logger.info("Site Collection is ready!") + Message.ensure_indexes() + logger.info("Message Collection is ready!") + + except Exception as err: + logger.error(f"MongoDB connect error: {err}") + exit(1) + + +if __name__ == "__main__": + connect_db() diff --git a/news-scraper-agent/main.py b/news-scraper-agent/main.py new file mode 100644 index 0000000..1c3d817 --- /dev/null +++ b/news-scraper-agent/main.py @@ -0,0 +1,23 @@ +from graph.build_graph import build_graph +from loader.connect import connect_db + + +def main() -> None: + connect_db() + from graph.state import State + + initial_state: State = State( + sites=[], + parallel_result={}, + ) + graph = build_graph(initial_state) + # get_graph_image(graph) + graph.invoke(initial_state) + + +def lambda_handler(event, context) -> None: + main() + + +if __name__ == "__main__": + main() diff --git a/news-scraper-agent/models/__init__.py b/news-scraper-agent/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/models/message.py b/news-scraper-agent/models/message.py new file mode 100644 index 0000000..53b7b75 --- /dev/null +++ b/news-scraper-agent/models/message.py @@ -0,0 +1,60 @@ +from typing import Optional + +from mongoengine import ( + Document, + StringField, + ListField, + EmbeddedDocument, + EmbeddedDocumentField, + DateTimeField, +) +from pydantic import BaseModel + +from utils.time_utils import get_datetime_kst + + +class MessageContent(EmbeddedDocument): + name = StringField(required=False) + title = StringField(required=False) + url = StringField(required=False) + + +class Message(Document): + type = StringField(required=True) + status = StringField(required=True) + messages = ListField(EmbeddedDocumentField(MessageContent)) + + # timestamps 옵션 대신 createdAt과 updatedAt 필드를 직접 정의 + createdAt = DateTimeField() + updatedAt = DateTimeField() + + meta = { + "collection": "messages", + "indexes": [ + { + "fields": ["createdAt"], + "expireAfterSeconds": 60 * 60 * 24 * 180, + } # 180일 후 만료 + ], + "versionKey": False, # __v 필드 생성 방지 + } + + def save(self, *args, **kwargs): + if not self.createdAt: + self.createdAt = get_datetime_kst() + self.updatedAt = get_datetime_kst() + return super(Message, self).save(*args, **kwargs) + + +class MessageContentDto(BaseModel): + name: str + title: str + url: str + + +class MessageDto(BaseModel): + type: str + status: str + messages: list[MessageContentDto] + createdAt: Optional[str] + updatedAt: Optional[str] diff --git a/news-scraper-agent/models/site.py b/news-scraper-agent/models/site.py new file mode 100644 index 0000000..9418a02 --- /dev/null +++ b/news-scraper-agent/models/site.py @@ -0,0 +1,45 @@ +from typing import Optional + +from mongoengine import Document, StringField, ListField, BooleanField, DateTimeField +from pydantic import BaseModel + +from utils.time_utils import get_datetime_kst + + +class Site(Document): + name = StringField(required=True) + url = StringField(required=True) + keywords = ListField(StringField(), required=False) + verified = BooleanField(required=True, default=False) + requestedBy = StringField(required=False) + + # timestamps 옵션 대신 createdAt과 updatedAt 필드를 직접 정의 + createdAt = DateTimeField() + updatedAt = DateTimeField() + + meta = { + "collection": "sites", + "indexes": [ + {"fields": ["name"]}, + {"fields": ["url"]}, + ], + "auto_create_index": True, + "index_background": True, + "versionKey": False, # __v 필드 생성 방지 + } + + def save(self, *args, **kwargs): + if not self.createdAt: + self.createdAt = get_datetime_kst() + self.updatedAt = get_datetime_kst() + return super(Site, self).save(*args, **kwargs) + + +class SiteDto(BaseModel): + name: str + url: str + keywords: list[str] + verified: bool + requestedBy: str + createdAt: Optional[str] + updatedAt: Optional[str] diff --git a/news-scraper-agent/poetry.lock b/news-scraper-agent/poetry.lock new file mode 100644 index 0000000..91c7dfe --- /dev/null +++ b/news-scraper-agent/poetry.lock @@ -0,0 +1,2498 @@ +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.4" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, + {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, +] + +[[package]] +name = "aiohttp" +version = "3.11.11" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, + {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, + {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, + {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, + {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, + {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, + {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, + {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, + {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, + {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, + {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.3.0" +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +propcache = ">=0.2.0" +yarl = ">=1.17.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.2" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.8.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "attrs" +version = "24.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "boto3" +version = "1.35.99" +description = "The AWS SDK for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "boto3-1.35.99-py3-none-any.whl", hash = "sha256:83e560faaec38a956dfb3d62e05e1703ee50432b45b788c09e25107c5058bd71"}, + {file = "boto3-1.35.99.tar.gz", hash = "sha256:e0abd794a7a591d90558e92e29a9f8837d25ece8e3c120e530526fe27eba5fca"}, +] + +[package.dependencies] +botocore = ">=1.35.99,<1.36.0" +jmespath = ">=0.7.1,<2.0.0" +s3transfer = ">=0.10.0,<0.11.0" + +[package.extras] +crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] + +[[package]] +name = "botocore" +version = "1.35.99" +description = "Low-level, data-driven core of boto 3." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "botocore-1.35.99-py3-none-any.whl", hash = "sha256:b22d27b6b617fc2d7342090d6129000af2efd20174215948c0d7ae2da0fab445"}, + {file = "botocore-1.35.99.tar.gz", hash = "sha256:1eab44e969c39c5f3d9a3104a0836c24715579a455f12b3979a31d7cde51b3c3"}, +] + +[package.dependencies] +jmespath = ">=0.7.1,<2.0.0" +python-dateutil = ">=2.1,<3.0.0" +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} + +[package.extras] +crt = ["awscrt (==0.22.0)"] + +[[package]] +name = "certifi" +version = "2024.12.14" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, +] + +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev"] +markers = "platform_system == \"Windows\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dataclasses-json" +version = "0.6.7" +description = "Easily serialize dataclasses to and from JSON." +optional = false +python-versions = "<4.0,>=3.7" +groups = ["main"] +files = [ + {file = "dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a"}, + {file = "dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0"}, +] + +[package.dependencies] +marshmallow = ">=3.18.0,<4.0.0" +typing-inspect = ">=0.4.0,<1" + +[[package]] +name = "distro" +version = "1.9.0" +description = "Distro - an OS platform information API" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, + {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +description = "DNS toolkit" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, + {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, +] + +[package.extras] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "hypercorn (>=0.16.0)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "quart-trio (>=0.11.0)", "sphinx (>=7.2.0)", "sphinx-rtd-theme (>=2.0.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] +dnssec = ["cryptography (>=43)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=1.0.0)"] +idna = ["idna (>=3.7)"] +trio = ["trio (>=0.23)"] +wmi = ["wmi (>=1.5.1)"] + +[[package]] +name = "frozenlist" +version = "1.5.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")" +files = [ + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "httpx-sse" +version = "0.4.0" +description = "Consume Server-Sent Event (SSE) messages with HTTPX." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, + {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, +] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "jiter" +version = "0.8.2" +description = "Fast iterable JSON parser." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b"}, + {file = "jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff"}, + {file = "jiter-0.8.2-cp310-cp310-win32.whl", hash = "sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43"}, + {file = "jiter-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6"}, + {file = "jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44"}, + {file = "jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29"}, + {file = "jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e"}, + {file = "jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05"}, + {file = "jiter-0.8.2-cp313-cp313-win32.whl", hash = "sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a"}, + {file = "jiter-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865"}, + {file = "jiter-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca"}, + {file = "jiter-0.8.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0"}, + {file = "jiter-0.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9e1fa156ee9454642adb7e7234a383884452532bc9d53d5af2d18d98ada1d79c"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cf5dfa9956d96ff2efb0f8e9c7d055904012c952539a774305aaaf3abdf3d6c"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e52bf98c7e727dd44f7c4acb980cb988448faeafed8433c867888268899b298b"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a2ecaa3c23e7a7cf86d00eda3390c232f4d533cd9ddea4b04f5d0644faf642c5"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08d4c92bf480e19fc3f2717c9ce2aa31dceaa9163839a311424b6862252c943e"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99d9a1eded738299ba8e106c6779ce5c3893cffa0e32e4485d680588adae6db8"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d20be8b7f606df096e08b0b1b4a3c6f0515e8dac296881fe7461dfa0fb5ec817"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d33f94615fcaf872f7fd8cd98ac3b429e435c77619777e8a449d9d27e01134d1"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:317b25e98a35ffec5c67efe56a4e9970852632c810d35b34ecdd70cc0e47b3b6"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fc9043259ee430ecd71d178fccabd8c332a3bf1e81e50cae43cc2b28d19e4cb7"}, + {file = "jiter-0.8.2-cp38-cp38-win32.whl", hash = "sha256:fc5adda618205bd4678b146612ce44c3cbfdee9697951f2c0ffdef1f26d72b63"}, + {file = "jiter-0.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cd646c827b4f85ef4a78e4e58f4f5854fae0caf3db91b59f0d73731448a970c6"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e41e75344acef3fc59ba4765df29f107f309ca9e8eace5baacabd9217e52a5ee"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f22b16b35d5c1df9dfd58843ab2cd25e6bf15191f5a236bed177afade507bfc"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7200b8f7619d36aa51c803fd52020a2dfbea36ffec1b5e22cab11fd34d95a6d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70bf4c43652cc294040dbb62256c83c8718370c8b93dd93d934b9a7bf6c4f53c"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9d471356dc16f84ed48768b8ee79f29514295c7295cb41e1133ec0b2b8d637d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:859e8eb3507894093d01929e12e267f83b1d5f6221099d3ec976f0c995cb6bd9"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa58399c01db555346647a907b4ef6d4f584b123943be6ed5588c3f2359c9f4"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f2d5ed877f089862f4c7aacf3a542627c1496f972a34d0474ce85ee7d939c27"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:03c9df035d4f8d647f8c210ddc2ae0728387275340668fb30d2421e17d9a0841"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bd2a824d08d8977bb2794ea2682f898ad3d8837932e3a74937e93d62ecbb637"}, + {file = "jiter-0.8.2-cp39-cp39-win32.whl", hash = "sha256:ca29b6371ebc40e496995c94b988a101b9fbbed48a51190a4461fcb0a68b4a36"}, + {file = "jiter-0.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1c0dfbd1be3cbefc7510102370d86e35d1d53e5a93d48519688b1bf0f761160a"}, + {file = "jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d"}, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +groups = ["main"] +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpointer" +version = "3.0.0" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, +] + +[[package]] +name = "langchain" +version = "0.3.14" +description = "Building applications with LLMs through composability" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "langchain-0.3.14-py3-none-any.whl", hash = "sha256:5df9031702f7fe6c956e84256b4639a46d5d03a75be1ca4c1bc9479b358061a2"}, + {file = "langchain-0.3.14.tar.gz", hash = "sha256:4a5ae817b5832fa0e1fcadc5353fbf74bebd2f8e550294d4dc039f651ddcd3d1"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +langchain-core = ">=0.3.29,<0.4.0" +langchain-text-splitters = ">=0.3.3,<0.4.0" +langsmith = ">=0.1.17,<0.3" +numpy = {version = ">=1.26.2,<3", markers = "python_version >= \"3.12\""} +pydantic = ">=2.7.4,<3.0.0" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" + +[[package]] +name = "langchain-community" +version = "0.3.14" +description = "Community contributed LangChain integrations." +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "langchain_community-0.3.14-py3-none-any.whl", hash = "sha256:cc02a0abad0551edef3e565dff643386a5b2ee45b933b6d883d4a935b9649f3c"}, + {file = "langchain_community-0.3.14.tar.gz", hash = "sha256:d8ba0fe2dbb5795bff707684b712baa5ee379227194610af415ccdfdefda0479"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +dataclasses-json = ">=0.5.7,<0.7" +httpx-sse = ">=0.4.0,<0.5.0" +langchain = ">=0.3.14,<0.4.0" +langchain-core = ">=0.3.29,<0.4.0" +langsmith = ">=0.1.125,<0.3" +numpy = {version = ">=1.26.2,<3", markers = "python_version >= \"3.12\""} +pydantic-settings = ">=2.4.0,<3.0.0" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" + +[[package]] +name = "langchain-core" +version = "0.3.29" +description = "Building applications with LLMs through composability" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "langchain_core-0.3.29-py3-none-any.whl", hash = "sha256:817db1474871611a81105594a3e4d11704949661008e455a10e38ca9ff601a1a"}, + {file = "langchain_core-0.3.29.tar.gz", hash = "sha256:773d6aeeb612e7ce3d996c0be403433d8c6a91e77bbb7a7461c13e15cfbe5b06"}, +] + +[package.dependencies] +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.1.125,<0.3" +packaging = ">=23.2,<25" +pydantic = [ + {version = ">=2.5.2,<3.0.0", markers = "python_full_version < \"3.12.4\""}, + {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, +] +PyYAML = ">=5.3" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10.0.0" +typing-extensions = ">=4.7" + +[[package]] +name = "langchain-openai" +version = "0.2.14" +description = "An integration package connecting OpenAI and LangChain" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "langchain_openai-0.2.14-py3-none-any.whl", hash = "sha256:d232496662f79ece9a11caf7d798ba863e559c771bc366814f7688e0fe664fe8"}, + {file = "langchain_openai-0.2.14.tar.gz", hash = "sha256:7a514f309e356b182a337c0ed36ab3fbe34d9834a235a3b85cb7f91ae775d978"}, +] + +[package.dependencies] +langchain-core = ">=0.3.27,<0.4.0" +openai = ">=1.58.1,<2.0.0" +tiktoken = ">=0.7,<1" + +[[package]] +name = "langchain-text-splitters" +version = "0.3.5" +description = "LangChain text splitting utilities" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["main"] +files = [ + {file = "langchain_text_splitters-0.3.5-py3-none-any.whl", hash = "sha256:8c9b059827438c5fa8f327b4df857e307828a5ec815163c9b5c9569a3e82c8ee"}, + {file = "langchain_text_splitters-0.3.5.tar.gz", hash = "sha256:11cb7ca3694e5bdd342bc16d3875b7f7381651d4a53cbb91d34f22412ae16443"}, +] + +[package.dependencies] +langchain-core = ">=0.3.29,<0.4.0" + +[[package]] +name = "langgraph" +version = "0.2.62" +description = "Building stateful, multi-actor applications with LLMs" +optional = false +python-versions = "<4.0,>=3.9.0" +groups = ["main"] +files = [ + {file = "langgraph-0.2.62-py3-none-any.whl", hash = "sha256:51ae9e02a52485a837642eebe7ae43269af7d7305d62f8f69ac11589b2fbba26"}, + {file = "langgraph-0.2.62.tar.gz", hash = "sha256:0aac9fd55ffe669bc1312203e0f9ea2733c65cc276f196e7ff0d443cf4efbb89"}, +] + +[package.dependencies] +langchain-core = ">=0.2.43,<0.3.0 || >0.3.0,<0.3.1 || >0.3.1,<0.3.2 || >0.3.2,<0.3.3 || >0.3.3,<0.3.4 || >0.3.4,<0.3.5 || >0.3.5,<0.3.6 || >0.3.6,<0.3.7 || >0.3.7,<0.3.8 || >0.3.8,<0.3.9 || >0.3.9,<0.3.10 || >0.3.10,<0.3.11 || >0.3.11,<0.3.12 || >0.3.12,<0.3.13 || >0.3.13,<0.3.14 || >0.3.14,<0.3.15 || >0.3.15,<0.3.16 || >0.3.16,<0.3.17 || >0.3.17,<0.3.18 || >0.3.18,<0.3.19 || >0.3.19,<0.3.20 || >0.3.20,<0.3.21 || >0.3.21,<0.3.22 || >0.3.22,<0.4.0" +langgraph-checkpoint = ">=2.0.4,<3.0.0" +langgraph-sdk = ">=0.1.42,<0.2.0" + +[[package]] +name = "langgraph-checkpoint" +version = "2.0.9" +description = "Library with base interfaces for LangGraph checkpoint savers." +optional = false +python-versions = "<4.0.0,>=3.9.0" +groups = ["main"] +files = [ + {file = "langgraph_checkpoint-2.0.9-py3-none-any.whl", hash = "sha256:b546ed6129929b8941ac08af6ce5cd26c8ebe1d25883d3c48638d34ade91ce42"}, + {file = "langgraph_checkpoint-2.0.9.tar.gz", hash = "sha256:43847d7e385a2d9d2b684155920998e44ed42d2d1780719e4f6111fe3d6db84c"}, +] + +[package.dependencies] +langchain-core = ">=0.2.38,<0.4" +msgpack = ">=1.1.0,<2.0.0" + +[[package]] +name = "langgraph-sdk" +version = "0.1.51" +description = "SDK for interacting with LangGraph API" +optional = false +python-versions = "<4.0.0,>=3.9.0" +groups = ["main"] +files = [ + {file = "langgraph_sdk-0.1.51-py3-none-any.whl", hash = "sha256:ce2b58466d1700d06149782ed113157a8694a6d7932c801f316cd13fab315fe4"}, + {file = "langgraph_sdk-0.1.51.tar.gz", hash = "sha256:dea1363e72562cb1e82a2d156be8d5b1a69ff3fe8815eee0e1e7a2f423242ec1"}, +] + +[package.dependencies] +httpx = ">=0.25.2" +orjson = ">=3.10.1" + +[[package]] +name = "langsmith" +version = "0.1.147" +description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +optional = false +python-versions = "<4.0,>=3.8.1" +groups = ["main"] +files = [ + {file = "langsmith-0.1.147-py3-none-any.whl", hash = "sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15"}, + {file = "langsmith-0.1.147.tar.gz", hash = "sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a"}, +] + +[package.dependencies] +httpx = ">=0.23.0,<1" +orjson = {version = ">=3.9.14,<4.0.0", markers = "platform_python_implementation != \"PyPy\""} +pydantic = [ + {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""}, + {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, +] +requests = ">=2,<3" +requests-toolbelt = ">=1.0.0,<2.0.0" + +[package.extras] +langsmith-pyo3 = ["langsmith-pyo3 (>=0.1.0rc2,<0.2.0)"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "marshmallow" +version = "3.25.1" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "marshmallow-3.25.1-py3-none-any.whl", hash = "sha256:ec5d00d873ce473b7f2ffcb7104286a376c354cab0c2fa12f5573dab03e87210"}, + {file = "marshmallow-3.25.1.tar.gz", hash = "sha256:f4debda3bb11153d81ac34b0d582bf23053055ee11e791b54b4b35493468040a"}, +] + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["autodocsumm (==0.2.14)", "furo (==2024.8.6)", "sphinx (==8.1.3)", "sphinx-copybutton (==0.5.2)", "sphinx-issues (==5.0.0)", "sphinxext-opengraph (==0.9.1)"] +tests = ["pytest", "simplejson"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "mongoengine" +version = "0.29.1" +description = "MongoEngine is a Python Object-Document Mapper for working with MongoDB." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "mongoengine-0.29.1-py3-none-any.whl", hash = "sha256:9302ec407dd60f47f62cc07684d9f6cac87f1e93283c54203851788104d33df4"}, + {file = "mongoengine-0.29.1.tar.gz", hash = "sha256:3b43abaf2d5f0b7d39efc2b7d9e78f4d4a5dc7ce92b9889ba81a5a9b8dee3cf3"}, +] + +[package.dependencies] +pymongo = ">=3.4,<5.0" + +[package.extras] +test = ["Pillow (>=7.0.0)", "blinker", "coverage", "pytest", "pytest-cov"] + +[[package]] +name = "msgpack" +version = "1.1.0" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b"}, + {file = "msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044"}, + {file = "msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5"}, + {file = "msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88"}, + {file = "msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b"}, + {file = "msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b"}, + {file = "msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c"}, + {file = "msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc"}, + {file = "msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f"}, + {file = "msgpack-1.1.0-cp38-cp38-win32.whl", hash = "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b"}, + {file = "msgpack-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8"}, + {file = "msgpack-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd"}, + {file = "msgpack-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325"}, + {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, +] + +[[package]] +name = "multidict" +version = "6.1.0" +description = "multidict implementation" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +groups = ["main", "dev"] +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "numpy" +version = "2.2.1" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "numpy-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675"}, + {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308"}, + {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957"}, + {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf"}, + {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2"}, + {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528"}, + {file = "numpy-2.2.1-cp310-cp310-win32.whl", hash = "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95"}, + {file = "numpy-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb"}, + {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5"}, + {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73"}, + {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591"}, + {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8"}, + {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0"}, + {file = "numpy-2.2.1-cp311-cp311-win32.whl", hash = "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd"}, + {file = "numpy-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315"}, + {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355"}, + {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7"}, + {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d"}, + {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51"}, + {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046"}, + {file = "numpy-2.2.1-cp312-cp312-win32.whl", hash = "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2"}, + {file = "numpy-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e"}, + {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348"}, + {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59"}, + {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af"}, + {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51"}, + {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716"}, + {file = "numpy-2.2.1-cp313-cp313-win32.whl", hash = "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e"}, + {file = "numpy-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008"}, + {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84"}, + {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631"}, + {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d"}, + {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5"}, + {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71"}, + {file = "numpy-2.2.1-cp313-cp313t-win32.whl", hash = "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2"}, + {file = "numpy-2.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800"}, + {file = "numpy-2.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e"}, + {file = "numpy-2.2.1.tar.gz", hash = "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918"}, +] + +[[package]] +name = "openai" +version = "1.59.7" +description = "The official Python library for the openai API" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "openai-1.59.7-py3-none-any.whl", hash = "sha256:cfa806556226fa96df7380ab2e29814181d56fea44738c2b0e581b462c268692"}, + {file = "openai-1.59.7.tar.gz", hash = "sha256:043603def78c00befb857df9f0a16ee76a3af5984ba40cb7ee5e2f40db4646bf"}, +] + +[package.dependencies] +anyio = ">=3.5.0,<5" +distro = ">=1.7.0,<2" +httpx = ">=0.23.0,<1" +jiter = ">=0.4.0,<1" +pydantic = ">=1.9.0,<3" +sniffio = "*" +tqdm = ">4" +typing-extensions = ">=4.11,<5" + +[package.extras] +datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] +realtime = ["websockets (>=13,<15)"] + +[[package]] +name = "orjson" +version = "3.10.14" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "orjson-3.10.14-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:849ea7845a55f09965826e816cdc7689d6cf74fe9223d79d758c714af955bcb6"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5947b139dfa33f72eecc63f17e45230a97e741942955a6c9e650069305eb73d"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cde6d76910d3179dae70f164466692f4ea36da124d6fb1a61399ca589e81d69a"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6dfbaeb7afa77ca608a50e2770a0461177b63a99520d4928e27591b142c74b1"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa45e489ef80f28ff0e5ba0a72812b8cfc7c1ef8b46a694723807d1b07c89ebb"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5007abfdbb1d866e2aa8990bd1c465f0f6da71d19e695fc278282be12cffa5"}, + {file = "orjson-3.10.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b49e2af011c84c3f2d541bb5cd1e3c7c2df672223e7e3ea608f09cf295e5f8a"}, + {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:164ac155109226b3a2606ee6dda899ccfbe6e7e18b5bdc3fbc00f79cc074157d"}, + {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6b1225024cf0ef5d15934b5ffe9baf860fe8bc68a796513f5ea4f5056de30bca"}, + {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d6546e8073dc382e60fcae4a001a5a1bc46da5eab4a4878acc2d12072d6166d5"}, + {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9f1d2942605c894162252d6259b0121bf1cb493071a1ea8cb35d79cb3e6ac5bc"}, + {file = "orjson-3.10.14-cp310-cp310-win32.whl", hash = "sha256:397083806abd51cf2b3bbbf6c347575374d160331a2d33c5823e22249ad3118b"}, + {file = "orjson-3.10.14-cp310-cp310-win_amd64.whl", hash = "sha256:fa18f949d3183a8d468367056be989666ac2bef3a72eece0bade9cdb733b3c28"}, + {file = "orjson-3.10.14-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f506fd666dd1ecd15a832bebc66c4df45c1902fd47526292836c339f7ba665a9"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efe5fd254cfb0eeee13b8ef7ecb20f5d5a56ddda8a587f3852ab2cedfefdb5f6"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ddc8c866d7467f5ee2991397d2ea94bcf60d0048bdd8ca555740b56f9042725"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af8e42ae4363773658b8d578d56dedffb4f05ceeb4d1d4dd3fb504950b45526"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84dd83110503bc10e94322bf3ffab8bc49150176b49b4984dc1cce4c0a993bf9"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5bfc0399cd4811bf10ec7a759c7ab0cd18080956af8ee138097d5b5296a95"}, + {file = "orjson-3.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868943660fb2a1e6b6b965b74430c16a79320b665b28dd4511d15ad5038d37d5"}, + {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33449c67195969b1a677533dee9d76e006001213a24501333624623e13c7cc8e"}, + {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e4c9f60f9fb0b5be66e416dcd8c9d94c3eabff3801d875bdb1f8ffc12cf86905"}, + {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0de4d6315cfdbd9ec803b945c23b3a68207fd47cbe43626036d97e8e9561a436"}, + {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:83adda3db595cb1a7e2237029b3249c85afbe5c747d26b41b802e7482cb3933e"}, + {file = "orjson-3.10.14-cp311-cp311-win32.whl", hash = "sha256:998019ef74a4997a9d741b1473533cdb8faa31373afc9849b35129b4b8ec048d"}, + {file = "orjson-3.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:9d034abdd36f0f0f2240f91492684e5043d46f290525d1117712d5b8137784eb"}, + {file = "orjson-3.10.14-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2ad4b7e367efba6dc3f119c9a0fcd41908b7ec0399a696f3cdea7ec477441b09"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496286fc85e93ce0f71cc84fc1c42de2decf1bf494094e188e27a53694777a7"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c7f189bbfcded40e41a6969c1068ba305850ba016665be71a217918931416fbf"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cc8204f0b75606869c707da331058ddf085de29558b516fc43c73ee5ee2aadb"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deaa2899dff7f03ab667e2ec25842d233e2a6a9e333efa484dfe666403f3501c"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1c3ea52642c9714dc6e56de8a451a066f6d2707d273e07fe8a9cc1ba073813d"}, + {file = "orjson-3.10.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d3f9ed72e7458ded9a1fb1b4d4ed4c4fdbaf82030ce3f9274b4dc1bff7ace2b"}, + {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:07520685d408a2aba514c17ccc16199ff2934f9f9e28501e676c557f454a37fe"}, + {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:76344269b550ea01488d19a2a369ab572c1ac4449a72e9f6ac0d70eb1cbfb953"}, + {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e2979d0f2959990620f7e62da6cd954e4620ee815539bc57a8ae46e2dacf90e3"}, + {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03f61ca3674555adcb1aa717b9fc87ae936aa7a63f6aba90a474a88701278780"}, + {file = "orjson-3.10.14-cp312-cp312-win32.whl", hash = "sha256:d5075c54edf1d6ad81d4c6523ce54a748ba1208b542e54b97d8a882ecd810fd1"}, + {file = "orjson-3.10.14-cp312-cp312-win_amd64.whl", hash = "sha256:175cafd322e458603e8ce73510a068d16b6e6f389c13f69bf16de0e843d7d406"}, + {file = "orjson-3.10.14-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0905ca08a10f7e0e0c97d11359609300eb1437490a7f32bbaa349de757e2e0c7"}, + {file = "orjson-3.10.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92d13292249f9f2a3e418cbc307a9fbbef043c65f4bd8ba1eb620bc2aaba3d15"}, + {file = "orjson-3.10.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90937664e776ad316d64251e2fa2ad69265e4443067668e4727074fe39676414"}, + {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9ed3d26c4cb4f6babaf791aa46a029265850e80ec2a566581f5c2ee1a14df4f1"}, + {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:56ee546c2bbe9599aba78169f99d1dc33301853e897dbaf642d654248280dc6e"}, + {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:901e826cb2f1bdc1fcef3ef59adf0c451e8f7c0b5deb26c1a933fb66fb505eae"}, + {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:26336c0d4b2d44636e1e1e6ed1002f03c6aae4a8a9329561c8883f135e9ff010"}, + {file = "orjson-3.10.14-cp313-cp313-win32.whl", hash = "sha256:e2bc525e335a8545c4e48f84dd0328bc46158c9aaeb8a1c2276546e94540ea3d"}, + {file = "orjson-3.10.14-cp313-cp313-win_amd64.whl", hash = "sha256:eca04dfd792cedad53dc9a917da1a522486255360cb4e77619343a20d9f35364"}, + {file = "orjson-3.10.14-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9a0fba3b8a587a54c18585f077dcab6dd251c170d85cfa4d063d5746cd595a0f"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:175abf3d20e737fec47261d278f95031736a49d7832a09ab684026528c4d96db"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29ca1a93e035d570e8b791b6c0feddd403c6a5388bfe870bf2aa6bba1b9d9b8e"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f77202c80e8ab5a1d1e9faf642343bee5aaf332061e1ada4e9147dbd9eb00c46"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e2ec73b7099b6a29b40a62e08a23b936423bd35529f8f55c42e27acccde7954"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d1679df9f9cd9504f8dff24555c1eaabba8aad7f5914f28dab99e3c2552c9d"}, + {file = "orjson-3.10.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:691ab9a13834310a263664313e4f747ceb93662d14a8bdf20eb97d27ed488f16"}, + {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b11ed82054fce82fb74cea33247d825d05ad6a4015ecfc02af5fbce442fbf361"}, + {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:e70a1d62b8288677d48f3bea66c21586a5f999c64ecd3878edb7393e8d1b548d"}, + {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:16642f10c1ca5611251bd835de9914a4b03095e28a34c8ba6a5500b5074338bd"}, + {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3871bad546aa66c155e3f36f99c459780c2a392d502a64e23fb96d9abf338511"}, + {file = "orjson-3.10.14-cp38-cp38-win32.whl", hash = "sha256:0293a88815e9bb5c90af4045f81ed364d982f955d12052d989d844d6c4e50945"}, + {file = "orjson-3.10.14-cp38-cp38-win_amd64.whl", hash = "sha256:6169d3868b190d6b21adc8e61f64e3db30f50559dfbdef34a1cd6c738d409dfc"}, + {file = "orjson-3.10.14-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:06d4ec218b1ec1467d8d64da4e123b4794c781b536203c309ca0f52819a16c03"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962c2ec0dcaf22b76dee9831fdf0c4a33d4bf9a257a2bc5d4adc00d5c8ad9034"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:21d3be4132f71ef1360385770474f29ea1538a242eef72ac4934fe142800e37f"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28ed60597c149a9e3f5ad6dd9cebaee6fb2f0e3f2d159a4a2b9b862d4748860"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e947f70167fe18469f2023644e91ab3d24f9aed69a5e1c78e2c81b9cea553fb"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64410696c97a35af2432dea7bdc4ce32416458159430ef1b4beb79fd30093ad6"}, + {file = "orjson-3.10.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8050a5d81c022561ee29cd2739de5b4445f3c72f39423fde80a63299c1892c52"}, + {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b49a28e30d3eca86db3fe6f9b7f4152fcacbb4a467953cd1b42b94b479b77956"}, + {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ca041ad20291a65d853a9523744eebc3f5a4b2f7634e99f8fe88320695ddf766"}, + {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d313a2998b74bb26e9e371851a173a9b9474764916f1fc7971095699b3c6e964"}, + {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7796692136a67b3e301ef9052bde6fe8e7bd5200da766811a3a608ffa62aaff0"}, + {file = "orjson-3.10.14-cp39-cp39-win32.whl", hash = "sha256:eee4bc767f348fba485ed9dc576ca58b0a9eac237f0e160f7a59bce628ed06b3"}, + {file = "orjson-3.10.14-cp39-cp39-win_amd64.whl", hash = "sha256:96a1c0ee30fb113b3ae3c748fd75ca74a157ff4c58476c47db4d61518962a011"}, + {file = "orjson-3.10.14.tar.gz", hash = "sha256:cf31f6f071a6b8e7aa1ead1fa27b935b48d00fbfa6a28ce856cfff2d5dd68eed"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["main", "dev"] +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "propcache" +version = "0.2.1" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, + {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, + {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, + {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, + {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, + {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, + {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, + {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, + {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, + {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, + {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, + {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, + {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, +] + +[[package]] +name = "pydantic" +version = "2.10.5" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, + {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pydantic-settings" +version = "2.7.1" +description = "Settings management using Pydantic" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pydantic_settings-2.7.1-py3-none-any.whl", hash = "sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd"}, + {file = "pydantic_settings-2.7.1.tar.gz", hash = "sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93"}, +] + +[package.dependencies] +pydantic = ">=2.7.0" +python-dotenv = ">=0.21.0" + +[package.extras] +azure-key-vault = ["azure-identity (>=1.16.0)", "azure-keyvault-secrets (>=4.8.0)"] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pymongo" +version = "4.10.1" +description = "Python driver for MongoDB " +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pymongo-4.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e699aa68c4a7dea2ab5a27067f7d3e08555f8d2c0dc6a0c8c60cfd9ff2e6a4b1"}, + {file = "pymongo-4.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:70645abc714f06b4ad6b72d5bf73792eaad14e3a2cfe29c62a9c81ada69d9e4b"}, + {file = "pymongo-4.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae2fd94c9fe048c94838badcc6e992d033cb9473eb31e5710b3707cba5e8aee2"}, + {file = "pymongo-4.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ded27a4a5374dae03a92e084a60cdbcecd595306555bda553b833baf3fc4868"}, + {file = "pymongo-4.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ecc2455e3974a6c429687b395a0bc59636f2d6aedf5785098cf4e1f180f1c71"}, + {file = "pymongo-4.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920fee41f7d0259f5f72c1f1eb331bc26ffbdc952846f9bd8c3b119013bb52c"}, + {file = "pymongo-4.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0a15665b2d6cf364f4cd114d62452ce01d71abfbd9c564ba8c74dcd7bbd6822"}, + {file = "pymongo-4.10.1-cp310-cp310-win32.whl", hash = "sha256:29e1c323c28a4584b7095378ff046815e39ff82cdb8dc4cc6dfe3acf6f9ad1f8"}, + {file = "pymongo-4.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:88dc4aa45f8744ccfb45164aedb9a4179c93567bbd98a33109d7dc400b00eb08"}, + {file = "pymongo-4.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:57ee6becae534e6d47848c97f6a6dff69e3cce7c70648d6049bd586764febe59"}, + {file = "pymongo-4.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6f437a612f4d4f7aca1812311b1e84477145e950fdafe3285b687ab8c52541f3"}, + {file = "pymongo-4.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a970fd3117ab40a4001c3dad333bbf3c43687d90f35287a6237149b5ccae61d"}, + {file = "pymongo-4.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c4d0e7cd08ef9f8fbf2d15ba281ed55604368a32752e476250724c3ce36c72e"}, + {file = "pymongo-4.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca6f700cff6833de4872a4e738f43123db34400173558b558ae079b5535857a4"}, + {file = "pymongo-4.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cec237c305fcbeef75c0bcbe9d223d1e22a6e3ba1b53b2f0b79d3d29c742b45b"}, + {file = "pymongo-4.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3337804ea0394a06e916add4e5fac1c89902f1b6f33936074a12505cab4ff05"}, + {file = "pymongo-4.10.1-cp311-cp311-win32.whl", hash = "sha256:778ac646ce6ac1e469664062dfe9ae1f5c9961f7790682809f5ec3b8fda29d65"}, + {file = "pymongo-4.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:9df4ab5594fdd208dcba81be815fa8a8a5d8dedaf3b346cbf8b61c7296246a7a"}, + {file = "pymongo-4.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fbedc4617faa0edf423621bb0b3b8707836687161210d470e69a4184be9ca011"}, + {file = "pymongo-4.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7bd26b2aec8ceeb95a5d948d5cc0f62b0eb6d66f3f4230705c1e3d3d2c04ec76"}, + {file = "pymongo-4.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb104c3c2a78d9d85571c8ac90ec4f95bca9b297c6eee5ada71fabf1129e1674"}, + {file = "pymongo-4.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4924355245a9c79f77b5cda2db36e0f75ece5faf9f84d16014c0a297f6d66786"}, + {file = "pymongo-4.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:11280809e5dacaef4971113f0b4ff4696ee94cfdb720019ff4fa4f9635138252"}, + {file = "pymongo-4.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5d55f2a82e5eb23795f724991cac2bffbb1c0f219c0ba3bf73a835f97f1bb2e"}, + {file = "pymongo-4.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e974ab16a60be71a8dfad4e5afccf8dd05d41c758060f5d5bda9a758605d9a5d"}, + {file = "pymongo-4.10.1-cp312-cp312-win32.whl", hash = "sha256:544890085d9641f271d4f7a47684450ed4a7344d6b72d5968bfae32203b1bb7c"}, + {file = "pymongo-4.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:dcc07b1277e8b4bf4d7382ca133850e323b7ab048b8353af496d050671c7ac52"}, + {file = "pymongo-4.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:90bc6912948dfc8c363f4ead54d54a02a15a7fee6cfafb36dc450fc8962d2cb7"}, + {file = "pymongo-4.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:594dd721b81f301f33e843453638e02d92f63c198358e5a0fa8b8d0b1218dabc"}, + {file = "pymongo-4.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0783e0c8e95397c84e9cf8ab092ab1e5dd7c769aec0ef3a5838ae7173b98dea0"}, + {file = "pymongo-4.10.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fb6a72e88df46d1c1040fd32cd2d2c5e58722e5d3e31060a0393f04ad3283de"}, + {file = "pymongo-4.10.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e3a593333e20c87415420a4fb76c00b7aae49b6361d2e2205b6fece0563bf40"}, + {file = "pymongo-4.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72e2ace7456167c71cfeca7dcb47bd5dceda7db2231265b80fc625c5e8073186"}, + {file = "pymongo-4.10.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ad05eb9c97e4f589ed9e74a00fcaac0d443ccd14f38d1258eb4c39a35dd722b"}, + {file = "pymongo-4.10.1-cp313-cp313-win32.whl", hash = "sha256:ee4c86d8e6872a61f7888fc96577b0ea165eb3bdb0d841962b444fa36001e2bb"}, + {file = "pymongo-4.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:45ee87a4e12337353242bc758accc7fb47a2f2d9ecc0382a61e64c8f01e86708"}, + {file = "pymongo-4.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:442ca247f53ad24870a01e80a71cd81b3f2318655fd9d66748ee2bd1b1569d9e"}, + {file = "pymongo-4.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:23e1d62df5592518204943b507be7b457fb8a4ad95a349440406fd42db5d0923"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6131bc6568b26e7495a9f3ef2b1700566b76bbecd919f4472bfe90038a61f425"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdeba88c540c9ed0338c0b2062d9f81af42b18d6646b3e6dda05cf6edd46ada9"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15a624d752dd3c89d10deb0ef6431559b6d074703cab90a70bb849ece02adc6b"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba164e73fdade9b4614a2497321c5b7512ddf749ed508950bdecc28d8d76a2d9"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9235fa319993405ae5505bf1333366388add2e06848db7b3deee8f990b69808e"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e4a65567bd17d19f03157c7ec992c6530eafd8191a4e5ede25566792c4fe3fa2"}, + {file = "pymongo-4.10.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f1945d48fb9b8a87d515da07f37e5b2c35b364a435f534c122e92747881f4a7c"}, + {file = "pymongo-4.10.1-cp38-cp38-win32.whl", hash = "sha256:345f8d340802ebce509f49d5833cc913da40c82f2e0daf9f60149cacc9ca680f"}, + {file = "pymongo-4.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:3a70d5efdc0387ac8cd50f9a5f379648ecfc322d14ec9e1ba8ec957e5d08c372"}, + {file = "pymongo-4.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15b1492cc5c7cd260229590be7218261e81684b8da6d6de2660cf743445500ce"}, + {file = "pymongo-4.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95207503c41b97e7ecc7e596d84a61f441b4935f11aa8332828a754e7ada8c82"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb99f003c720c6d83be02c8f1a7787c22384a8ca9a4181e406174db47a048619"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f2bc1ee4b1ca2c4e7e6b7a5e892126335ec8d9215bcd3ac2fe075870fefc3358"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:93a0833c10a967effcd823b4e7445ec491f0bf6da5de0ca33629c0528f42b748"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f56707497323150bd2ed5d63067f4ffce940d0549d4ea2dfae180deec7f9363"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:409ab7d6c4223e5c85881697f365239dd3ed1b58f28e4124b846d9d488c86880"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dac78a650dc0637d610905fd06b5fa6419ae9028cf4d04d6a2657bc18a66bbce"}, + {file = "pymongo-4.10.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1ec3fa88b541e0481aff3c35194c9fac96e4d57ec5d1c122376000eb28c01431"}, + {file = "pymongo-4.10.1-cp39-cp39-win32.whl", hash = "sha256:e0e961923a7b8a1c801c43552dcb8153e45afa41749d9efbd3a6d33f45489f7a"}, + {file = "pymongo-4.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:dabe8bf1ad644e6b93f3acf90ff18536d94538ca4d27e583c6db49889e98e48f"}, + {file = "pymongo-4.10.1.tar.gz", hash = "sha256:a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330"}, +] + +[package.dependencies] +dnspython = ">=1.16.0,<3.0.0" + +[package.extras] +aws = ["pymongo-auth-aws (>=1.1.0,<2.0.0)"] +docs = ["furo (==2023.9.10)", "readthedocs-sphinx-search (>=0.3,<1.0)", "sphinx (>=5.3,<8)", "sphinx-autobuild (>=2020.9.1)", "sphinx-rtd-theme (>=2,<3)", "sphinxcontrib-shellcheck (>=1,<2)"] +encryption = ["certifi", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.10.0,<2.0.0)"] +gssapi = ["pykerberos", "winkerberos (>=0.5.0)"] +ocsp = ["certifi", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"] +snappy = ["python-snappy"] +test = ["pytest (>=8.2)", "pytest-asyncio (>=0.24.0)"] +zstd = ["zstandard"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pytz" +version = "2024.2" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "rich" +version = "13.9.4" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.8.0" +groups = ["main"] +files = [ + {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, + {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "s3transfer" +version = "0.10.4" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, + {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, +] + +[package.dependencies] +botocore = ">=1.33.2,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.37" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6f5d254a22394847245f411a2956976401e84da4288aa70cbcd5190744062c1"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41296bbcaa55ef5fdd32389a35c710133b097f7b2609d8218c0eabded43a1d84"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bedee60385c1c0411378cbd4dc486362f5ee88deceea50002772912d798bb00f"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6c67415258f9f3c69867ec02fea1bf6508153709ecbd731a982442a590f2b7e4"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-win32.whl", hash = "sha256:650dcb70739957a492ad8acff65d099a9586b9b8920e3507ca61ec3ce650bb72"}, + {file = "SQLAlchemy-2.0.37-cp310-cp310-win_amd64.whl", hash = "sha256:93d1543cd8359040c02b6614421c8e10cd7a788c40047dbc507ed46c29ae5636"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:78361be6dc9073ed17ab380985d1e45e48a642313ab68ab6afa2457354ff692c"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b661b49d0cb0ab311a189b31e25576b7ac3e20783beb1e1817d72d9d02508bf5"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d57bafbab289e147d064ffbd5cca2d7b1394b63417c0636cea1f2e93d16eb9e8"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fa2c0913f02341d25fb858e4fb2031e6b0813494cca1ba07d417674128ce11b"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9df21b8d9e5c136ea6cde1c50d2b1c29a2b5ff2b1d610165c23ff250e0704087"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db18ff6b8c0f1917f8b20f8eca35c28bbccb9f83afa94743e03d40203ed83de9"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-win32.whl", hash = "sha256:46954173612617a99a64aee103bcd3f078901b9a8dcfc6ae80cbf34ba23df989"}, + {file = "SQLAlchemy-2.0.37-cp311-cp311-win_amd64.whl", hash = "sha256:7b7e772dc4bc507fdec4ee20182f15bd60d2a84f1e087a8accf5b5b7a0dcf2ba"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2952748ecd67ed3b56773c185e85fc084f6bdcdec10e5032a7c25a6bc7d682ef"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3151822aa1db0eb5afd65ccfafebe0ef5cda3a7701a279c8d0bf17781a793bb4"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaa8039b6d20137a4e02603aba37d12cd2dde7887500b8855356682fc33933f4"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cdba1f73b64530c47b27118b7053b8447e6d6f3c8104e3ac59f3d40c33aa9fd"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1b2690456528a87234a75d1a1644cdb330a6926f455403c8e4f6cad6921f9098"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf5ae8a9dcf657fd72144a7fd01f243236ea39e7344e579a121c4205aedf07bb"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-win32.whl", hash = "sha256:ea308cec940905ba008291d93619d92edaf83232ec85fbd514dcb329f3192761"}, + {file = "SQLAlchemy-2.0.37-cp312-cp312-win_amd64.whl", hash = "sha256:635d8a21577341dfe4f7fa59ec394b346da12420b86624a69e466d446de16aff"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8c4096727193762e72ce9437e2a86a110cf081241919ce3fab8e89c02f6b6658"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e4fb5ac86d8fe8151966814f6720996430462e633d225497566b3996966b9bdb"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e56a139bfe136a22c438478a86f8204c1eb5eed36f4e15c4224e4b9db01cb3e4"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f95fc8e3f34b5f6b3effb49d10ac97c569ec8e32f985612d9b25dd12d0d2e94"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c505edd429abdfe3643fa3b2e83efb3445a34a9dc49d5f692dd087be966020e0"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:12b0f1ec623cccf058cf21cb544f0e74656618165b083d78145cafde156ea7b6"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-win32.whl", hash = "sha256:293f9ade06b2e68dd03cfb14d49202fac47b7bb94bffcff174568c951fbc7af2"}, + {file = "SQLAlchemy-2.0.37-cp313-cp313-win_amd64.whl", hash = "sha256:d70f53a0646cc418ca4853da57cf3ddddbccb8c98406791f24426f2dd77fd0e2"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:44f569d0b1eb82301b92b72085583277316e7367e038d97c3a1a899d9a05e342"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2eae3423e538c10d93ae3e87788c6a84658c3ed6db62e6a61bb9495b0ad16bb"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfff7be361048244c3aa0f60b5e63221c5e0f0e509f4e47b8910e22b57d10ae7"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:5bc3339db84c5fb9130ac0e2f20347ee77b5dd2596ba327ce0d399752f4fce39"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:84b9f23b0fa98a6a4b99d73989350a94e4a4ec476b9a7dfe9b79ba5939f5e80b"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-win32.whl", hash = "sha256:51bc9cfef83e0ac84f86bf2b10eaccb27c5a3e66a1212bef676f5bee6ef33ebb"}, + {file = "SQLAlchemy-2.0.37-cp37-cp37m-win_amd64.whl", hash = "sha256:8e47f1af09444f87c67b4f1bb6231e12ba6d4d9f03050d7fc88df6d075231a49"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6b788f14c5bb91db7f468dcf76f8b64423660a05e57fe277d3f4fad7b9dcb7ce"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521ef85c04c33009166777c77e76c8a676e2d8528dc83a57836b63ca9c69dcd1"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75311559f5c9881a9808eadbeb20ed8d8ba3f7225bef3afed2000c2a9f4d49b9"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cce918ada64c956b62ca2c2af59b125767097ec1dca89650a6221e887521bfd7"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9d087663b7e1feabea8c578d6887d59bb00388158e8bff3a76be11aa3f748ca2"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cf95a60b36997dad99692314c4713f141b61c5b0b4cc5c3426faad570b31ca01"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-win32.whl", hash = "sha256:d75ead7dd4d255068ea0f21492ee67937bd7c90964c8f3c2bea83c7b7f81b95f"}, + {file = "SQLAlchemy-2.0.37-cp38-cp38-win_amd64.whl", hash = "sha256:74bbd1d0a9bacf34266a7907d43260c8d65d31d691bb2356f41b17c2dca5b1d0"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:648ec5acf95ad59255452ef759054f2176849662af4521db6cb245263ae4aa33"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:35bd2df269de082065d4b23ae08502a47255832cc3f17619a5cea92ce478b02b"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f581d365af9373a738c49e0c51e8b18e08d8a6b1b15cc556773bcd8a192fa8b"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82df02816c14f8dc9f4d74aea4cb84a92f4b0620235daa76dde002409a3fbb5a"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94b564e38b344d3e67d2e224f0aec6ba09a77e4582ced41e7bfd0f757d926ec9"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:955a2a765aa1bd81aafa69ffda179d4fe3e2a3ad462a736ae5b6f387f78bfeb8"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-win32.whl", hash = "sha256:03f0528c53ca0b67094c4764523c1451ea15959bbf0a8a8a3096900014db0278"}, + {file = "SQLAlchemy-2.0.37-cp39-cp39-win_amd64.whl", hash = "sha256:4b12885dc85a2ab2b7d00995bac6d967bffa8594123b02ed21e8eb2205a7584b"}, + {file = "SQLAlchemy-2.0.37-py3-none-any.whl", hash = "sha256:a8998bf9f8658bd3839cbc44ddbe982955641863da0c1efe5b00c1ab4f5c16b1"}, + {file = "sqlalchemy-2.0.37.tar.gz", hash = "sha256:12b28d99a9c14eaf4055810df1001557176716de0167b91026e648e65229bffb"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "tenacity" +version = "9.0.0" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539"}, + {file = "tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b"}, +] + +[package.extras] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] + +[[package]] +name = "tiktoken" +version = "0.8.0" +description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "tiktoken-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b07e33283463089c81ef1467180e3e00ab00d46c2c4bbcef0acab5f771d6695e"}, + {file = "tiktoken-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9269348cb650726f44dd3bbb3f9110ac19a8dcc8f54949ad3ef652ca22a38e21"}, + {file = "tiktoken-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e13f37bc4ef2d012731e93e0fef21dc3b7aea5bb9009618de9a4026844e560"}, + {file = "tiktoken-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f13d13c981511331eac0d01a59b5df7c0d4060a8be1e378672822213da51e0a2"}, + {file = "tiktoken-0.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6b2ddbc79a22621ce8b1166afa9f9a888a664a579350dc7c09346a3b5de837d9"}, + {file = "tiktoken-0.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d8c2d0e5ba6453a290b86cd65fc51fedf247e1ba170191715b049dac1f628005"}, + {file = "tiktoken-0.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d622d8011e6d6f239297efa42a2657043aaed06c4f68833550cac9e9bc723ef1"}, + {file = "tiktoken-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2efaf6199717b4485031b4d6edb94075e4d79177a172f38dd934d911b588d54a"}, + {file = "tiktoken-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5637e425ce1fc49cf716d88df3092048359a4b3bbb7da762840426e937ada06d"}, + {file = "tiktoken-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fb0e352d1dbe15aba082883058b3cce9e48d33101bdaac1eccf66424feb5b47"}, + {file = "tiktoken-0.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:56edfefe896c8f10aba372ab5706b9e3558e78db39dd497c940b47bf228bc419"}, + {file = "tiktoken-0.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:326624128590def898775b722ccc327e90b073714227175ea8febbc920ac0a99"}, + {file = "tiktoken-0.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:881839cfeae051b3628d9823b2e56b5cc93a9e2efb435f4cf15f17dc45f21586"}, + {file = "tiktoken-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fe9399bdc3f29d428f16a2f86c3c8ec20be3eac5f53693ce4980371c3245729b"}, + {file = "tiktoken-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a58deb7075d5b69237a3ff4bb51a726670419db6ea62bdcd8bd80c78497d7ab"}, + {file = "tiktoken-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2908c0d043a7d03ebd80347266b0e58440bdef5564f84f4d29fb235b5df3b04"}, + {file = "tiktoken-0.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:294440d21a2a51e12d4238e68a5972095534fe9878be57d905c476017bff99fc"}, + {file = "tiktoken-0.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:d8f3192733ac4d77977432947d563d7e1b310b96497acd3c196c9bddb36ed9db"}, + {file = "tiktoken-0.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:02be1666096aff7da6cbd7cdaa8e7917bfed3467cd64b38b1f112e96d3b06a24"}, + {file = "tiktoken-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94ff53c5c74b535b2cbf431d907fc13c678bbd009ee633a2aca269a04389f9a"}, + {file = "tiktoken-0.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b231f5e8982c245ee3065cd84a4712d64692348bc609d84467c57b4b72dcbc5"}, + {file = "tiktoken-0.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4177faa809bd55f699e88c96d9bb4635d22e3f59d635ba6fd9ffedf7150b9953"}, + {file = "tiktoken-0.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5376b6f8dc4753cd81ead935c5f518fa0fbe7e133d9e25f648d8c4dabdd4bad7"}, + {file = "tiktoken-0.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:18228d624807d66c87acd8f25fc135665617cab220671eb65b50f5d70fa51f69"}, + {file = "tiktoken-0.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17807445f0cf1f25771c9d86496bd8b5c376f7419912519699f3cc4dc5c12e"}, + {file = "tiktoken-0.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:886f80bd339578bbdba6ed6d0567a0d5c6cfe198d9e587ba6c447654c65b8edc"}, + {file = "tiktoken-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6adc8323016d7758d6de7313527f755b0fc6c72985b7d9291be5d96d73ecd1e1"}, + {file = "tiktoken-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b591fb2b30d6a72121a80be24ec7a0e9eb51c5500ddc7e4c2496516dd5e3816b"}, + {file = "tiktoken-0.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:845287b9798e476b4d762c3ebda5102be87ca26e5d2c9854002825d60cdb815d"}, + {file = "tiktoken-0.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:1473cfe584252dc3fa62adceb5b1c763c1874e04511b197da4e6de51d6ce5a02"}, + {file = "tiktoken-0.8.0.tar.gz", hash = "sha256:9ccbb2740f24542534369c5635cfd9b2b3c2490754a78ac8831d99f89f94eeb2"}, +] + +[package.dependencies] +regex = ">=2022.1.18" +requests = ">=2.26.0" + +[package.extras] +blobfile = ["blobfile (>=2)"] + +[[package]] +name = "tqdm" +version = "4.67.1" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, + {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, +] + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[[package]] +name = "urllib3" +version = "2.3.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "yarl" +version = "1.18.3" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, + {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, + {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, + {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, + {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, + {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, + {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, + {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, + {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, + {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, + {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, + {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, + {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.0" + +[metadata] +lock-version = "2.1" +python-versions = ">=3.12, <4.0" +content-hash = "2cc3fcbe69abb1cb06b367e1c52eaf418e71df4a8ca38634b48d3d0c8b69a2ed" diff --git a/news-scraper-agent/pyproject.toml b/news-scraper-agent/pyproject.toml new file mode 100644 index 0000000..fd8061d --- /dev/null +++ b/news-scraper-agent/pyproject.toml @@ -0,0 +1,35 @@ +[project] +name = "news-scraper-agent" +version = "0.1.0" +description = "" +authors = [ + { name = "hyejungg", email = "kimhyejung12@naver.com" }, + { name = "Lee Jongwoo", email = "jongwoo328@gmail.com" } +] +readme = "README.md" +package-mode = false +requires-python = ">=3.12, <4.0" +dependencies = [ + "langgraph (>=0.2.35, <0.3.0)", + "langsmith (>=0.1.134, <0.2.0)", + "langchain-openai (>=0.2.2, <0.3.0)", + "langchain (>=0.3.3, <0.4.0)", + "python-dotenv (>=1.0.1, <2.0.0)", + "typing-extensions (>=4.12.2, <5.0.0)", + "mongoengine (>=0.29.1, <0.30.0)", + "pytz (>=2024.2)", + "langchain-community (>=0.3.3, <0.4.0)", + "boto3 (>=1.35.63, <2.0.0)", + "rich (>=13.9.4, <14.0.0)", + "tenacity (>=9.0.0, <10.0.0)" +] + +[tool.poetry.requires-plugins] +poetry-plugin-export = ">=1.8" + +[tool.poetry.group.dev.dependencies] +black = "^24.10.0" + +[build-system] +requires = ["poetry-core>=2.0.0, <3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/news-scraper-agent/requirements.txt b/news-scraper-agent/requirements.txt new file mode 100644 index 0000000..f676da3 --- /dev/null +++ b/news-scraper-agent/requirements.txt @@ -0,0 +1,1429 @@ +aiohappyeyeballs==2.4.4 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745 \ + --hash=sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8 +aiohttp==3.11.11 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f \ + --hash=sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33 \ + --hash=sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1 \ + --hash=sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665 \ + --hash=sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9 \ + --hash=sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e \ + --hash=sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350 \ + --hash=sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226 \ + --hash=sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d \ + --hash=sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a \ + --hash=sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6 \ + --hash=sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add \ + --hash=sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e \ + --hash=sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8 \ + --hash=sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03 \ + --hash=sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e \ + --hash=sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2 \ + --hash=sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1 \ + --hash=sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c \ + --hash=sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538 \ + --hash=sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5 \ + --hash=sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e \ + --hash=sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9 \ + --hash=sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3 \ + --hash=sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438 \ + --hash=sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12 \ + --hash=sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3 \ + --hash=sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853 \ + --hash=sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287 \ + --hash=sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2 \ + --hash=sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9 \ + --hash=sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c \ + --hash=sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55 \ + --hash=sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c \ + --hash=sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e \ + --hash=sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1 \ + --hash=sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c \ + --hash=sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194 \ + --hash=sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773 \ + --hash=sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e \ + --hash=sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1 \ + --hash=sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d \ + --hash=sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600 \ + --hash=sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34 \ + --hash=sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3 \ + --hash=sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8 \ + --hash=sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8 \ + --hash=sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2 \ + --hash=sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff \ + --hash=sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62 \ + --hash=sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac \ + --hash=sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef \ + --hash=sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28 \ + --hash=sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab \ + --hash=sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104 \ + --hash=sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76 \ + --hash=sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e \ + --hash=sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d \ + --hash=sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a \ + --hash=sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5 \ + --hash=sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745 \ + --hash=sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4 \ + --hash=sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99 \ + --hash=sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43 \ + --hash=sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da \ + --hash=sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231 \ + --hash=sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd \ + --hash=sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d \ + --hash=sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87 \ + --hash=sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886 \ + --hash=sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2 \ + --hash=sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b \ + --hash=sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d \ + --hash=sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f \ + --hash=sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204 \ + --hash=sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e +aiosignal==1.3.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5 \ + --hash=sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54 +annotated-types==0.7.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 \ + --hash=sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89 +anyio==4.8.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a \ + --hash=sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a +attrs==24.3.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff \ + --hash=sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308 +boto3==1.35.99 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:83e560faaec38a956dfb3d62e05e1703ee50432b45b788c09e25107c5058bd71 \ + --hash=sha256:e0abd794a7a591d90558e92e29a9f8837d25ece8e3c120e530526fe27eba5fca +botocore==1.35.99 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1eab44e969c39c5f3d9a3104a0836c24715579a455f12b3979a31d7cde51b3c3 \ + --hash=sha256:b22d27b6b617fc2d7342090d6129000af2efd20174215948c0d7ae2da0fab445 +certifi==2024.12.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \ + --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db +charset-normalizer==3.4.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \ + --hash=sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa \ + --hash=sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a \ + --hash=sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294 \ + --hash=sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b \ + --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \ + --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \ + --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \ + --hash=sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4 \ + --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \ + --hash=sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2 \ + --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \ + --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \ + --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \ + --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \ + --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \ + --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \ + --hash=sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496 \ + --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \ + --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \ + --hash=sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e \ + --hash=sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a \ + --hash=sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4 \ + --hash=sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca \ + --hash=sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78 \ + --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \ + --hash=sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5 \ + --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \ + --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \ + --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \ + --hash=sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765 \ + --hash=sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6 \ + --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \ + --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \ + --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \ + --hash=sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd \ + --hash=sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c \ + --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \ + --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \ + --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \ + --hash=sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770 \ + --hash=sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824 \ + --hash=sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f \ + --hash=sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf \ + --hash=sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487 \ + --hash=sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d \ + --hash=sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd \ + --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \ + --hash=sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534 \ + --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \ + --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \ + --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \ + --hash=sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd \ + --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \ + --hash=sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9 \ + --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \ + --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \ + --hash=sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d \ + --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \ + --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \ + --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \ + --hash=sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7 \ + --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \ + --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \ + --hash=sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8 \ + --hash=sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41 \ + --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \ + --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \ + --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \ + --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \ + --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \ + --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \ + --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \ + --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \ + --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \ + --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \ + --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \ + --hash=sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e \ + --hash=sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6 \ + --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \ + --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \ + --hash=sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e \ + --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \ + --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \ + --hash=sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c \ + --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \ + --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \ + --hash=sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089 \ + --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \ + --hash=sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e \ + --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \ + --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616 +colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Windows" \ + --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ + --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 +dataclasses-json==0.6.7 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a \ + --hash=sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0 +distro==1.9.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed \ + --hash=sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 +dnspython==2.7.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86 \ + --hash=sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1 +frozenlist==1.5.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e \ + --hash=sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf \ + --hash=sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6 \ + --hash=sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a \ + --hash=sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d \ + --hash=sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f \ + --hash=sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28 \ + --hash=sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b \ + --hash=sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9 \ + --hash=sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2 \ + --hash=sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec \ + --hash=sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2 \ + --hash=sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c \ + --hash=sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336 \ + --hash=sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4 \ + --hash=sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d \ + --hash=sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b \ + --hash=sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c \ + --hash=sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10 \ + --hash=sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08 \ + --hash=sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942 \ + --hash=sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8 \ + --hash=sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f \ + --hash=sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10 \ + --hash=sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5 \ + --hash=sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6 \ + --hash=sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21 \ + --hash=sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c \ + --hash=sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d \ + --hash=sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923 \ + --hash=sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608 \ + --hash=sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de \ + --hash=sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17 \ + --hash=sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0 \ + --hash=sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f \ + --hash=sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641 \ + --hash=sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c \ + --hash=sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a \ + --hash=sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0 \ + --hash=sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9 \ + --hash=sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab \ + --hash=sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f \ + --hash=sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3 \ + --hash=sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a \ + --hash=sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784 \ + --hash=sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604 \ + --hash=sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d \ + --hash=sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5 \ + --hash=sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03 \ + --hash=sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e \ + --hash=sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953 \ + --hash=sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee \ + --hash=sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d \ + --hash=sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817 \ + --hash=sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3 \ + --hash=sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039 \ + --hash=sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f \ + --hash=sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9 \ + --hash=sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf \ + --hash=sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76 \ + --hash=sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba \ + --hash=sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171 \ + --hash=sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb \ + --hash=sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439 \ + --hash=sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631 \ + --hash=sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972 \ + --hash=sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d \ + --hash=sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869 \ + --hash=sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9 \ + --hash=sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411 \ + --hash=sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723 \ + --hash=sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2 \ + --hash=sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b \ + --hash=sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99 \ + --hash=sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e \ + --hash=sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840 \ + --hash=sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3 \ + --hash=sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb \ + --hash=sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3 \ + --hash=sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0 \ + --hash=sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca \ + --hash=sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45 \ + --hash=sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e \ + --hash=sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f \ + --hash=sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5 \ + --hash=sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307 \ + --hash=sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e \ + --hash=sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2 \ + --hash=sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778 \ + --hash=sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a \ + --hash=sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30 \ + --hash=sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a +greenlet==3.1.1 ; python_version >= "3.12" and python_version < "3.14" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ + --hash=sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e \ + --hash=sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7 \ + --hash=sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01 \ + --hash=sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1 \ + --hash=sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159 \ + --hash=sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563 \ + --hash=sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83 \ + --hash=sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9 \ + --hash=sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395 \ + --hash=sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa \ + --hash=sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942 \ + --hash=sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1 \ + --hash=sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441 \ + --hash=sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22 \ + --hash=sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9 \ + --hash=sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0 \ + --hash=sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba \ + --hash=sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3 \ + --hash=sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1 \ + --hash=sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6 \ + --hash=sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291 \ + --hash=sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39 \ + --hash=sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d \ + --hash=sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467 \ + --hash=sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475 \ + --hash=sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef \ + --hash=sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c \ + --hash=sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511 \ + --hash=sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c \ + --hash=sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822 \ + --hash=sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a \ + --hash=sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8 \ + --hash=sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d \ + --hash=sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01 \ + --hash=sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145 \ + --hash=sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80 \ + --hash=sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13 \ + --hash=sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e \ + --hash=sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b \ + --hash=sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1 \ + --hash=sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef \ + --hash=sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc \ + --hash=sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff \ + --hash=sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120 \ + --hash=sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437 \ + --hash=sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd \ + --hash=sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981 \ + --hash=sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36 \ + --hash=sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a \ + --hash=sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798 \ + --hash=sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7 \ + --hash=sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761 \ + --hash=sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0 \ + --hash=sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e \ + --hash=sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af \ + --hash=sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa \ + --hash=sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c \ + --hash=sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42 \ + --hash=sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e \ + --hash=sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81 \ + --hash=sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e \ + --hash=sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617 \ + --hash=sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc \ + --hash=sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de \ + --hash=sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111 \ + --hash=sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383 \ + --hash=sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70 \ + --hash=sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6 \ + --hash=sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4 \ + --hash=sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011 \ + --hash=sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803 \ + --hash=sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79 \ + --hash=sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f +h11==0.14.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ + --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 +httpcore==1.0.7 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c \ + --hash=sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd +httpx-sse==0.4.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721 \ + --hash=sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f +httpx==0.28.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc \ + --hash=sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad +idna==3.10 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ + --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 +jiter==0.8.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60 \ + --hash=sha256:03c9df035d4f8d647f8c210ddc2ae0728387275340668fb30d2421e17d9a0841 \ + --hash=sha256:08d4c92bf480e19fc3f2717c9ce2aa31dceaa9163839a311424b6862252c943e \ + --hash=sha256:0cf5dfa9956d96ff2efb0f8e9c7d055904012c952539a774305aaaf3abdf3d6c \ + --hash=sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887 \ + --hash=sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f \ + --hash=sha256:1c0dfbd1be3cbefc7510102370d86e35d1d53e5a93d48519688b1bf0f761160a \ + --hash=sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b \ + --hash=sha256:317b25e98a35ffec5c67efe56a4e9970852632c810d35b34ecdd70cc0e47b3b6 \ + --hash=sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74 \ + --hash=sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c \ + --hash=sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566 \ + --hash=sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff \ + --hash=sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105 \ + --hash=sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18 \ + --hash=sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6 \ + --hash=sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4 \ + --hash=sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3 \ + --hash=sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587 \ + --hash=sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f \ + --hash=sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1 \ + --hash=sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44 \ + --hash=sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43 \ + --hash=sha256:70bf4c43652cc294040dbb62256c83c8718370c8b93dd93d934b9a7bf6c4f53c \ + --hash=sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef \ + --hash=sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44 \ + --hash=sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a \ + --hash=sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6 \ + --hash=sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e \ + --hash=sha256:7f22b16b35d5c1df9dfd58843ab2cd25e6bf15191f5a236bed177afade507bfc \ + --hash=sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c \ + --hash=sha256:859e8eb3507894093d01929e12e267f83b1d5f6221099d3ec976f0c995cb6bd9 \ + --hash=sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586 \ + --hash=sha256:8bd2a824d08d8977bb2794ea2682f898ad3d8837932e3a74937e93d62ecbb637 \ + --hash=sha256:8f2d5ed877f089862f4c7aacf3a542627c1496f972a34d0474ce85ee7d939c27 \ + --hash=sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88 \ + --hash=sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d \ + --hash=sha256:99d9a1eded738299ba8e106c6779ce5c3893cffa0e32e4485d680588adae6db8 \ + --hash=sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9 \ + --hash=sha256:9e1fa156ee9454642adb7e7234a383884452532bc9d53d5af2d18d98ada1d79c \ + --hash=sha256:a2ecaa3c23e7a7cf86d00eda3390c232f4d533cd9ddea4b04f5d0644faf642c5 \ + --hash=sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15 \ + --hash=sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0 \ + --hash=sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865 \ + --hash=sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08 \ + --hash=sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393 \ + --hash=sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0 \ + --hash=sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca \ + --hash=sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d \ + --hash=sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29 \ + --hash=sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84 \ + --hash=sha256:ca29b6371ebc40e496995c94b988a101b9fbbed48a51190a4461fcb0a68b4a36 \ + --hash=sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b \ + --hash=sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49 \ + --hash=sha256:cd646c827b4f85ef4a78e4e58f4f5854fae0caf3db91b59f0d73731448a970c6 \ + --hash=sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d \ + --hash=sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855 \ + --hash=sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc \ + --hash=sha256:d20be8b7f606df096e08b0b1b4a3c6f0515e8dac296881fe7461dfa0fb5ec817 \ + --hash=sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099 \ + --hash=sha256:d33f94615fcaf872f7fd8cd98ac3b429e435c77619777e8a449d9d27e01134d1 \ + --hash=sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66 \ + --hash=sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d \ + --hash=sha256:e41e75344acef3fc59ba4765df29f107f309ca9e8eace5baacabd9217e52a5ee \ + --hash=sha256:e52bf98c7e727dd44f7c4acb980cb988448faeafed8433c867888268899b298b \ + --hash=sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f \ + --hash=sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152 \ + --hash=sha256:eaa58399c01db555346647a907b4ef6d4f584b123943be6ed5588c3f2359c9f4 \ + --hash=sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05 \ + --hash=sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57 \ + --hash=sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5 \ + --hash=sha256:f7200b8f7619d36aa51c803fd52020a2dfbea36ffec1b5e22cab11fd34d95a6d \ + --hash=sha256:f9d471356dc16f84ed48768b8ee79f29514295c7295cb41e1133ec0b2b8d637d \ + --hash=sha256:fc5adda618205bd4678b146612ce44c3cbfdee9697951f2c0ffdef1f26d72b63 \ + --hash=sha256:fc9043259ee430ecd71d178fccabd8c332a3bf1e81e50cae43cc2b28d19e4cb7 \ + --hash=sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e +jmespath==1.0.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 \ + --hash=sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe +jsonpatch==1.33 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ + --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c +jsonpointer==3.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942 \ + --hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef +langchain-community==0.3.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:cc02a0abad0551edef3e565dff643386a5b2ee45b933b6d883d4a935b9649f3c \ + --hash=sha256:d8ba0fe2dbb5795bff707684b712baa5ee379227194610af415ccdfdefda0479 +langchain-core==0.3.29 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:773d6aeeb612e7ce3d996c0be403433d8c6a91e77bbb7a7461c13e15cfbe5b06 \ + --hash=sha256:817db1474871611a81105594a3e4d11704949661008e455a10e38ca9ff601a1a +langchain-openai==0.2.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:7a514f309e356b182a337c0ed36ab3fbe34d9834a235a3b85cb7f91ae775d978 \ + --hash=sha256:d232496662f79ece9a11caf7d798ba863e559c771bc366814f7688e0fe664fe8 +langchain-text-splitters==0.3.5 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:11cb7ca3694e5bdd342bc16d3875b7f7381651d4a53cbb91d34f22412ae16443 \ + --hash=sha256:8c9b059827438c5fa8f327b4df857e307828a5ec815163c9b5c9569a3e82c8ee +langchain==0.3.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:4a5ae817b5832fa0e1fcadc5353fbf74bebd2f8e550294d4dc039f651ddcd3d1 \ + --hash=sha256:5df9031702f7fe6c956e84256b4639a46d5d03a75be1ca4c1bc9479b358061a2 +langgraph-checkpoint==2.0.9 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:43847d7e385a2d9d2b684155920998e44ed42d2d1780719e4f6111fe3d6db84c \ + --hash=sha256:b546ed6129929b8941ac08af6ce5cd26c8ebe1d25883d3c48638d34ade91ce42 +langgraph-sdk==0.1.51 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:ce2b58466d1700d06149782ed113157a8694a6d7932c801f316cd13fab315fe4 \ + --hash=sha256:dea1363e72562cb1e82a2d156be8d5b1a69ff3fe8815eee0e1e7a2f423242ec1 +langgraph==0.2.62 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0aac9fd55ffe669bc1312203e0f9ea2733c65cc276f196e7ff0d443cf4efbb89 \ + --hash=sha256:51ae9e02a52485a837642eebe7ae43269af7d7305d62f8f69ac11589b2fbba26 +langsmith==0.1.147 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a \ + --hash=sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15 +markdown-it-py==3.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ + --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb +marshmallow==3.25.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:ec5d00d873ce473b7f2ffcb7104286a376c354cab0c2fa12f5573dab03e87210 \ + --hash=sha256:f4debda3bb11153d81ac34b0d582bf23053055ee11e791b54b4b35493468040a +mdurl==0.1.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ + --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba +mongoengine==0.29.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:3b43abaf2d5f0b7d39efc2b7d9e78f4d4a5dc7ce92b9889ba81a5a9b8dee3cf3 \ + --hash=sha256:9302ec407dd60f47f62cc07684d9f6cac87f1e93283c54203851788104d33df4 +msgpack==1.1.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b \ + --hash=sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf \ + --hash=sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca \ + --hash=sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330 \ + --hash=sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f \ + --hash=sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f \ + --hash=sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39 \ + --hash=sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247 \ + --hash=sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b \ + --hash=sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c \ + --hash=sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7 \ + --hash=sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044 \ + --hash=sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6 \ + --hash=sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b \ + --hash=sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0 \ + --hash=sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2 \ + --hash=sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468 \ + --hash=sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7 \ + --hash=sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734 \ + --hash=sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434 \ + --hash=sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325 \ + --hash=sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1 \ + --hash=sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846 \ + --hash=sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88 \ + --hash=sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420 \ + --hash=sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e \ + --hash=sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2 \ + --hash=sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59 \ + --hash=sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb \ + --hash=sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68 \ + --hash=sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915 \ + --hash=sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f \ + --hash=sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701 \ + --hash=sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b \ + --hash=sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d \ + --hash=sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa \ + --hash=sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d \ + --hash=sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd \ + --hash=sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc \ + --hash=sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48 \ + --hash=sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb \ + --hash=sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74 \ + --hash=sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b \ + --hash=sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346 \ + --hash=sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e \ + --hash=sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6 \ + --hash=sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5 \ + --hash=sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f \ + --hash=sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5 \ + --hash=sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b \ + --hash=sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c \ + --hash=sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f \ + --hash=sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec \ + --hash=sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8 \ + --hash=sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5 \ + --hash=sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d \ + --hash=sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e \ + --hash=sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e \ + --hash=sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870 \ + --hash=sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f \ + --hash=sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96 \ + --hash=sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c \ + --hash=sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd \ + --hash=sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788 +multidict==6.1.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f \ + --hash=sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056 \ + --hash=sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761 \ + --hash=sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3 \ + --hash=sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b \ + --hash=sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6 \ + --hash=sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748 \ + --hash=sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966 \ + --hash=sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f \ + --hash=sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1 \ + --hash=sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6 \ + --hash=sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada \ + --hash=sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305 \ + --hash=sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2 \ + --hash=sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d \ + --hash=sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a \ + --hash=sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef \ + --hash=sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c \ + --hash=sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb \ + --hash=sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60 \ + --hash=sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6 \ + --hash=sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4 \ + --hash=sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478 \ + --hash=sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81 \ + --hash=sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7 \ + --hash=sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56 \ + --hash=sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3 \ + --hash=sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6 \ + --hash=sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30 \ + --hash=sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb \ + --hash=sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506 \ + --hash=sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0 \ + --hash=sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925 \ + --hash=sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c \ + --hash=sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6 \ + --hash=sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e \ + --hash=sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95 \ + --hash=sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2 \ + --hash=sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133 \ + --hash=sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2 \ + --hash=sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa \ + --hash=sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3 \ + --hash=sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3 \ + --hash=sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436 \ + --hash=sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657 \ + --hash=sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581 \ + --hash=sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492 \ + --hash=sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43 \ + --hash=sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2 \ + --hash=sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2 \ + --hash=sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926 \ + --hash=sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057 \ + --hash=sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc \ + --hash=sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80 \ + --hash=sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255 \ + --hash=sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1 \ + --hash=sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972 \ + --hash=sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53 \ + --hash=sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1 \ + --hash=sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423 \ + --hash=sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a \ + --hash=sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160 \ + --hash=sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c \ + --hash=sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd \ + --hash=sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa \ + --hash=sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5 \ + --hash=sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b \ + --hash=sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa \ + --hash=sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef \ + --hash=sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44 \ + --hash=sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4 \ + --hash=sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156 \ + --hash=sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753 \ + --hash=sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28 \ + --hash=sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d \ + --hash=sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a \ + --hash=sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304 \ + --hash=sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008 \ + --hash=sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429 \ + --hash=sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72 \ + --hash=sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399 \ + --hash=sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3 \ + --hash=sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392 \ + --hash=sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167 \ + --hash=sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c \ + --hash=sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774 \ + --hash=sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351 \ + --hash=sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76 \ + --hash=sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875 \ + --hash=sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd \ + --hash=sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28 \ + --hash=sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db +mypy-extensions==1.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 +numpy==2.2.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2 \ + --hash=sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5 \ + --hash=sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60 \ + --hash=sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71 \ + --hash=sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631 \ + --hash=sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8 \ + --hash=sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2 \ + --hash=sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16 \ + --hash=sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa \ + --hash=sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591 \ + --hash=sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964 \ + --hash=sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821 \ + --hash=sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484 \ + --hash=sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957 \ + --hash=sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800 \ + --hash=sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918 \ + --hash=sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95 \ + --hash=sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0 \ + --hash=sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e \ + --hash=sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d \ + --hash=sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73 \ + --hash=sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59 \ + --hash=sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51 \ + --hash=sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355 \ + --hash=sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348 \ + --hash=sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e \ + --hash=sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440 \ + --hash=sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675 \ + --hash=sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84 \ + --hash=sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046 \ + --hash=sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab \ + --hash=sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712 \ + --hash=sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308 \ + --hash=sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315 \ + --hash=sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3 \ + --hash=sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008 \ + --hash=sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5 \ + --hash=sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2 \ + --hash=sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e \ + --hash=sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7 \ + --hash=sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf \ + --hash=sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab \ + --hash=sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd \ + --hash=sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf \ + --hash=sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8 \ + --hash=sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb \ + --hash=sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268 \ + --hash=sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d \ + --hash=sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780 \ + --hash=sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716 \ + --hash=sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e \ + --hash=sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528 \ + --hash=sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af \ + --hash=sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7 \ + --hash=sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51 +openai==1.59.7 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:043603def78c00befb857df9f0a16ee76a3af5984ba40cb7ee5e2f40db4646bf \ + --hash=sha256:cfa806556226fa96df7380ab2e29814181d56fea44738c2b0e581b462c268692 +orjson==3.10.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0293a88815e9bb5c90af4045f81ed364d982f955d12052d989d844d6c4e50945 \ + --hash=sha256:03f61ca3674555adcb1aa717b9fc87ae936aa7a63f6aba90a474a88701278780 \ + --hash=sha256:06d4ec218b1ec1467d8d64da4e123b4794c781b536203c309ca0f52819a16c03 \ + --hash=sha256:07520685d408a2aba514c17ccc16199ff2934f9f9e28501e676c557f454a37fe \ + --hash=sha256:0905ca08a10f7e0e0c97d11359609300eb1437490a7f32bbaa349de757e2e0c7 \ + --hash=sha256:0de4d6315cfdbd9ec803b945c23b3a68207fd47cbe43626036d97e8e9561a436 \ + --hash=sha256:164ac155109226b3a2606ee6dda899ccfbe6e7e18b5bdc3fbc00f79cc074157d \ + --hash=sha256:16642f10c1ca5611251bd835de9914a4b03095e28a34c8ba6a5500b5074338bd \ + --hash=sha256:175abf3d20e737fec47261d278f95031736a49d7832a09ab684026528c4d96db \ + --hash=sha256:175cafd322e458603e8ce73510a068d16b6e6f389c13f69bf16de0e843d7d406 \ + --hash=sha256:1b49e2af011c84c3f2d541bb5cd1e3c7c2df672223e7e3ea608f09cf295e5f8a \ + --hash=sha256:21d3be4132f71ef1360385770474f29ea1538a242eef72ac4934fe142800e37f \ + --hash=sha256:26336c0d4b2d44636e1e1e6ed1002f03c6aae4a8a9329561c8883f135e9ff010 \ + --hash=sha256:29ca1a93e035d570e8b791b6c0feddd403c6a5388bfe870bf2aa6bba1b9d9b8e \ + --hash=sha256:2ad4b7e367efba6dc3f119c9a0fcd41908b7ec0399a696f3cdea7ec477441b09 \ + --hash=sha256:33449c67195969b1a677533dee9d76e006001213a24501333624623e13c7cc8e \ + --hash=sha256:36f5bfc0399cd4811bf10ec7a759c7ab0cd18080956af8ee138097d5b5296a95 \ + --hash=sha256:3871bad546aa66c155e3f36f99c459780c2a392d502a64e23fb96d9abf338511 \ + --hash=sha256:397083806abd51cf2b3bbbf6c347575374d160331a2d33c5823e22249ad3118b \ + --hash=sha256:3af8e42ae4363773658b8d578d56dedffb4f05ceeb4d1d4dd3fb504950b45526 \ + --hash=sha256:4ddc8c866d7467f5ee2991397d2ea94bcf60d0048bdd8ca555740b56f9042725 \ + --hash=sha256:4f5007abfdbb1d866e2aa8990bd1c465f0f6da71d19e695fc278282be12cffa5 \ + --hash=sha256:56ee546c2bbe9599aba78169f99d1dc33301853e897dbaf642d654248280dc6e \ + --hash=sha256:6169d3868b190d6b21adc8e61f64e3db30f50559dfbdef34a1cd6c738d409dfc \ + --hash=sha256:64410696c97a35af2432dea7bdc4ce32416458159430ef1b4beb79fd30093ad6 \ + --hash=sha256:691ab9a13834310a263664313e4f747ceb93662d14a8bdf20eb97d27ed488f16 \ + --hash=sha256:6b1225024cf0ef5d15934b5ffe9baf860fe8bc68a796513f5ea4f5056de30bca \ + --hash=sha256:6e2ec73b7099b6a29b40a62e08a23b936423bd35529f8f55c42e27acccde7954 \ + --hash=sha256:76344269b550ea01488d19a2a369ab572c1ac4449a72e9f6ac0d70eb1cbfb953 \ + --hash=sha256:7796692136a67b3e301ef9052bde6fe8e7bd5200da766811a3a608ffa62aaff0 \ + --hash=sha256:7e947f70167fe18469f2023644e91ab3d24f9aed69a5e1c78e2c81b9cea553fb \ + --hash=sha256:8050a5d81c022561ee29cd2739de5b4445f3c72f39423fde80a63299c1892c52 \ + --hash=sha256:83adda3db595cb1a7e2237029b3249c85afbe5c747d26b41b802e7482cb3933e \ + --hash=sha256:849ea7845a55f09965826e816cdc7689d6cf74fe9223d79d758c714af955bcb6 \ + --hash=sha256:84dd83110503bc10e94322bf3ffab8bc49150176b49b4984dc1cce4c0a993bf9 \ + --hash=sha256:868943660fb2a1e6b6b965b74430c16a79320b665b28dd4511d15ad5038d37d5 \ + --hash=sha256:8cc8204f0b75606869c707da331058ddf085de29558b516fc43c73ee5ee2aadb \ + --hash=sha256:901e826cb2f1bdc1fcef3ef59adf0c451e8f7c0b5deb26c1a933fb66fb505eae \ + --hash=sha256:90937664e776ad316d64251e2fa2ad69265e4443067668e4727074fe39676414 \ + --hash=sha256:92d13292249f9f2a3e418cbc307a9fbbef043c65f4bd8ba1eb620bc2aaba3d15 \ + --hash=sha256:962c2ec0dcaf22b76dee9831fdf0c4a33d4bf9a257a2bc5d4adc00d5c8ad9034 \ + --hash=sha256:96a1c0ee30fb113b3ae3c748fd75ca74a157ff4c58476c47db4d61518962a011 \ + --hash=sha256:998019ef74a4997a9d741b1473533cdb8faa31373afc9849b35129b4b8ec048d \ + --hash=sha256:9a0fba3b8a587a54c18585f077dcab6dd251c170d85cfa4d063d5746cd595a0f \ + --hash=sha256:9d034abdd36f0f0f2240f91492684e5043d46f290525d1117712d5b8137784eb \ + --hash=sha256:9d3f9ed72e7458ded9a1fb1b4d4ed4c4fdbaf82030ce3f9274b4dc1bff7ace2b \ + --hash=sha256:9ed3d26c4cb4f6babaf791aa46a029265850e80ec2a566581f5c2ee1a14df4f1 \ + --hash=sha256:9f1d2942605c894162252d6259b0121bf1cb493071a1ea8cb35d79cb3e6ac5bc \ + --hash=sha256:a2d1679df9f9cd9504f8dff24555c1eaabba8aad7f5914f28dab99e3c2552c9d \ + --hash=sha256:b11ed82054fce82fb74cea33247d825d05ad6a4015ecfc02af5fbce442fbf361 \ + --hash=sha256:b49a28e30d3eca86db3fe6f9b7f4152fcacbb4a467953cd1b42b94b479b77956 \ + --hash=sha256:b5947b139dfa33f72eecc63f17e45230a97e741942955a6c9e650069305eb73d \ + --hash=sha256:c28ed60597c149a9e3f5ad6dd9cebaee6fb2f0e3f2d159a4a2b9b862d4748860 \ + --hash=sha256:c6dfbaeb7afa77ca608a50e2770a0461177b63a99520d4928e27591b142c74b1 \ + --hash=sha256:c7f189bbfcded40e41a6969c1068ba305850ba016665be71a217918931416fbf \ + --hash=sha256:ca041ad20291a65d853a9523744eebc3f5a4b2f7634e99f8fe88320695ddf766 \ + --hash=sha256:cde6d76910d3179dae70f164466692f4ea36da124d6fb1a61399ca589e81d69a \ + --hash=sha256:cf31f6f071a6b8e7aa1ead1fa27b935b48d00fbfa6a28ce856cfff2d5dd68eed \ + --hash=sha256:d313a2998b74bb26e9e371851a173a9b9474764916f1fc7971095699b3c6e964 \ + --hash=sha256:d5075c54edf1d6ad81d4c6523ce54a748ba1208b542e54b97d8a882ecd810fd1 \ + --hash=sha256:d6546e8073dc382e60fcae4a001a5a1bc46da5eab4a4878acc2d12072d6166d5 \ + --hash=sha256:deaa2899dff7f03ab667e2ec25842d233e2a6a9e333efa484dfe666403f3501c \ + --hash=sha256:e2979d0f2959990620f7e62da6cd954e4620ee815539bc57a8ae46e2dacf90e3 \ + --hash=sha256:e2bc525e335a8545c4e48f84dd0328bc46158c9aaeb8a1c2276546e94540ea3d \ + --hash=sha256:e4c9f60f9fb0b5be66e416dcd8c9d94c3eabff3801d875bdb1f8ffc12cf86905 \ + --hash=sha256:e70a1d62b8288677d48f3bea66c21586a5f999c64ecd3878edb7393e8d1b548d \ + --hash=sha256:eca04dfd792cedad53dc9a917da1a522486255360cb4e77619343a20d9f35364 \ + --hash=sha256:eee4bc767f348fba485ed9dc576ca58b0a9eac237f0e160f7a59bce628ed06b3 \ + --hash=sha256:efe5fd254cfb0eeee13b8ef7ecb20f5d5a56ddda8a587f3852ab2cedfefdb5f6 \ + --hash=sha256:f1c3ea52642c9714dc6e56de8a451a066f6d2707d273e07fe8a9cc1ba073813d \ + --hash=sha256:f496286fc85e93ce0f71cc84fc1c42de2decf1bf494094e188e27a53694777a7 \ + --hash=sha256:f506fd666dd1ecd15a832bebc66c4df45c1902fd47526292836c339f7ba665a9 \ + --hash=sha256:f77202c80e8ab5a1d1e9faf642343bee5aaf332061e1ada4e9147dbd9eb00c46 \ + --hash=sha256:fa18f949d3183a8d468367056be989666ac2bef3a72eece0bade9cdb733b3c28 \ + --hash=sha256:fa45e489ef80f28ff0e5ba0a72812b8cfc7c1ef8b46a694723807d1b07c89ebb +packaging==24.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759 \ + --hash=sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f +propcache==0.2.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4 \ + --hash=sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4 \ + --hash=sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a \ + --hash=sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f \ + --hash=sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9 \ + --hash=sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d \ + --hash=sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e \ + --hash=sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6 \ + --hash=sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf \ + --hash=sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034 \ + --hash=sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d \ + --hash=sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16 \ + --hash=sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30 \ + --hash=sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba \ + --hash=sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95 \ + --hash=sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d \ + --hash=sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae \ + --hash=sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348 \ + --hash=sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2 \ + --hash=sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64 \ + --hash=sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce \ + --hash=sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54 \ + --hash=sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629 \ + --hash=sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54 \ + --hash=sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1 \ + --hash=sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b \ + --hash=sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf \ + --hash=sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b \ + --hash=sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587 \ + --hash=sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097 \ + --hash=sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea \ + --hash=sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24 \ + --hash=sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7 \ + --hash=sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541 \ + --hash=sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6 \ + --hash=sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634 \ + --hash=sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3 \ + --hash=sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d \ + --hash=sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034 \ + --hash=sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465 \ + --hash=sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2 \ + --hash=sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf \ + --hash=sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1 \ + --hash=sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04 \ + --hash=sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5 \ + --hash=sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583 \ + --hash=sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb \ + --hash=sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b \ + --hash=sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c \ + --hash=sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958 \ + --hash=sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc \ + --hash=sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4 \ + --hash=sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82 \ + --hash=sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e \ + --hash=sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce \ + --hash=sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9 \ + --hash=sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518 \ + --hash=sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536 \ + --hash=sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505 \ + --hash=sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052 \ + --hash=sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff \ + --hash=sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1 \ + --hash=sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f \ + --hash=sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681 \ + --hash=sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347 \ + --hash=sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af \ + --hash=sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246 \ + --hash=sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787 \ + --hash=sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0 \ + --hash=sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f \ + --hash=sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439 \ + --hash=sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3 \ + --hash=sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6 \ + --hash=sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca \ + --hash=sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec \ + --hash=sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d \ + --hash=sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3 \ + --hash=sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16 \ + --hash=sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717 \ + --hash=sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6 \ + --hash=sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd \ + --hash=sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212 +pydantic-core==2.27.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278 \ + --hash=sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50 \ + --hash=sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9 \ + --hash=sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f \ + --hash=sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6 \ + --hash=sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc \ + --hash=sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54 \ + --hash=sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630 \ + --hash=sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9 \ + --hash=sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236 \ + --hash=sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7 \ + --hash=sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee \ + --hash=sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b \ + --hash=sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048 \ + --hash=sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc \ + --hash=sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130 \ + --hash=sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4 \ + --hash=sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd \ + --hash=sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4 \ + --hash=sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7 \ + --hash=sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7 \ + --hash=sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4 \ + --hash=sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e \ + --hash=sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa \ + --hash=sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6 \ + --hash=sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962 \ + --hash=sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b \ + --hash=sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f \ + --hash=sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474 \ + --hash=sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5 \ + --hash=sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459 \ + --hash=sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf \ + --hash=sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a \ + --hash=sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c \ + --hash=sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76 \ + --hash=sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362 \ + --hash=sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4 \ + --hash=sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934 \ + --hash=sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320 \ + --hash=sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118 \ + --hash=sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96 \ + --hash=sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306 \ + --hash=sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046 \ + --hash=sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3 \ + --hash=sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2 \ + --hash=sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af \ + --hash=sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9 \ + --hash=sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67 \ + --hash=sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a \ + --hash=sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27 \ + --hash=sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35 \ + --hash=sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b \ + --hash=sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151 \ + --hash=sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b \ + --hash=sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154 \ + --hash=sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133 \ + --hash=sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef \ + --hash=sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145 \ + --hash=sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15 \ + --hash=sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4 \ + --hash=sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc \ + --hash=sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee \ + --hash=sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c \ + --hash=sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0 \ + --hash=sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5 \ + --hash=sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57 \ + --hash=sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b \ + --hash=sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8 \ + --hash=sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1 \ + --hash=sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da \ + --hash=sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e \ + --hash=sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc \ + --hash=sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993 \ + --hash=sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656 \ + --hash=sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4 \ + --hash=sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c \ + --hash=sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb \ + --hash=sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d \ + --hash=sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9 \ + --hash=sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e \ + --hash=sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1 \ + --hash=sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc \ + --hash=sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a \ + --hash=sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9 \ + --hash=sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506 \ + --hash=sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b \ + --hash=sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1 \ + --hash=sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d \ + --hash=sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99 \ + --hash=sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3 \ + --hash=sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31 \ + --hash=sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c \ + --hash=sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39 \ + --hash=sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a \ + --hash=sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308 \ + --hash=sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2 \ + --hash=sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228 \ + --hash=sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b \ + --hash=sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9 \ + --hash=sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad +pydantic-settings==2.7.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93 \ + --hash=sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd +pydantic==2.10.5 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff \ + --hash=sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53 +pygments==2.19.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f \ + --hash=sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c +pymongo==4.10.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0783e0c8e95397c84e9cf8ab092ab1e5dd7c769aec0ef3a5838ae7173b98dea0 \ + --hash=sha256:0f56707497323150bd2ed5d63067f4ffce940d0549d4ea2dfae180deec7f9363 \ + --hash=sha256:11280809e5dacaef4971113f0b4ff4696ee94cfdb720019ff4fa4f9635138252 \ + --hash=sha256:15a624d752dd3c89d10deb0ef6431559b6d074703cab90a70bb849ece02adc6b \ + --hash=sha256:15b1492cc5c7cd260229590be7218261e81684b8da6d6de2660cf743445500ce \ + --hash=sha256:1a970fd3117ab40a4001c3dad333bbf3c43687d90f35287a6237149b5ccae61d \ + --hash=sha256:1ec3fa88b541e0481aff3c35194c9fac96e4d57ec5d1c122376000eb28c01431 \ + --hash=sha256:1ecc2455e3974a6c429687b395a0bc59636f2d6aedf5785098cf4e1f180f1c71 \ + --hash=sha256:23e1d62df5592518204943b507be7b457fb8a4ad95a349440406fd42db5d0923 \ + --hash=sha256:29e1c323c28a4584b7095378ff046815e39ff82cdb8dc4cc6dfe3acf6f9ad1f8 \ + --hash=sha256:2e3a593333e20c87415420a4fb76c00b7aae49b6361d2e2205b6fece0563bf40 \ + --hash=sha256:345f8d340802ebce509f49d5833cc913da40c82f2e0daf9f60149cacc9ca680f \ + --hash=sha256:3a70d5efdc0387ac8cd50f9a5f379648ecfc322d14ec9e1ba8ec957e5d08c372 \ + --hash=sha256:409ab7d6c4223e5c85881697f365239dd3ed1b58f28e4124b846d9d488c86880 \ + --hash=sha256:442ca247f53ad24870a01e80a71cd81b3f2318655fd9d66748ee2bd1b1569d9e \ + --hash=sha256:45ee87a4e12337353242bc758accc7fb47a2f2d9ecc0382a61e64c8f01e86708 \ + --hash=sha256:4924355245a9c79f77b5cda2db36e0f75ece5faf9f84d16014c0a297f6d66786 \ + --hash=sha256:544890085d9641f271d4f7a47684450ed4a7344d6b72d5968bfae32203b1bb7c \ + --hash=sha256:57ee6becae534e6d47848c97f6a6dff69e3cce7c70648d6049bd586764febe59 \ + --hash=sha256:594dd721b81f301f33e843453638e02d92f63c198358e5a0fa8b8d0b1218dabc \ + --hash=sha256:5ded27a4a5374dae03a92e084a60cdbcecd595306555bda553b833baf3fc4868 \ + --hash=sha256:6131bc6568b26e7495a9f3ef2b1700566b76bbecd919f4472bfe90038a61f425 \ + --hash=sha256:6f437a612f4d4f7aca1812311b1e84477145e950fdafe3285b687ab8c52541f3 \ + --hash=sha256:6fb6a72e88df46d1c1040fd32cd2d2c5e58722e5d3e31060a0393f04ad3283de \ + --hash=sha256:70645abc714f06b4ad6b72d5bf73792eaad14e3a2cfe29c62a9c81ada69d9e4b \ + --hash=sha256:72e2ace7456167c71cfeca7dcb47bd5dceda7db2231265b80fc625c5e8073186 \ + --hash=sha256:778ac646ce6ac1e469664062dfe9ae1f5c9961f7790682809f5ec3b8fda29d65 \ + --hash=sha256:7bd26b2aec8ceeb95a5d948d5cc0f62b0eb6d66f3f4230705c1e3d3d2c04ec76 \ + --hash=sha256:7c4d0e7cd08ef9f8fbf2d15ba281ed55604368a32752e476250724c3ce36c72e \ + --hash=sha256:88dc4aa45f8744ccfb45164aedb9a4179c93567bbd98a33109d7dc400b00eb08 \ + --hash=sha256:8ad05eb9c97e4f589ed9e74a00fcaac0d443ccd14f38d1258eb4c39a35dd722b \ + --hash=sha256:90bc6912948dfc8c363f4ead54d54a02a15a7fee6cfafb36dc450fc8962d2cb7 \ + --hash=sha256:9235fa319993405ae5505bf1333366388add2e06848db7b3deee8f990b69808e \ + --hash=sha256:93a0833c10a967effcd823b4e7445ec491f0bf6da5de0ca33629c0528f42b748 \ + --hash=sha256:95207503c41b97e7ecc7e596d84a61f441b4935f11aa8332828a754e7ada8c82 \ + --hash=sha256:9df4ab5594fdd208dcba81be815fa8a8a5d8dedaf3b346cbf8b61c7296246a7a \ + --hash=sha256:a920fee41f7d0259f5f72c1f1eb331bc26ffbdc952846f9bd8c3b119013bb52c \ + --hash=sha256:a9de02be53b6bb98efe0b9eda84ffa1ec027fcb23a2de62c4f941d9a2f2f3330 \ + --hash=sha256:ae2fd94c9fe048c94838badcc6e992d033cb9473eb31e5710b3707cba5e8aee2 \ + --hash=sha256:b3337804ea0394a06e916add4e5fac1c89902f1b6f33936074a12505cab4ff05 \ + --hash=sha256:ba164e73fdade9b4614a2497321c5b7512ddf749ed508950bdecc28d8d76a2d9 \ + --hash=sha256:bb99f003c720c6d83be02c8f1a7787c22384a8ca9a4181e406174db47a048619 \ + --hash=sha256:ca6f700cff6833de4872a4e738f43123db34400173558b558ae079b5535857a4 \ + --hash=sha256:cec237c305fcbeef75c0bcbe9d223d1e22a6e3ba1b53b2f0b79d3d29c742b45b \ + --hash=sha256:dabe8bf1ad644e6b93f3acf90ff18536d94538ca4d27e583c6db49889e98e48f \ + --hash=sha256:dac78a650dc0637d610905fd06b5fa6419ae9028cf4d04d6a2657bc18a66bbce \ + --hash=sha256:dcc07b1277e8b4bf4d7382ca133850e323b7ab048b8353af496d050671c7ac52 \ + --hash=sha256:e0a15665b2d6cf364f4cd114d62452ce01d71abfbd9c564ba8c74dcd7bbd6822 \ + --hash=sha256:e0e961923a7b8a1c801c43552dcb8153e45afa41749d9efbd3a6d33f45489f7a \ + --hash=sha256:e4a65567bd17d19f03157c7ec992c6530eafd8191a4e5ede25566792c4fe3fa2 \ + --hash=sha256:e5d55f2a82e5eb23795f724991cac2bffbb1c0f219c0ba3bf73a835f97f1bb2e \ + --hash=sha256:e699aa68c4a7dea2ab5a27067f7d3e08555f8d2c0dc6a0c8c60cfd9ff2e6a4b1 \ + --hash=sha256:e974ab16a60be71a8dfad4e5afccf8dd05d41c758060f5d5bda9a758605d9a5d \ + --hash=sha256:ee4c86d8e6872a61f7888fc96577b0ea165eb3bdb0d841962b444fa36001e2bb \ + --hash=sha256:f1945d48fb9b8a87d515da07f37e5b2c35b364a435f534c122e92747881f4a7c \ + --hash=sha256:f2bc1ee4b1ca2c4e7e6b7a5e892126335ec8d9215bcd3ac2fe075870fefc3358 \ + --hash=sha256:fb104c3c2a78d9d85571c8ac90ec4f95bca9b297c6eee5ada71fabf1129e1674 \ + --hash=sha256:fbedc4617faa0edf423621bb0b3b8707836687161210d470e69a4184be9ca011 \ + --hash=sha256:fdeba88c540c9ed0338c0b2062d9f81af42b18d6646b3e6dda05cf6edd46ada9 +python-dateutil==2.9.0.post0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ + --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 +python-dotenv==1.0.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a +pytz==2024.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a \ + --hash=sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725 +pyyaml==6.0.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 +regex==2024.11.6 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c \ + --hash=sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60 \ + --hash=sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d \ + --hash=sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d \ + --hash=sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67 \ + --hash=sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773 \ + --hash=sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0 \ + --hash=sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef \ + --hash=sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad \ + --hash=sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe \ + --hash=sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3 \ + --hash=sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114 \ + --hash=sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4 \ + --hash=sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39 \ + --hash=sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e \ + --hash=sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3 \ + --hash=sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7 \ + --hash=sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d \ + --hash=sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e \ + --hash=sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a \ + --hash=sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7 \ + --hash=sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f \ + --hash=sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0 \ + --hash=sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54 \ + --hash=sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b \ + --hash=sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c \ + --hash=sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd \ + --hash=sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57 \ + --hash=sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34 \ + --hash=sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d \ + --hash=sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f \ + --hash=sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b \ + --hash=sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519 \ + --hash=sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4 \ + --hash=sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a \ + --hash=sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638 \ + --hash=sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b \ + --hash=sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839 \ + --hash=sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07 \ + --hash=sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf \ + --hash=sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff \ + --hash=sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0 \ + --hash=sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f \ + --hash=sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95 \ + --hash=sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4 \ + --hash=sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e \ + --hash=sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13 \ + --hash=sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519 \ + --hash=sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2 \ + --hash=sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008 \ + --hash=sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9 \ + --hash=sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc \ + --hash=sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48 \ + --hash=sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20 \ + --hash=sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89 \ + --hash=sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e \ + --hash=sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf \ + --hash=sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b \ + --hash=sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd \ + --hash=sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84 \ + --hash=sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29 \ + --hash=sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b \ + --hash=sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3 \ + --hash=sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45 \ + --hash=sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3 \ + --hash=sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983 \ + --hash=sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e \ + --hash=sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7 \ + --hash=sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4 \ + --hash=sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e \ + --hash=sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467 \ + --hash=sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577 \ + --hash=sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001 \ + --hash=sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0 \ + --hash=sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55 \ + --hash=sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9 \ + --hash=sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf \ + --hash=sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6 \ + --hash=sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e \ + --hash=sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde \ + --hash=sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62 \ + --hash=sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df \ + --hash=sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51 \ + --hash=sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5 \ + --hash=sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86 \ + --hash=sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2 \ + --hash=sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2 \ + --hash=sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0 \ + --hash=sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c \ + --hash=sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f \ + --hash=sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6 \ + --hash=sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2 \ + --hash=sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9 \ + --hash=sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91 +requests-toolbelt==1.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6 \ + --hash=sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06 +requests==2.32.3 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ + --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 +rich==13.9.4 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098 \ + --hash=sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90 +s3transfer==0.10.4 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e \ + --hash=sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7 +six==1.17.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ + --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 +sniffio==1.3.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 \ + --hash=sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc +sqlalchemy==2.0.37 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:03f0528c53ca0b67094c4764523c1451ea15959bbf0a8a8a3096900014db0278 \ + --hash=sha256:12b0f1ec623cccf058cf21cb544f0e74656618165b083d78145cafde156ea7b6 \ + --hash=sha256:12b28d99a9c14eaf4055810df1001557176716de0167b91026e648e65229bffb \ + --hash=sha256:1b2690456528a87234a75d1a1644cdb330a6926f455403c8e4f6cad6921f9098 \ + --hash=sha256:1cdba1f73b64530c47b27118b7053b8447e6d6f3c8104e3ac59f3d40c33aa9fd \ + --hash=sha256:293f9ade06b2e68dd03cfb14d49202fac47b7bb94bffcff174568c951fbc7af2 \ + --hash=sha256:2952748ecd67ed3b56773c185e85fc084f6bdcdec10e5032a7c25a6bc7d682ef \ + --hash=sha256:2f95fc8e3f34b5f6b3effb49d10ac97c569ec8e32f985612d9b25dd12d0d2e94 \ + --hash=sha256:2fa2c0913f02341d25fb858e4fb2031e6b0813494cca1ba07d417674128ce11b \ + --hash=sha256:3151822aa1db0eb5afd65ccfafebe0ef5cda3a7701a279c8d0bf17781a793bb4 \ + --hash=sha256:35bd2df269de082065d4b23ae08502a47255832cc3f17619a5cea92ce478b02b \ + --hash=sha256:41296bbcaa55ef5fdd32389a35c710133b097f7b2609d8218c0eabded43a1d84 \ + --hash=sha256:44f569d0b1eb82301b92b72085583277316e7367e038d97c3a1a899d9a05e342 \ + --hash=sha256:46954173612617a99a64aee103bcd3f078901b9a8dcfc6ae80cbf34ba23df989 \ + --hash=sha256:4b12885dc85a2ab2b7d00995bac6d967bffa8594123b02ed21e8eb2205a7584b \ + --hash=sha256:4f581d365af9373a738c49e0c51e8b18e08d8a6b1b15cc556773bcd8a192fa8b \ + --hash=sha256:51bc9cfef83e0ac84f86bf2b10eaccb27c5a3e66a1212bef676f5bee6ef33ebb \ + --hash=sha256:521ef85c04c33009166777c77e76c8a676e2d8528dc83a57836b63ca9c69dcd1 \ + --hash=sha256:5bc3339db84c5fb9130ac0e2f20347ee77b5dd2596ba327ce0d399752f4fce39 \ + --hash=sha256:635d8a21577341dfe4f7fa59ec394b346da12420b86624a69e466d446de16aff \ + --hash=sha256:648ec5acf95ad59255452ef759054f2176849662af4521db6cb245263ae4aa33 \ + --hash=sha256:650dcb70739957a492ad8acff65d099a9586b9b8920e3507ca61ec3ce650bb72 \ + --hash=sha256:6b788f14c5bb91db7f468dcf76f8b64423660a05e57fe277d3f4fad7b9dcb7ce \ + --hash=sha256:6c67415258f9f3c69867ec02fea1bf6508153709ecbd731a982442a590f2b7e4 \ + --hash=sha256:74bbd1d0a9bacf34266a7907d43260c8d65d31d691bb2356f41b17c2dca5b1d0 \ + --hash=sha256:75311559f5c9881a9808eadbeb20ed8d8ba3f7225bef3afed2000c2a9f4d49b9 \ + --hash=sha256:78361be6dc9073ed17ab380985d1e45e48a642313ab68ab6afa2457354ff692c \ + --hash=sha256:7b7e772dc4bc507fdec4ee20182f15bd60d2a84f1e087a8accf5b5b7a0dcf2ba \ + --hash=sha256:82df02816c14f8dc9f4d74aea4cb84a92f4b0620235daa76dde002409a3fbb5a \ + --hash=sha256:84b9f23b0fa98a6a4b99d73989350a94e4a4ec476b9a7dfe9b79ba5939f5e80b \ + --hash=sha256:8c4096727193762e72ce9437e2a86a110cf081241919ce3fab8e89c02f6b6658 \ + --hash=sha256:8e47f1af09444f87c67b4f1bb6231e12ba6d4d9f03050d7fc88df6d075231a49 \ + --hash=sha256:93d1543cd8359040c02b6614421c8e10cd7a788c40047dbc507ed46c29ae5636 \ + --hash=sha256:94b564e38b344d3e67d2e224f0aec6ba09a77e4582ced41e7bfd0f757d926ec9 \ + --hash=sha256:955a2a765aa1bd81aafa69ffda179d4fe3e2a3ad462a736ae5b6f387f78bfeb8 \ + --hash=sha256:9d087663b7e1feabea8c578d6887d59bb00388158e8bff3a76be11aa3f748ca2 \ + --hash=sha256:9df21b8d9e5c136ea6cde1c50d2b1c29a2b5ff2b1d610165c23ff250e0704087 \ + --hash=sha256:a8998bf9f8658bd3839cbc44ddbe982955641863da0c1efe5b00c1ab4f5c16b1 \ + --hash=sha256:b2eae3423e538c10d93ae3e87788c6a84658c3ed6db62e6a61bb9495b0ad16bb \ + --hash=sha256:b661b49d0cb0ab311a189b31e25576b7ac3e20783beb1e1817d72d9d02508bf5 \ + --hash=sha256:bedee60385c1c0411378cbd4dc486362f5ee88deceea50002772912d798bb00f \ + --hash=sha256:c505edd429abdfe3643fa3b2e83efb3445a34a9dc49d5f692dd087be966020e0 \ + --hash=sha256:cce918ada64c956b62ca2c2af59b125767097ec1dca89650a6221e887521bfd7 \ + --hash=sha256:cf5ae8a9dcf657fd72144a7fd01f243236ea39e7344e579a121c4205aedf07bb \ + --hash=sha256:cf95a60b36997dad99692314c4713f141b61c5b0b4cc5c3426faad570b31ca01 \ + --hash=sha256:d57bafbab289e147d064ffbd5cca2d7b1394b63417c0636cea1f2e93d16eb9e8 \ + --hash=sha256:d70f53a0646cc418ca4853da57cf3ddddbccb8c98406791f24426f2dd77fd0e2 \ + --hash=sha256:d75ead7dd4d255068ea0f21492ee67937bd7c90964c8f3c2bea83c7b7f81b95f \ + --hash=sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e \ + --hash=sha256:db18ff6b8c0f1917f8b20f8eca35c28bbccb9f83afa94743e03d40203ed83de9 \ + --hash=sha256:dfff7be361048244c3aa0f60b5e63221c5e0f0e509f4e47b8910e22b57d10ae7 \ + --hash=sha256:e4fb5ac86d8fe8151966814f6720996430462e633d225497566b3996966b9bdb \ + --hash=sha256:e56a139bfe136a22c438478a86f8204c1eb5eed36f4e15c4224e4b9db01cb3e4 \ + --hash=sha256:e6f5d254a22394847245f411a2956976401e84da4288aa70cbcd5190744062c1 \ + --hash=sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069 \ + --hash=sha256:ea308cec940905ba008291d93619d92edaf83232ec85fbd514dcb329f3192761 \ + --hash=sha256:eaa8039b6d20137a4e02603aba37d12cd2dde7887500b8855356682fc33933f4 +tenacity==9.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b \ + --hash=sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539 +tiktoken==0.8.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:02be1666096aff7da6cbd7cdaa8e7917bfed3467cd64b38b1f112e96d3b06a24 \ + --hash=sha256:1473cfe584252dc3fa62adceb5b1c763c1874e04511b197da4e6de51d6ce5a02 \ + --hash=sha256:18228d624807d66c87acd8f25fc135665617cab220671eb65b50f5d70fa51f69 \ + --hash=sha256:25e13f37bc4ef2d012731e93e0fef21dc3b7aea5bb9009618de9a4026844e560 \ + --hash=sha256:294440d21a2a51e12d4238e68a5972095534fe9878be57d905c476017bff99fc \ + --hash=sha256:2efaf6199717b4485031b4d6edb94075e4d79177a172f38dd934d911b588d54a \ + --hash=sha256:326624128590def898775b722ccc327e90b073714227175ea8febbc920ac0a99 \ + --hash=sha256:4177faa809bd55f699e88c96d9bb4635d22e3f59d635ba6fd9ffedf7150b9953 \ + --hash=sha256:5376b6f8dc4753cd81ead935c5f518fa0fbe7e133d9e25f648d8c4dabdd4bad7 \ + --hash=sha256:5637e425ce1fc49cf716d88df3092048359a4b3bbb7da762840426e937ada06d \ + --hash=sha256:56edfefe896c8f10aba372ab5706b9e3558e78db39dd497c940b47bf228bc419 \ + --hash=sha256:6adc8323016d7758d6de7313527f755b0fc6c72985b7d9291be5d96d73ecd1e1 \ + --hash=sha256:6b231f5e8982c245ee3065cd84a4712d64692348bc609d84467c57b4b72dcbc5 \ + --hash=sha256:6b2ddbc79a22621ce8b1166afa9f9a888a664a579350dc7c09346a3b5de837d9 \ + --hash=sha256:7e17807445f0cf1f25771c9d86496bd8b5c376f7419912519699f3cc4dc5c12e \ + --hash=sha256:845287b9798e476b4d762c3ebda5102be87ca26e5d2c9854002825d60cdb815d \ + --hash=sha256:881839cfeae051b3628d9823b2e56b5cc93a9e2efb435f4cf15f17dc45f21586 \ + --hash=sha256:886f80bd339578bbdba6ed6d0567a0d5c6cfe198d9e587ba6c447654c65b8edc \ + --hash=sha256:9269348cb650726f44dd3bbb3f9110ac19a8dcc8f54949ad3ef652ca22a38e21 \ + --hash=sha256:9a58deb7075d5b69237a3ff4bb51a726670419db6ea62bdcd8bd80c78497d7ab \ + --hash=sha256:9ccbb2740f24542534369c5635cfd9b2b3c2490754a78ac8831d99f89f94eeb2 \ + --hash=sha256:9fb0e352d1dbe15aba082883058b3cce9e48d33101bdaac1eccf66424feb5b47 \ + --hash=sha256:b07e33283463089c81ef1467180e3e00ab00d46c2c4bbcef0acab5f771d6695e \ + --hash=sha256:b591fb2b30d6a72121a80be24ec7a0e9eb51c5500ddc7e4c2496516dd5e3816b \ + --hash=sha256:c94ff53c5c74b535b2cbf431d907fc13c678bbd009ee633a2aca269a04389f9a \ + --hash=sha256:d2908c0d043a7d03ebd80347266b0e58440bdef5564f84f4d29fb235b5df3b04 \ + --hash=sha256:d622d8011e6d6f239297efa42a2657043aaed06c4f68833550cac9e9bc723ef1 \ + --hash=sha256:d8c2d0e5ba6453a290b86cd65fc51fedf247e1ba170191715b049dac1f628005 \ + --hash=sha256:d8f3192733ac4d77977432947d563d7e1b310b96497acd3c196c9bddb36ed9db \ + --hash=sha256:f13d13c981511331eac0d01a59b5df7c0d4060a8be1e378672822213da51e0a2 \ + --hash=sha256:fe9399bdc3f29d428f16a2f86c3c8ec20be3eac5f53693ce4980371c3245729b +tqdm==4.67.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2 \ + --hash=sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2 +typing-extensions==4.12.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ + --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 +typing-inspect==0.9.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f \ + --hash=sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78 +urllib3==2.3.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \ + --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d +yarl==1.18.3 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba \ + --hash=sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193 \ + --hash=sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318 \ + --hash=sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee \ + --hash=sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e \ + --hash=sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1 \ + --hash=sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a \ + --hash=sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186 \ + --hash=sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1 \ + --hash=sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50 \ + --hash=sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640 \ + --hash=sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb \ + --hash=sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8 \ + --hash=sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc \ + --hash=sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5 \ + --hash=sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58 \ + --hash=sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2 \ + --hash=sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393 \ + --hash=sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24 \ + --hash=sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b \ + --hash=sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910 \ + --hash=sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c \ + --hash=sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272 \ + --hash=sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed \ + --hash=sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1 \ + --hash=sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04 \ + --hash=sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d \ + --hash=sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5 \ + --hash=sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d \ + --hash=sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889 \ + --hash=sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae \ + --hash=sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b \ + --hash=sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c \ + --hash=sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576 \ + --hash=sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34 \ + --hash=sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477 \ + --hash=sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990 \ + --hash=sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2 \ + --hash=sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512 \ + --hash=sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069 \ + --hash=sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a \ + --hash=sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6 \ + --hash=sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0 \ + --hash=sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8 \ + --hash=sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb \ + --hash=sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa \ + --hash=sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8 \ + --hash=sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e \ + --hash=sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e \ + --hash=sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985 \ + --hash=sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8 \ + --hash=sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1 \ + --hash=sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5 \ + --hash=sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690 \ + --hash=sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10 \ + --hash=sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789 \ + --hash=sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b \ + --hash=sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca \ + --hash=sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e \ + --hash=sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5 \ + --hash=sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59 \ + --hash=sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9 \ + --hash=sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8 \ + --hash=sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db \ + --hash=sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde \ + --hash=sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7 \ + --hash=sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb \ + --hash=sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3 \ + --hash=sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6 \ + --hash=sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285 \ + --hash=sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb \ + --hash=sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8 \ + --hash=sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482 \ + --hash=sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd \ + --hash=sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75 \ + --hash=sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760 \ + --hash=sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782 \ + --hash=sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53 \ + --hash=sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2 \ + --hash=sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1 \ + --hash=sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719 \ + --hash=sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62 diff --git a/news-scraper-agent/service/__init__.py b/news-scraper-agent/service/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/service/message_service.py b/news-scraper-agent/service/message_service.py new file mode 100644 index 0000000..b5c1446 --- /dev/null +++ b/news-scraper-agent/service/message_service.py @@ -0,0 +1,24 @@ +from models.message import Message +from models.message import MessageDto, MessageContentDto + + +def get_messages(target_titles: list[str]) -> list[MessageDto]: + messages_document_list = list( + Message.objects( + status="SEND_MESSAGE_SUCCESS", messages__title__in=target_titles + ) + ) # QuerySet을 리스트로 변환 + messages: list[MessageDto] = [ + MessageDto( + type=message.type, + status=message.status, + messages=[ + MessageContentDto(**msg.to_mongo().to_dict()) + for msg in message.messages + ], + createdAt=message.createdAt.isoformat() if message.createdAt else None, + updatedAt=message.updatedAt.isoformat() if message.updatedAt else None, + ) + for message in messages_document_list + ] + return messages diff --git a/news-scraper-agent/service/site_service.py b/news-scraper-agent/service/site_service.py new file mode 100644 index 0000000..48fda69 --- /dev/null +++ b/news-scraper-agent/service/site_service.py @@ -0,0 +1,25 @@ +from graph.state import State +from models.site import SiteDto, Site + + +# site 정보를 가져와 node 의 상태 중 하나로 추가 +def get_sites(state: State) -> State: + site_document_list: list[Site] = list( + Site.objects(verified=True) + ) # QuerySet을 리스트로 변환 + sites: list[SiteDto] = [ + SiteDto( + **{ + **site.to_mongo().to_dict(), + "createdAt": site.createdAt or None, + "updatedAt": site.updatedAt or None, + } + ) + for site in site_document_list + ] + + # 기존 상태를 복사하고 sites를 추가 + new_state = state.model_copy(deep=True) + new_state.sites = sites + + return new_state diff --git a/news-scraper-agent/tests/crawling_agent_test.py b/news-scraper-agent/tests/crawling_agent_test.py new file mode 100644 index 0000000..a4f626a --- /dev/null +++ b/news-scraper-agent/tests/crawling_agent_test.py @@ -0,0 +1,127 @@ +import json +import os +import unittest + +from langchain_openai import ChatOpenAI + +from agents.crawling_agent import CrawlingAgent +from config.log import default_logger +from graph.state import SiteState +from models.site import SiteDto + + +current_dir = os.path.dirname(os.path.abspath(__file__)) + + +class CrawlingAgentTest(unittest.TestCase): + def setUp(self): + self.gpt_4o_mini = ChatOpenAI(model_name="gpt-4o-mini") + self.gpt_4o = ChatOpenAI(model_name="gpt-4o") + self.geek_news = SiteDto( + name="긱뉴스", + url="https://news.hada.io/new", + verified=True, + keywords=[], + createdAt=None, + updatedAt=None, + requestedBy="", + ) + self.devocean = SiteDto( + name="데보션", + url="https://devocean.sk.com/blog/index.do?techType=NEWS", + verified=True, + keywords=[], + createdAt=None, + updatedAt=None, + requestedBy="", + ) + self.aitimes = SiteDto( + name="AI 타임즈", + url="https://www.aitimes.com/news/articleList.html?sc_section_code=S1N24&view_type=sm", + verified=True, + keywords=[], + createdAt=None, + updatedAt=None, + requestedBy="", + ) + + def test_GN(self): + site = self.geek_news + crawling_agent = CrawlingAgent(llm=self.gpt_4o_mini, site=site) + + with open( + f"{current_dir}/fixtures/crawling_agent_test_gn.json", + "r", + ) as f: + parser_result = json.load(f) + + state_before = SiteState( + filtering_result={}, + crawling_result={}, + parser_result={site.name: parser_result}, + sorted_result={}, + ) + state_after = crawling_agent(state_before) + + for v in state_after.crawling_result[site.name]: + default_logger.info(v) + + self.assertIn(site.name, state_after.crawling_result) # 키가 존재해야 함 + self.assertIsInstance( + state_after.crawling_result[site.name], list + ) # 값이 리스트여야 함 + self.assertGreater( + len(state_after.crawling_result[site.name]), 0 + ) # 리스트 길이가 0보다 커야 함 + + def test_DVC(self): + site = self.devocean + crawling_agent = CrawlingAgent(llm=self.gpt_4o, site=site) + + with open(f"{current_dir}/fixtures/crawling_agent_test_dvc.json", "r") as f: + parser_result = json.load(f) + + state_before = SiteState( + filtering_result={}, + crawling_result={}, + parser_result={site.name: parser_result}, + sorted_result={}, + ) + state_after = crawling_agent(state_before) + + for v in state_after.crawling_result[site.name]: + default_logger.info(v) + + self.assertIn(site.name, state_after.crawling_result) # 키가 존재해야 함 + self.assertIsInstance( + state_after.crawling_result[site.name], list + ) # 값이 리스트여야 함 + self.assertGreater( + len(state_after.crawling_result[site.name]), 0 + ) # 리스트 길이가 0보다 커야 함 + + def test_AITIMES(self): + site = self.aitimes + crawling_agent = CrawlingAgent(llm=self.gpt_4o, site=site) + + with open(f"{current_dir}/fixtures/crawling_agent_test_aitimes.json", "r") as f: + parser_result = json.load(f) + + state_before = SiteState( + filtering_result={}, + crawling_result={}, + parser_result={site.name: parser_result}, + sorted_result={}, + ) + state_after = crawling_agent(state_before) + + for v in state_after.crawling_result[site.name]: + default_logger.info(v) + + self.assertIn(site.name, state_after.crawling_result) + self.assertIsInstance(state_after.crawling_result[site.name], list) + self.assertGreater(len(state_after.crawling_result[site.name]), 0) + + +if __name__ == "__main__": + unittest.main() diff --git a/news-scraper-agent/tests/fixtures/crawling_agent_test_aitimes.json b/news-scraper-agent/tests/fixtures/crawling_agent_test_aitimes.json new file mode 100644 index 0000000..5010f80 --- /dev/null +++ b/news-scraper-agent/tests/fixtures/crawling_agent_test_aitimes.json @@ -0,0 +1,16 @@ +[ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" +] \ No newline at end of file diff --git a/news-scraper-agent/tests/fixtures/crawling_agent_test_dvc.json b/news-scraper-agent/tests/fixtures/crawling_agent_test_dvc.json new file mode 100644 index 0000000..557a135 --- /dev/null +++ b/news-scraper-agent/tests/fixtures/crawling_agent_test_dvc.json @@ -0,0 +1,3 @@ +[ + "
\n

\n



Bloter

삼성전자, 19년 연속 TV 1위 눈앞...LG는 Oan>

하이브 떠민희진 “계약 위반·불법 사안 법적 대응” 

LGU+, 물류DX 플랫폼 '화물잇고' 출시 1년만에 종료…\"AI 집중\"

실탄 넉넉한 넥슨게임즈, ‘퍼디’ 업고 신작 띄우기 총력 

ZDnet

한국, 인구당 5G 기지국 내 1위

'디즈니+강공식 통할까...디즈니 '조명가게' 공개

디즈니 회장 \"무빙은 우리의 길잡이이자 새 영감\" 극찬

'무파사'부터 '아바타3'까지...디즈니, 내년 라인업도 풍성하네

강도현 차관, UAE 아부다비 정부역량강화부 의장과 ICT 협력 논의

딥페이크 가짜뉴스 콜로키움 열려

성수동 우체국 팝업스토어 둘러보세요

TTA, 글로벌 메타버스 표준 선점 협력 확대

케이블TV協, 3분기 지역채널 우수프로 8편 선정SKT, 저궤도 위성 기반 재난 통신 기술로 장관상 수상>

KT, 서스틴베스트 ESG 경영평가서 AA 등/a>

LGU+ \"듀얼넘버 가상번호 잠span>

SKT, 신한카드와 AI 기금융 범죄 막는다

KT세계기념일 달력 만든다

LS전선, CIP와 국내 최대 부유식 해상풍력 LOI 체결


Itworld

\"애자일과 데브옵스 시대\" 아키텍처 검토 위원회의 역할 재정의해야>마이크로소프트, 애저 기능 확장해 '애저 AI 파운드리'로 리브랜딩

Tech M 피플

'신' 페이커가 전하는 자신의 이야기...\"실패를 실패라고 생각하지 말아요\"s://www.techm.kr/news/articleView.html?idxno=132484\">T1 탑 라이너 바뀐다...'제우스' 최우제 계약 만료로 '준 영입


네이버D2

[UX개선 장기 로드맵] 수립기 - \"VOC많은 순\"으로만 일하지 않기 위하여


The GitHub Blog

How to make Storybook Interactions respect user motion preferences


DEVOCEAN

허깅페이스 트랜스포머 라이브n>

패스키: 인증 기술의 미래, 비밀번호 없는 세상으로의 발걸음

\n

\n
" +] \ No newline at end of file diff --git a/news-scraper-agent/tests/fixtures/crawling_agent_test_gn.json b/news-scraper-agent/tests/fixtures/crawling_agent_test_gn.json new file mode 100644 index 0000000..b722789 --- /dev/null +++ b/news-scraper-agent/tests/fixtures/crawling_agent_test_gn.json @@ -0,0 +1,22 @@ +[ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" +] \ No newline at end of file diff --git a/news-scraper-agent/utils/__init__.py b/news-scraper-agent/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/news-scraper-agent/utils/graph_image_utils.py b/news-scraper-agent/utils/graph_image_utils.py new file mode 100644 index 0000000..5eeb1e8 --- /dev/null +++ b/news-scraper-agent/utils/graph_image_utils.py @@ -0,0 +1,16 @@ +from langgraph.graph import StateGraph + +from config.log import NewsScraperAgentLogger + +logger = NewsScraperAgentLogger() + + +def get_graph_image(graph: StateGraph): + # PNG 이미지로 그래프 그리기 + png_image = graph.get_graph().draw_mermaid_png() + + # 이미지를 파일로 저장 + with open("graph.png", "wb") as f: + f.write(png_image) + + logger.info("Image saved as graph.png") diff --git a/news-scraper-agent/utils/time_utils.py b/news-scraper-agent/utils/time_utils.py new file mode 100644 index 0000000..563151b --- /dev/null +++ b/news-scraper-agent/utils/time_utils.py @@ -0,0 +1,10 @@ +from datetime import datetime, timezone + +import pytz + + +def get_datetime_kst(): + utc_now = datetime.now(timezone.utc) + kst = pytz.timezone("Asia/Seoul") + kst_now = utc_now.replace(tzinfo=pytz.utc).astimezone(kst) + return kst_now diff --git a/nodemon.json b/nodemon.json deleted file mode 100644 index bd415b2..0000000 --- a/nodemon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "watch": ["src", ".env"], - "ext": "js,ts,json", - "ignore": ["src/**/*.spec.ts"], - "exec": "ts-node --transpile-only ./src/index.ts" -} diff --git a/package.json b/package.json deleted file mode 100644 index d4e45b4..0000000 --- a/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "ai-news-noti-bot", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "nodemon", - "build": "tsc", - "lint": "eslint --fix **/*.ts" - }, - "keywords": [], - "author": "", - "license": "ISC", - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^7.3.1", - "@typescript-eslint/parser": "^7.3.1", - "eslint": "^8.57.0", - "prettier": "^3.2.5" - } -} diff --git a/pages/postSiteForm/error.html b/pages/postSiteForm/error.html deleted file mode 100644 index 874d8bc..0000000 --- a/pages/postSiteForm/error.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - GAI - 에러 발생 - - - - -
-

뭔가 잘못됐어요 :(

-
-

문제가 발생했습니다

-

담당자에게 문의해주세요

- -
-
- - - diff --git a/pages/postSiteForm/images/Mar-Business_18.jpg b/pages/postSiteForm/images/Mar-Business_18.jpg deleted file mode 100644 index 1557a7dc42afa5ed4963c48a6581abbe13dc46e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1285635 zcmeFaOUxwAmKgNiJNM3vhXDpNvWz^7=C_S((*5WA^?UBv`KWwWR%PX*9=SpJu6$Hx zR=zVO5DQ~i+LDFD3JZx13y@gAf(1fiX~6=7kXOLo0ttcG4N+CyfA@d8@14sG2qA8@ z`m4yuh?D0;oH%jfoRg>i_`m<-|KaWTG)a}-e)QuXz5UzZ-`gMmk3agmn>kC~-VEdI zUw(Ug`;Xs#`lCPp_8Xw|Bk=F-N9fy+LHS<<|Fs`s&+_ksa`~gb`F;6c|2MO@pFG>Y zz5N65{l-Og5WiE)a_IWj@9Xv*Mt+OE`)jAHit4HR>u+xuf}!6b_;)z^4q?7Sknc$J z&20U`@3Q`#ejWU(8z#Scd;9U8dOCs{3yK**8z%-+}U@8vf?pvq@k4?3>rToelGy zP`B|r@>}YCh!V&2ldeZ z>>GgTlY}Vz9%?hRtZ~WD9{j8y^-qK&*IEAxY`Z;XF z_~jjLx9?kby%m2Nj<4d6wwe%N_4f}!}n`}aIu zw_gYHS%W9HeSB{7*$n;wWpD#D#J{HwFqxI5*S`BY{EuARKHGp^QTSa_w>KXUmEHU_ zhVv#)A5U$*GXPgce(#HZAOGx|hopFq5bsgkLGkYh_B(`x5E_V#4~^?6OP0@@;_q?P z`6yJpS1X~70kAJxq2x>Sd=Bv0v~HccE@;=CmCD9WM)$B--{;wXtQ z0`n1o6<1OASZ_k@AcjoD_^&o%ildiD_f zf&u*I9pIer0ElP^W5A3rkz)dpQD#Bwx63;e`4&N+c)b|vJHu~_7>GHi9pZOu%P46J!b)~`|@tr__r@>!6tmI>atFkFYf_fjN2;izr54=N!)*> z$C$OlR}h=x;7b_S$JYB5`fh+WAilor05F;Aw)pbKOQra-9*p5_sIt(1EWuc6cf_UqK3}NYzVQ`m#@wwejSa z<(GHT)^Dy^_~nhdDgg_9S>MI&n1x@van0iLEBH=+TV+-HC8W3t+vTZle0eV&{IAiT zRY5&}+4`X^e)UEbPhA=JUtJ>+5LjR1tuFl98t}ug9;&afxnIWZSE?Ut)33h5{$QGb zV*0fnfDs=&%F9!yj6-7}1FOm0td1U45CIRM8j=jw235x#J*&dwzHhw11Q~+`sgfXYOxuhev1dIdD7- zsm5tjiU*WExCJZQ?ks_ZpbKZ%o4E;YjIaS0!HGn|Qd15Ye>olNlxF}+DW|;vau?1x zaNOmzTf+_NSS7dsAKN{Os?H9Z?8&qnU$*1xXPC+2QgUcJ);pX(DT*F!&CXVdo> zx|ffQiWd-1MhEXve3H*k;JSETcMqU~8db;gd5t_U5#;DrmJukvNM@f;E&}D)`;Q|0 zdU9|&UPI7`=N_H7B9f1}4+^~axa5qmwCuy0{=1`G(x(m)^*T`Q!Z$-!BY9^vO?}@{9=CXeM+@0_Cu6u^&zXNV`(ehkRxeWt^Fz;~^!CfZ4=46BmQy%A(iAxWH%&8q$aKe$(YOb1ug3}AGO@-x!;Wp$( zPUJb`!Yz|{;C3#DO=8OJU5=W7urn_lG=Yuk5c1+-<8W5NE7PXr?2b3m4Z%4CZyh9q zJF5H>;OQWx+$rRPR6@D)#HW+IX}Cn?p;Q&Q zbP^;^jkxS0Y$ug?VOVSgd(vF4Ls^81wkHfq~s@SG`ieo|%namW>Dnf^Y3^-t; za)+K5yN%6RM_x8I;lYAe@8P(E}e^l&cudj{kPrgbsmhct!seo$((53os#>Pm{RvRm5-O7B zm0)(-hAT?JsWoRR3*lU7`E)CUpw`x@DutxeHwR!h$r1g?HFu%j=r`^@2%W3rT)PTW zw|xRs(~cC-&DK8*oIs}AjvG}0+H9f2WQ#&=9Hu!G71zkqr4kL!zz*vw9*~`uqMUfF zcM*r}MZefh6COVSib=ZPOvE4-#opscSZum|pVGEC5TLoy z5G?Mt*%*h5#X}pdI}Db1-k7fS1h|>OKbNrr3rw9~TZ^UCn>4hwt0rx32m8wF`KB{$ zVm8FhVmOBxY@~$YG`uNoAlK!uhf3NMu79;(BuhHtu2*N0EcLkKk0Y%%hzQU=Yew}Sa>B4$mjVD0GbR*@8 zD$1FQZWb;o@f1r}l2dMVT=Ep83`Me;8A!p3q~sx3f$CJUd0v&L^d^WK)#R>ffwz5}~F4Gq6sMc!MF55_*>U=NkZYp`mr_7u*o+%vLVl=%gu*}soCoO&9bk@SK zWS2{&0eOC1eEbPe8`4S^B2B~V>b@kQ&LOqATxVTZYg8y?-ANmNxkY-!-MOqr^;>$s zEv>0fYP-w&MkkRLu_tLO7TptIkS*DE7xton^4s&Jzc2W8d%X;fKndG69O#TGwrD*T zHmq!6V%j-;XXu9sTQ|1h)^nQ6l#!^5o@+17!DzY#6^)&NT-IdW69&9N^wlbN8i8P< z>+D0rmmt_~^_Jb8z$hmyb{L0OVshT|2f`IIV{fG76GPr9h5eZ!N3kOJ`Gtza z`?4Pxdh7J#lS^_%lxz>U5|yp?A0VVQs|3H93phZ7jsrErSGnd^}oSBjLp*vu=@mM}o;( zkIEBZj3k^5BQuvjSPpzZ7ebDU`2 zYc4rBZDevA_H|Bi$eoEFxyn_f!+>sN_sCl}RJpmiWGB*Aap#?LM)!9Y_S{2ho5x*$ z)TJYO47HPpdg1Y2o>(;697*l`#E_8E@uZ-a1ugv3sq_Y^R=}6vlr4HfjzM`G%d>b4 zujP6=+ffutxOToaaUfCbd18~x5n312CxbTd!B?G4w;JjIR&m9>dwCx1UT2khqiiSzjNuI?Y_3l_@OxrKt=)MA3Cn4(^lWNa2xH zaqH-ELe-ltD6?b5oJ~PGM+5@f{#KXNKATOuZb(M^_k$4 zn+81rP8E|UgawlqUP<+g7iy_ZLrgGK-A+eaJQ92A3O1Kib@HnlOLyY3zgD`85+Qvh zA(dCJO=eJ+|^KAaQ-1^#8crw z)?HJrqPp7zx!V=A@2Z-um!^Gu0z8vv4RGG6B165zPiI2A8ndDWeyLoFQznCeP0LIvx zeD}A_h*iNoN$-+g&w7F1{o7s9@8*5d+sGfAR$4klM>lPd4NnZWK6Pzpf6Qo(>y*<( zwNlze{$kTxp3u3=aS%*Bmf^(q>J2-YwA)G;@`37u?gen5Vnz*? zV6;wbP80fA+Yn5%)Cixs&=9-nl<)+jB~w3&C&L6r17)*z$L$>EvegCRj3~;;r0lX? zUrTS_-N+@+^`7alg$|5exS*?Z-t{4Yt!-fL7>Gc`>M-;h1_@}}WVbwmIL_Q#8fuJ3 zr$1Y0c|KvgD14HPLgK~SSPnpMrmET)GKO-42H7_OHJsaUKhm@s^qUw9=`0`m zJ{M~W|5m7{|_QZm>Z7Si@f1T{K47GQy|Y>sLV|AB>7Qz{+~7vRch?;isEtTD_0GtVLA+Q+eA+E^T?THL{~xCGvCuVc8vJqSB| ze)2y^Pk`K{%HZwVZk0}UR^_|G>!Z~~wf3`wX8hk6TI3E%-hX+H>{4vYwZ0mRq~ zU}{*v4j`$PIvcNJ3%^XSvYQ1O|-=H>f7#e$}T{V@VNQ1+w5X(lg^P_OzD$kE%ziji;75c zapt~XrzLF=$Xu_QUG#?IlBQKg;H=sNX9_G+j=?V^Uo17S z#gdr^d|+YaQAu&%7me>%cl~z1Q%m38p%M09v&>C^O*mom;4_ioSeLld()seI`SS$$ zr|kRHZcl)JI$U1xjyn={5w3NlBNArA?g?-hui2l5ybma@4iqI-&aAr={8HL8hDo6# z-LPgK*urj6HJ;Z(sg?%$vMLz?;gfKml$`d|GM@=(AIOGAYK##Fnz@+0xz@<&&YsUk z^AkhAC!@mc_YAur=p5{i+F>3D(hwHLuGD-mP@@e7@4w}Ltu4nsxB21&|`0Tndmb-9LImN9m zmwN*ZGCZKZgLAbx`l*Qkwy2%}O;lHTdhp>%+=R!IOcXq{Twx46u$hk`(1xh{5#C(x zb#6>J1{3@Qp1C^ zP;kC@@FbjBF-Pv0$4$O{K*RQ&AEFO-8`x}bG=f!N-n=MicW#KZ6tCc->x%QLg_cM( zr+zCB>t2EYfJ`%iuoKT{Cc;SuGaJLaE?{5Ggz-r-A7St&U1~kjyVtF8BhhE6z)vRw zrqu+Unf*CD5^2-N7&t@g_I`}ANywRqNyHMDVs*bM3vnr4lVV%*c)Ym?bf83KBBS}7 zi4M+~mM1BrdjY%fql<107u&xb9hlpy7f9I-I&+BFOA6z}2m@Eg^Qlh^!K1rk4EDR& zEf{}`+}Aq~Y0F`DOklCly?g{_`V;5bLWA=%u|F2txltEZ?1{@g11FZbN9p`E`7eOK zgbe_HWXjDsRktCzqXW4yG-y|v*o{&szLKLpYHlGcrir7_4%EC(qwy7~b0sTwOM#=A zGdXa&fty>-T%a>lDpa*6coH_6ys2(`pil`*GPcPmN7)G7V|-ZwbN1Ety0h8WCbg#r zcFjmu5|XWN2X^e!`;)cFt_8l+$NAhc85WEThgg^Fpw8upBPKeCFee0Hc^*o4ykTUy zZFr%3@u6}{7wXX(r&V5d{MMI}oqgi~>mud1SUF}b#3bW>@(@({r% zx5@cAEqJam8vW9~q$}P|3C*18IiITGG|?zwve1?#X2QX@mxy8%2$mq`0=kslo{a%^ z3Nhljay7&L2fbfQ?+GIL48+j@ZZB#L?UgD+*~;QguBJ49)HrU9shG>TBfb~Gpl`Ry z!VFEb_36I4^wMjkEIV1mNami#_(V1XW?VM)q8K=v-~7E*UrWsQ))RWU`}y5CTK--> z)lemg@mFNT6T?qjqmRa^aj;`$OF$QgMG7^q4hfO8ci&^Xz!Wo<+btB!LwoSBEiZ@t zx=;}nI>`ZC|(?0G9=;G#=1vikWIo707Schmj*wZ`_ z&Q?{AgUvI@vIvH=9mH*bFS+-!!ESngkvVu#h!R#3hEw(}YIby1j=9ORHGHCS2`kma z-GX(f-BYw0?8M*sNoFUgXJzc|3M(clGD-My!&O*?TmEQn*{iqoVIw;`eIoa>CZjR# z>uxq2Diiq3_%_2? z@zJQNp-GrXreI>V6UN>Lu*h=k6bgya)$kTO?X~FOADEZdEU_9IA<27;sq&dWSI~7~ z)x*|1Mb@!8y5~zFG+=Ev@D|x>VLNZU+a7B~vS6^u-)%)d9u+A(OR{3V4nBxRvp!Ml0QWl3mnBYY7yvOk2@0ddc*HXE<6111+qSwyC<$dpUi2Er&|__c9@9`yYnW^nwf;V=-5UIp@FV?Kn|4u- z?9X!yvpY&|4o9$&bmj)$O2_fO^lWAz%-P%|vkAl~bA`?7Og9^Zwu(?M%3w%RXPiyJ zI6{dEN0k$=Sed^poOz|5VG-)l(U;vUHDiWCz#eUwtJwIdlls6DpXzp%8#NW!oKnJF z>d<66pzy`9$+o=0ke?l-Z`N zYR+&vL`QD7-#I8_A#2Vg9bF-D!!6FHo^fn^`2qr^#0R3pa^Up@TbdT9f^V?!xJCmv z@;oIEdK0w?#4rg^QaRu=3T~%STWpy~Pq8|8Hs=R9wwl05_{4D6^HL4A?I~G%NMVg0 zHl&=mM9`HmNem3e%_P(ISF3me{FC}wyFSo@xs)_jYh73eTWK}R*g?`U3#jokDFB;g zY!hJ3zxEWzKvMUP9%QiI^P8jezHv|)4fEGVaH4v&O?}_^kpX1?Y+H*^6rL#b`zz0O z_myo9i%8kawP`G>dwI=z)+F{yaoOadzAr-*a?DG;w-m)TRyjD|6mrD+o(EdLUlRt> zU3W#`FdRsMf&w)1Ib}re0m#25j%e?mRoS=v5`Ku^Cq346^4{`}=3>F1x>!B~8b-2r-Eo zs+pEWR1naiPy4;zcCl04fq6qZ>h|%*ULR|)g3ZL<_!B~(zWZyLEdk zNX-hZQQNrID$k8|g}qzy+Lu!$s@21Y3N%dmH;5f6G9ZA?0n~^wVh;ll6y-gjF}Tei z)$xX<$Ge2XoY6Z;jI&`P<@om1_&F&9uvmPx$HaZvV}PMk158iQU}iI20$rsh0#4NB zAl4iF<=2D52EOO)$zKvXPx0@n_P ziTTUsU`36@i12~LPokmC4OV~7Ci%f8X6&> z=5=9DbV)eho$(IcVH!TeCVU~7lR2E4J=9Vy{5tEgpz+V&;kJ+F3~-~GQcjoO!{8)% z1z6?ze1S;6psDdbLNE#{UoD?(1DgAjU(1qLs_kF~a2oQZ2%f6a`pJ(b0AQ)0yNPEi}0*-B+jaqT+_uQL@yyf*q`aF24`ROLk-ceZ%W@*`Af)OMe&?nP`@ zATAc_WRm{LKAR1@lE~Ut6AN50#mkNjR8@Re2+$hs;jOqp#St76 z&Ks~R6rtDCVd=|;zE?q%26&NYmK~d0jYbKph`K3$Q4_PEDthbrU9x!@B&BmENs=p+ zoUte;;He}^z2@RE5w4%)yL)A#$-y#ZlTa(r7lj*uf!|}565H&aKgU2xUMnT6wh)#x zwI5veIxek=-~*jh*3f8#?0ZgySmL?PTtH4n)ez7I8GmPPrMqGBcfm^YygP){*|CA) zF?vo)P)M`qMeau2z+JI}foF9MR&uW?H|T0EzGfELW`lCojbpD%TW#1eA%G86iF^^F zkML?RxKEM+f?=<-9umvgZD?>WmM}%%=)HdgK{`50(PT!6R&o=p2*hEmiIoDE3tTDW zoxyxK@y&K9F*FTi1qGZiX&m{Qlu&~(I&G~x?ZrEV2s3dF<8VdeN~MNTbKHxdAD)() zI;MPDQK+E~+66ep8dP0EUb)X@VjWoL2(wR;S#a(I$|4BKZWX*9oY6%SII-avF!rsL zyGNiqn9&xrfl7!;81#bXG&r!Cv9JBJ=Ub0;YatL-_IYe)32itfe=1VaIPB9U7Q2pg`q$AcP#rC1d?m4Q zD5H|Zz8=eg_T|`e?~-U+*Nk@yD4f(1L2AF z*=8<&jzE~C&&~n?f9?~Y3X`{LbMc~uxg;K3+UP)=3)%onyE>wou%=n*OREMf*YX{8 z2i}#dYbBGJXcQ5!8*y==E#*YO;|JfUNftbqL6xrPJ9%1;sCNQ>0N!PV{Y~#bZ6!Jf z53vXPT0#ka&KO5mux&er^waa~L$)yaVNy_cg@R~@AiL9k?qC<_!`tk@jF6N&I~qHJ zuoadJ#iN39CSavSB*O}bKyK?B$~8E#b8L4bt)`jxBDrPAy#PD6Wq-M>8yLB=bS@|x z!Bm?uECjr4VclYhwf129d7G{Ati^P>cBg^}>4m*x;$;puiB6nxJh zCW~x3cwfPJMS1XC7BG<+BhA61mY@kToX)p6r$A8HsTRQ5%Uu{pCN7DeYdl!1`Rg>w zkw_fyimGn~_i(=N!Dd7|ZaupFjacp`jt)3h!gn*-DfgXmk#h!@%gyYGU{dbrxy6<1 zjn{V?-@DUumbECmJEzkyS(F(9Q%b=^qsT{iv9){aC`@=!Y%c6_$Z{O0wFrYj$I5f% z7V{UgQ>!Ys?RqB&`Nj~0CqUg*=jNC}9&MArcw%3)=)~@_0w|_bQmYe{uJ%rmSFt`G zx`|FN$UU$D3-u>+Q9|M}Yrs?jv{#bM`zJsfZN0+A512+Z3Imvu?Jx|OE~If=EIAN^ z3|8-*{=hB9Iv%*Ax17A(8En7Wp|YCkinefiVx7w^{Mw|XNQTKY2;gEFLjFF|Si)Z5 zxG;f=*u(mEO~{TRv7v{0Nh2d*h9u-`cFD+VX17Z}>C9=npX-Bz-SsDiA`f}8Df`OZ z$);E*TO2P~b6Ztsr`5c9Uv%EhEfR^*4ZVo?W4YTg*m&7DOri?baRY}))cP;| zaN4CoXEbY%SEoUTxVbqaIH{tt4l%uwia?a1Jk;fkPtj(*K=NoDS}-BqoGoWpI;`1aIPCO z)ros85`o3T#oe6d<14Cawx9kT$QoB_dlRoqpuoqKqwN*yEQQ&_z|-vj z7BG)wb&m$LW9PtzgDjl)W^^K|Jx*M8iKQF8Mxf`U?1(W)&Ocl8I=PRZWgL2f$O>Xr!f7?|d$KEARYGTagCI_!wSG+%Bw z3!EztXWJI?M1ZdZyxpC3N#&3Cd|m{%=*MjW-7=pYtO!HL(8f;{Ha3iumAAq_EOxTN z@B3?^9+2}ZB503qi4M5#kt3=P+yZt*TTgSz)xvYxd(&n+bqLQoVzTtvFO6N zQf|RI?;?o~oSS~Ae4C{9@N*11V58Q}8JKI&hiuObNr)Y0)}F;(f$!%d2zhfy$UPzf zeB*o27Az?6hGh$}6?`)B2H2ht<#i;x_$s~jW$QL7X?`nvQXTlhH4g2ti4L~jE^Z;; zf^!GL=I)%S!Xa_%c9-S6_H8*T9xh?X@emyGBM|i71ygH0e_?3Q?!s~vddF>)x(C3m zDMill#HnT%j(nf8C9JI{ON*&%z)zQ!Dv=9C&$x=+6lE%uSqC9;PFv~GOUL$sFRMiJ zo}LlN=_9_tRT>`SJGpK<48%0Lm;1fArPU$X4C~!|2-`gfG>L2(`0?vKVfGIbU1+(R zc>lyuul+taZ6N)gfYswX7tSUX8tQU~fck>s2iO2Q*Q(ryn#$0g4MsaMq*%Y<;E)RR zoXB2k;Oq5>>2>g_h%1ioP0ds`++Nbv!nUC$*<$7CRQS@x_q>ga_Nq$M)v1()JHKKS zGxo>TCAFKIIqSBZC81ikkoQtJaVbb{R(s1ZwBK&S!>UEgM%L7+Ao5Bh7hC1wgbP@P z!tJO%Y zx)ggW${QjyxD5yj`QeU;oi7SYZlM+`2e9OxV+htAEu9{tA8am?7mzW-LRT9>ty_7t zm<^Q|1V{1n!#U8Sa>nl_l3g7WgnxC(Dk2BDs&S2-?m#L%0RmrCvP1uZg<#(?)jwIG)!%?Aaw5DKM1DXp}amKKB zMN}}tRXC`WdAHYr*e=L*preVArfiw_`gm8J$J=@>xRpx=jw!$*u%pxP=r!rqIV(O)X@y&)c!ACXK}lj&eZW{x1v z_*feLW)lfJeC6O$QAl96E|M)i!^#w!ag=}<5`B9%-64`}1`%M8&4PbP?4rESEFl+) z0$+@p?UqZ_TgrYx7g|`VRsq~XDbUHRB;a;$usEZL)xn{g#-2~qRnfG|W~ZJY^*&u* zdx~{xaoHtfgt2xRi-r3+WRFx*K{I)TJivl$)Z%1u#&71*8-cxNY~1p$dlY!E@+?1~ zgc8I?1YzFkW&7%ZkV|E_K)iU~9Ryp4{0J_q5Wd0WcD(Yf=NwsKs7Pm8@blf7Hx<#S z=VT=6xlS%L0n!lc_Ho0r>nnCn!j5+lQC2U4{NyH2sEu?gec8)7Ffb1nP7-S6Qtd|C zpziW{t6JbmjdN%DV&dduFaoaHO{bf8bi0@PgL5N0zHztmV4{mphx4hL=9~^m1>OK# zi|olYymNu=y3j)x3XEuRh=L4cRcM*w>HWAX!`8ze#}?UQW1`0$+1Q0zNf z+VW5Qecj?BG-H_AZQVseREQaYRS&Pu3xxrv7~<9tvXUUs19OH}R7RcZ zHOu7gENVqzq1wfRX4cB3;$&_Uwl%tfn)5SRfV?F3?nut9ai4244?D>ejwf6%9gGPv z#RD#a32&k4L+}YO5_MxWQdMxy$`-^x6Vj=xOfB1!*#)RE?5RxHAlWm-3eMhV-~$29 z#3hoZl(~63G6F+f@)w*P_Q%(x)F4P?71EY6x^<`TQXTP9pc&q7*E^q~Os!C13bL>; z{OSNtA7`Gn!VQ`0t4&oP8e7moWH@bthpfWxrNI&v=3m!H+$QP<&ew38(s*x@dmolU z-_q&;2ey*Af#=z%Lv8}c|8N<+=ad&Es|H$khL+m;v95t!!_1d@_#dm2Xvgy5vi zQ^4LvF*kxf!*3NW^$ZSQs}nR=?87>DPnyWWSay@db4HDqt)~MoZ_buHx{t5UBA7e! zx^+(!x(BhL$ZHGm97J&_b3^8NwkRO}Dwr*6RyX-Mt0~SaQt)cfo!0bEkydH%^hD!I zmVE|ijX)V+RjFy&fRW1#p(hpe2!;v3jpVV7Nj12R&?e6yJ6 zEe$-!{%*Ag(#a3Wb_Y0i2b&ya9bT$PB6tm{35Q(@EL}Lj)DvazOzxF?ABe&w#emaF z_Y&x&+?J@B>m#jt8_y0TY-cy_(TE(3$nKEr?QgFWJ(x)?(l8o}b;jr5Hfg1QezO(d6y^&K`br5y{?nVs!7aTD~TXul9}{XpS%yT#K1KJpi+>M$e?Jxz!qd9pyi^&5_|)kuZWvp8yXo5J(z{>F#5;;IaFa~y0$yo@$`yoXX?MzT)*X35 zw+kF^`6x9deSaK7aGWN2yrJ{KsEYZ<9js;NGP7;-!#3Ik7VJa)lvQ>Q z2GDHyC70L(OZQO--h!iHAT+8Gypq_@{(7Pl59~=RbK~V8+YIu-4582lF26@4-^({j z8yAvR5Mi7OjLFk92X9B~-XSS~|HM@nGCM*rTbes;U&ljI1f~zy@UcDNMQmNjniQ!_ zzbbeA2*RSCV+iCP3+=<6wk%T-EadbU%@8`U{fF+?`8|8F!oRQXpV8 z;~VFEUk_P)*mH}lgFu6WbZWc(d8xxG+SV_dgMQ9Dab8RUr*V&JdxJ6gT;UZatoo6Z zliLBVk|pj+^2{34<=BJNR3)#*y9=4d6+K(b0lu}peLHzCiJges1-zZ6Ppr({4<>LL z&){9_P~9*0RRO!)BgoNs*+LHC5|>*S1OQzjGKbG#zja5jm3+U8Jjd|ow~|i_>9vMX za_MV2J=sfeZ}+Gvr*1N@9ekm&BNixCmdTp2{jn58l*25FS6uqp(RSltW^k_0*D9VLy z+Zw;!q;^<=vv9kQD-glN-#2EGW6~bO9leV$M|S{mA8UuJ8nkUd$gyd>jumhPnQ?Kh z#8rlG;)x9CYypwLdn^m?oe%Byq^6nc0&I04u93t&D3_~QP|hs~f&@WC2d#zA8xKISIX3k`gn;2G4 zqiqY@B^z$;bbWeZn4OMi>v$&o-0u&1ybtWN4~+$9B!ZfPY*e&$MQ%AaZfE&89?Zo+ z#bv%%<-(%C_nDR38tZ43xENp`evYASMK`ZcwZ5Aes7Aqixgc!8QU(~9AWM-0ZyZTh zTzGk%nC7izZaW_~M23t4RA4+7oJ3CR331L9c%Aj-y+vr?HC2K%yFz-stu8U_7>j&4 zq&(^aPpBDz(@BY2$#y6v%Bj(NSzRWPP@lrp%ZF6~E|Z(4TOS2%$lJkTd!*QFdUP`g z=qUTy`a*37q2W`HF! zw0QKu_RIih07xSN;-$|K4(la| zFk!fHwPC2ZJv?e3A#gjL29X)UaSO#T3;Aat?X}$uV>SUVa1OsnE+g=&%=b7j9AyVN z+?6v7!V%#oga-{kiP}9NAO)_#-ZqD~z&rxZb3f?(BAL^_0-*;Go}=({Bz6u{z-AXP zMAL6i<1uM>(;xuDgH(xO*UcKk28mISdc&>UHdyc-zDH~$!LVa+YF%b`C-<_oCCcPwF~T)?6SuZ$heQLLH9GM8=_sD{o z71Q5*==?Do?C04X(SXItkc!`fS3}VEgpV@s{eVo~qXfpF2u4#r5q<1m|LL1CXx_pZI%}aUMy5+3yIT>Ao_2z8=%nNe^4?)uk1q8MHu$<;viNccJVuN;T}S84jyQgObJ{UJ>t73t3>8T}P$`eDZ8 z|9i=yk`NDKA22IODjEZpd+&!d@}Bi6p9F6bBm@BxgMLX4NWzLe$ia~BFy>d7A|PZR zb5S?%1pgMd{yWQ`-l6!nAiL)a_@~KvWFmefm-{nJ(yx|p^{Z5UnOgRjOwuo;>QjE} zKY_ld1p1J)^XHe}^WJCqk3R}5kW~3m{63rWAAQWa{Oj*ukHD`-;MXJY>k;_%2>f~k z{(m$ApMDPlX!k$+W&*$V@W=n;H~zy<>IwcW^2YG0@f-i-`CA#k_xQDs=Wlv^_VoB-hN~I2S4)Oe&a9wRrwFVZ+-mu?I(Zma)Un#zw;>___No?4B(H8-+U$geiVQD z%s>1n{RT+w{k-|g=KU!C)`tY%&+>e@{Jd$xg3jfq+`L`d} zzx5&I_OsCggGb?~&&1k~(rqq%_KBcvOT>kW#$@*D(Ca-=r|B$cx+5A(A>c{18zOqt3 zia&WIqJB32kbC-3{^>K_^t1LuhUpLGXHw}$`L`c*Kk`UFFFvM@eq8)!|I8NsDE_(c z6GT6*e)`M_{V4t9kp}uv`0bCGpC1>$^C{W$AN<&S`{%!s9RCk~Jiq;`e^%Cg_hZJWms8(7 z>i-u|{{5hMlz;q?9>3oL1VQ;PKFaB<{5PI$Ugf|2C`Y#{0&N~RH_bXm{

< z2Ib$_g7V)Tvv>mK{}z=0N;%vzQ2swa`S)+J-+>hMU z?YDn7{j3~(R_@~&;Q96@)Xnnz?U8qXE&S{6zz@(c??A44-UF=3WNr8lpkM`&rc@VJP!KRi zdefC+0a*+Ik+uc|X#oO+4%U^9EYjO9xIqF0krF~EDkXFlLug6p0YgaWMEV!c`Odz3 zcHKSaeXsBO|Id3}nd?e2bI;5@Grwn^$vpGi&pdyBtH`O(P@UMXaR`8)Vvprc_f9GQ zz7zkCGybMpzp2ML_8Q(j_9_^=C@Xd^WA7u+KHUHJjVGtvV1IUm|A*OrQ-{yqzxQjl zN9g4)K-f_QaI9Atz{BVQ>=QZ+;IYeP$8i06+)NKz0Y0C3)-tny@Aqs!JN|Fq|MbP3 z$PRM*xw)SDEWUEf@)Y}(Qi#uf_BrwSYd_!+KmZ^NI0=vj$N|m(lmQn28UP)@C4dp& zI=~!Y39tb;0Gt5#0bT$&AP^7+cnJ6&5DRz?NC9L5@&GRZMF2GWZD1Hc9pD|H70?Oz z1waIl0OJ5EfDTv$tOK^VxVZSZj&ccco#c|?I?biTb%9HhOP|Y#%arRDmkrleBbkB@Rjg2 z@_pc=@_jmR_<+oT3kQr3+&KU{@aRD50n~wp10N2|9@si~?BMBx+6T=KIv)%^n0WBz z!PTn*ReoQ{bS$X@ScE4gw(psR9)Oy#n*c4jz*~cIDXJV-d%)j$w}t9$OO> z5(EmG3wjC038Dns1wS6=J1&3R=(zLoC&vqpHyxi6;t`S)x+3Hx^jPSnP>T>%m{(Xq z_?oc0aIA2taF6h!$Z?U2B32?nB3UB!BIBYwqVl5GL_I|lMc;@Hh;E8WiCq@ECl)P+ z7W*K^Iw5i5(usQ~VosEuAfDJfdFrImNsp6BCov}};`_uE#Vy1G#dF15#OEc1C3Ga5 zBw{4qNQ_8wODam?v%)>%cnd~rJrg(wfL3fS69CZ`0A&xdcN9{Rgi_qK9VhyrN|wU)0A_Odm;B; zZt-iGug$&=`?~n+k<$lHYo5M;I_)(6G)rDV-dg^dJVySb!U=_I3Ly%`3gk0K&lsHX zJ(GW?|19rW&9fe7bI$&v$gQZRcwaF~u~&&(NnOcJDMzXA-2QV~=V0gZ&kZUcQNFB< zP%c)UP!UxzRe7X>QDLfn%{C`VQpKz8o>x2XdH&^j67V?iI`9#&7Px#t@q*KZtPB01 zqab5YB&Y_obW!Qzy^FaQht!1B%+#K#y;s{&*HDM6qt$5|Uu%4)k*zVPDXjUeW}If5 z)_$#Tv?8_Yv^KQWwf(iv-s(bUx}T=-$(PsXL`7t9MuLC%tj~Q~KZO|ENE1 z@Rh+`gM5R@OLCW-FCj0@UOvm-iKgT-^PBVEz`v>bhIK{zO8AwxhCGHQhB1acM#qgH zMwv#V#K{qCTb?3CU39qzk1_p($&FhQrDcW6(xFVnt z?<3_RpF~n0m^^s(@X$k#hux3PKlSOE2wNIp;Ja{to)Z}UL_x#_(zaM<2^DHlF zUzA%^Pc$exBYHQ+Ii@4_d~9m$cAQgOM?5e-J$^62C7~x#Ju&w=?{nDmfh2>ZS3d~; z5c0!RvRQKVi&HORUaY1#rnIMCOwCI>lopUSo^G06lks)N^Nj7x`eN=@RB(lLU)5#Ri_|AJ9BO#du-6#U zxc1iP?fg5}cT?{j-;*0ngmahrktke(|*(2)F(4XXHsWn zW{W;v_*h3Xru{N!J4dDa(6{ElX9zN~nP-@l3zrtU7H=<7m*7i#%W*3wR|;1zuD)OU zc5QUsYki9q^XcTLR~woe_)Y80*{#5BzU}m#vpcoBH+IQ;UVD3cOaTAi?vnwW-?HZd zTze$I6ZYlBzwNmH%kli`{%>w>E-rQ~`}1qWzw6n13lKbT?CJ>*9xg!uw;&gfAlF_q zm*nR~iGAEWznSD5;N?4bXy1Nrp2O@i*^xY-uZ;fT`1bQ2ILO7lkLS=ab{r26J9^)- z!^e&u;1XfK)|6+T;C^1duZ{~H0A4<5AuB9)*Ei|H2RZPIei4Xh>fr5@5Bt8kl}rdo zvDQ5F6BG`r`1+!M<IzvB0jXoVOEeD>~*ljUi(r&Vb|?+XmSUwqu; zEUz{3q{TShNWtWljUc;d_Oylf@WF$JjUo-s7yk zn(@IEtW{{Fy`9A#Adhn7bVoiFmsDE&5v@0(h?-4h-9B$XbEv zby|q7?g6|^1NQ)#TJI$fF|FYNSo?rpoITibdpJX~?sI$j=1rUFLO|fh^c;BuW3H~M znpvBTuB=*QLMReoJnSCHwW14}1>2@2?w=YmsqeNoF z2ttGwtvSS>9o*D*LCNadHKm=nQH4agN1-zFQLfdBNGLSI67QTK^W%RWV@{3!w-7K; zL}fzVQLm8c@h&K&tgPN}#(Wf?NlL@i$Ut_8t8C5uLKx#!-p7WJdVNDTeOhe#&o`%; zHW_zXIxEbCKA%9N7KK=#P^rc8jGd05p(fAsUz;u&ds6EJF|foQO{SN$fEHXg6&3C% z?wol3ZftT{z(@ap zDv|lCR*r{5;J-zH51fOWn)EO-xY;O`)8RVWXRvvF3o5VIHW2acjGTx3 zu4{`?Ts4}L8#Q0`$9oy5s3pFD(l0J6YP%zAp(yv5B9yEfDkB;R4HpuUN@jQI&EM+g z_&EgrO#%Y;oz?Swkj^TCk#K7j#F8es>8C$iBAh!>Z`U|l6{~iqf+Xaa&uH6-T=eg4 zW8}?fBBH4Na<6}k5tTu46W6SFHX#fu3KMEK~4m(n;jrvm7V&gf&$C zs@oXGD#>1G*=f*p6R9Iv+x6WH|L;_Bf*b<>ngCa8M`y(|ci3q0)m5;mo7$i?-7TTp zb>q3a?6qD(h$dAaI%f8NbT(GeWc#-uIo!p zOKArPxs&LC)6eZVGdM~rAetE{ZM>OSje6JeC5>EEGYHrcV%n_+23{lzy==yNnwlb- zn;%t;V9s=5Cdlb=S-uMeeUo5ulW0>zLlbYL-mTC57RKqfU*gG;{W*c4L3?!?s&+2s zetrfDRoExo>;W=R0RwBFzYVJ2D)oUjwHBAE$FV z?VleWPRthw2qQQ0#)`+SP^?N*vyDWewNxc(kX%48P@rn2xjV(*yH`!F5#N5g5xyK;9&lL`)6N<27Cw~%5%g4 zYJvtowwJ?pWOU#;{%ZtF1jKYZ(>-3Y!8_>BbaCVy0)HUDUxDcOq$1^KN`o(aD5cR7 zR?S1o)+;?Wwb_^bDF-IVf5`Exz_Kn<={gz;(M$0_46a%Tik(eNGd0|O^8E7vnZ_9) ze+9+y{7VAdv11p)JR1)w+yT;_@4r+%-36aL>r;8IU@ zs6}|rsQtp&yE#@i`hjohtZ4BI>QWs4kMm@F`b0NshT?c+B3qUvM-6(>-G<6^nUMn8 zTSA2C7a@W+9k6w5ZX6tIOSI4pKZ(o}FOj1JG3QQ7NT^Wq6_O=gGl8iZ*xuzI^?uO3 zUfe$~b!!d-o+N7bIr4sdrbD8&<#?JPx&o9A7p4%b(olIwqnb^KeSKvhy*i{})V7hI zf{WCqg0^oazjIi0tK1ex6<3+=kVQ4%yH>pwI(+J_@~URKQw!>R^>8mAgN3fHX`g8L_7HWAREr!nZ;`GNXIee+@2;%DnavI13z-qG+~3#?h) z9ff8rQkQtqutm`R4%pz(X6>k=oH(=v+%B@C2-O?>kTXd@`s8LKXbYxD*BjyW`t8za z>v*TcjSsXjiS9;ATWl;*IW1@P`?wps`!(oQ$+c^s=q0c3-7se1!#Ho189hid!K?!n z{Zt8v#dW5V9B$PXEXZf>bjZ7sTjnq&G)%~-z-a=Zdf09+eP zbWqdh&whs7Cd9AgBt!_pU{f@lZ+xf!+s$y43ras@p(x(z_P46k3avZax$YDM6Am#Y z=n@1KpW>>S`0GSVqWL*f^ST=E$2I@ob!k0oG{J?~NepAuDxxFI5%T^U@WX!g0e0xx zxg2*isu&eMg38Fq%TkdsdGHt2QnF9j1H?WRoe4m-_<2vW6viwJl&YOpC2P$OVW9OuFDYa!Y0;p`&m*M)urQ~e%wQjcMP@#;1e5?jsnPIDPIsk%& zt6a`7$}AA`BF$4>spJo_>M(1d>E@eY$(f%bE(|LLP#SeDTlIz~qo^70I&AngYqE?t2OqVX z=S)7&Vsx~SAZBE{96FrjQ3cP0?heB^O*h|E_TKd{)v>G6d7?~ke31ib|SM68d@+K~!%b`_Lp3qY!!zzfFaHqQ@>Jy&o` z;d_9?cV3|*4%T^Q1nDHGSCNq6)Q(WM=(Q_UM0eJz8EzG9kDWxxI%OhsEbI|;Gz*ZK zUAg8BwTRn|FWeY6mq}KN3Sfi82wCR9{$>_)<{{vKd?!J@=yjy@;P?-WY5^&F1yg6vE}^nO(D|j2+{AH4L1sDwH5~3|QU1n*MrgMh3v}Kp z%?ZniRNQLE-&SGNIdw;x2PdXD*reFU*-+CpE^JnPP+}Dqzx!nDu<+Uw7pODkc(DE= zQIt6!T$A1pu^jDT_NftN=5p-ZGwfh)Rec$l_C=+cj7-ho z;K%>biN`~*GS-tZi0GE-v(L|4cYokJM}B>Fm1>itwlRX+P5h`clHikuES-fF?g6TG z2u!d$+agunt2y%G`80GO`M}_HbZ;Zf|)~AFD6vlYP`rkB?@9fkxf9&jJ>U_0l>yDCOv^W@#M5Ms!tPTHB` zo#>>dk$)QkEs!)SE%r=^6hXb%iz63|5e?MS6Z<6bhhlyH%KDF|en>U&0=)t>96??W zts=4dw>#wXrQEGl>@WS>g>w@AM-dRGZrL`z0R9qrDo{(nuvRes^~R%>d(rN@q7&t| zJ@uhK*GrQXF_bDtFsr*jw$*s0&6i0W%~h+KzSE67gUTkC*1A_rIqFnlwYohDvU>bW z+$!D~NY`w&AV>L`mCnpydjGt9O!M;jreH8Rd_ z7)i4^DyMqVOP`|7Sej_ETqasFP@#SmkIp|$&ggal1?nQ9MW`~kj-ceRSX6A!-??*N z3HDjJH)Gx*qh9bT;!X&mH$pKYp3lx4Q+>E`=zaZSoL6J2ZwU(i2@f1m9%GGh zQ+!r{ig{+(Aiqu66>!xwX#Ew=JN9P@rwY?Wf?j%h+GwlG?wy8QhuT-g<#7?6 zP9rdx4-sXn6=<>mbncn4_Oqtip9wuTpv7A<7sl%zdrj9x`osnV1*@qI^y$O)wN(*>qQB)%+rOSEYrlXpX)dHc3J@f*}dGH{GXg?ATwk8NCT0n&G zLUAgf@&C3prLGbV*6#tQicV3`wf7UVESq`IxH_-(#)-OXEM*Ib<3eSO0o%ymKD@^W zX7F;#+8V2&giK^rwuEdCp1^*r(a_i)*@b7R7f_JVsItDyIaF@%3+QYCzes3qcyDe8 zPUaWWJG+I#yvHW35sY41nu_&~Q~+eRtBp$k$Jxfk$lsxd1O=k|3Jb9CTK^6E;Ro=K zl)%FwZpn6g025*IMg=_crSB81>J46d1A_7}R(b(}QrxH{Qg-h~_dU}eldUiylrt@s zy@+OQ8zGR1p6^w(Ro)LQU??BtWHS}WI1yU{m1r4gkV$PlK7R%sn>3nV>rqI_e}&Tb zG<`cU{g1l*)$gGj&nXMeHWfm{u>L^<+2Ry8;PO_bNw=>`f6>IyU*zOdI<)XOEz!?j zHmg6d@h4Ph)gGWeL(-gkQp^7@vT>sRV+nBa>k_vvhox_v9&smc_iTJmTe$It-dw1` z7wy8d#xV02PGA%>m8a*!)h35XW4fb2C9KqNV_ozbj|M;%8$hxX`Byndk?~xZH16ji5KninK$C$=_9=;`L=o^Q8pXx|En9C5 z6gFwcoajxo5)>LizM3!H?pd*r=D$Vmbtz5imIxp6D4hY3rWoKAg+Ra7G2Oo9h*aNr zJU%}`<`+p*{X|BMCRWXQa(sB&&LPX*sJA%_@+ri1AvndX=7W2Vdq%?roeUiIKy-ns zS!dD`I>=A2eKEM`DgSQ8tFZ~}MMAszV`l4Ez_U=+0@blTIXQ%BeA9@OwtPXAj9%Mf zEm&))jMgKjiEsvqO%H`C%0Ri=Fzf{d1)unw^#=dC#K#5NP7A%PJG8+yySlP)F2{Pb z#=Gf)FM1h$Gz&hnMok}FPR4NN5i$Cq|SJ!gsbBj+X@ z$@JJ1!r=w}sX1|7NJfWKI$;V1l$H`?t>T5lPzc|yTlE(ieyZ8;iDNA@S_+Rs!7K%D zdFAL-?f>2)1$}{;uC5kSMu1ohldD!cs#to=%I0nC!=B@Fs&G|Pr>SjJ8DzJ+R$&i- z_KnSrMb+b6M+a@!Yzx<_BhmzSNAe;K3goiC8YDs>rbGxB0;XjmU0kVM>j@60es?nR z^u*9Hdh`IIks~_42pQo8I?mtPvy|s*UKmt~pYsNbY>(74dS?>OKl5^Z-luJBtY^6g z&~txY$&=?+W}v@Qm`v zY;=utFZ*dQa#$jN=KVZYpNiDf!$JN_Ur7BAQN*KZC-Rb~4Q}m*6@3p7Xvm(^r*zJ& zKln!i&hP&o0zmKC6_Vhz-|%4d%tSz1QMH!2)tPb;M*Tio0Hq>z%}J3uAKdsXFm!kd z-bAWVA*L9oSY$NZ^IBi9D0?@#<2%val+SD^Lqmj8FnyiAffvOma^Qf;93Yv+5 zmCkzAoD2(@4m^YPUhw9-*HK|fGztzDzJ9xJv$1b=TgA1!+a+T2e7=sQlja`akb6S2 zvgypCD@giiVvFs(S8?kk^DfCFzD-N)6cslx+a7GSRR@Qe)ZZibj%w^)#?CD03@~y+ zui-MVOkDhS_WU-kLVA-*N*T09TN8yX+@mls*(_fPS-ArV{og!=Kp=XGNSC6iw42QF z-yU4v5BlwqRQa{yj(beCU&gesk_BA?saqGPJV_c_*c88Dy6e^R_hZgYgbDbPmy3#v zBo(}>1YxCR`fCyi(gp~hH#4Jp^|hUF*y1=;A z{0Tw;9qV~+rW}n|Z7pn+N|3%b8NN?jW)POR@q(6kg0A|F_OsU7p9m^W&rag_lqZK9 z55H@V`jDM1*%exOo2>3d_o^?=rZlSe=tuAysoAtuxHHr&j-kC3GTU4fJ7&+IMxoIp z)7^P_g&3z3=_H{?YZW2HEnh^p1q3^uzB4*GU)THNZyWxX{t0K;iS*hQQa@{Imp?Jm z&k^oc=& zS{dLH>ve}#;XCt773Vh+?1LnK{9*zBCESl`D{F3R zbfhoXm+cS(%-dLY`blqBAN*H}Kl+pyDD>`FtUgr)ygOO@aSuSZV=pwn<}5V-5!HXX zERUHG9B$=v1Q=8zD_07wqta|{B&7Vv8RJn2S{dw5nD?sGbpCR}qv7JDgLWc%{SrzXqs*X<7 zhe`zNdW}#&5mrO9LY2WRdy@ZHpk7nRn1*sw@MxfCR}Maag0bt0$NQ04M>?y59jEB z#?6m{-WfEu>*{qUBF!s8N1jm&M%+FmHlky_Bkympq*~q;qUw)N2dDS-Zo1XpBU}Vq zL9+aZ3X*)Knq*_9U}NVQ+X5FdU1FwWR4Cgwj)~%M!#g~nX+Pii%)+*C4=3(FkpNU^ zq?nPgOr5VE@1KH)rq<@nD7|2afi}H=k$Q~4H;?-HqOBt(BvSn-AF^x+?`lM}f>_Fg zG(^jM>3c?T>g)1_?vj`#W;mG=w!S#p%6`)SVvmSj`tXWdV!XA}Bh49LoLgo>k&}7B z`^B;@Po&<)bYf)mip5If>>i+7pi%)fEM>KFw*MUZT2j2jyzOcylm@N3J1s;d zykI>0I%R7p%RUNYRI57UP^{oj))iOk?r6uFTIKr3i<$Rb7_(}#5XQHn5JdLstF?@W zvx)FGP2ID8CrP=tc5W}52qOwurb``SioK`)a0u%49d(=5vN{^AJ|)`K^7UeRveq=7 z%o@9NwpHs!<-=^su7j$*rnuKM5Ib85-kKvrJ){a{ho){ksyMK8(6mc8gPdS((FsZJ z=@YxK);g3Iq42%DCQ`k5QNLQ1(rF(%;GPLHkzr0GG|?>Peb%Q|Lq}{{e6*eVWh%o@ zuSDb3y~Tc59Vr=M_%aKjjP!wsVZYoYs%w{BXA4emK92H;N+RXTZBD&a1C7 z6Fe?qwPH0XALepWmiiL+t4(x^_&|noVpnbu8LqVDfQg&#a-P2CF1f5D2qzCcB{iEr zwEGK!AZvS3S|-!lOc+cU)&>n}e|^lOn^-7Vw`48a>5J3n?1Pm-OWxLRF;PCms zeyCo6eX&c^Xq-ex&RkWlc=pS$75I|JDwJ>is3S?tU`6>k-TE*NKKG?m9NB*`fuj-O z)w!hI!}CKEgCSQw9L^4X0UMHKZXCGUYe=Gjwv=1{>(pRc;-5 zZ)k>!!&V@zO#JvW&vw=an){b|3`SIB(kyybPuEiAIOHRZ#t(eZ0L245R`San-k~O~!Z_1@P1KrUIEdgcfcCvaMgA`2hLz@M9 z+hc)dC1D;HX&y4--J(n7o)$(~>Wq>6n6tTWhCNQ+5T?HAHxfM)cNVEBYY=#3v5S#Y ze2ChaR-BdQ;*PbP0x5-U)qa70QBWX|nxjk2_RCqkX;SaA>(<07#U(8{K=2xpr3DdF zr1icO4;>H6dOU%bkzIGRiASYdL)jh!Q3FGOK-C9$sZ1%tJ0ADk*LGQWaM(9hc(U z%gcT3)<=9GEub(r@oue}xCU1jkC-6Tg84b$Mf}&EtBHeOX!Y+z0`2Kh85vPgjEsyA zpLexc<;m|F^RyX=yC2Ika3qPk<)uks46a<=Pyr&Mz$Z@zpM(UKQBVyOXr7TUdml4H zH`B1jt21(ZC*Z%+{D+`cI(9?TZ#64--PHzT-GH&~EF>DpUrcIlRV)+;X>I=y+c>~- zt+-xj8(_YI(YctxQZVm>(}9ow%5X`*{^LORP@*XbE4X>FO}Y4A4p;jkZ}+x0!kwnK zNWQyWTF4GJDZL7PVuR59+hv+xFiCL)YmnhkG(=vPe(b-X$X*V+ z-&^5?tqo93hk`=}j3kAgbZ-UN<>#otLZ6bul>CguE?n@1#SwOo3Bo)K2DSxD5+U&FnsYbv(CGb1r;FlS;g zc40&2{ETFxN(p5wl(OO;jY~>GKx3^uZK{k!eV69@yd}iMDL8d6QWg75ZVPL0XuZ{< zKU^@gJc$H2=@ zw?7X{nVNs5m1_eiVo1=Bj*i{{i*pZmxq*ae3GF+4|MK#1{sj#~${Vysl(AOKUANdf zalB{X|Ev^_{6CYxVc?8HS&rH==9k^V;3srmmbnZKf9+H5L}#%6gm4SFxEd%Mt0`ej zj92T^BC)=ryaBH7G>XeBcJy>qx#xx3>Dfr8I$3m++V46296_}(HKF8QjcRoX%9nRk zVwF@UVrdI;E&P9c2plY51Fn zEDXb!|KJI`=8XG)~ZXLr6ZBF7A?=F_yigv<-RN*zZ6QD|*c-c!r< z*+-fM2gaYc<#dyKW)!>Zrp6PlPO?WUoo`zp!I!>B9=_;TQC&B$$9^WVgM?AWDaq(~ zlh4Cdp|0P}LLCa^gg^qS(zw7Sc)2$Ti3>b~%KV5x}Apux@AS1d})6uBx zJ4cMQ$4W-IZ=^zl8>Z9NJ4;{n^)}DLm3X{tP4kKbzGigLem*WcJ3EG+rT5*4dfcI9 zjT<5m%BbfEHZO5uO0hd#BaEeAs#sfPrVS*x7r#duw3zlT$-5rdFyIYBdgn;oj_WtJ z1{%}B9p#^xBuLN5gX=g8qY)c$ zX7!RZQi|c6Nrcjw%^yqc61O4q*npb$4ccr_=m#3`sL}!M6u0J zVo*qw>m7HbOJ;ufQ2GbxoA7+|cYt zpkoTyIiPOoEU42PyV|-xD~}5Xf3>*$=FE=QR^{#!YfFuyzA9V4mX*1i7~J`C5&PGf{;Hjvxc^@W@IH0ys9BG7n5n-ysoyi2v4D|_@vogB z^yi%)^to_mQKP2-wso&$GA<|}en>Eb{oMzWUg+_IV1<5UyM( z9-3M=Xo*cH3=3Pi>EpA{Yd}mufw2+N6OrUH zEZl%(VII1(dgEEpc!1OM-zNH1tzS}spkygH#8e+F=1gLW5zsX9 zHFYKU!SC|?d%;C4f`STV!7SW!pgMy}$e4gULl4Vl4{aV)eH-FPc!Xes=laD3(@&&a zky6>j+>C{>!rAbMaqVI<>*?*m#twvHWnsNOKQ%UKnDp_JUT6IrPET-zzk0#4=4ejn zcJgt5cC<(weJ82RIp_pNhlmJ~!%Xv(VF&c{ED8fdaG~}AS)o>Rsj(z|b&(>*hWO*h zjkU{^sQR8ab*#}aq7SYn}jfal?<{6>0VlOR*GP*?VC zEWNdhlZ+IC(6VCA2z!6?Z@AhE(Az2~D5@Mo_tT~u1!*Q*x`CuBynWFLW9H6nTB)0) zcS@PilK76nP&1bq3IZDMWUsi0!h#Ch`X%Y%P#VJ*WW|E_BoB+JmyWuWB}?-k9U@Ra z^1mOm)I2(tGhO5R(s1X(z`fjd_K470V6!3p9D%?N9%)?3F8(f|Ef2}8L8uM(2~Le- zO17gI4-o5t-N_19@uTXv70|_I8!}LZZfO$YmO!1uK^5%v-Xbgq&HP*ZA!hy%al+>% zQp?bCOVj4Jy8pAD_wV&jPO9G!*q^wfI+*YkHL`QTCah_tGiUT{UqkjX`bSvJDkZ2>~@7OsyJ7QvG9U9 zY}?>fcOy^&~ebv1KM*WEP6MCiErPplRVg9?RUGCggEE!5-MMO z5-SE(8<4Bl8esIgI&bx+ABvPK$+^^6Vu2fKiJni#lhhZCGjFCiwl>;%&<5n?6@KB5 zm3vh;rQ|4-%L&~BfN<;gk8a`^H=x8d~zJrdnqm@F4Y7lMXq*8V_q5&2^W0j0*>P(N0vx|<7 zheBJ1qoY?%%>%2ymW)x)8K45~>nnWF(Sz4tHMOHMKDa1cFT$|x2<{80R+8}K(oVW$ z*~o(}v%2sOazlB?&MSd0i>2BBTs=fRIt~$D8$hV{6OjGe>;qC0?|Lajv898(MO&R` zj2lu7g(@K<)1%h9x`Bd#zg;-7H)>^-K*q{L7@1poYsD#~;x_?_;fBrYS9RhdEZWNr z%7aBW5~Zo}B>jH3vJj|S{uDK4Fc3I!);Fy5^%<-tXtf7K|H; z1}iFl;ok#Dl!h(0=Bl{x!jfq1Bwx1J%yry1nna)9Zxlbcd&Lmnq;8hE9Wo_eGJh?1 z%#za9O{kdWe%Z3Z_s}Yjf64}-H{3$@q(;PnL&XFLOpnb|MN8V$_ZR$Q*>8DRln)1` zJY-*Y=8idt8ry@#@mTtP@U#AggE>G^Ep>`faYe}uKIQ5~o{u9SBxsGCZEZVGt3w_PTCv|{7H%E@=SZL2!L z#fN`bI@kMnf$XQUYozP?DqBgLni;HWzL6>tLyOzhY4cS!G^I`5y++q zGOJTw48YZ|1ou=va>zyuV zx^EW(y-y%t;k}vEtFup8e|8YL=(rF{Y=Aw^&caAPvv4Dc{U@1cY2x`Po*d|bO;%^H zN}cE{wOd;a)8zEENFAv>)$*n~WB%-adCTp$CF(FRLB%pSS4DR$d(&Jj34$n?-gK#z zBd_9%$&#jub4p0+#X%zrdlBPGqG>aMy}e`le40w)soyI3)gPck%oF3rMhz6Jff4$a z9%hk030s3UdD17oWlFvMHQ66MmUbb%A#3y%sZ>TwZFtXG`+$qSDcEG?YCw^dR=^+A z|Cxkq10*N}0tyP2bgdhHe(e(R*dcG98C|f)f^pFHL1k^{rwXhleuEY>>bGQ{f2oj>; za%wEx&*oVY6B83d>!s&|o*&ZDK-YCD)SswEgg4~%cW3Khn0VK@;?DL)_oBg#wg(m) z_19)?Ha~4=!7=Qc9R0-@j2p5cv1)zEe|7WWH7Zl*`*8dD`T4F6WWd5bs$*NRW1uZ@ zQ2X)s0KEa=@&$LM)9v~sNBX%tXof>$KM7g1#+~0Xq1&i&4L_wr_3zEEt?t5E6%wS< zyzgLO{^<+`dl--XApN5=&EWp7fZ=YLk`Kwtjbx4_-y=roC^%-XnU}p5;n%pl5zmm{ zb!dr}$|U%KR2Xdo3VmjAhf`;uk$DdSYepSGbA*YoEPgz0(W`phDkry0OjW=!e0Xl2 zu>n}{42~FaBTU%E`qtA1-!`?j&VRT_Xf9JSQ)Fz|=Y1{Jo$$n`^Ntz0bW1*bzRR9% zGoO*Z@iD3#GlDvcipqarFql_`AK%;8oHvW=n3@Kz`P{eYH(T$4=780tqLW*_pCvVf zZt)vMt9VI-``Xb*2hi)ftipN{iOy#q`e3nmhq(t39ilB58h+A=&^IVB(`n?(A4G)e z-ErrC!@6D@8CgFz71YnF9DLV7_T3RT42%%S@W6d!5X{2AoAX|^eP}<}^tQWYz{Tk; zd3laW{}}bjtSg}-{0?3Jqju=dzDW(WEQy3Y02JLVH=!x!)ofBYO2in2^sZi_scwY5 zFWwSMrrNAVnvXD?*Xi1OfE(Q{tN4|O@3hb5sgk<2w}qa2rS0@SnYst1(^fw@9w88! zyXoK!J^ooywZ)Z}?awcaYHsfOY{qmmSxBlJ2qXy|XHReVQsLnk+@kcAx+(C@%sZGG zYLGt52B}yM8LqH2t{A@9g?RMl9bG~1J+q~oAmfvtXH++T5bx!`0Q(u zT)uRv5Akw-Q$r_#!y=G}X-SU@aX@1uiD#kae)Zy8KbBVS;+D?kGPH(58%TCN$(BRq zX^Ezx4X0ywb!qg(!!wU+NSpERSY~o!KQJnZ*3K4Lh|+3o-av~){D~@vfs*~@+cx#C zvJ?$Z`>F_{qYk{g17=&iDgH6D=y~X+KO5&b^8XhE!l;cYSp&s&^pTT`w*Atf-k{+vBPV40^MZj;&r3v-bDJ{E?4U0qv4YOt#wLH}G)u82(!s#90lZN}uZf5neE_On?L z&R|IVR6Khlie#qFK2q76SWNKIQVc_0FSD@EzANTTUVs}tbOURPRkJ|PjUaBV>0Y$! zx`Ui`SMIjg%54T;z*fe0jxs{dmKhU3!&wj?YgkLiE5_=k-hqTJ;;~G!#t@bvLS4Pn z82Hmrw#lJY@Wp#8DnG5VJkYWz#WEVsO6D{fvmIP`H99u^MQ_NfM2P)R@2&NeIlr43 z`8l^rTG}Qn(z+nsmLw#ZrIgD*a6$CS@K&kasu9Gke+Z)+=si@p2&F>sh&GFv-^`ZJ;|7#Jwo-Q#`zIt6>qCNq>W6gZB46C4;%c!w%`*vjZfz19~bQL5HELcDL9JO&{#`Ugi72d-yr zLDwRwKJgm2mrpFNUZ9-Q3Nf&0lE&YteHGDxTbM4--c6yt9;dlzYcBiOeXofK(QA>x zMJhD*@>ATi(!=nbsXO)-2$xnu&jvNC(v1CrqO+*L(NxcBdG9WoIRYD%&LWt)DJD3M ztf01tcm0%0M&h$P%Arn+AV^P-UQUVS)^2A#bfi!sI9`5!862`|K0*B$U*9l#cz;)T z%x<59oKfexwgP75h>iuwPw82}|6%XVwqAN4ZUy$FqN703H^Xz%QRF=JFP3wGMGm5QXq zIL*66lBq(=5#Ng5KOysF7OOnnRJkw6#i)%WjCMR^8I*Z)s!eOSf5#?ZSG0~9h`KX|P3T;y--Duq zQfJz=GV0iP{Zw4G^`eIgM=0ifmhu_a=!SYmBlN@^wyB7~vi%^vwSvibICi~EW8~)9 z1%6hO#R-UKTW(1=AD@9p%W{lt!v6`EbIqD6`+39Xz2Y6+g#4nb^8BqwQ^NB@H4H@V zqchI?!mh@rGE2?&sH5LRZx8x&FoH9Sa_R)HZ;S437`mgXi;;Cz_X--su>1E2kz96T zzAWRQGX?CUoKHE)aO|Sw9?y0;1{JiQN)I}X{?p74d1(>po*8tPk78%PzOt$1dqYwZ zZg}=((;r@7Z*#rD5ROiyqlP)DsC&Q%KKmPjZ|3~g% zMozB3;wvHBy_g)3VY#8d7phblyx;OW2YqdGoBbGI1}qtH+B4*WrRVYc4HdGU*9t#Q zjA|eL-T%?-Ug02(zj2}7v=v;{6IYTH?Ca2!FJ7FZOk;JoN>kEdRcZ3tP!6Uy0-=JP z;wUeY%GWt=*op4aw^DN+Y-`YC+PeW}afGR>8}13Pm3FrDgQF2xuDg*p4c_lXCF@Ra zp!{xZDQi&AI{t?7>}MUQ4EFmyeMYauEsl&*_L_?N_uJopwInX71P zTCh54qwWiy%dVa(?N@;+% zr~8T67#T+;KI4;*(KcVyE=ZwIA_O?wDpviBcL#5pi_ZvCW34uNy!&pw?0zv?W3DuY z&hVljLPLk{$fNha-CHm=p65(^zk9T#N$N#y4%tZP4 z7`)Ke-%`pe3$4U4&F4#U?cVwE`RZPyfFs6#$Ok1@>>dStt6ZX7G%>=MJq6fM!hxx} zCxv^nce?Xrer=j6%GSks)VAB$z-nT7Nw(yk$Nho*11XQVG(iuQFnFP-zmK^{5Yxl7 z2CZFJ=Sn`-FLc&uS+;Ec-4yOzenp1XbZB1A=n{vMC;~8}r9Ai}m18XTr2$njVEArG z#H2+-?Uhz5NLn9ie(@V!bomMn#Vh+Hjc)4ec-MfyK_4xt z#@?=J!d&y-O-KKAa6YmXhU7g#M{MUu z(1L3)iHIwMpiro-c*f@H`NsW{H3W^lOf_xT2q2_VTH6YD+~()W=y7LAed(4sdh5eS z)L|B~p~{yI%*Jr~3`}Yj&t=^WuH<%bP|-&x5i=Im`n0$EIZNj4ls3e(wAS43jfM@c zKJyl{-Dh$BnDb*{D6b4tI@7bJXpH0BRqe}gcf(r4KU6yyvUZ@sOTu9-oxBn;N0y9b zCmkxs^X_;kl|W(wfm>18X53JdH@L4-BrG$lYWHV?q-9`5iX2%TS-?v0i0QT1ULfML zzc(}-?z|(H33p)ZPy!cry0tRCTV>jD{l?yAv)yhA=_8Ht-{_wI7XROC;CMEJaks>0 z!Is|KH@JnQ#zUWLx@QcIXl@Zi~PlPEX!{O%64eZMD#(PTv)O_mAFC0(_CNPyd8pB-8uy)Ua z46dlWXtv)q_zLXu05Z8CcQI2h&CSn*W2J=XyT>dlx(FYfm4!7~$|C(@BVzmb z_4VvXk?^&`?O7Ik@kGyt*7=OO>GqIbpX591(vU?{?^M&!cgUd;Tz_*Fr|@tuYO9hJ zF8)zO$P|{g-^oCxP@D$m$+IfvksPNx>po<^H2>^k{s)=?>|D)=__CX`k(x1_?s!(& zPP{iW=T&j8XgW$!_dZg<8S5G~Xj2^PtRFmQy`5OX6c1r^{I3O*kRWLIb;K*d z!;tQXVWz#ws#DE)p6eG1#s@`Z!}n*6daX~YSHCmw9(HO%{hpa*c)<~h_8H$blo-qr z=mmA7eJ#z+t0DR`CM#wc&EX`%mRL!1TQ%`H{ZL~kc zV6qPe%jo4)-m3Kb2GQd*#sYPpfc`{B<5c1Tmc+wljHfG!6Z-~6x1Ot2(M-vgJ zX_XyBw&d)^J?gQWA3p6zT9K6v>d0a6GJ3jf(R7(lnjWFq?iL`9`hHn#qFJ?}j6s(C zY2L#U9yrc4vF~nv%;GRNKfCp#TK${Xg7#tf?!!2jMXuT`#m0C0W_MI=%u4L`W}jwv zH%gxrNG^!)&TJd#S{iU~=y4@DL0pyRlk=KlV=LLO6@*vta9OVHibF-Tx?*y+#*pIy&7+`924c%RAUyW-x+^yFmv}%@J&yP-vVVVkQ z?Qx+62*-(pEI0o1mS)U;XSbXc)6)V=+)tc`fljwJ5RNw#^LB>IddId7iCg*8+EfDVf^!Hu`DQyT1tai;+RpKW{D* zkPNxGYy^`$3RX6One?j}IGgaTjRDPHGc*=^ft&#xpMn7$$NF4Mj_(-<5# z$>OF~!6$?yIj?Er3x7|tFi~Dk76e-Vg>B$VOT_CT8-hz85>hhnc*zD3%sD{{iTYXk ziMtC6m3PctuDn)&ZtSAe1$Vdl8y) zfxPEa5q7VTtqBJqOuRBJNP3xZ&o#=4teoi37B2iF2e8EK;_BhuylTrt6a!N5aI3I| zH4VUJOc6ENMPYdpBLa)5jvsaM*zQIe^BHRMlvD)Uq&JPRWw6K4RwNU}Cr>?T;TNcT zE*|`hGhg5tzZYz}!7^x(2TzHfrz7uJd``W^NHWjMqkuLkh?0BO<&%<$k%zApd_K1- zh{LTK3}oPcu<_c|Is4v30nD|a0mU<0i}N*~&W%{|L!W6cTGgZZ8~r6Rqc1&3kC`|P z4eBkxtgKYsXr-ZA>;0fya6=n9im*MyqCM+$ihw#r*d^{xfsNV5Os`XxuBeuqfXQOD zXQj)vqW|OH7#|PbD=P9o#7k^Wh^(H+5TnV={V+_jtbgC<834Lh*VUIJhFMtZdjD;Z z#)ARphE@|tvi3|p5QDP)HzfX6@qymwee8R&&1l@K{@dM9uz+g23e&8R#Z#XF`1>g} z{l44fEL4@>01P|~QwiilTo>}TvKQV2p8Ct%WWJL%w$f<1ev6|imsyVh*reY*U`BBVSHo;ZfN}$G&{$+SfXQu&)HvA<;5)apKOu3 z(#O#_dIyh%i01QGf;UW9ShUEYS*PV4KDsDY6qm4VCV*52GHkCP%qV?br6OTx^*BB7 zwZi*HV;Z7-JQ_DjBc|0K@5JoxrAAWPTPd9Rme%D65-#b+5$~UYc1qwk8zrZKfHgp{ zxsaX?{UXNQ)x9y+2XW@cT^<8pZad+3MpnYT)L~R zHDtG;HjJ~Xm3|?1iEF$6!G|iNW1^kV($9o(iWnDSQ0c)B+ElX_lbKmQNmv^f%mHul z-iPBiG=__ajf)T3ighLkIZ3{lAeue@1`YgLL2dObukjE|O`dSaizdFK>||$uBkyFr zOpcvlxmQrhWjp};@uB$3U#jzM=>x6Z&z|=)Cj4(s&Wwn+-F>VJ3lbWFrADp@>jvDH zM22E+H~`@@za!VNjsb|y#Ii9yE8C_abV5k;bICG+*nW6IbLuCJZ+E%wJT@8^&#i1d ztiyviG!7;6iM25$D4k<2rG`5LXlKo4|l>P7p8< z8L&m(((=_C(gLuuawQOK%?YccD}2|B9@TfVcEc}h+A>FV?xkK$7H(qbRSUMFtv5aG zgku-!KxADpd-XlESiOnMKx3w^l4q>pm?biMgiN+k$pEivaW5S$dJ@z8twdu4TxNTl zWu1NH4krr_01m?@ob3~YI8$n>mUTkW_e>UQhZbgXr@(oUAu-uNl1q;p_HNImY*#g0 zD0oQTQn7P7NPnB^|6BHduYm(AtMXE`2dnx?^~m9z5?p(8a37w~TPIA^pdbVWC6&AV z0sN4S5I)0hR~`L~9>xZZRkKFPL1a`#r*M>{_fw>+%VDm8i}i_~o$~h2359#R@#3Vm z2Oqfm{B31%>V^FJ&c&pcQ{kKIiw|{X>$YO2yecO{3QW^-&2~p?A~hIV4dxm&H4CAe zXd=8QTdV&rbH+o0=<3L?0ig#lqYy!ekNnHUu^k)QLfs4d$~cwbP1|8tV=w-*OM_qs~| zK&}iRB9Y9}DCY|;o9*vT6_~$2QJCaE*$BsfG0ZnJv}~6zA<9rA;TP>%E1ixtAK?~y z2b%!6CkUtt3I;-N(HSNEvvem>uj8NDk^6}yAbcS?~a&i1h%520mJ&y@~bt!N9sE zg+$gTz1e%Z4+1;2y7j4invzVuR8(US%B~n~+qdq*IDa~$-F5av+fZEHaF}`gf|>(H zU3CTH?DrMg@V4a4-7-Fm98mKlvgaC-m0L$qaxk0?vaJf`cbC2B?bRe&m(mFD^%nIl z9tXjM#!OOrQzU>S%&*sD}8lAe+fCHq58pGYEgpBzf_%uq5N z>l!%eiYY!#sc{M+Erk*oC!vuxzq9XnKBK-{fYY_Gewr}J29twvXCCBsyy8}>e9 z_U4oXmjDkU?mHfuI_-zv9TcD7SHED|0Z3i}F_c#jL~@MD;>jmtVpXOotodUTB;EI@ zK4erN7TN-ed2!(p!MjXSILR z?jY#vWPUJmx9fhbBLLUU!J4sG+utjr6hWRYOS!KSD~4LeY9qk&$&~gfEBDZZg_YC@ zX)L*&6?R%K3L+#|8!xrEJv+89|9Vk5NoU5rvA=Zvnmobx0vN4Re4P=o%80<Q|R6k;++ws&6H<; z#%9lg+8XFvH6yrt-|-_AB@OG+##sDnQG=wvv(BI(OKdJ%k+U~Ko(tuR!o}E&+{p>F zsxgQfTRBQi86*tmldP4ELRENZY7R3$NR;wCp&fvOl|L^}xtH3x8Y5B%$IzN);%=-? z6mtM-&AZmEH{Xvyp|1#5Xu7N4iy!x*1zxZO}%3E_)ZjZ za}RC+PUkc5y_u`)D~YFGY}yFb9gj>F1}BGt;8?Rhqngn8By=jBOkKYjdbvJND3QfD zv&WqJ8&(A@j0|ys4ug5qz+g$!lL3g*JtZZLjMSVp%-_}aKhFoA_V?582D9N!EcYgr zDqK(rCZS84r=6GXX1cQxiRNN~$1=uc&JJ5avUY1HpRruF{_uYa`FHt)xhc7^ic1K( ztyY8XEE>8!(!A?eG9?dfpt~ra! zzgI2XUg?aSA)BQiV+GJHHiDTdk}J_W*=k|-g&uqA9~`~Oic)lKiY<*9i@nH-k#q4^ zR7P5gl6EuO@1^gHa42529{ zN9?wg8*Tt2F&JJCmo4+REr&M9n_)e4i+83%6MbtJBye`*dpMhhrO-Tvu}-4>6%Ux7 zJ$N-<|Ema0Us`x*Gt1pU2Q7{)(zzgrLdPP@IUdX5en)!Uc2g(IIl_0J@$2_npV&F@ zXyStSmcX%==j}C-37$NRu%7ANS4<#$hZ%oscl@&O0JtnfZingVFW1bkjhNfokq7Lj ziUFzun%hCVyXY&IGX0+U>OSt+deSGOucE$Tn}%7&*e!B3!FN>WU$xA!qdFpOp~#+iCN*h@oUKfpH@Btpdz{b(s-5*t9HCS+4o#GS zNX4srusd}#+5;v%P5^E8^HKkGUJ6RMV(`T%KSoR*J%n<+=LQfi6!_fYtXAZG`TUHh zg-2^ehJIND(_(S7+E~kPV0fKn;!yHK`OV|DsS-WeMQL^Lw!-t{zesD2U;|slJhZ65 zV{^kG&_qD1_a#olHB%><1akgsg&%&pbT9VFuBCr6u}{iEc_ee535};B@OG^hKAj97 z7|4aJ$5dK1dGC*-d+h$bnChX@^&aPR+r%;dq&Zu^l2VYxrM1jY3Y7MYPA57IM0srG z65n%9x0?D+gbDW7Ob}`Tu`lP>JAZ0zchHRJpl+{J^>^<;>7frcpbcUf*0`#D-4$_mYyIWP>sih|=diKH5eq!7T2;@s>3S?Z^I6;R zco+b8>w#%5IXT4-9sbYOb-%pb{+s?68aOyLFTTnLo0SCmKRF6aFwLqFYd_2cM-lVU zu93ROv5Q8aQOr)!Vhqd)7JJZ!8|BjPY8s2uLf*_~vE5+b-y&VMsR+7KPSO>A<5%9& zmbmLuRK5A~>m%K5f35YqVz-8a>@DKj@t4KlgqTw&Mi&n2wLKNaUN_tIDmbggUm6>Y zOWd<(5?Qf^OO1Z$?oI&u*eBW6NJ>kI^ zp^Dw0V0EO9e@e8(eFkyVf*oONKt&r zp%lvfFzqW<-_ohSl>a}{N#lP`Gk~ z01uZ!v9Go*FA)7l1*JTQ@0NAvAJSo?I*7_{SIn#3)VY#k2ArB-`dXnGZd7vct@ff) z^G4f)+U-P}oGh^0yv73|z637^NT^r+;fgDU-~Hwu{K2d=ybo*#bAFu%5819DS_Y95 z?Jp@`Hq>B6dot`P5kjI6WDkB(UB4j0sV#BW+-!(C#kga=_o!y`p8_9m|OU_=bpItyaLQ3m{Tw!c>y z9N=h%HEvvJABwCA;XT^bj*^59PUf@Kw9*@@roD;Cm=t0v9sjXmB1iOEL7ytZ%>d(M zKQXv%WQEcU)||dAf+Q2m@q5Qy%MCG{mx@Q}5L0fQx6sIylp7n8zluy4m7A8gKdbi5 z4*Dc~dHE7%$JOuPapglTfsYHVaF+*5ojYC%^Us&o+I)QFi+|GTuM3XDVk<}X2^enk zoW#{}KlbdLcp+lQ9dO-!1y->Z$z8ER*<)2th)^O zWkMN1O41x1_047OEDF9h?4i7B6QxwLPD0|`)bAtb z#?}J27B0fi>ZDeb6hI=*zG<0gprffGZFMHCc`wv0Nd$@*0IvHnXlsrgCX~9WIQA0B zWm}mM5d*nqqqAQ{%|=!^u1A?QlkE?D!+gNAkEl|CdIMk(;KG!=Gge=|rLq4l`rl|E zzA%9muZ2wzhp#>Rv6mdum*iI06eb{X&5(W-g$M7)Xc=yt@90b+??yK5az|6BK~jk7 z3`%(AkIaq6Ch_eH(+rc%9GHv1VY^l1n6u0_0dHluH~10HIRCHB85-NNus+{9X3@=) z&`^_i7#49)>-!H6hxyRKL4y;oGN!@>jQ0vHa~z{4>RJ8=3QT(~xb}s^DK8Bj>Vw7j zYC)G|G>e5HKL-<7jK$<4nzJXcaMi6b^=-RM3Rp5`4ZGNtf~yy>dtDKQR8L{Pj-UUv zy%?BVJ4%oC&8mIEL&33laQd&5qjsSbm&A9bMDM7v#*#%io7>TW$|_#`NU_8mS)P9( zg%~>Nf;ADB`3$YM4%ZXHs-zDI{_puM){%?34MgT-Q67|0)A^j%@T@n%CDPPua{`>j zvU5R+z-VCEZW^+*x(qh%lQ(_*t7?ClIjn4MJg7ooMb%X-G0?i#s4$5mQ)#ip4G3HO zdE6}5jt1Ds~KdII^Wt(?kzBF2X;%p^we0)U!{IBT80?|*Iwj-sRnA=>WVQk zXPt{4ZIr8-o%yIwt{<8@E}dlLhiY)t zod3ms2{6=r5%SRgGjahVQG;-L+oUE1j0a#<cXW)5BvblJN!BUru-nmJNbOyXY3!asX(#m#Ked!tmYR*9wZo-O)ZQ8!0AV zZ;K8aeG}R!_t2~s%l2hW73a0WDFob>;Nn`hI z2FzSrv?En?@{UGiRPn=Dj~whxT$mVrMp-wx9tb1_1YervAXM71sq@ql3_w}7RRcbF z|GQt_asN&KFEwy*W_XuUoZ~yb&q0(F4St^?_sW&`E#5NOz>jW3+ z>K+fARF7Gh%uCf8g*9^_pN&z{dwhP<>2ISa)=QkAZZ6i)o*MJau}?ow-J}q83r_BQ zH+VDYZ$Qvvb+*|VL9e2Ndx|#cXd}Tw*l~K~x~mfcKn|&NQ+vr0yVwOr5Nksx9~Dgs zCi`&=5_WEL-K08c&ftOcjQJO7r&uTZV}IXHe{Wp=IjQ91Anr{Ky*|(MJIiTN_szil z2Kb>{-S7WO4_Cu3c=_`cYgcyGT(B8shvNkjJC3Pc(o$hn6Bqi})GpQ-JeNnvPgr+E zH`sOVxrl6N&2hnbevpD#s>|F0@p3(>ewzR7s9vhYLSF)$vczo+C-3pirq-YEtm2~w zKvtHZ;r3Gql;7c}zpD8cnFI439gGYVi|2psJl+l)R01<;0lbl~p1;`B&18_ooiD9b z#V!39p=LQg+lDFYzJDkE%qJbckno=;moQ7)%VEKMSpJNbxEW*X>)ez&&s$G82*7>0 ztOp1p-~^vK2LS(r@OCY)6-4-%E75NwRXLJ`d%6;^i6AEu&?RMdiBv9V?X`jqC9!!n z5qdwM_?(vIZ!}7AEa2%TLi)jUlGkuvzHHsQngeOh)@*2U>^|c(UL|PwjotkQ$2DT0kYQVqt63bV6d;6~|{;U^G;^e!*<`3q82%;2a>GCc*I z2veGS*Xl_2?a4C*SrFSmx%X0cj8pq_9axM*pKB)47D&9a$qUbrI%^K1sK5k9S||2pJJ09P4P>o z1!PM0>YntzlC5c*A=a=-BCbcQPs8kR4~YfXq&kvT^-N~?{dZV7f+92=5hdZd0g*&e zw<7=bSn!Y5#tk5%U9hPO#A=?a8^_j6=c6+_UQG#ACe7yB0+v#gZ!XMrY(HS?_W(zW zNFvb;>y7vk)ED7v|ETuAiT|wz0)N>35&aF96&>59M(}=5pCwQ$FPtUr=9=|DV2G9l z7tQB0@qY#fO1LI|p@ammP>=2nInmntJdnbMVI~PKl=o&GP4hdPb}gd?_;DA9xa|mF z8@9O5tO})_T0z3qq~kb!KMjB?$A50(q5kI1XA3%}RsFq(KdX(@GF}VE#=e5&sI%%#EKIUnlP(OlOQ`{it$A1}AGH7t6M;MMNW{1}N`LK~5bvEV?84qh~9D~q;ROT|> zy6480_-OGe_Ry!!DSVtctWV&{Fj@1%Sk@a~>T)>u<*(}dMP>zvmPsNnlJ$tmK%6>% zU^Z+@AZ)#VL_JEN-^Z4skgd!-x?`y?M&!D^&`da6S`DyxSv>pS4Fw8{ivfZ%)!Dn) zicRaz_5R&sQQPGk=S#TpW3kYbdjX=Ke$leOCr|iD8S$#K87RO(I(rUpPo9;5B~bW6 zqJQ_qsIJ;x;Avf{{f_g`nusZeR>c1Shs-oH1!qn9!>kZe%_jKt*7bY`Q!{7yIn*Xpy=+H1~re+gf_b0N=-(BSTBeQcFv_R_nvF z-~U<@zs@P1TUxR_y~$Lq$Xn;A!~#+1A{?>JGm7E49=Pw21Hfp4S>K^OChM;Ivwe5o zL|W~pu$pJ!m7XMSp3Dh4MzwWd=G%_u6{&f|g7x>C4DClIlc1(OuKSZFWm|Xa-kGp~>WR@ThF1@rU!j$fp$)#~Q5Smgvi zYs3PWNo*Z}DSw;>J>$i3?W^=GbWn-CipzbUrfH}z29@Ye^}cBsF#d0v@ZYchjRuf7 z{#{XB{7amX)zGrlduP90rD{LDu;_SXSqx9ID7GJn7odrV=OdK^qbsq7*W1lBUidSd zIB=}_snlo+3udk}H@m0NcqN!~*^At)3lEyT%cxNX!6P8tr362~N*aH@?6F1zW~WA3 zgV#y;%T>Y84La~$$?blEx9Y|joZ_K+yfeB0}lH*3S{jJM6XzA)s?Hfa$y zm{i~udwM#Lk6FwDtL$kXs!s)=W^!L+twhls82d zF_}Td$B)$Wzty{5Q6(vjvUu7VbS0mdVX@oiv)k8^1}AAh2Cs$+(f~rOVY{W)b;Tf4 z+RxLN0~3)VmK&s-4loP)c~Y1#6IUl34F*+ue?|)xo>4oKA4J8PwDdw-6(348Lut#~5x`peWy8G5!(;pWXGd){Kp& zU-)m@9vAVK285L8>C603QwT@}9*pA8H9NKX(hdLuN;^Gg2G<@`gf&Gk?F7QiPV zOI#DoBv;95NLVbncwK(4e+!ZHM^ej_s&S6@#CQQi=kn#UqpsGK${@>{-<-<5dyb8^ zF@>g}svo=BLdd$?wA-iRY180Kn{3hn(-`s%;D(>C&8^pp394XNz%e$YX z&3H~IL4ekpwP^wk)Mc)A?&tq3LQ~CP0PwsLkS+k|s~}Q>vhqHFz)1M>5%mbZ%nz%y#1Dz_K82PolZ%cY{) zpg<5GGW&}f!Ci`Xf1-3G-*t8c%4|ciL;!Ps#1sGJta3jeS zD)7h5C%^e8R}`VhWCC!=?$(afLB`^nmqSZKdjw&@O0dgyh6vIa4x!JE)P7N8H^0X1 z1+9J(XQp^p$}H;U?2;}mb{Ym$kd=@g0uHx8mGy`HX05NfW^9cgBfs}xMr$FH2 zv>jAQnhh8z(jb_P-E+ z^J(he>-o>m2Xp-_jnrL^>~#g=UpZ|6(F-Gdv3ai|Kp#j#BGt1V-MT@lm+^vdIf0T5 zeJRv!KmBC=+^S`PI#tmj3o^%W+b3?koD~Jzton2~Xe#1u;buY?{>vx6LR8-!eN{`}6ulb@9O(%MucM z$*dt%ggy~$zsTKL3c1FPo_A^)Yj&X)A@lt?V2}yN10TrJb2=$%FpD6iLP zAh-DUo7~t^+6yah3b-E4%3O?X6M&6GaO#uRuGtr*oZ%p@g(qF3DHZugI3q|{{#;;Z z6jBE@cu@AkLt?&m%?oShMDbF?#=!gmx247x*x_JeL7d9%NrxH zIjB7!>)>qAiC5QTt_PRh#w>6~c^cWPIyzcuiLDs@IqtJoE6U-|IkeL;W4c%nG4Yt| zGtihQ({S(uY02R)f&1i;S7TjBb0GFgO9eT#yt%=(J`BDyP=*s{PGv`Z(BQ{)62BVe z2-mmQQO&R`$IH=%*K~9YeNrX;%Zuc|66I3qk1kbW$CuV$_>%}J3{(Kk#jlf3(#OAy z-tj)VkfroJP|4elgO5hdkKgrNHh`_~yy~MV^MeF(h_4oztt7!Zf=-sVD~`YIXa7mr z@ex#D9+?1)&H$-=5df6Dkyql@@^u3rJZ0A2l$R!7Cy8yO%t&n+9oPg&`lS0&n_^G+ zKTAHy#r8I)#dxxu;Pw%ZTDAeirt*9$G2w$FXT$l_abR3VR%|1LwxjT}+otVnes$In zXWoqU_don+S=NIW5uGeZfk`inyQXCw1G6Ff@jj%Q?KKS^V{2cN!p}Of%0gZ%Sh_3* z;AggPcR%VgeEOC){Z;Zi8Pnc7sS(N4jQ$wfmFT2B+vD3(o1nc=_lrHdn*Pq6EVKEo z4{NN_sx7JT6u*qn!8#VS%4F6*77Qj?!v^qs_waBQ#K$WBI}d9fR>Y39$oH4!ov`fpLc&PJb zqE?d)GTGJvfK3n=jHIVF=yaDU>`18hevp8bw@+5wVBwe<}i+wpWGdtN!-bVLA)ERoB#*!!iFYsDHV`#ZrV%fCPfD)wLsK0Uf#w$2>Z;{TO zOMa>CQKY5gWALeK$NUxbhT<};FvF%*8PT1?JuzT!(gyGkJ9i{wSFfCzDJ!Ix&C4n5 zVm83ec*2hR^Eb(SutCpW?r6t8NCZ{(U-U;T*HL|E%#BVDqPpugsw7rXrI^T-fR#&_ zloaMY)>?kNr&uI;wITMy3_mNLP07xw>T6_wzsBE*oLNFw!HstcAW#)+spWfQgx zQ8lw02nx?{QW3IGpYLxfv&ig}z*INx$LSIGW!#ekF3%Y`DVay^kl8O(5d0In>NpU! zaRL;V^~D>Fe7`lOU48p$sqzO+l8JgK!UXO#?`~#-<1^+tbp<)Sh!I`dXM@O?$CA$5 zld=ShW?dJS{{B}a2OP+}+TjZBj^9~*>UnWQf8^!CcThhc{vH4iGhw}_zk&M5Mgf4u zSz4FIbPY!>`A@eP7gtDZ#_KE=6%%I(Mx+5%mO z6sdSo11R5~Q=N(2FlH=t3pb;kmB++Rp_wo8=Qh7oIDWgp+}LoW29?6Z%DOI&FkJcp zz#7n5(A6Mvd2;L<5SyyF&6EpLIzzM6(lGP}=uN1CLIaL6*eXjM6-Q{D!dW+2x7TTW z`-%gr%0}_c3SywjC%6v6dwz=fL>;YY^2J5|$dGeRR+$sWcqH^>w6WZPpKi07TqZGP zP-YjnG2VS;J|G`|P~_57cO;V{VU@96-t@&=jx!;R~PFfBabXi^l7uGyl|bMUF2AVT zZD%M?D#$Aq)o+0p2{K2Lqw?hoAy(>_-FF_AdXhOUOk3MXKjDU622T5xXwYBn(r*pl z)^O=iD=kV}M^=ebt&k$vi6YfXe%Zh%Gjf_^e`3*wkoWEn(?!9PeA^ViptQof#)SN& zD*ZIe1XExwvAgpCKIzCb3t&0zHyrqac^1aJueD;}oHSB-dgs;d(Lm{BtDDoVc&VIP z$r3K$^i!zkDYBY!gO)dOeR_KOXh3KmfUCSDT1BC+2^)~L>vdQ^L$RX zsb>+ep;NAIcJWKx(IQK&PvSQ>KAy(|?1j2QQnfvlAy#^XHI)eaI~bL6IqZZdKFhaK zt=n(15tqSVmLtlPkKouN)dOKI-N06-pqmq=FSgYp&uDWM%HPsY|0p_qXn*QnMx}SN z9ryH3mkq(EW+AWCXK9xW4BMpUjs#GKp9qdk+C?Y>D~2~KY>uxWDiZJwT$J=LoPQ~_ zz-6BZ9L49B1K5$b+FSln)4xe5Vr)c&v`1cSw}G?EvDSO1aak%D&e@-O6m_%^a@!B- z?hizs1yS2OiTn6m6PIR^4g5}P3#UVRar#C_85=29)8+}uI)2;wiCDr`gd)Oc{NL30 z->-jD1MgEtbVX`@YXj3Ss+&B_gD!6QrM6PUKA$2R>xnzpjd5uf58)|+H@?#(}Mv2%>1Bq{gmf8 zbcXP$f&w$)k8>M;#;(26w0=4ImlXqk{#vF>u7lw)E!0d$4}DKT+DS(v-`-#wo+`R9x-p0Tro~c^$Ue@K@dW?fQ?e1_ACrMl2e>P|J z` zr%Qr=$RA}rxf!{Ck`s0&f{{CK2Qd*pC(mfH^87%M%dXCD-x&w|d{-!y<)Ky3-uEL| zrcV4CY~=-|%3hO^76MHgvkr|EnZj2Wa#|lSrdQY7&$L<1TRL<*ctPlnZRFwy@&&%c zK}i60xkd&=y|WhmBAhy7I8_ICugSm+!jcKRYsOk+Bd8`oCmlrCis`~vcqNkyvf68L zY1-J@0mxz;`A$#@2^RqvS6g?e zO>iZPAO7XS=r=_Ey;xf3^jhH^=`*y;%W9ZZC*cI5xMRyTYG8GJOS`iD^p9^3nXM<- z%Pc5btjD_gl0sZ=tMspB&oRJ~cxhL-Sh?#l)r-oF@d7ydfT^9y8+tzTSC&?Pukml^ z1Eb?1jIa&#^dhSNR_p0N%yfLkey-CFjlXK`my+WZ)JsvFr=tKOLl zXx*%=o+{>K`D8nxy&l2PEiQ|d<9u=f&+oIPf*k(K1e2b3o`(slzgzWcGL$vkMzz33 z8F-j$uwu{rBS@hoDD3pB`Qb|FXo+`+#gRZV5dR`Ih}y6KppM^|*2rbofW%-BU>4WX zetERCZTpjM#wH_4`*ach5L%8r!)*Iaz?}1)?qmg}5^?(P?o1V(p0w1B zl*f=ac1NNKtojxQ4O6>78&x41)iYotnrDM-Qr_hOcBg`9PZ~PSy^3?fi-ArJVA!8% zdjL!&TA&b+W^(dRze$SsMq87&{3nr%YSjZOj=LJ*G3K@jw92)*^Cd9qmUc|rxdyWr<+M*MiE}8P<^cAr5?$B6_a_uT{#y_HZ%=Vh zL^Mpr73K!hOsyaXl5N~tTAo@KhHe=4Js3@mJdfw$_*rMQ8vH)nJ4x8mG1STVB!hMH z*1S^GGp21h`>{ro$TZjlwrUx(rHBa6Mg4b;{J-sq!@X-;u0Ed{#G%)IV8oS-vov}% zAI3Gc2;$6k+;vP%LUBeumv^Uz7Ysk@E#AGs>|Kuhk@+4hF_1~9pFu~Vb<$K~{e7xq zN~-6fWut{rr#zA~Js7r!Tlp?XtzuYO;}zRK=5MzuZL(NN_s&@DS~q&Oe5BH(@Q1^q z((dCo;zwd^gXdiw?r?jh3B7=UibZu3woF+$-e$NHyzl2oO@^C;14km7Fgk%$x&1t; zH!U`dXWvkDOg>g5SOEM_nbp#BbM&0D+b0~9BgOIVV%Ky?On;vZCe$a*OuBrDI&jbksm7%E6H5Od))2k@KAl`djp{0GataP5P| z)v~HJ}H!+QS*{=x63E5HoD(1-beUR<75s{k2=|D)UK|g{kDCAoAV_xdej}LBZR` z4S}1Wk?V4z78i6z$qCngoi+zt{?63;^NJlD!MRC}Dd0L`uz@|#l8X|ov)n4SbElDs zJCbX|qviN=SF1!%+q6G#pHKU}g2GiJ!!!N&!VSX+9aoA&chy0)WBj`A!5@ujbF`d- z>8bJ1MEp92`qS)V~N0;Fhi#&aX<9GQ6J+80_6*%lN*ZO3B z>5;&^Vddp|C10-scB5B6>*0FUCvH&LOi%x>%a=IdlS{3i z>j!=Q_9w9w~4aJ z>0>O-LwXZT+ZWJDb;;tbOQM&4hlAew4m;yrc`?2V$CyjW!{Z{0yB{Qd`v0-_CSXmS zX&bQJw6#@B0T%>pVah6C4Ex$nSz1k?ObC%BPy+@D5cVK@TdP3W${>=2trIkn1VS-{ z5CT%!!V*A;Awm+6oe;vl$Y%eevwSn(jNjGH%zypY|9!)y$;nyX_dU;f&pGe=Joj_o zo~5~Y*1S&j$!~A*hod4l7^02#dy1j-ohzWdjR(Uec27j>fZTLLWY6+nw@ZBi$~8P6 z(830V`-xd{X#G}9i5V@$5o1YAhhOt?HrFW-uFF@%69|o4{m*l9o=~Uz?!TDg{^N!n zIPjK9C#UT6MBPl)Y%~+K72OXJ%4FwdX$s0 z(7^;j;88Rnp+j_^FsNns{xKtNh$JqF6tUT;Ub#oxMfH6Q%n$Lg=}STtm|agKSWW18 zi^uph@tNqi7QTHmE;@bXm>Rng>Y>9xcnFBqRh=-|U9iQ}mUiWyVG9m4OX9wZ%rSvF zV9dG4SG7tNUR#snRvViTxWnP5QHBIj9cI3JE9q2C|5J7Ut@c;`Jc=`)EX=s$%>_HAKJ?w%eD2}c2Po_QH2HRc zQ)Y93bg-C&ZcoYC3qe+t6)KIDdu^dmc7hYiM_2K490&s25JFB?b@zZn_9`+6QS+;> ztmr=*{wE8(mXnHM=RvQJd^A-=_wzqr6A@6B%%GRVe3snHC{kH@z>GX=yO5)i?|G%0 zJbGN*sjaIWAYllhDVm~&DL_{BV^gSEuVl#Z(ME{Z6XL4nI@ZNVHOY7(lx71ucCQ5n^=Ur!WqaIj1G>3549Q~T^ z;&kJttTq+M?B)YP_i_VH; z_&zf?da$T-gf=66F}cPF3omJ04nO0iwvjNiEakn2>Lo>HdK&R3k1GW2?Sr&P1}6(c z9KP9Up&ePP@o=DGVBO|g1XRqrJZ*wd`c4$Zu(!_!JsnWK0XiLd%TP7`PrW0vG3{_w zbCMKfK;<4^Gl64uOn0F3jUmdA{AY)I0zGo#^qSJZo)4I}( zn11F9c-!j>>)fLi+=fMENV|%dnTBOZ4QLIN{rLc4l@c~PmHa!F!6wW_bJ%NFlwxgu zf1ou>XuqDg#&5iEfe#!HFE%V%wSVow#OhJAvgl*y+dbNM!SLA2Sj(n4+RVY}Y-kLu zAT7~#Bs@JLBiliziCvXC@`j&1ZWp|A6#d?Zb;3+%Xlr6cuQ0S32l&0_+ja| zLUvj}LEH^FPM-0*H*8~#o1b7vFS$A2n|?~@Ad!QK89htT?NRaLl#f_ZRdodBsoV3c zvKwYwaxoi{Y&83o$n#dOJ7y_N6#|>^rs3DqD~fjMjb2FEqXoH@+d*Sz)qxzaQ#TIb zxJeClRmujdUS@rhDCK(f4vMPhi2aAd`b-fwm7=6RR~a^u_XAGN2~}Y^?J@P9kN(lU z3E(?6PHtlTIM(i1A}x7%OFuW?WAhWEMW>zBaNp*rSlTqqI-w#LP}uCGly*k!MA-eK zVt(vdHdteBJCahf`W3()^wb?`CV<93;4j?XLd^`yy&)ZY z-;0GV-~Yq%El>Gib^Mr7V>o~cv_(9aSypZhf$xB{3B((A`9DsL3{@snbe3;4-SSP} zhP&aa>>cIylUeHRuD7STw`nBf0c1n@hMB;$pHIknI4u8jC9mx&0o06Y05K!L%h*qQ zZ6qLco1+F1F9X=^(IKK>%AJ~$68OpFNsp6UosY8(xXO7^HnAKvpN#F}WVG&nZBL;W zF%BSiR8qR*66lBnl(4iujQDfufBSv-O#X&)X5{CL(ebiVryk2G!{11|dxz{0!FU-9 z5b_%jDfjpMAt$M<%C{(f1+!J;WiiJo8@W7UE@>by-%yu_07 z$f;gS^!?KXEM_Ab|`EN4Xn~x8}C- z&4Xv1O#^u0n#Z0(#@En^xKN(QTZk(GHqcOIHqM`TBJcY4nrZrbpR3 zvPTJYL1O_@eQ3k4{Pd|y#pg0Qv=p-JTJMbPyyZm*)HD zTM*q?Xyd7024nbctz3|Uxy0>46BDYsr2Xi@cQMsHaZsG*@7JU8mx0=Oa~x#W*#t%) zdeJ5ac-XZ9X(kX7BPiTvW;!apXxl>0-~eiBrHTfl0ar#GHG!pAA7U&WT$wT8W8!}7 zsA$or5S{^8?8{IU*b1PyW{HlZp@RZ!*j#U8S@7{%yMyiKrn|mMr-2)59N@>PYnY#; zRS=)1w`ge@??@4!{IN^E7Tl2kqbRD#XVXkW#&WXUUKeOQP>0(egvi8pU38AeW?#ve z#|1idEWM-MH!)zbWl>u4TYaKnvH!hEm++j@rT60EJ!3unemL+liX3I)U4xP$!u>c- zbkDi$5XMW|6G*}g?QR<%rVRJd(lBIX0(kO#B_~i8f5q`PW9q|mPd2lB-yXyYAkuC| znG>Jh0LP({V+Mwuz&j(Cv49+}oauk!MDX!>uMy^U_nPvuP6WkDKj-M)CK@^Ubop!G zTuPr`0O(FCqow!;N~O&SoSj&+B+)2v+P(hr44ldcA8D;o+YBDx*;we({DH|vkKU!i z9nvXugnrHi8eT>()h}-kI8^KE+-nij1P(^{yG$$pjavR#~!57!N+XfOsC|77^`X_<%HRcpFfQ&oyi z=b$PSJ4kOq^*X?;ZSV2Z?5WteYa2VUMHUL*+^Bk*)Zf5#MW48TGV*$9el>@MJ-%-# z6ly9sl$qu~I106kFSjy!<*5QA-*Pv%6nuqX|M4f&^8l^iG*ne&?GA;zaiCy;l;!+y z)VYZ%vHivEP2xGyy`so9Y}{9oSyr2M>LcqbIzXO{+(U$zb5b(x?>!eem=+Y2JL!IB zlpD3adrOANor$AA4?U@&8y=v1`t%Mo6F0jt;L3WQ9UJ1iCo%>VzUoE&Zen*sQG0!L zMu4`7;^wq-%_b8|G8rS+@4G@r*DtjVCWDa3eH#?<&G2ar|7qWw#*?Vg>`W{JZGVi7 z@V(;8wkwfjwW;~ z*Ja0p>Add6el!4IGsuN%{@_=f6qPKIX$5`2ZYZKhYs;1apl$Mo48-n(U z`-e_)W8#4~G}_fep0W|!(a>%!b4;S?4-&So7oUs#m%`Qmt)CyeLT87HR7W_-hRF>N zxM_cPi5Y??F$pCbhq5i=+e1U95YNx2;! z+iS{GckFdvzLI5Mw!Zt_diBkf#nN?oR+zfYjYw!+hk*BNhL`EADP>>2l+%5cT!QuQ zY>vWkQuasa&3Oq83@L+KAoLhNSWTZ#*u0yF7z&s0=i~7++(N@*Af~lNw$!Jb0}=*b ze@+fvdejAV#?>nr%~6xS1*RxR?0V5A{KnRI)RBFMhJ$(7WuMasLIYf z5W1_oGSna=mlj0dIJfQB6k>wKj?(nm>R<=1#NYm-R-=WyQ@h`}C&n;J^wI~p*Gz@3 z1@72n)iIh5iZ*#)`+jLJ`YN$eGPNx1_HC_H)+mN3^pc^O%)$E}RE9;drESwG?+d+|@ToGUlNVJ?wB>LRu9AO%jTC2$n0n?{yZD7itp29f8Ryzj>klRZFR-MAj>k`Bu|zRW~j#qC+w+Kyqi&`JClacA?&=+ZUINM%ZmM{lq0CGw|g95>H+ z#K%RqjRIY}>V#mW8+8(fRD3I;+|Xup%D+VS3w#nlSx))d=K!MEhpJA!9cS{@c#?8B zovoluj&-yGkse+n! zsUon`4l9BeEoRoo%4mmy*xCkj~Ckq0$x3s%zn`p@pDe{`Pm^KqfJ zVZlYEMx8I*(s!ek7vY{YPS$Qzw*U85EmzzEmxysJ$`E1QO>Vc*YY**87p!Zk+gv_c zN~19<0L~>EC6)wW^C`*0#3A%Q4W#}@ZF{jUUd)LSx+5Fr*}e$|WHd2%;A;=d#QhkV z^A*kCynOHZrnp>#aD4Q(5tJwttP7I)(!wRfb7J)eDh5~tYQ%nVC!f z#iI?<(RdNNv@#oCBLEOc)T8fknBBrjNB0r3Zg!C!1Y3#SoQK^*>$m>y@j0$1sLp8I z-Z@9)jGi^N(6Ri(>AVYm|J9netQsQi(r`37@shc$*;j65DX`p{sdhYS@%henqQ1mT!~HoOjik7ls`2&(f4HQnhinUr^#dlLoBknIgT}3_kCt3)s|#r znm2`eU=Y`2lz1V=f^MZWE@p$Dbl5L&ETyJTLWQdSO=X35HV2S$ToqiSB>#BmK%8I^ zag>Fzn0?v~+U1%QNar3KW*G^vIebU{E)%q92su)X9Z@{vojR7ZoD6&3Mx{GNMvyFO! zBtPQz#hO`FOb6Yg`^C0^9mXUFhlVp*a`UrBXJ(8b61;}g9qg_(7$>l#8N)8J8G3)XSpxPR`NzkO{+ zX(M8ceA9yQ#)JGs8WDMPV zj=$1cr*!nd)GxQ|FWmD`olssEl6ji}$JXz|l|c>$G3#x+`A-gK9!p(!C%SMn&FY_r z;U@Ppy4^fmU=_e*T1mB|Lpc>3mBd7*}35c-AU$# zn;Q$9*NWUmQXHIX#!5ui(#~=nAp6r*n(M^R5Zy;hU=DWg>Q-vZW(%c7+q=<9WgN{5 z{M1_v-NVh_K%hza1L>3g$-dYsA3!46boUltwmI89R%-IGV~6R_2i6QoS92_7kd<>A zKxQWm;M1YW85N8d1jWD@8U2EA68Hdeo2()A5j~VfK3;LYN)S9IMH=LCfm&7 zRrXe-U5xa9NH(C?|FC4w4ZzjDH^d>d1ow=P$hwmV`y&kwH+%(d zu_WJQI<|derOwCl+Rq0tKQ6D-?IoSQE#qc8Yko|}fmUXuPZ%V{2n$0107LI>vhur! zyWPJhOC4ZjsVNLN|CeX*-DH-dV+3nF&aSAbr20!vR5e4w0fG<8H(*E@7=EeaB!tgj zh<(<05&v{*5BzS{%ARdkbz5;IvM7w#Rg~``G<&ugd5=4`iwH$3gf;O?r6!~sux6&RxcN+h9YknW4#6vh~Ycjp8D|977Aw2fWM^|&QpveaGy zqcm#~)`bpQHlMmpM;#9Ejx^e$*4g?rv^y9VMOydI@sp@0xlXpUgy){lP^28t8L_`d z93%lgI#Wv7qi@9D{95h5Uv_QOvyzIQv9=a`X&D=BIDv-?z@{}SJabmnUUL_{cLKLn_{=;#iBK*Jzor2h}Utj_=J^(PCw zal$@$Cquotv|r<=<`d?AswXx_(0CR*?*WpQ%eGSE^*fvOn4;QTn?@=TAZyPy&3bmZ zAdxrM$htIj{^S7jTRJnXpzJB%seX!tAq>Mz6K+WzK3U}5WqOR?o3}e%bS;>9a@!#F zhO&k3Z9|G~m|k0Y{<*)if9J9MzLGxkqw>ck9sG7_hw(yEf?=-nk)p>!ZqNXu29!rc z7pcI9;r4GmS@-BlDUU;iPA`RfV#c0A$v8DmsZf%4i_A|v42gc!H?bd^6kDfzobyj*ekVruu&X!&vCR$V}I^pu2Q zx8Sy};T(P{Qr>JU2_r6ZH&1QrdCDq+bk}-&?e=D~sVbe)mxN0nI zPEo*+Vi5z5Q*_U-1Cy+1c&yN#LnOZC-eKvYJi@$mtK&Sh-;0RA4yi) zh1dVy&mfpWLXl8F2=PTSKsxZlG(A11GyUt7uU}~z%k5K_p4DzuODVZg#F7yDj+(YN z?LCzl&z}!ORb6c>Z+-Ek%TqU8pI%wdzqa9!jdEmH3t^eQoQG}PV$pS0Ai)GMHCVGUv?;jxU6H6@r@;2Difph}99Pj+x}E?i02 zNam`BV>hnUHdGM1ocw;bx9UYkVZ`l%VxzVdxbL~isOcWIAs5#GXl@_@o(B#bF5yH0 z9$q;EaPY}<(*t*MR1t$ONp==0uT zaE6_fhG`Y)3(jC0Ew9oi=62ldP%h%kNa(ZE*#7I;>~S$MgK>7!haxqTGW4l!&2g?9 z-Rnbu?sN3$h9tvsamT<02KArH&#!dxF$-T7X z&Lsq>Dz^WMX$K2#m#6$;u6ipYZ(X8!CcwXxTqU=D%JBiu{YYi2lAJ2M@i zWQP)3N{YSX-V+V9m8zdTJd0+tY3vlab8j8)xLW|TtL=U>qD? zy-B*q3)A~C4ffSb3*WHECQYrR>NZ~Qc|QI)>vNtg$TNOZE+|FvYdO@{B_<1x7n4Hr z&~fN6$*^8mTeEYr^|jk8=tjJa02St&Z{0LMX*XmHLomt0oF?kD9^aeETv=~VK7D)g z_l-J4cDvbS$8muSrn%Jj^MOG2F|)f;VMVKRKbls9TO!h~%6u3pYbOcSIr<&cvTtvyw!sYw?7_swvbo5PGF-+Pj)Nk?5>c&3)Pg&5(j70sbyxhO@{> z!iu6Jf=O5bAUJ&z0tqD$N@_qhI=bJa4j@nH0YaJvY!An_wn=5>IvpKz2qfa-_j8MX z>0)o_`XLgawkFwdzC~sDvEQ#Y`oJ%-aQKR5R^-l1=Cda(0V1q1yQ4wBvq_T_oaq5^ z@({jPKc5yg`^jLCZ~wr}suF-sBOr`x12~C(Pn$hFpQAVDI1V~%CNED3xW-C<6f?gv zuxiGKv@LK`K!DQP?V?Dq6PRabO-37hR{^>D`Cl6IHw!9TA9gKzv9lqYqx5F~JtQXw z7?#5UB`+2*F0c6L@BBZ1bMP?B*r)zZF2b0ak`*07Q? zNMpWsO8_1@$_y7Xw|wcBY_K}cIHYWF)ZUE7kkF;{3#i0eSalfet|>2+|N3VuM{oRm z;6mTbsWVj!bKld=28qPs$0=EGr;Ke-^y7Dqu*0}1f{gG(p{=}!txV2UP}K(5juO``+-jF$jl`N2+j)c21;V|H#z6g+RoVT(4izD=W_t$^ck7V(#DAtpDXjy*{!LUHU}U{Kn|^Ss^xhj=6j!r@dF_ zd|cy52>ZHA6r-mO0Fric-2wq!AlV4ZLKJVb$XG<11rv7outzNA6^1Cw{bXdjO$f~% zYG%COCe198HV%hrYNgQ4VwNCDKBkw=`fOpI-TGyP@Uv!9{>=p`o1Rc$HX8*bBINyX zKD&f~_pq@Dz@-d~(*f|Df_VEKDF=YOS0iZ{E)r%20eX5d8hvdhD75Y!jF5Z0f{7+j zdQ||gtuqj5`OeWr#W6HJq0HisBb=|!Y&#|z?KSHmb;pdLBZ`IRD4e=&k>`q><8<62 zr+C94nBSZS^$zf6=GTdt8uKxXMtne%@*Vi?QXY{Mwvl%43a0fm$*wDdccd15UaVy~ zgQ_TPgV|Vt@<+-|;E9=ed_m6f4R5W0qXv~|a{!+T1!)jz=Bus#0fj8@v3II-wm)Ap z>P!vPqNNNxjy6$zF@O2Of-vnj ziOw7ES{M7t4@Ff%<|DJ?`K*S3l^P|mCorz7!*-mMlC{ta0Z|U8RGoSb-ScY*a4Yi3 zZ4!}9x0j=c_}SHH@Y5$808*J*`YxQ`=2NU!*4}IH7OL|a^Do$s*9?U<60TdiFIKcZSWL8Jc}b`DS2FL>MEioKcrs+4^(4n zQ=dVaQjUNhCM-l==3z6$zRPe+_d4t3lMW2c8ht7MyT#2s|DO+(@CU|)>gGo9(?Obs z1s&bmH%XDzf$P>@=2z%PUvY1}^#*4uN!NTM(s}^ur`kMcvy^$| z9QG?#ADs>CT#iOb`WrhbVf~!3++=KuUk!CGNB0|VPRy?;=zxl@@w~43_&Pk?LU%l| zEXsgYJKk$?ezr+-vob@}(#o=KlSiQ{sC6XF`s)U3NAIrM`@?Z2e!Iw8{;rgMxIxB5 zg22*eSC$e1@jvG#g^^sXUFkzMz>Nh&1XYB92&9St3Niyy%3N;&3zb4R%-YfA&Ix*2 zj8DR7C~4!v&wn&MV~|arm;!p$s*&o zD!tL#9nI8?!hDYux~@(WR$7vX(n+k{A%Cd)>eGHBH?JT!(=BDc`|6gy$a{WUWk7T1 zhjExy(T12bkm+{arM!*)1@IEluEU${pZe2VAb$ zbbdf2Glt2j#MMK}C+Y7&_JF*6mVa~l5EqW~rLH@`-MX?b_f&Qq{p#tfP4J&Be`A4z z;JuO9!=+#FYwB@hiOsC#5$pibTux-?b%OQTR(T$dTZX$nxlYFeE-ks^!ddGwz8M*3L_!##6M2zIkPh_X5Jq^@wwu z0o`!0?+O%zbqBqx`^n2j9QM}HG-OjtXtMM5_y1aSm~#71jF zr48!s)iy0MUrsxpj2i7GDhEC7D%bb_i4sK3iHX9#VJ%f?cDNOwF6q7*cG+8 zwRl9uTSV*NZhziV6rV9pT3Ci*_x3OVs~>Ybz^U(+q&tUdz0di}Js(n*RAzCn5U@lELytAp*`n^5ZSSF&eArhMa)e`*I3V7CJM+ok5o zW1+n)=$>6`nB+&sSX*yPH`5n^RW!_#8_+sBm#ZsBVP@a=`gR3XNtnfeU=UJOU@CI* z=u-xGpOpZnoBJq~&Z+j>y;qo=1aQ2~Eo8Uk1-{kb1+p~@1z_C?1OhPZ`i`4M-1=kx zc{}MY)+)%$<>=fZO-|BBe2;wQlg4k9G?yKTBSy!or>bsxN)rIxE5JmK&EUrk) zPvf4UB(DAXaoEmrQt&t<;K;2>k1KANkvc_g*u&w?VjIiTXmNIk^1H`0OBIz#iKgv9 zeycLzp|}(B(oq2h{?7A5OWh2q(_vFl9!T-jCVGE!WBlcZW#Ubjhd(Y!MHjgF&@%&~rQoth zMA7;o(8(%!TEt&=`{x(pUogx-WBLkSB(MWc4iL!U59i*^MJ@O=A z-B`D#XJ+&3UtG}}bm>+V{i_yEefX)NbCE{!^&Vj`yt{S?Kqx`rxczyu4d5cBl|?A! z5@Xp>l0Dy}Mo!Z5gR$hQj+wHs^ZJVH&@D9WoF2_CrWcW{tO^q!r~!PiTx1+pgzPDN zk-lgQHxnUaU0DcZEJO&%8_U6V%nupQ(p=-uoMU9x-?o2?wN=aEq6Ns4BQUUPhY?6q z=gO18fD3jDK-kG+=Tn1gY0&zy_bHiAHto+ew1dW^(f7#Qbs_b^vyYo}hE$a+Ws^A7kwDX( zg5bWT{xqgf=Z08Zz$~OUE8R6q?Eq*G_XrEypH=d-$}=(m9ybCZBO_x-M;Gui*y!k} zH~d-;=|A7(|DPXue3#}sd4^hiB6a!%hP_+~xlkEqZj9^jTq|79uH!||GTcw8w#RAN zpn6q>a~VE1_~WDa+#;0-%;I!r)I=rJr&Z?rs?jvTF33v z1(Uddi4kfG$I})zkfqO?gn~L+bv!+tah|T&D{|tgc;bos_wO4E&7{qFc~Nxsk}oY0 z!@(({J^C3}zS*iq^8KnoDHXJhSSTEB17LF^0SF|2(&)QOH6cdmtU5mexxE1eNW=oj z=nf?%^*kk|W1mg!eEssOXt7I;ixI+R-3M0^Qgbr_9)RSzep^lrDh^$J=JyNYqkjAC z3K`VGa7&UF(ypM8Xt@x_zVDl@8AAbaJM9Bz3G;Kqtcpvr{*N0Low&>$YnoSbKronr z)vUfdpkc_4*_FOM&2dsjHn&m=`K4+Q*q6B_syCoy{YwjoBa{Nphw4uw{zj~=?BwM*) zRPAcZXw+kuTj@E6v4Z<1J~;*$0*%n2$H)pg395P zA-0N%;cR=f3BYv?hApR4;vF`N<1ek{WnO13_xZcLGk-(ukz{cv`4eu&{nfGW;u@{X zv!|f*b=crcWK6Gzt2kv7ew@n+44CY7{|vd0+W4qB+1Ho${BB|KP@3}7nbj4uk=DIC zmjz7Q2frgwf=-efmfK4bGeiex!Z%cg1xx$>mk8q9%^)X9YFD4#yER=?Gnn)i3?(Zf z5OnPBxfd5FWxxqxK*0l2zjB%$8LtIoC(vF7U^4(0R?z1_GBqxp1bDP`0G5WMEI8B@ zfMNmgD}Mi*zx@i3oEuu|GHjpHaAX$LL_Q;#TzV4Joc$nN#Rb<8+>?>cWj^&?hck%q zjvA=>24x~b;zwnURC!<$2cYrE;K25hS}Av}Ug2(=I;jI{(d#h$1P}xhd4BderO7a6 zz8p*o!&fiRdMlnTUt@^Wea$B#h@@rGDHXAKZ!=oFVqQgk_e{7r;;egi+KmhhAl9%M z)^SVB#sY#|8~hyrwHiyj{pIv|qVG-btkMfo^ZRu&Ac2(tuvJ--wYS{ftFf^v?!}y< z6D1qni!+NtGaxAycxwY;t6j3WGtX)+{*OKQWjFrokGH^`;hUE_a(#Pu0P-wvqrI`D z31r3ZCV%|vo&MS7O5D58b&PQ6#8BUb=ikn-Ty~$Y9A!mtMZX-+x<|yLFo05p763{5 z93WRD5`kdQTfd(v2^ztk&%%D{6$jTm%(DZ&jFc_lo z$VsvGeYkqAdFB4B^(M|yu5vA33Dd4j9jvKzR{^vyhu3OhN?@^d|5aOaWF|mMQX95w zeq?Wfv`(Z59WJsQ`$~Fe*hD zfRGJNo3$b85s>E(^x3iuGNbFQRWjbl9SA4Eu+oNLva|t+lLDPnALytQEfN3^7zEVT zUVAn6)E3C+jp>au1oj7r1KLe_J;cG++|c2V1utH;vjda98F+^g_hGodam@DbUZMh^ ze$8=O98SVC!mtbpW8^J5Cg|tpXmN}+vrG8p@E zDrx@|P!SKvBnF%xOX*GE2al0sGH*e4XjHH5n#zj+L_qxyKmDqj{?G3GUT8df-bDNy zk?{~G-`}s!NVbVuo*x=@(duDo>|g}mA-nJ!zTO$@0-Rz#=ux|U!&dpAckgL#0bRZH zVi@1jpxGnwfosOxrU9+K^q}8{azjeyBl)PW)G{bqY&6*l#Rmm$+Ezslmg-ZAqSf_o zey99LAK`&x@7|u{I^h@tPCapYG-*$qK0piQ6ba0LV&K3G2o8~f?DCJI&;YWn*dR?= z$>XvO%HO=q%!YhhXuzR;D0|R6*NPV{)g)CO8AolpUi*TkLaV zC$;C~g#@2+iQQ9b!j{R!Q9S~!anxDZy?a6@J+t=b0|%$zkj={#Ve60PrB#Z@G5Q(! z^PHYq_hGgwL|iuRL&D^=RUTIO9I%~ZaNz?uVXT+~5LdCI@DxCAI0Ju=ftL|zBpJ;t zBj-sW&`7A6vuO{3NQunOf3IR2v)LIhT9pTdKe^B8u<))of6t2gAVkfD@p?4 zPiEuL229I7JK)|oq@U_&j3AIKT&f@Z$o3>f31|Z$4j6RWj|(%u@y{ zDMNa3E6YLQ1v&bySbnk8;i^I`I=^ohqEGBZ;(sJkQ2UJ$SwU*3%;F@?3)eOm#1?Uk z>{wW?2x(LJ##A1ZGdR6>pg&^ zrg)>Bdz|6N@njxXxWl_=w9HEM$T}5(xb5&yuh)r6t{fcu!8y z+p`5h%$WXrzTY+k4?jcb^imiL*VaRahgS5Ll9n=xQhF;dB9{;e^$QtWstY-?C3~ue zv&%vm5FqoE&|wqfkQD!IVy2c)oH>&-Uj7*J#4$ z@RGVnb$vonovpV;)fiW{MR;NnfTcERkc0)Jlw?y^(r-$XD~?R}Lwtv@UR{?avrvlB zX;Zh)N@qY_dd+@vdF-kZyy*ks!t(%prA{wH0q5Nse!~84@7_2hr)2#!wZxLvhaIjH zHiXwr5O-6XgyCQS|DL`Czm72yw~CuK8=&+U>0)02;&-vq6oy4WEV^j>A}rB8cSRII zt1oNJ(jwW!2vjfM$J};U3i9HLng%@mtrE`4n9sHPOx;0SYgwXb798ekgCh9FKFj^& zRnO!vZSF3evEFxIs}+sI7K1}ZL(XW?$U*DAHoP~g)xUn#VZUPi(b<6Jadf+~{pP-^ zPg!)6=JSm0lr6Ubb+^}9QNJ|0^?Lrat>CMPlcV-ag-R(6=*qC>Gu$`_g8-(?)8=uz zN{EcXAxjd>M4!LuHdEq0wjGOzyvo2;-L4=|!`eA^@^xGXXB(t~C;%&q9i7Ypmp0mF z@c1Ag<46mpyg*p%1F_T>LV1Jw6m72;G1a$L$CFj17OC$#9?gIfC1sNnV8 z9YYE&!l-|3#lpru%EsW$vSFN2dG2L*_QDhMbCFjE(M2A+yR5e0i7CLz(v+7Fa6g1W zqY0SE*Tk>1+naqQ%wZ)l*!~BAT3DK?HV^>Gtf>r9UZ(|33C}pJmNTbvP%3qx-=M0(1p190%2y%&m3 zyZOT((sBDULvFYs7hLc2PCRQ+I=qg9>`h18SFGg!vgJCCIE{4E6dKeXy5w&=8acs0{qUY*u5FRTU7oPb*YOmVO0pU>zmdip@ z-s$&F-%LTv%ZfOQC*=D002Z2+qh@2w6 z&};@^?uv!m0@E3=M?W^`c*}i`&nfk)#@n8Razo4uExV_{O$FRfHA+fHwV$s4>1^MC zmQBAIqse$@CilihE4DS$#{^k#R-7!-!t2V4<&>DOA{Bjf7R)V*(A3Jr>9I#kHvru) zyBaq%Z$FRCFhjQU7n|m5_%g2wlJ@UAg6>8Y+aM~Mb5#P|3}4&7XMu^4uJ$Zx&?0)~ zy{_V^dv*ThPM0z9*)a<~zy@1y_J{U|@^>Wmxj+3+hyT)TKoX1r6DJ)>Nsz{f&KQ%(G25^ojP1;v zVgyKVl^IOcaks`JL>YjW&HO_8(1dD#W;S}p*-3tB^Xve;M+9Vq2#Wv)Bn$^YbH7Mx zcV>b?@4vm)+aSg8GT9MxRINoIZKY|94Ms_kH4Y&w499C50{hHD?bd|_NN-Uz(6TuLtYSk2MQN~fq_e~(p-AB_K&I-Do^*W69TU#`kBOifS)KX z>CtTpIdnz@vPfh>D>oA<{{&QI?BwkTdjoZS9}kb6T#!a|x2c!a3JtN|e&03~#8dSK??-je@y1-^cBX8-f? zCfk;*2e8H`EgW1%wKA5)aFv%(6SSWeC6{jOD0*YI(12(s$zXe4<_vh$*!3Fl;FYp5 z=x>Moreh{C?G9P|(ed2&OH{R);(&4s9eoyLfiZ1Zgxhks7RLl_BrBW1yHOFesb}W* zwne%RGg`x)L5zT>0==}Z#>qwaC?`BE^6c591Pp;q>-*}WJq{;C%!o;x;s_Z~_-e@WvvcraF)6VbQmE1UWF?M}ITG{MeTIf=qwN7VL zw18UGs7DJfg|=uRq{fV`@Tet8@7y}FSSn6_hcTUO-C(&+(SDnvrGo;sn6C#DO-;)hOk@_YC~xVRC?p@1)y2CU+p)p-8Rz zh{echBae3L2SrFF9=xc=-%M5DvfUM(DTEi@dQSD9OH3uoKHqWiDaxRaI|gYRC8QXm zh^#a$r$e-w6PZ>$Ap5)yd@4zJulY73^ET!wjYOseu|VJtj?rH}%U{bh33a>Oz1P0| z@%&r8Wv@raH#=k9hy1jiNQQJntud9>-g06Xj?9Or>O?=Y$BrY5F#zdRUrn~g=sFB! zvum|<2OI7+{5fAVFu0+&QzE&h-7R#>qeTvDoL(1a&?4pr;E55ulR?!bgC+9$H8XR4 z8OAzkA2Xy5o+2kzfo=}Vyht1ka@jnB>dWw;{e8+Ok^QC zmuI!=ZT5QuO^4vT6oNiOjJ5M;Ebm5c&InoPDRYZ>XY%Y zWgh%@Js1aY%t&dj>Dba-Ire*dBUE$ zUmA!o=i&_HL@T(9MT_J44NEpR{buWDe2a)y9Jai(lk2f#BQl2Y-61&G3u$>k8Qam( zERhk?(6>5Y$ZC4p>)(eF&C7hb2`_j>m}ZcLoWsFc09_g$2x6Ra|GqP@w(;&M4QnCS z$|mxLsk;(@fxI_aYBf$2gU`!v6;=XhtZh>PqTkW2=LX{9&_?zLOScEXh*gnpT9*iJ zxi^>5a&G|wIp%a}y}yqyShWM~1YiGDJ{upU46TalE#62Ur#UFcv9m$uvu{tVMuJ!W z(06`Ph;B&s=5gJ^*X;CpaS0=mrt!IvES?aY|J($0qp1nMQWVYp);iK-j}V<@7i|18 zJ-LJUB8ls@@hItus|?|Y9tR6(T>>8<0E*AhArl3Yxfw7ad%;HO8`z-U+#P_KJM=3WHZHFPiEB82hz|h zVP?Is3B<`5DIuNf%8i>xR31)fm#9-}67H3t_{sie>M4E_XS4Ax9FejR>Earkd)>${ zmcvoS0$J8EbPs+oBB*DYn%OBKwiL&Q!Bu@qt>)VO)!sjKw*14>AOC#dx^{9Pa4k0VghN25=Tn?*Dus(J3)dq^vsd z+g7=<-3IcF`N#cf1TNI!A+@y(_y4f>C17b~Y1-+ou1Y1TByG7Ru07h(s8NHsuiaHH zRS9TYh`6C0iMV4#MTMxfC2_Yc;{t9|T0sTHxF73+`n zW$jN6^Iv?3Rpu^xP9v3a&1;J5FcE!x}(rg~J$FtoKbjgH2v zfn{8Mguu)Y5Yz>BT692$Gv5H%Y`GmY{H7)@!o}=35Kmguzk4y1+$ueq&`m8@Dp_7Y zwuGQ=Y#8Yrg{y6AJ0H0%y?Z9IBTi9$azw*)IYQZ%ozPz_(A8lUCLy(0LDUZ_lsfv8 zZZc$)>|@!yv9sU&P3`{jG7%0p?%=xtU}yl@1d@?aJ8{N+3>#%jh&IQ++dDfz$Sj1Z1w`m-=& zG-?db2FTWG(?tz|Y@17Z-n_-YY_D(9V{dvY;T&7nmtUW<0MAqRMvu<>upob2ar*E0 zcK;tgW6Q4%rNA98Djca>TlS`H9qg>QhHwkr7f35WwlyHt3WRcH!EXKb_PADyq5(hc z{93a@rbBfNMGMH3tvreAf&hL*3gC~@0G*5zp~1G)hl4FN4W_W^5C`Lq6E>9OZp2yFm1LYOT8&DI(Rhc-9Nj~mBxG~gt|*1&Zg_RPVe+P^sUv??zQGB8u6$G zmDTfg5q@I44zoIpA|gJeT)P8-`^h89;>?2?Rw$*%B!A6c$-exq+b*818S*1rCA?TJ zEnMMtiM>@AJNMm-s z3beFHn5}dF=Gs|LUk&P;inq;bOKJlXb{wNv39Wgrf;oCk{+dsj z5pS=Lpz=b<8Z6B-L?)oVt!fd}I2P)2%Jy@=9>w(y746>Bel6WA-Z37+HspTyy>>w5 zWMpv_{mMB#4DJm;NSS_|3T4g0D9(n`G9Z{RJE6K)B9Vb;kDv*CAvmnu;Ad#Tjl`Iq zePf;te~ImGdD&}q@O;eVc*V|ad|{X-y!R(Z)K%5zt7)Y<2ufjzO49Dtw5Sa?e$c6hT|N zakDs|uD0jPT-R~BykicQNlq@|#ytP6hNAJJ=~4d*wpU0oJ~D?Ep<-VF;&@7t~em_d7c+I+klva&F20Zm|=sxM^71K5`p`(J)| z2b1Dz?Uth){n zn;fk}ixjHI81}(XHf|npFQ=aHHza@j<6J$by$e~WTcMD_6oPY~8zfYAaZPvARh_%{ zMnOuhCb9YUEPu0?-87XTrI@5@j*r+O+z9oPW16Rb1?ZIj_Z}Bt6kDO{QB7JlzpH8z zEzO0Y`RiAomCiZUa&^==Q z^3;_7C^I`JCmWk)3R?Co!yq|$X%86?=X8YtII|9W$NG&xFcE5}6Khw>#tb-eSyX^r z0a#3xC6g$$?~rO5K*puNhUVpjYonY3jM-|XG zw>J(8$Nkd8oV2HF5y6RvvC9)P`OAVDi_3C@IJP&Evasq==bq!!;los2ktl4Pms&_I z3YYB6qN2=N1pjL{B*FnCMJ}*$d3|bi8Qz!? zh85xbW>T~@7u`ht>pKJo=c%j%5`UppG0au#a0cjZsYH3CWGH@y)Uze_LI zw^0!oHmp7#9o~=A?`twJapOZ4+#oJJK$+6p23fU1!Y6tA;xri z%kI!STy71XTXV;rI)BZkQ9O81;=SJx)vpd|@@yCaQcRf$2ISf~%Rg>zR56Fe!F5bN^mJAMBp7 zAWIcjM-~lOq?EOt4WXg@e7`|@I4>+kaV%|G%wqq*2D`zOuc5V-DCHM)4R+zesg%_D zQ5i>bvjAn43BR_0*!-+b_ifzXd-L}l&vP5@P9qhj4pza!m9bZ}$(W0kd8;v+mCdml z!DX!0(*qWm1WE{v6iNXQjj4h4psctCakc>L*<2JvS?&byH0~N7pTC|Hy`=8`Y^n!QdLZG0WEO>z2tWtzxcL{$JN~s} z|4S#>$Fw-lIDw6um{Ge4v<~86G`r)KfoA^i{=H&<8R!he7No?|KU{ONUNTS^nhw9~ zMYYPDQ(cN>=saH$-E$+1wVc<6ET<9@)ITIgkAzCUl8Lx89>wtK+dIgEFOT=99_-W` z3QWdn(E#jY8CaiXd`l?-SoGvKT{_IQj{55fg)v#D-x49mYk0t>_Guj;r9iICz#18s z^hJl-)S1Mh8sFV{aOeDk`yR)S8!W6c`XU|Or8!WO0I{HnqHiDSsAUa^(QkG*0nYMa z`Q{(3)|PKus9FjW&k7$>V*&AW321>5IG*{w*14)iP;1u{H|ThEsN%OrI_`t^SNhU$or?bAU5mQKu!`79(Z5vnFtA2=NR zBJz55_;{IAZk*wUaBu~JdzKyD3(V*rL!18i6aM$yxd>kxiL4d@t|UNxA`M~a*9NGn zSC2M?5NT2&Ba{>bNIT2*^G~)IfT%hOgwpYE83|$O2ZX!AV+2T7fXN&3Z3f7R(6cO% zl_Mh~3pTeBGJw?Ia4#~2#&`Q}moXqCBLhfj+_n!VqP%NGvCrn>i7K$P8A0IvTjJD+ znK6=de1>Tnl9IN=9&(75;xN3LLYO*)q9Mf(VhiyPw!hpi;Kt;ZvYE<6JT<{DVC5FF zH85p6)r^* zNg)Rp>!zgaUCS8S5^2U6WtR*!C^TFSo+N2sCI_an66NI+q^`0rqB0FT;l08w!dK(x zXdIJSo8K+=^rEd1g5u^atTP zo7olUaIQShI_C+<+L#Z_Uh?d4V%o-=ieoe{V; z5FYv##dIZM$iRf{B`JQd%^u2Hi)7k9`MRl^O=x@~LHlvuiohgb zb@HBBb;mTgNAYU9hE!dlS_@Q0(WNeyq?Ww=OTT^p>=#eRF>!Gg@TB>WGF#-}qwe{o zKg^oD@3sH9LHvFpKXJwG_t-GO)EGT#F>k*1NCZM0BMb{){KN;oy|uVgyc9aUs~D?4 zVKkzkS_+6GfdMF>RxlmN42SpaPh4eVKb2|c`Ds^ym#!TC9 zC;5sPV1;GA`YU4>T+9y75B*6{6&XN+lY)WN0w7le$SD9QUNycY$sjI&{DIo(p|JGT z(=n3a@%Hu-X`hw836SfoRSI#A=|$^4r6U4c$ajM?VhW>Fztq0-YR&X8)I837BoY)k zpN5NElk!5i6wM(3)*u5(lKct#yC19K>6^tZFS=H}>qKpMEA0>W;j)KYt{XhHnY%Ak zI{d#{H;Rz>tQn4z7Pp+rNT{twnCip!2Z^WuzM#{OJ@h|&T{ZKqX~J8r+|UNMBctKL z+xzTcJb~W5k$?iiCQY``BC0Eni(Cw>M*&!`B{D0)n12CjuJ-Cb`@H}0pHt5P$pEa^ zfH>peZF?s&I-y$@B$NJ1JrC?bnN%5$-UC!@M&bB^6Y{?>h&p%#Dl$B2Qq}Y z?KFidUIjq7AN0^nQVLyVeXA0xZ5}O(54p!RX6Hb!Pc7$?X47ZUS+7q)m=50IUNmit zdukboay@OU3j{{%6cR)E>h3b-UW}H5ClRkt^$A>Va9M2~Jh!`+<*7g(jO?CyaWf(v z_Ui(b(vSabUjV_4PS;1Svg%h{pKm3&*mHR$&m%;AvkNaNsbuX7A5Kw-)8tB0VCHYX zGx^fM*Qb74uNTeQC*v(_UeO;Yj$Gq4FtEenQhtQm2aGPMZ0}S*#5qS+cIBpqu?Xfo zV$?Vn%?6xGH=1?JDk)a52fyl8ah6rNBe`n*Xj71dEvfQYd~4%zxOd6ib5Yx!-YM?^ zj3_O)d9CK4AbhVS)X*?skQ369QGYz$S&K2xpXItig^HB2n&6Sk=Z8)GEZmvJ+%YCL zJ@>LlnZ&ri(}a(Vgg4VP?of2rW8g9%bKvjm?$@V+AhYh`)!X%oSIep;Kv+Ht8Gn6h4OKAd>a6

(Wott0%;@&EwD7{LyMq_Bw_N<9i%!c)(mnFKSr<}@16ISm z{vib^XJVdMdN-_{4WA2$BhZdSBT*RFqlkNMhg-@qq^%VQUQ6l+p)#CjAkWW{f3!9L z_a+d11`K7YCO~jcEybpynyOx(`lDQ4;#!g(2Q$)i%_R`0y^!0z0T@#4t-8?_fbw7S zG~~Y#ZS_}QUZn-n_X6QBsah@uBFw&$UKHPrP*;0<|3o;J(avosjA#pqrWmK?&CN;q zD=uuve#MXh5`8`D^k0?p^NYWR^&rF@J&9<*YKKXje4AmVd<8=KBeBt zlmjdwjnvpnOXVzw2J*}_im?P=!iUc8V4IIHYN#Wv%0hezdi+oct)=LjjkH_JvDNaVZ2z z7UfX+<6A4^v0uP*=;(+-dP}d_!NX2zeVDM5o{@2nXj--FsQ5{22gLwtGFGZU;9+z| zaF>@QQUud7Agz!+a$c6a7+<&sDk5uD*Lc7HDwP-Mn1EMBXx&nsh^Isf+g16GYD|V~ zJfj?hLJYAK*Y`qY?O$Z%gGgiwwOswJ7F4;cGYIjS>Lscw@tw}T&VjB5;%7No#FQLN z;fp;FM$HWBwinH$Oj@`dLgNc#y2~hNe{ZFpzR5s#Kb!ZZe ziA-A2NliLLrQjajxbXGgwD}LcJRw9op+eIk+nfXo)o7z7&!kZ@CeCtQMv#v1lGA>% zabwq#oJFQfuoWL}S6PDi8D$1Ch!RHJ9Ij2gX_!dkvns?7o>q@|Wj(+qOZlohzidTx z>o18#ujW1wh!Jq{VD==>w_)AJFhH3}Lp;f4i_&cl)h`d%8^01&OzaflnYEY5CdDJ- z(t+t&xSdf^Ffn041bs=llTP>84k@$QFSXz|?g}NEB-(~xXQQ)qG3gmYy-xM$4`Rax zfI>BNp?R~lc+T#v+OmYhwFp+}x_E2C0$j^2BxgUT2t^SW0kExYo`2449YZ?QNTayB4?`DM*Cq-~5{*}c+ zUsG(r1_`cW_3z9ZYoMlLde7wvwPm^0xLI2?v5H=Meaft)a`obO#%LVx?Q&u_;&z|E zER9X#6m}nq@#QUc-`N}eiao&IwA>B8)_R+G~ZgzvOI{9al9Bv1gWaRYp%}*0V$J-I=8}W;oua3Smb4{gyDW|QiJ$hoh z0zj3_vi4fGoZ=F{vyVU5lV|gDe}*pn{JZ^b5%P~YKI0?yx;-?~vwcL3{%>b!D8}G>yjF(+4=gUKuZvL%Rm1kVh9Dr4tk}fgy zichklVs!z^{!##I)bqC%V}mh$pfyoi>cBa`m7|0~&)IwGr+c|Q9A{2br2ehx8J=Ru zQOtnUxI3b?V5RSSk9{&SIEyUt)Ja?e|C8O?3(=9{ra89R5|HUdnW; zKdMwklWnNVT@Wq#J>-s(3E-XUFhR@E<}W*8&;*z1Er=7r+Zf|1x3I8WtNu%=teu87 z{6^*@{B!0dUOD>CGC!mgi?MIvN066z=FZp&tX?TT-_YglEyO z+o06n-S#Zg#(cXqb_?!UT7EHN`~1jYPGL!MZMph!U2ZqiC4a#Mdj*iSkFj)h8JWKP z`jmF;g~a<8gtA=i{KG|ZnvKf~fQC;5w!rP!v=(C^otB7F#T)?B^ZJ1ttBuksvn|WcuBWnEzNp#v2n^*|ADevueJvz-7MEZIDbV zAA%dH=uW(Ghh7}vl^_|@u)YbisXN@Vqm=~;7Ppwu1y5f5n25&@MIQe*U6Ud7J9(FX z8osq=3(i$fR3_UpFT0bq;#Ne7#hO|nDI*y?gOp=N1vH$uIm%l|I0SE3Z>LpIp}IBC zMCXQj`?ywGUd?z&XBVirF{))QA_cysfgc*q%9dI9oYG|y+s7# z`dC{-v^g5Gm{t-0#M$^R}5$ejJEM2dg== z9w!$zg)ngb8d|NHouwS_6gFWpu$=lLtEST&hELbwxM<1Wvbma$gZaRn)SXnT4tOp` zDtg6t)iENBYo~?kfTa1!c*M{)+Z4d6A9F>zX*ddnHFqQ2H!T(&c!O}9_YLcxw;78Y z)wNf?T8e>{MFe=jW+DV??`?V870znukO4TcH(Ox^GU%Ahd{t1}iga03TaMl!UMkwo zzBK480!yxDt>uLuR2T2m)o)O;9AI)&qf`kZsts@FI5yvl z(W)Sv;UX|x>%vef>3YShhiulidq!Rrg*lrQ8`1m-yPw@69sxx@e!NiX0CVV1t2-W( zM30s3oXgU0CLvq2L0IV+I}#FQ4>^9fILem`uRl=~-4O4{&ARB$c;a{2O-PU}DRL?O zM)ZzxC%HfPxR;$T;$GC>v!*i(_FQ?#b|1cER?g85_2{vtgcp`K8LJc2w!|$VA2*1X z_O8II_X(lI626zH&=ggUP7SK~LPJv=54e8klxEQcaN6*`<;OqVdjCjQ=`HN)BlAfZ zeqgl+WQb8f2iFFV1xm>h=re)0S@jeY_iAMuZzu@ed(3V`c8W8AMAk2Q1MYoN=qe+>MC>6o&(~dYTF^`B-n`QUCM>vvop1Et z>hpPh>NA(;xoH!3zupQ=TpfzdyDiPr6WmmmPY*9|9|^2aZ@KA)v28;xeBhPjE-b9L z1;1=*FrI1E0O%n{^TAFg*BKki-GKBJbfK)|hK9}#>gkRahl=D{?UVDA=#R0`ki?H)|2_n1s##gBAMX z-LFrbl7FkS&%)&rdpeSKvu$ljw2z4^)LLr}hwnZ-lt#H^RPRplJUys)??gY9 z5YPrduaF7;+tV4Bl%)dz@#27Q>ukej$NTRt8sqf|cQf6)(LTNmgu9)yUHR)8dC zzT?d#M&Xsup}QQ6ISnQs#aC5&ed>%}vt6T}e=lXg@DIDTI3B=mJucd9LUIJ}QgbY! zeT9zG=ALnRI$JwNSn7_>!+&Zi=^ZOhrfe^UxYzPJL%|Rs^}+{iCub4`$eU2jU9E_D zlt=T=K#=DB1mZ)K2^x)Z9Z`+L=V`y(vtx~n>3g4J#f`E&1 zBFhz{$s#3Z`YsF;U94LmMGb7MytTU$6Q$f)F>ACP`PAT+{3vlMnS%*ofUS!S@~^%3 zd!EUWx(5J{RV`p(+j27HyD_PcsqFizx&5At{~^5lwig@A?Zu2yf@motq;mf2Q(yR_ zcxovhyB}aA5tf-!FV}2)!a*XXd~174N=kUK*>U{&ph3Wg*kF7xXP(*NYT483m92^?Sn1s5TI5u*}X0MV_o|J;qV;5`n^{SA( zBEFjQ@ou0FB|Xo#rq0Cv7W|-2R#xHKw5Z2N2}lP?!~^3Dl|p7bGhRNHHgnq-(Ei0% zC8wf10ZGl&;0z7mP_iG1DTc+-!@8I?6HFq1BQ}H$s8(da1wPYmgK{_xjgxgoL2~l_ zsF`|CsF_a0KV>tZ)x{(Y($$JjNvPZQ38TdgR%o=(o1n$-waKYdzxsHgqM#)FYi;!i zE(dXS8aGR_<*&pp6}8+1*)&QC#jdzxW0=c;kf|8f;rNi}%&N}<;94Qab@+21JjN{U!GYn&;1#R!k7*hi?zFh-Lrx~{=&VAZ zF)mD{e$M4Ea-c=jGfB7rJ9h;H9_&#izStA7L%23pbO+;Y_t&SQ7ab>1oQTjaX0cDG zOyYL)?!*ub!ZTZOdR9;_skO0-1T!Aj{(%W4*+Syr376)mjb*bYLb*5~CzmNH&YmcZ zjEGgc)wY6M!~`NT(6zho7%qhv?`W~KyJ@x#@P5Ov%%yqeJGy24K5TWRxqH^Um)+O` zSHnf3@IaRqT=7M5Y1^RgNvh#@N1!JW$T&PnIrIV2$UYBCjx)y%zHR=~t?&u$-m|YqsU^r(FOqb?R){B=R)-ER zL3sIWu9-fw&~EDv%xN^TT`S((kV_w5K~Mxg=SLOiRaxHQ^-NROz2nx zc#4&XH$>9JoJO9@m)5|K4sp=Hu7k!CWC&L3(*TKI+&b@4bkK5iaEgTJF?y8r(Xdu9 z)9=0hLoZXO*i1qL=*7KK-`?y0(%{=K+6YQp)#;&v$n|SJC%{?*M95ZQ(_(5RGepWH zvjMVx6F|@??23cf?jQh3#EovnU0LOyd!vv%}8j4@9R@zOPsx@;_!n}itR-#yAER| z&=+oA-$~prov?XIVej9|sty{m0=q}jMpS%1y1p=0@^+~X1ZEOOrZj)F{eUxO%8_yO zoy!@3gwuU{+dk{`dxZ|XaOv|;9H{^NFRl1@{8z)RAVOFe?~~d3MA7ZJ{~zU>Mwvr} zPFT*>9zX-$Hkqcm6@51gXXA|2x{fRV`0pt6f7@G5%bFPtoKLM4mpof8O9o`(T!8en zBjT2|<^9C2!n`8x-l&R_YIdA}SVbA?hfb?I2>^s^8By=$4dV#Ym2$X)u z?gz8&-pEeL&;KL`Wp-Ly^Bh<~VpdnbX6V!1)6KD8au6ym^8w%0)shz!pm6-U#qtWV zh*25Lph-5iLsO+9I?{c`)h!&*u>fQ?DB58F!9=%QD`MG$>q*romZcH#C-N3$y5!1| zOB7<4mUgDrb%=Ap-sAD@(e5$JEdSZH&t#$0yIF7XS+PDL1f7)e>kF@zS4=B2$7tRw ze#t4sH2O_je9`vAh;a)2%NTk{%W+{nDQY`7xnG!(Et@zT9n=Q7!;OwMw72i);j2)y z`!Vu41JN4?U%CZsSfR07{d>C2uTLrZOqu3G-Qo7j^l){zZ#L+``d71> z^I0)WTx~W4!il%OAN2?J3>LS@^z%1$!o+D6+@ixl z@qv|r-6u|Aj%YU+a$&O@KVltQ!wg5lE=8>mqH&dG7!e2IEQP_5`IqNU_K*Mghr(*5%^#+areCMGzF&M4pD2P$ z4@|YO+e^(*oB5FeYXQWodzJT$8~hP>gd+|PPFC>Z%Ey$sO=vA!Q&Vsum$51 zIs8R=Tw!)pp41d|gRqg4$O@WRc7=o*-{w2pFID>$B$q`}t0Mw!&c*r9RxyuVoJRsL z7kb>vV_O$rN-31JZkh@Ls&I+>p=K<;V=#Eb8R4;jHoB{7x7OH=NmRMJdTzCu=rcJk zOx=3JzjLO=4*zrlcenX@dbL%Ki6=*n2k-akCuBQ1UkERtS#3wSI`o=k1WWJBgdVVK zFs&87*|n0D0Q$MR#(Wh}Cy@VcEU=%fXQ6{jbfCoZ?_a5sRB>kvU{Qt$l}MN0cE1CO z?C5~#=E^VsrOE!ivtLLYV!TfpFqlS6AyWcBOv$qE_*xIy5LIDRK*#wPkx)%GGB`~h zQfB3#ZXYx{FL{nSjrsp!iTm$W{r~d))3SF4pN>7o?&x=G4Jf?zmdSEUe@p6=C_OBU z5OczG6g3J}m?xusRbepRCere_mg>vM=NUCoPqwf_C#q*8fRnrAZE^uIzg#c3Kd`}c zJ^qF+lf?Fc0eotJuiY7tT5Pz6!(KElJoYo`8+h`hF8isJ@2vG!UyjQs`MxHkrBzJn zJ7pxA$9Mx_3`hsV@)f2?fM*Sijd9@Ej#&+sEL}K$M3&Tu7S~hK+_CwZU*f`tz?rDt z4ycm;D@$$$Yzj z6hf+_s%Yt?y!muLx6?wD8W=d3M)=%&btY_&BUH}K(Da(UwnM4V;;XUqC^SH&&jqD} z=PVJhmc4x)^Op-M+)^WJ^V#`hCdeOLP;SN|bD!T!h+OD7y}a`U4%D+kF-@ zl;OTOBYf}~7?5Nr`JiBIaj)$I^CYu0riFQF$W9@NzdaX578MmTjEl7``+4SjoBa!7 z(sbu@V=~Llw~lpx+@P+kMU3qpW_()H=H1t6>_e$tAHMYsN4DWI&6+H8&rFBF2u<4g z3`Z_B#l$CA+I5T*N&dF$iSnxH+U3B^ zX)v8g%FO}+oFm3@O;uUYuy>c<811gM>87-dxOYElw2Uk@%mp(4$OY5vd?8l+j7Y5L z^(LERP<6H|tDXdAt%E5|umw3hyxAZlYZo6CV1l)Gajcqp6lkNGGYVSx{0$(1&*kiU zi9a~>-b8f7w_Sb7F1BJQiq>&0rSXbVAw{o)OLsud*OflN>UQ-t2rV6=`+49RuzaxI zM5JZcgl$bs^2iR@j-XvQ$|DoI_>2CL^S*R<(-mHiJP!w7+ifhvt^(5k(dZ5=aa35`D!%#t(p&mL1g^VW=O`tyJh5uDUIGK>Q4*p1 z?uiG8Q5 zImG3in?0jn|ApiDliP5N@D@w<~RO%$>s5&Ys@hn2ejfhUTTqS^1EW(-w{$}svA8Dh1tjp=D=na{s zSEZk?4P5axSnJd5sLRa(D{c?i`8eTf)q+cAF>{!z=hy6a^bxXC1C6^eH@!3Xd7*yu zA*5jh%5l_~_XN9%GhblX8Q!nlRk1Orn{XxcKXvQnJZ+i#)!=z!++N7?9VhkQPIt$N zV|{<$EWsR%Bs$MA(c^_o3u3I6^klzgQqrqGr223O;vfeD_CfacMyM;W~V~b<5y#G2`_gwDt5Nx4-ATh#Q9x#4Z!Ht zAP~r~)f-&UGkcXQF+hZxU@9r8CrevWS>%ZyDg~GkPTpjFAwS%kgQ1#Lk=by2fR4rf zWS?*Xaxs6HJgMd%f1yX=6%$F?)0%L>rAFycL>Y5x$;%@cE(jI*+y+6&*CL?js&b2w z1Vn`UN~aR;z?+JAUjBAko$*j%nU%>cIX|h-ya3!3;quGhik&Mri*Kq7+;h9V5ykk@ zoJ*>pzp8nC>a-Fn_4C@Pg!iX>Mz|(n-t;sk%n3g`ngdE>c|13%ZM%o{m-JrU5=68` zj8i<@nvX&-h8{Q#&e))Lt;JARHD|DMHs~p+C>(C1lRQnEaGtn={gf`^2^iQJ9>s%F zXg;Z^^Qwm5b1$-9D_-|0t-VIV(VkT4>*O%Qjr~{5G?KQP_{J|+RQCi6`5|Sgb?Zyg z%?UTpEGOR#>@E%97!csvUF?r@GbKPW8#U%cQR<)^j*B!{d zx{sv+R)=2WU8|FnS=l9N6+c_xWobKBW?D9noQoNaO-R$avjc>9LVGh3vrE$mN~|*D zo$V>9+-}~imX>aX7g|f}O1hGGHB?A1Dz=L=iZ9B;*naz~g@VU=Y+P<(iv zZKx%(T^8W@l$s%#+Au!o*GyyRfS5Z|kTJmn@4b*T06mOiz>T>eRbs(CuuV;{((R-@ zl@Z^Lbp)0a$dol7#J>CbRJr^9!P7bA3oBZxD|#lb;?a0#sr_B0?y{;e+GIlgxM^xt z)~*HJ6cE6sgKcKx33kHm(#376#kmoq9W(7q-8z-CzD02D(EWv&XeC(W#{d4-IO$P-CnuKT04g2ZK~Marf#%ihT!IkfrC z{S2omodq=7beuZr5<1iEZ`A;%2hEwh(}k_=a#q-_%DgyH(hmR>dxcMbxQ_p5SKmem zYOm+qbB}%drRT!|H(0D}!c2j{q{wn>#aGxw74#dupGS+LT-aYN zZimkrFKupyGJH@_*LEQg%^`)H1SK>mXe|xjbaDhZyB}8Ai-5Ou%4V22y_2~43gX<8 zkyA%X(k}_bIX8xHH=SPz10a~f$5XS3LRo0F{xLtffWrz?U0kHlq{f}`ml`(vR2N8u z?WvHA_!#!ExSYQdQUh~dK%3o=_FrYTBU4Jw#ctnfuTRTBV2S!%w|BUChoMqZQ^YlJv^{yx4g&vT4OF z(0hgd=(3y>@9Gv@E$iK^IdlSOA?4^y$w|-!^*0UuQxEuGaqk!M);(K=t5%`Rr@OOm zL%p%peoKdJ`3|2KO=+846Szb4Abw!3*|o;Bac86kGM+-NqPtDn(FKhcE0y$-zAL%M znfoE8NvgP%SM~8;Q~qeJ6J4E4yoifuMNG;jAn8IPM=lbmgC0>sEnb{U^Td$DvmqJz zG~N?g6`XWnteHYRt9@yqT{+yL;q6nW2>M92zmz>F+m0ETH6Rw&jzK8_zx^$NVR;QW7d&{l2h5`%gx8b zHYm(juDSfBa?j^gPc1Eo1#L1rOp-qUs`DNeKQ*;~&qTnYh-&;E#a@BTG(>e{K#VN( z@UA)TD(PKV+SckPSoI47=m4=rvF}4}#uO=hijSymAD2SovYmR^rs#w&Urb=*oVykO zo4!TGrROHPP0?UiIU(_2ywiLPkR1(&96q$D+4AOCI-417Pg~?>Wdw#Jg;Dq74qwo$ z^cr$f8rI)=o1UM=i10>3Z5D&tLY414ZG$YyAVEIJ1|LGsnRc`6Z_LUe>lRC%(D$7< zmpTwo_BJ)sqf57pAbajz?$P@Z$C_i)l(HFbV|z=kwM&z@*$Tt7TRo9$$V6SfNW zgfV<~UNM47`mx5ntTNm_Sk6HhZt1dziZ&I3d_ zA4~YP+N+qrk+&APu-c%#Lk`It6R%5c*bj|FR;?hct4=$Mi$(m$8Fp6rOr($8<`n7h z#^c&oZeMgE{>p^JyE??`rt0&6(4ZyEK@PC*wle?;Z$BF#-IYcH!9;k^%j9%4!ByD@ zP?dq1AV6~6D$DnfjOf>=iZDFLA0us!k4*4}@TPzlU7Mj_Np5@7Gh{2+AMHQK)0WhI zD4I9F*}D1ARQ0=o2w&-KjX;yqULL4ZqC=@wAd)zpNlkl%MfW5e z_PVL4jMP{_#fm_S&vkiC6w_zpG}u=zVNj48f%NFS=BQtd)LA3SGpyu2Vmk%}wqGvs z=-b1WH^|C>p4_)mpheYW4D?Pb(8T?acs87{V_oDDp<<=?pef#`hkAoi;_W|@qq?Mw z9>u;sg}1>61l*q9(XyKgxxq54%fwXciO=IiDvbf_TZpU>NnhTpBe@;vwN+$Z`4e8f zyvu|SQ)btg=Wc6lU@MUDD&l12(XK74a2$kJ%7mtQbyu*R1%VMvx&D1Jt77I+jpC>k zCBw+S=Dp(g|3J+&L|e*DzeuN>>bBRJxP%7<;zi=+k^UCR`p{0^K5P(&akQzt*E7aS zdWv(NkrsKQx|k8pv-Z;6o%ID?!vR<;ZPah|;G>lkek{V9Jw$aHiWZtxy{vuaihS|< z)a-aFE%Duf!3g*D5Ra}{8zL=bvZ5CbwY>tCJ4pS^DtfFb4HO$SjytOF1dT>n87iOc zhp86l&iF9w?F}++dJaYFsd;;FCD{0&tb2GV+pWV1&8kY5t8Th!Q_B3NXOxX!UUP-Q z2TedmO$Q8bR&ZmeJXX*9-V4D^D`!*pNimNH$_^R6jx_+t`M7nb9yGEV-^Bv$NtKOw;c|Sx3FW zU1HN4Mi{{-&JTHH$pgIffQj20K}(DE$X3?6N1&*f0IA3#!##SXv0kBmAKqK0KU<%T zt!hx#JksF95%96dF0`abFL`t(w73o;&iv=Y64;VeRRL`lQ&5siSk{pwWJdo_q81aXTQ$uO^cF4i(^s++OLEywp@7dM(^{7tcm`PBf$zETWudOJvhPFDS&3v6) z>DVspI6%hC10X;>Qze&5&ScbqFZ8&_ef>kL1UUs@rfD&1E3eouzMwk&iQvNTe&}uA zUVD=*QJESLPW>?)?C5wGG8C&>-*VTIBP*lYD1Jsx@Uwy(ZnL0z6R`}(m89~bVgI0> zJDt|@2=$jd>lU!erLd~^hhy;A-O;{V@D+=xiZjr?EB_grp{e=4(aiq3oR$Qv<9N5Uq*>OQ{!6a1T&0>R`NBL549AB#L_0U~)oKrOWYqxQKl@`=sm~B%!{)-t zV*QPef3(2=l{XaHs0k1u-mlZhtSIZ8Ca!l4WPU6_dcjMZxiXJpc#zJ>&+f@P^ljO9 zJzRjeB(gMam9*?nKDQ)}7qXue&Lahes8G#3qA>AT1^9j0I`%_+IBvJ@nY+p=8hEF0 zVlPI43zulF6`l*Oe=0v)JDxo1&=RK+XBl&-q=^|1DVXQEU&;}iW%T_C!#o&S%a65+ z8ehjqW+lGGp=`X=Yam+*=D^at5mZ(Hh$8{4=Q_#v(_@YZ2ysTJNsHIk{)S~2b_;p!IT3e5%>AZq zD`RvxDqeRsvVe}I1X1UN-8}-;)CGzh$Ho4+NnxUkTc2l}iyR*Ub=?Trb=%QW9L(Cw zlN87}(0<<(&OV|vE3?eA#nBdR#(OfvBBgHf-!sln->6#&A#gJ!XP7*zj_ zi@c+etL1mt&1;9LWg3;^*B9H;CQ65ey}~&|agq%-&2?q|S;E+M^&-PNHGGjiyV)}Q zs`CJbY>C%lqI$y)7Uvl%&6>q76y(yge*Q!92xd5*HAQ;7%!?{#)Io;X1eYt*!Yz<{ zUu(EGxp9YFq;eQm*x3Dl*n9K1w9b5gJTr6Kv{|p?lEfvs)u~2}CIt6&rgfR7ptXRw zp;L{xpcq9!#bw$wao1Wk3T`b%P*AKfiipG}5j6^0Ll70vxGxCq`;yPEQmvnH@e)Y8nW)gC*@-dvT9U+*q2|cUz?T+>;;}Xii{EK1<7)7GRfzLXK2F$D zUVl%tK`w*4^J%lFD;F;3x3wNrl{}%Sv$PlYMyLM43L_xc!>LPOL-jr2j}6JK^5!?CZ9Bg`B3@fv;N!wKau z2!Kgw{;WuQaka74#!{>{A-WYkIq#(@aCIz%yEQxVD8jq72RbW!GWq2e)cgoE@4zFM zO8HRcP|otGrAr8y{a!a#myNR1OdD9|aB(|NJldva8JW-1vpMY0>&3Gxb*1~e_5^tq zo#gqIYB!$9ZI7ToXFlIMB3X)tq*TGcf$7%M;-22no8)rPVP)j2kaVL5WdRO8lTX=a zONW>7O&oToane>JAPaWeM?2BEoj0f#}8FwTeyghxT7}}SX>++{1 z*5>nC0=lj7e%vLBf$wUoAbZUYFrQ>v1Y{S|6?o0W)&vm6L+`o5mz^wgUZm1#d!qIRu2j=rV?SV1}Z&4~jp z>&=O_w;P`B4W!2X{tu4V!WP@MR-c4Ka@e@cbqvt}8ZG%jRfN=A$fWy40%B@DrKO4H zcv9y!7FyPRxd}QlNsIF>t>A{-mi9zBy;`}vg7oyrIldJ>o4rl5-S=?kzd7OX=EV07 z+|`)GgZCB3{q4dxCw7RaHz)1@8{1V^{C0x29(;T>H7Ft}<0on_P$R4FttVtu81YA~ zPph*i+pr{lJ7A#*(sr~;dZ=(a0wZ*I^<6HLlcCp#9K=JAL9CS%e&zm>f4Rx4IG^q7 zUPvCCYwGyH65@CTmw|n}Q@7HS>)~Wo0Adw;xE^@9`gv00tG;2*?q?`S;Pk?ua7{0B zl5MCH&K~V|D!V2fe1g{kCXNPL@<08o$;Ly+4w0rs?qTcbbvu7#SCjThr8P7QUAc)U z=!h!9NY&(J@hVF>txgg+7V;BoHicrhAm~Eax%g2-E>bpp|EP)&J`}4GObCdC*5N6odBJhNQd`?vc1;D{Ar12%#PU5s91T- zbGp)Jl^jEST}tM(C$Cg@S9AuBR^f&&uY}4Aw!!11(j-s6Uf)A8lg)7o`eu2<-Mr5! zgvB$jn&as5)12C`?zE@m%b&w1_X5VQij?VQvPZm$FO{Vuc85FFJuhVO%F>+_b=7tt z`Fx1psqxE25*)G9vV6L=b*vZL#9{2K` zuG(n#mt+Nzv~qkaZa6ixK5YOI>-##skS4`eot!*y99XHI+-6~))aFgJmf-9s>=lx| zN8iK`RNGa*ytB{x@|(uE;^lKrgV!1a!^biAaqI2(gF$=hTAf1vDapym zvF$!m8CLowdx%ct-c8TX^d$OJt`PX#SXvV+Q{7|8BKmUW{eq&t+3@FQu8mP&eewLh z2F!!cArFS(3SSNcatSOy1*35q(k|~QiA7OO4kCKD9iK#O4wbY|`f|baBx9P8NLAvY zj!l5!&?z?nYgGJQ*FMHu6xZUeDG*XjUiZ95!(`F!NWXR&IFI)H!|>J_r|Lq1Jad{R z#_6tIbRnPts!N=r2hzI0xH@63LPkjZ{ju_jq%df_YJwMX<+rTO?t+@ZlF_m3mb8dG z`r}ec_$#JxJSSO~mo45vA~gKU6Mo=GpINc$s}KkCWzWJ)wZbdyORmyagBi?2O`hE0 zrziq|7I|9#y31spc&08(?aSA|LYJdyT%^0(rlUh`Vn^1UtY=xiQ!E zI?TG!X#0y@gV)RjC7)9&5=@H)b}`ZITd-QvU=lbHyQYC?Od3ABJ611NU!*bpQ5Ojc`V0i3Zx+L1 zwGi)Ke1(@CdO28(vTnW-#6fKnS|B~a!N@%K*qu*3p2dxx=@9GUMYCa*GZK(v&HG7P z%h|<&y=_7_Ez3eaF8Lx5(oX7}lr80|C$4S1eGhjC3S zX?8VY#}7H9eGMb5+OknhspLVY8lUh=;ARt*T?D-l zky|A3xY@E(jf+3K(s$(V+pHNtyFpbtot38De4-1I4wZ+KCuzRt7h_8EK6vGPH#%|4 zt2+@25ZT8zVnjBi+{KqwM+H@If9es@q_Y2le)iZv5x+NYQyEql6DjOcAYX*Hmy4=b zY7$^u7;(?Hok1t}%@!Bnbm2Gd#OVJz&cFVC&OHRh6fGapu56LC&6^@v5?C z&(Giz%^O(P9~aTI(l9eWWQQb)5goUv zDatCiWRbaL=N|nzR*B8EqE>v2pzCy4NGnez8n#VW-bygYzci}VUBeXm%&r%{z5@;5 zWh@gCc3ba^&D>}I{+G_{AFKUek`*h++QotAI^KgxnX?DV?4s8$P)qUS*Mmu7<|uhs{F)E@v*Jz!rCNE9CO zmqp2=?yRe97k{=I^ex)S4S=hvsqxkL@3GL4WJX&6+U8WE<~ay;BlRVmR{DY;HD*pe9V%@Qu>Jymadkrze(JQ`D9#q9>m=j zcN%{q@cMf45yK?+v5b1BGB+M^4?duNv0MFZdZ82Ys@cyYX*|sc>2}2FX#({?y?Qj= zUhLc`|FA0c+pUlDw@6<{ClBUJG`xx-(^zgOF@jV0D8^^gzx;@49+72;X+rcxvI9h( zxxww`E-uJ_6(1j}&~A^^CRJY&JKV{g{BzD=`xsDDVe`Dv?v&*7K52a&({m_)CZTr)*y$$~Q36{!Y`K zF~0CGqDkInf(}7hWtN$LUSBxPaZ4(}lv3pyUE;V|FDM8MI(2z{<#KMj-MN@V_E$%? zDLNmbnZUT`Lmj+yEs^j^0N4kRkAZ52I>Jj`C9;sInreMtZY~+l5sqSAf%?YawKW$v zFaq|75{yRcf0&`F+qx3JL^SQ6*hq#XpH5kZ=3^)aucFIPnu0O5<0u8w-%DP*E|HFN z;9U`}7BG*j{Ut?=uOdHXWyR_Hmn}4}-1^GEu#5e(Q(@H}!a_o4dQxX@9NOS?{1DVu z!O{8tTN&@vc*%oj9j|tgtS?$;U*tCTYlv3E=~<=S$;J${lxq3%p!)Mh2G%bLqg{oySOtKcpSyQo@xrOSw>gxO(Q^6(xh$@p75@j0AtP3~@ zRdrAFTQdm@%hUn4(8S$W?i>%R$<_L#klD`*;yu{y1M-Ee_y(L8P3)k7BmhirG57fM z4AtkY8`84&u{>~DZz!#9k`kU}QYrV|wW_;=e}*DM96mWmTpbsye~U|1Y=_iQODrdPd0bbHk+hZ zj2_(*IX*Ub;cE|ksjiFn6+&Xy{8@tO=EH~4%4w}`Oq~f~;M32_6HQx=H7(zq_=>rD zC|J!Nf}o=V3QuuFJWwus)`$M6B9-hm?Yj7~u4>oW1+!RjVXjJfPdpH;Uw-^4vR^h` z$_}1Yd%8wFMB2v!EU>2+R|ihL8&X#>%g&iynNh(um^4-d8?=ks^30Wtm&~{%l&Rcw z2P$`r!sIkOS@a3>!g<4t9lQkUi0Ls>I=&i+H0WC*Mj;%KH#w|;8{Kkd!Dx@}jcKnK zyzi6NC+~V^7woX3)9#_bs^FCfG+=Zc@tLGpB1Xn0dH@P`CfZABW%H6>LenJ)YCUlcv(idLrVXfEWRC7OxMN-4y zzjWiwK#q0Ur4B7v)v6cLts^haB+s}x&Su*lT9D^iJ_+>|D2dR_d zSC>yh5MW_j2`>|Xr1`rd2uZ=l^qZ07JvHqP&8-@7u^QNWEu3VNCR%T{w^t)xs_b&R z?t-Ol0wy@LdBDqPpEr^Aor1Lmqg#=hgKmz{d8|sU=nF^M$(ugeg`RW?je$_L@6-Fc zph?GNHiu4{sJ5?#g!KLzRb$CTD(D(RdJ9W$cpXv!?pE(7U3bWSf1;@+C_cH5VpuYfs{- zJIxh_&+{G;_2tgT*0;o1ar*8Ab1cuv4m&>mJUcHe`~7;KCBTe3?IkYpmcdGLP3n;b zA&vOXb@E)HVM9pFWUJXh3D}xhvZbV<(c)b074B$#^5H&x=9=KmiPrnr`iPf1sd6eIXzTl?OI)k@-UYK(TAw?%!81I)FoSj>NJ9fO1@d(Qvb z%0rfbeAmBDKHS`TB#Pk(F_;P)76y~W+Gtu)nI9(mq^V8$bRdfFEhY94zgZ`g=!I0kU9f#b)=9o<`LuaB?)MAm|h#E z&$?n($|LHPCMPXTjgF0Q;wVmq-#lNk4d9hKxwcmAe_zJGPXqsHckdC5Ho7=z z^LchnWtgq?xt!>#5;u2~X~I;Q_X+}K8F%)P5TpjR8AURwx!ruVg_Z(js=*&=N)3^` zd|(MF)gkSi?p@H?xqxqY2_(HSTTcRph4Tx^$IxwbV1!u4IUP zmtGsLcP6jNM$mmFgX5555^NYPb~cfH@!Zl2K5*@;Sf{Y=#BNDU!qh>l)nYo5V9sZ7 zIX=Y5%&NQdQvq3VcODshvcoo}Mdpp+X~AI;r2OG`=eP2yqDCw>X@K~FO?*4}UO&RK zix*jM?$>yG*HWYonuO(o)op56DpfPrcT}{+)Ep7GzYBUTxnhzvt&O2KLk83z-6{V9 ze*Hs@zkf=4=X3`^zjlAIigx}J`^xh3^n};=kZ=BezrVDcoJF{T05dEgwGW`*ATBV# zi1Muy<;SI&fG29mrEk&tpvrfO<{Y|-mpCm-qG81oG9~V&F*#FMS~+&L3KHD)<^*>y zkQ{{H3A_pN_`VjF7e^35-kiu@9-IIs4ffNBCCbAIa{ui7ngedVlQf|;d%5@7pMT+e z{=u5x0SP#Pqt9%H6))IHn_W^6gR51?Fy@jA1Na>f-PG+S>-BXLT2_h|t9ex2q&2;I zZtKW{p z>&y1cw}|`!*}9<;E&{)v_Mz$LL|u!FBvU|5*I>|g15u6L+Xc+rgY1X5H_dJi7Z=da z@ECx4q=O{_kV^6ZJMzkId~I1S93MnughAz4q+@U1)x0jZURWek@H0_;-*OhmLbh8D zMs+V1;8v~_A@f_;b5ghP{?B$cJkEd65?Q$;+Ab?G>Uv3LbVRBE&r71=2LtVPZ1(WG z%LrQ&gJDP!0(ae8fEk?}A@Y4=Tv{e z>bPUc#FX?LH0W$^Q(!AwIQL4ZDbHH0FjpQ#DO@WYmHib5mHSnvLcE+Lyp;VnCmIKl z2h6k@4kdJPU2?VRq-`1fBBd$+UU2uA*%z-RI6Cn;y;tlJjJFlGKg+;mPBF&>HyNmQ{w-<|De1ZmT_5acdzw%m3_3zz9D=>-E_O0HcD$E}#Yl?jj z*II^2d9o~Wsy<2$J4Fz zI>cy!l41@+*i71lsDb`Cys2l9@W?V^Oqg|jHgbw#C2}^&syfe5sDqws%I&s2i-R(K<$KlnDx#sj0T;N>#4Wdxb_e}i&^mwi>oOC+eXgM1TvxrdTE(HScNvuzR%n zOpG)SnEGZT@{3*KIpNO?A2Kqts3vczMF6Sr?Q7W3(B9DSQX|w0?g|$`!56!Fw9f;4 zL!*29vp@b_EUCo4c$sOH#J>f3FuwBUgx}=2jh@Zla=rfZpMDj(*Jxh8q>8o=9nCQ@ z4Dat{!z0K6o|{ZO3=n;J1tAP{LaOFNTH$i&XikmAQqn!=McBn5NY9V?#h`V1meci^ zuf*aOXH)Ql{=up0Nk}rbi{N-HIole<_|K2|$KLvlUTXM$fkXPY(n-G??*7?`=(n64-vYq`SR=-t4s0lCXV4aoD05Hk!J02NhWuC*I8@ujOUvZHxt-ZBk`LX$L>k}JM+&P<0q2)v&-|p zoF2=iF_H4dJ6^e2u0>^UPRCgZgt18kw|}in;z*7@pnDXOnY!bC2G#jzz1s}Bs@_dBrr4}` z&@3PR`EO6=|M-qzPe@6yZc#FXNv_gZMLr^4F{&v#ocR4zh$bF8dm)@Q+fD@}egSIi zCgjr+_tO94(f+yqsGm-*{2^sATJuh-bFoDn^gt^tuCFOhe@^&lBCA27h60Z_w_)SE zMDA2Bfh6uBM6zM;@qS3!-@5RJN*2*?$DPz-eJ(&@Ku6T0+ojQ%RBk#>=3zs{5$`ljaYMc#_G`bL-da!VNxo9x-hZl;% zi$IS5M~?Gsc#fUVVf&rN2ay?BzFM#4Zc`{%Y3j&Y%FCQOHdMWgJ)Y4cw;EGOK200} zjv^hdEzK?x5-_Eevv`+C>3Q#?DC~8=efJtR*dBWPwR>?>(3j*U@LG&7z=p?yG)0zv ztl;E|z9~?!)dn_?*KRvlr|>q+K_^`>c*c%1$jjO_dJs`=Lch2OJ2h$0@ZEonlh@%_ z6<{;O{&G^9TktFZU=4A9D@^zOFEELI^ZmFj^3wF0bByh~!p8y^&-6B|Pbr&`nH$1E zZ;fGPlx% zk)afVKzgG-=A=3Gdt*J!s1a*O#Q;_WA{Vp2m=S3VNsprQi8ssb@xqb4rA0=BYJjpm zPz1>jI6^J}%cZc53mYZTgI`ASDU5E`~=?weF@bn`Dh5IfqP!HaH5SMw^L2qaVzOd5t%V zrrqvQWsTo*cNVM9L87J9Imbp*y_Wu(gKKEUvjz;3?QUjuO_;DgiRxQ;zKI)y`8xW~ zNLsSB2pzZ5U{-65D2`rbd*e(16>YRP;_jE{__FZp%TuI9rVRDM;V=vD*voTt&N@D))j#pywqH-KVwU4I_7`{`RQDK=I&d-`3 z8m$*R69`Fvz;nyWBgG18MVqVE%~xOKqsu_>Z4kM1suab+Qupiox-}Nz5^rJ4xB!`_ zm&pa`mFw##O!Da!aZ6~E+#M^lGs=pYKSbl=Vb0a3LZ5JxhFb!V9_(^Tb;ZZa`C0{cD(XP!4P@5E2&Qi=TAq__O_k%N zEBvgh%>;m2L`YdisDtdbA&{e2?8oP}6=jlQx!DS1IOcjerIvc=1!X=C$ckj-6#+mc z2^4kt>s<}8ItY2|PHCxg!+5oIkQ=aO-o(}i^iA}+AW>u%^MQgINu#ub<01h$gC6>2 zJ-EO{G?Wt@d;pF}|GTmNU&sDG!24gz@yPPg#rc!tiFyeC@+Gt6)1l3{PjYhSZ&H+# zUNYvRS+2Tf5XX}iHP+}M9^@Q!25w-sE!r~oI|e#c0hi+ z741vM%C(|Jk*{2>>M}AiM&BZPUE*Bsd;nAwfhsOtn-)u+Evb?J_;X?V^=y24E$7H& z$w+%{*XhGPtNNt~`3gSW3<^K1;z zW~C!#pD~+=`B6@gmHBcB^Xb`b(R&X}R($)P37gzJ%%POWd0WhFbHK`5kr`QKT`ahb zL&o{`nXt>6zMJ`AA59Wi2jOBv#LKEMZpKtj~@GSfk;DL;3; zztHw8xl*TSO7c38xj#0uA9j3-a|9<9Arw1~PAaZF+O{W+AE?}q03_=c6=Cj6#Mlj;q1t%! zNJL1CQ3?4O?ot*tNn=^6wXjQM=HJDVpKC7xdOk=s9Aj$fGs;z<1`m|q!&=Mew>NX{ zRe(LIW;69(8eWiCm$-Goz!>c<8dXWg-!hQ>H#*%uH#=>-ZD2mXV_D}xpolXi9&av5 zCq&CKh7FlSgI4*$1&fzlJl|W9*GCO$3Y0f2jOz^yn_&(b%R38(uX$JivfFMfp{4s% zR@M)Ix*Z>m)G?ujggmWV^dq!<+vq8dl6HQ}vKk5q(QBKg)lLDrU{pZwh2Hqdp(xsa z{%NZdHCZP_K6kY_L+0TD#)St`^m6*kR|i{xf)n7!?iv-DG!aZdwo z3MSFa8dZL^+R^iFQKy62?DU%xLs*X&l(q7X!CQ4@YD3i6nAG-y!H5b+&-nJl^82G@ z>aAOCldDFD(IEbnqTGUeFS;Lgvg72^coZOC7LB5oJx~FnTY&2Z3WU%cLV+zLfRsWL zX!ORQDKdJ34b*sHD9YkrBnz?tv{@;jH417qw1WJbb{!*&mNgaJR&Ho?``>dm4s!YL z|2Fm-Y<>E~ltd*WRPBIW0FFq<6sivP@ehBy*I(Wl%Qs45Q^78h&h@j^5v6pVRx_?? zc}AAGnPAf#^ejfugDvucFOF3&k)D3P@OZN&U_9u0v#u$tltF?|zhrWLTfgYfZNwDE z$LCarf!Jrl*$8;gK;yYw=Vzt9DF=cHPb&^d$VeUsB2H*cm9e^n*MRU-*k>x>rlTw^NJPHny4f4d=;kKa^0Z-TOl z9bd4>zPUR>Pcy-abi~T6>UN8F6I9l|qS`BRXE02w{ygP!m{l)%ZyK(U1PMaiii`Va zYb)*MfE8P0@+sSeqKbzH&Z=$yQ(MX7VU_{0UK*oRQtWQu9`jz=gk9Y$57&uYQAv#D z7^fbYn_g%is24xDgz1tRcXe|hX^xQU3eVJ?PGmQ@{XROpQahaa!pkv}I`I)%)%8$l z$~@{H`l0-O#e?jkRRqe(yKR|IOv1Zt(=^@zAkzrs+aEj>fq(-9IRvZ$*ieAsg6+On zj5-FIK||M-qr-BEBB+H3K!R&@eF0!7&i5eybmGK2VWMRWIiNEvJJ!yZM>L%E!)W+7 zX<&#Cf%q?pfXC>6p#EhlxME%HxAwA0X8e7s@AJKl3 z*n|gq$-`#Ddvt+HH&EBBT|_u$g(i$~j!(zM4$OdKrVS{Xz;19n#zLd00vOqc zQl%>bBIop2f6`gmU+_IL8&iE-)o=S7d6h-J^z3qT^!I= zOC8r3&)6HXQh7L7B7^i(m!^^X+u63Kn{y8vP?rY_nU|_5N$_p`Qs@J_hd2HQo$xDo z6!!s7X1Yb#2Pvv>OJHY%EoZPy4{aj`mwfg=IMDyoyXrdj+<7*32W$=PHypk^!JZBh z2>UycgkdLh$96z<9+cFYVO!FDCi}8n^_`voeD6tvLeh z1ppQ4f1!Te4Q5OpoNJhQ6pz4J6WXX*A@>=Ka(x5#&8|kD{i-tYIsbxoh`g!kPf(e; zJzGZ3zx&!Xg@aV`VXn5)dvJb#J4U|q7z1*FEJzwv9Q-*BdrH-mOW47fTKe^lFvC6? zu*V`jz-mc{T}a%SB+yT6O$4+ZjeE|N_w}p1?|FRslnLkFOUy1yu2~*^(hjfI$hlF0WinM%h?5^-KM#vi2E;kS57R&s4aQOS5?++fL0L0 znCTqer}B}vjxkDeZ?4&I3C1Y&TUaS&S>jj#7eL&`_8S%Hu}QL*DId09YHI|$f~+4& zZd8MV!?Kk1VNZK*2T(CB@MRjOv^3`r;|&7IjH z9*>I<*}r_(^83FD)jQ6;;Sz0rS_9AGkaeW#DcE^yzoY+m_B+236%^*Cqvt#VU2_6R z@Ez7fFBi)%i|+wsma$@}2JG^3|7_A$Igi5w#70{HDOF%`q7+R2>;7mH2~4;)yTF)T zq5}$$6b5zT_?Qq4pI=G5Yg0l%)p3dUCj#FEU|-u-kj*CdE0-3FR2Uo7DKl#QeAA@Qe63$ zF_Y@Bo-CuF8pQUKvJ2~1m2XbmW6cb*NFQ8Wl83}pHs{)wZ%GMZQ-05cHgT!fs}Wus zj5?ErBVVjj<~?7OldykiZ6zeBJ~5;Z3Ku!wqx{mITF!d3@FpRolhliO{o6j zMg?9Z`&t45)lj@Zh_ew4j8@7T+rw#D!CCtH89Dj}x7{NFC#oO+(!r;XUV1otTbX3JaJ(a;Bp-IOJ|W!b58TuwMbr?|JKt z+Y1_!T#|$Qn-TVp`R3&5*un0x*25#w&Cc`Zqo4N;_H#xzJEH70XM!4ABl1a+vcae> zr@a84Yz{sCc~?lPGJXgWCx-Juy6cOCS*vIFmmDAsZd2mPr zv*fn%Tzr;EUngp$#r?L6e>2p}6{M!7A^O*Wl6dl;&It`;j62Qb%oazE)SXCI(;E#t%X-)K&p&@AKihhK->fE7Fe}Gls$9 zt&iK;O)uBk`golpkAC(-c|>1V*QA9H^Hk%V=~QEC5*W>T0N?ts?aJp(I@3(A;}QZn zrv-fF*RtiZX7#6t-ck2GTS_ZG_UjuMdBN}hd*MGPLXWetj&0M}gUiz;Eh?Ylowbb{ zjY#wsXA|L>M1IL78ZWc5T7c?&aBXRYX2Zm|84-`i*r}9rD>E(Gnjx-I1XNShf3fGR zrCT2$6(31MQ>ek{%VzG--pEnAb?u5W;yTgbR4q$CIC0m|COG8%OsV>BD|tp6o~*1Z_VhYcz9*<42VLKx zAMZP)Y6TnpW2_w0eGpN#){&+yV<34L~v6_{*}` zJ~%kxi@E>e;I>3$*dL^fZb=#Pw3R9Hap=dTlb@;de*Bx>ItlGqH%reO+4VT+P?ou7 z?v3r7ktGNHmXxAo#2}$WW`(^m%`i*`!|R3IdTEvz4FiW=$2^#g7v*CvWs;ZOZq_YQ z%o`g5*R?(Tj?pW+{#3@QQs4qeT->>rHB%X8qa~X18@;AVE;Fp$gn3(%rLBt$z~i(L z>_mx+CvPI$9Q)Ar_)W|Og(Cq=`&ipzEG8_*{RRDnw5J&rt4WMt!#z!WhU~J&kK9jF zYP@e+8Ku`Ci#X}Q**J^sDQ1x%?%H*O4ckF>1P2q^+!|XR*^*__-K3K@sUcp>THiT^ z=_ZSYEJCCVN08m(Lqt7(l$UrIE{bUSw%I{XJGo{+Nd(ckT8mY<_i?UEM)4NMxk)w1 z4aqd{IfZN)RmMlX;J`_3BXY&J>zCb0Jriu6h{(|-)>b^XHZaV_J?wcIE$1MZ7G02S zFO9Cq97{6{au}P4LW0vkf%XnHc!b(mX1TG_z9(tjwx+#p+LIv6CRr7c>*j*PC|W3tP-#D^GwS#RNk{ zf!xxp+J3)EyC0-+ZIkPSrcCB6!eS^VzA5vIU|~JRs%hDuD$LeeXhw_G_KIz9s-`m~3(U;TxP);(&B6O6JQxd~F%fYW44*c8^sdT~!-TWYJd-o)yuZj~$G zg9{EES!K{?FXX-G#l_H=F@`*T9Y~=;z2uptDc8n1B|O&y*u626ENY^m(Z$Mys7yZl zFc8_DuwwM|<&8b9o|c%>SA5j*Y_85H%&@6!sM&eo zCb{fEYI5>qaUh?SuF*`|zHK+~H7tU>-legdSe5Mm&W z=h$p!D(A)>^)&`E7%ND)7=U~V#9$l1Vr!IK(F|@4Eqf(`YVb8&T!C_wTW?0*dl^$1 z2~OA_|GVA!B*jEAcx|ypYGa8EJmQlkJVtQW#p>Bm7#Ja}GG|~VY*`i!9leOinhW#O zugjYL-G1RVWg?Hh;x95~Gzek)2r>BeL}2&^NtYgw8A98QjB`JN@~ub~=SDz~z0=wMd=`NXLvR zvPeU@Btr_ov4~i4_1-?XY>pp`-x6T~yNi*}T2kiaNAH&7lV`IvzgUfA7;=>UbnST# z@=> zz00L6$R*9*aS!NGLs&!Q03ZR6HEPyG>Sg+z`(*BPU2=L?3x>$ zN?xti^YH|LAu@q<(62tX|$3!?Wsj z!tS9TSaW{$bHPql!L0JsJpD4*6}v2Y^YdIvUw{8VC(hK`)BtR_yu+Fa4dfK0&IT&` zB@93!X?@O1c-S3cNr;(yOOI`f1QOVFz+^6XD0t$3y{P$8azneB4`91!oE4Gx%EiS! zPM65v`Hvp?)x_F>eOnyr+4wn4bqyDhcOVKb80~5T*C4T;x1l&S$3DwU7Rgat5R?*x zPho9kH+ofvZ$f-BGdoj*(emsBC97^!9o`Lc?FeQpja~#ysjR$@VurKZ>^@9tZ3uua zW@cLjhtQMebO3dgNl4V91R!&_#*%5|V(H}B2?%mw}ld0kZ^F!iu`6zaEzV5s!bcjrTzF z>PeJG2}nI^T}Det{P?5V6#~Lq74rJESiS|la`Htk3BQu`SlMg-@a9Fo!6m%=S#KrG zv6j)kw-3i%)7$Et9O-x0K)`qIWbD+uUpU79r7H{rzo36u>HgE@53#eUhMu}F#%+e7 zeqD?#vGT5_t2MuKNGY_EWf$xC;8cSh=V$hS;Ik ziRmd5^BpHH=qq7bYd@^jF@jBB^mn4H7IK5_#e_xezLygXn?LP$$RVoT7|lVWnwbVD z?7p7K5_v(|f;BpWMX@5N8Lt-+7X>a5e$XF=zz01{pP|QNNxs~zN!_BJvk38vx9ke| zx|^{64>(o?ck4HWs^sd##{FqKRq5_yiKUP92Q!Sv<%#TiSWP(wD6Fc-aTx8qEd*o% zSI_#PW&AO*-}Z_BQ{;Xiy5lNa9qgKIvD^|oaq>%SMd_qEpasy^1UTj4b_mwE58B(! zDlT~Bca7zrs>?q$i(6G8Mi~iDu6+SXu;?;==YHdVf1ue%=cfQeeLlNm**?!(-2R2+ z0%+rgO2~cexm3%t59b9hlg5-1O@9tVXz9`=Fy(SO+K(47TEx2q9C6)mAh1518_CM` z>R0EZG~N1uUA<5?A{3wjd;VNa&EkIdEuKBR+4Zov_Zh=9Czu54(R4ox7@oifMoKH{ zj$Q^?_C|@MHr9) zK!H%|>Mq@HYu`p+1t&~>cCAYUJm}y1?1=E!)4y5EL8_*rm419~Ha@M55%K0k@8o9E zfAmAr&6`b4W{4vJdynt}ZG=m9&pq_P4w;^TA%;(bW zrAN(}tjJ|@cFGuXM7Nfcej7?o``JUt)NnGW2 z*!C05_P8KxQzaB1A5J5IE*PlX^PrM*57+aKI`aNNihSPq=EP&dsj$dqHE_MiRtv+7 z<+^%}TF5#BAW1yCE-lamQf#sV8RNKL&h#3{0qLDM3q|FEO#4nsN_Y1)TSiiPf1)+M{80ok13-i=lPNIDsWF=Q06a1y@2Kzb&RffB;H7gzCKvoZ{TzY4-X?q-OA@bbLvk)I5NMu&uswn873?u>7nPo;2P zT4vJwV zPO)HD({l+!9*$P*kIfGq?)1Mcz5D!bm`-tX{C~;*x|8lf{D7E)M?c zS+{lRal_H^`qgQ!IYiR6I}9B&Lt-0ium^lKR8Ga<_#k1<$`OpHk5Fb(F)X7`DQ@Mw zhNR775wTJ1IL@=gx)mhV(jux(T2gYtIi;hInDOqnh64%H5E)1P-m-y(-FLF?RpQ>Z`Ya$*o3;Ks>A=;qQS6v$2Ki|DS-}<{NpL9Hn%PSY>K30K= z1+m&DG?_B-LRurC9}FilN8?lwAtO9*q=y3zW{uFFQ)sQQEj^{zlN1;t>?1Lnhm18Y z&1XuG({Y;uWqHlmlQZsTd>VBCApSZ6VXfwNwB<>SiAPrT#m7+&yPZBST{ZXoa497H z@_A#=bX~9rK;r9825e++{U)LspvhKrC@yc8*GE=A9h9yJFgDWrda$W!d7j*;RUWH7 zgn%!CTk{(21hRq0@pkwl;eZ#pKPvmd{8L^qCnve$05<8*u$r_FXBpIB+ZUeIbvaJU zQ)2Mo4Z6Y`Egsj7oTSbIRIKSxFCoG~(-oX!`p!Q4$Nz}UuRdC_>M(n@U720r3c&B9 zA+A9yQvraP2NQtcpVwAU<(9~}_UIu922cst5J5;S2zZx^6A>$I#$v}A6f@XGff%Hw z$Eo;62?Yc;yj&n+2Q{5gNEj~fQmf+9VRK$E;&K_0-O!%hys#$)7fgwr_KhAHHMayW zRYY!uP(!qztS*p~rl%wo{ji`5?_7q}IDnq2H^=;%S0r~_7)%3;nkD)Pi%oGMRn=b; zL*2vhgEej1q9Bvzf`Fu}Pk)pH@?y5ElBhpP@<%ll(g4iEE)0ljAx>fLfAta_&h5}@ zMCE6PT&M8zPrgG~M#S9qu*c-wDa}C}UT}gj0)N1jg^Lu_JpU3iuYNwFmzkYa2_blx z7T@JeseEimd3p#Gf3T}Z*v+xnA?@yYhj*fRhWJc|ytm@FdG7URPs2rz_E{CPteIwS zGdUaSW}s~j(;Tvo>;?f|#qZRW{sbNk5DI8v-@6_l#I9aB1DY@}q`P#*6tP|S#R zg*2pRvL)cf82gOy$($Q{L#vk6@u_%ZEuy=b9YAI$g|EOiCn`!e6{GjSDOJ!yXm)_buOP%XX_OP-hJf|*^bZk1TkE#V#cU5 zFxPUler@LS8bq)3;-u60a}L?Kin+A%pcUBN$7>y@!ceBnD|h-kJvlW*>(c}y&%(&h zh8vXg!z`>}uBpe+%?I;ep~r)_dX-S$tnm33Q<3qjbBm+T>c_(zlWM238UO__eVJJJ zdES6R0&gY_>3$2~up3{l5_pVm%FYwQ=43!$u6~0vEs2`qSSvzoa}_)A?$Y6DGjyt1 z4(szAn*`G`OH^)Q`m7B#Aw+Yq2ryt+rm5Rr;s(UZxJivq7x~V2Raa%I?=~9xd6zn# ze;Y*Qk%m)cfHZ35PFj!xgIs9R=D*0V*c%lMjpSNlId-EGJ1<6zA)6rfnRb`pG^Elz z=WJ?w^eO_hntEn4_1wR5*2_xTZFP-IX}7}}Hix+!X7)4`jMVTve{NjUG)?~)+Shn{ zoL4|-0Q6*3NCIGcXbGr}^)VQD20F!w>^@pQ7vq?OvsJLKqfI6m?F?3(G;a);`lVn8 zhnsB;zRe|6Gao9&tmj`~fcjYP$oIBei9Y42b6a=ymIoY*b34Y^V34cA$^?i%FxGvu zkpw~6kR34mf1Ca}g=ZJ!bIJcg*qJ9uS?gkgBCoh}wwA3|S1FqKHVe}^gW1*W672v6 zD+GJ*`OFUG2#Iz!)zCaT>-rc|qJ|6wG^O{X4_GckZ<)Mblo78o{;W&wb@)e?nDnKBAg!d&4JIdjNyG*dJLa%^m%EU*b> zC0DbHU?4CA5L-;=19EAR3xof%8A+=LEr=nLpbf4o(F}o=~N$ zz8zfb;b0*MQTK6ooOux2Fd4mPbKtGVKxZdN30jtnh|I0slIZbX%F!72Xt8pXT=|Oa z8CVewr2nB>Z^vl#80ReC|(2U%q$NdY)y(INs2Sk`#I@<+mS(kX*7aSQXp zmfq(|lnHAtM$ST~Mr-=B(=}i}EdXFmk(x&jBCTj0l1b)uVz&T=Ciz26Q>WxN?TEux8j{O*75%=9<6Jo<3X7dYp; zopavr`+nZf=ezOtHZTztpIHkT3lHFsGZ#o;cwNmstuLJ8*u9UasK}!%>GzWOKZGeLD5&M#gg^j%bH6A!IPh)k zMoKN&u-bK@lgHLjXwqxw#E0WWV)kc?Q0-gLB@zPGQ zWZX^Ss`Yl{T;+gswALFnFfYg!dr-dXApTtY(csr~8*jh4vWB>jAzrh_J1Lj#&eKtL zZ&hn*rkio)AHfxej^Lj$!}uGqjf}Q6hSQ;Wl>i9z)(nySFO8s#LQE%jF?wo1wqi#} zF`){`)OnBF72MCG1a~$*?~!(_lWLcLileUHYnCN{`14uz>)Z~$)<};n<)p?Z#mmY> z$L=YLY@1L0TkmMxXAKaL`|c!U8_t*5?wx#hHFPgVu-K%D>fZWF%m{LavtXy!k!2w~ zzy7)JKL3T*nd)zfdAjo-tXpvApMVo4C)%N^FiA}W-+0M6WvyZv>o5xmwWrQ)?p;$j zsc&fxyz^bi?b#@6Oir3L+Mu^2>T8+B_QgQ5c%c%=N%Ib^?TiAmHomAf1x<_ z&=%Q(ocMj?e)$WzyFOyLBUd?Cd!>sY-1Cfa2&zhTAGv2-c;5EL55I7Lf23j{+jNZL zt~ecXXY&GL%=s}W>?oulxP2Rwn=TVmPQ>`6VO8>Fid#b{8I*qq2R=XHI#9)RYhUBQ$m|+VwR9ohbrNwsCobnf zS~dxJYj&c|HqLL_Ya5!Pis^%&iE7mz+4`G0UFqC;LGqou;z`Rf^NyP$|2)T=h-NP+ zW0DjcJ~%Q+S6UJ*^6+_5#(j5wiHE$S;5C!>3brKjzd4p0X9+*tZ+VA9} zn}f&1QJvFIEGHZENp%%@p5|Vg`8tSL2N#iN%Vh*P$rGeZ2_RF_txCF?ZtDyh`{_gD zir6bTs9+tn$!du(V@sG{;uMjCB8O%OA(g1B%75-S#j&MPE6hX#x|5n4SqO1rg-FU! z8XgUvAW4jA;}})Rr9#{+Za9HA7(M#2IX5cciD|56nsrI5T>y+n!YrMSSyKPLL12kZ z0Kbr9#aNF_9cNn_o*IFN?1mMhH)O8+%vAX?ixIYF7G^^&Pc%o=4%Tj@zGIxnPXU9p z^q%CJM}?k#`!FK4wX@W=P~H1dcj;iOH4ctsg?5nuT>H89bp#yHna%Zom~cyf!598B+IeRm0|ZDOW?c zK?OBF<1lqiS3{^gxSs|}V)ez0yP$Nk5>(vWYl+WUHw3GC!49XJtiiQ43P>#Tp0yqI z=DQ|Y%xRPr2(!Y+_?tIEcV}R*&g9D{ahsbG7bdgoVF>w!-10f6)|}69tpw(fuZED4aoM)%u&e74>h8hhb_3*_f~>~+mZ^r-TAGUE zG&l)Tn#bu*?rEQp>J#x6D;>e1Pf(e;!ST6z9|OGf@noH- zSJ_GZ_Lm0Abw9%o=&7O%dW@56sQaSXo>)3hG@W0tEb7~enTWZ)@T?p&z{ihj5LeET zt%+-`%tg^tIOXA|BDIK6g(fCx1?6z-Fpk?2+$9UC0kDhpxSR2^x>1i3j_HA6Jo4Gp zkf6>&k+; z9LlZ7BtloxoWp8idRP-gXz_jhAkA$5(2PAH{>Y5eA=@bN9{?YXHtZQJkmkY!St0js zvV$YpAljWXRu&OC#u21v;y~B80NA?m{o7FQI=Y=qyH33Lo$2l_bzQQG60E=}%;V0o zX{B(ntO-yN$uoZ!>CF)X7#{P|QN*A+non6?nx&8*#0Xjv?TGeg9@JxMm#YY&d11lo z&gR0G3i2|dw9q!;gDd1CZriY_1#Y`xJXVzIjM@H-h(jLs)Prm4y{GNVTVKezORqeD zA$(R$<9Nednz~(jEVTXP%uKme^K!7BuU}fVY|v8vyg$>7pErJ=q+7Rr_*u=$8zD#V zr@6h_1Y8>p2r6J`^1DnS)i%{>aHvV|<&G8m8RqEuYa-Wg4pkaEC&MznN2EwCzNa=OSm zTeYjSWO4@=bC9hVkT^46Kmm10^ajZv@3-ZGf^yo+J@4dhD?-`vmipN`* zqx>tBr*jo7V@)QanDPyNv|Vl!N2{S3MX0YVc&9K98*bmFHd4rE+UUkwGoDW5xY)mK zg$}?USgd8$*Ed5NPlR*o#p~$(s08q?e97=M;rr6w8u)9F>f&u`02NWu**u z?nW!1Z6V`8SVt}UU6RlLe8>FtzMuI>iaV~|l^k+9U&vtsP!vJhj34%p*tFPlVKS|e zs#Q@x?_cyI>6ei-3=Q3om*j3 zRF&C4R2VMKZQ&+`m1;^1pdjI5AwYAF1Q=sQY18P9F<*bdS6+6`#E*M0ei@AYke z>7;+XJ6|ctE{uKeL`8J?S;b8J6GIZtpsK0BD|!55H_i{usdG?*i9hi(3K7ZA+=GI} zFv$M3lF^@g*8lop|JRqk_SVxpTIN)Sc;=3G=+Z0*aAP^`8F?TQ z++E+I%dW)lGUh4M6D5c_Duir1_^09#IimCJ$e#ipIT1~ zf0h$+(-V^HcZsB(9p^H9i9|r&yy9p^G`Uz6+7?H&$-8^CU*1`MD(^z+5x!AbKw-c1_=O@{z z0nVs|HA-m)g+H8X&bSXyqqUH4WD>e^>(;E-_xORM81Tc}Y_I5OfZnO!Yh1~T#kRXH zfotPmdB985(wwoKkEDr8BE%bWN63y(7qD@AvMzs4QIDI!Nv> z^T8ZHhB{Y$$(`xs zWWjpK*|S;~RT2}LpH&Q)=?Yd2b7v$ewF|hFI9D8ff8_QLGYoz!7B~M|b)tAf-mN2? zL>02z%z$aI^HPU$^q#UL%ojgaCO@ zJv5`U(jXE!IMhGVa)+0^yi>-Mw5r>F`iQ&gFtviVt-+WRZRcOF50PL(*Vud2Q2$v# znaBjWX7tLnk(fjrZP)7d)`9i#QvcB4NXzQbk=@$;8`6_2=Gc;<2{d=RlcKr)CC~0@ zJl2xA6*-8SG2csRn%WY}(!Ma(@1$vzSR?Jq2h?M+saQ@;6aRiF z8RsNjXh2GttDM?F7UGbm_XekGQe7QU;XAN893S0YYVuf^_(|`WhahciG>!4_Tg!KW zCh?_2ZW5nnUEfy6vs7oz$;OgW6_Ui=PlPYzVl|g_pzuUl38Iu3Q!mK_GvH*5y#`JYd74=;sqn~NEiX3TI58rCv;WKGb~)G~DTra)Ygk7ou~ zuV~q9K8}k`)VPj+j@fASIv&art_r!Vy@RS5^TEY3siJUUZhXcx>;#+Z+`u!4-*b)q z;qgI=(W;52t&j$7_c=>MzP=XB@L+NG_gs{PvY<4%U5_g|2eK=tZ5l^};k6*O{ zt5lyaBbLQEjanQ;le^xo>se{B|9|1J|H|)}fiL6??2b-bqa67q7wYLj`^Ci5n(*h} z-;J-_h!|WY%O(YJ`rrIQW8UI!9=wpd%qu(H#8z(Cr#IKkR33E=0c+>TG?&ru^6ITu0kALAXzf>%-2zVg}+;;7Uy9$$PGfMaT88%L^9sQ;W$8U8q^UQAw ze*C4M{=<|fiTSO;oDrGWpNbmo5YI6&9g#DwVSF%Rq{J8wat0DHbWx~aZ5`j_ra)>j zH4q6xSnTWzfeYp*xex+U71-zj7)yX`rXHOL2B1hBo{d=y1Gw~^02wiGi?+4}i?x|? zS3gO@@n=E>MPu*IKHQGXtDo|JHw(~a8Inz0@b90EU1PSxov_-$y4i{okUrQP_Y+OF z1}1RhUaG-fWc+|YNQE^NDdaehwg-&D+=shC8fSua%gkm;!G^-6a=s7RT&?t5*U3;) zd?(8pyMAD6r{-Z-yolL`#(MR!;%+yyqCWZbZyi=c;|t>lQSQ59w4G-{cUxe0RL?M# zPb;`n>g4R<+Ork&86!KDVSi8-4|C$8Q8=pVSj!u5{%29+uo+?!WqDP+EaBHw$K>eK zQJXhFn%<+2fv}Am*bD}Z|Ao|l!BQ?p$7EHOFe%`Ro#7@feq>Ph7I($AEowKsD z3Ovr7%bWD38-08KWIyLSkbZxiaoaSgfPEQuFhr4<5Gh?jxUUs;mqrdy5+xVWu(h&K zX&tf-Lbs4EEf8y0@MD=sVT= z-+X3$M(_QvhkfwRb}*3>$9^~58l8Q9-pjA;?QAnrDC-su8Zg;sbNkG}NPKAq3GGL7 zSq(?vwCjjnp*38vcSYM(oc=~d=0@=3M;+hOYL}a)Hsk6@U`1J)yxE|p`3?0;BaNN+ zCS@+2eJgU6*JWM5%Q!i>Yr9ygIfz{%RmrfivbnZvn4=Nv*SmrB1= zgh@%wy^tvaf13m(CwwH3f5N(n_8s*&ey6~BNbF0;;PBCl>4#0@C$7mYPgx7-6Z4tM z1t7u;$bR6FkH{Fm&*kJUs{~>y)xxK-WPRCl-;&!V9C_8z^4V1Lx+X4QVkrkZK*zrx zYC<(eJr1|IE8*4u!15tUGkR{92V5) zKVDKZ2_&Tr-mn6`cd@0TTkT7~9xRwzLBt&5kC-T4#mqw7bn(kR1DwErRF+ z#6$M;PLyEn){)YOKc5)C((TvZPhy^WCCX01=F%9(V0cWo$jJ7@jk|s0%!cFSbpAL@ z(m1^4`AbbvXqw(V^`%>$Oi3J<;O`*aTODO7g}?)B<}|nL6AgG8Po?`QpwDa_ibuUt z^VQ$j39m&`SCb6}(_`YhgS8E~Y(%%S`EhB!({aW8KPN2z@a%6q;QzX>|Bf;0=-tH) zhOwddbdip?sbMnxA!_W^X3WOZ=fxIisS>u1***b^Id-d@WJAG9&eQC`xfx>Oq2Bv& zFEwfs(sR_G)aW8milmiLY`ktoXAT&4pNA*uo$G^|L155>wdJ7eYWJk9zNq3l*Fz&R z2@pL?HY{kVXCyR^nN2vvUYNF6I{z|f$>2ZTxv#nQS*AU-tI3Z7=3y=^VRom#SsT=YqZBa+#(g^iI-e_lz5j(ahbS5w8kJSrPOy|d^uX(_E z!30r#u`!Q|$)sUMhee1g$}o_2Tvyd$knhFzf?WH=vVlJ`*JP4f3OwydgsOyKG9Y}u z**9=zwW`C|L&a#!3?>h-Fr)-s9sIllb za|e=55g9eh{hpecMN$rlZp-ZULq9N&ix@za#qT8APR&q4inR$V6rR(-)V=zP*vBii zP1)*tt+v1Wqy@H8%r_KNCaWpgrXt4ng;dWd%}tICw;;U+tDxsA0+17xXX&B}Dah-1 z&*)g1e-Zn@{fGMbrSzt{Tb=1*BItR?{(eoK!@AJU;OF4zSBA4TXb4Lq4nQ;pGyjQe zjN=@~fd{1yN1_Ft|SDc5O)$cs%nz9fL)AKb&rL-c&eWzPUjz!csRtk#g zu-(=qhuxjAX_}J+VpZJd4Dl&3B1-yNp5Y`Zl0V(A1cPuP(Vj4)AZdQb97$4v`;eB; zG2#n-OP8oI+6-L63IG6s*~NPrWTsvIdBgtG6Z*gC054?(Hl-D5rU0bgv`XsE_^QhTN6)S8tNZvdhdj>m-Ja>id%=_s95y!Wo6u z+Y$V#6S9eah4iOrL}h_PUA|Y}zB}DG$nyLDqW=1S<*>>l_4Y20geB)j=bIAXG~1bH zo3<(Om{l~bmK=!{W@fFbyoWENk<4WGWx>JZx=GEA!A7EG9lwVqu|R$s>qE~iFUqRf znI=>vS@lKkU>0=+)6>s9Co;1(s&sdG&>vZniY@;qqP@By&xLuq)_YIgczSmpz#mmv zh{|vGT+A3{$Bxg@E{o>lhUlg3Vqf@fYz&139XYU8F<@W>eomh5KnVQf3?SX^aYn{O zRZ6(;Q`tQ@YolXyeOI+D<^1T`CwSLemHC4_{3PO|^-KRrxmzS%oUI7;iW>e?`uiEnOB#oYwrj+-q1 z=zC>0<5ByFtkY{TC*I+wRB3#5cr5&?NaXM|ph6uzTQh_>_0F2|WG1Cm(F$z~GJ3MW zN_$9&K}C_)9k1W3cw3}BOmPzUc(}%J_+u-AU`Nkq;-?;T4@LKl$T6>p9bKY5G)TJe zjhjf?*eKj~cNt9_ZkibSk=2LNIot1WJ#-TaR)^H_pjV#Y9u%-3O9+c#en9(7DUC+8 zSI4zC&Rjx#BlnVUvtp_eV*PAZUHhe&#u|}|&Rko?Cfh}Mp#a?n2?b{(QjITqYK<@Q zs?waPkt35QNWQ(Je`zKiKRjW68lzKB?7JM}MT^PVI@uCD zuC+pn5pfn!Q>3`(Zc5V`kEvqp!whmRPFr9$UUz%tG9Yx0PDo(9w`3k%K3dvpXXiO& z7sM#A1jRJ(HaG8r&}^KV!Dwf;%4ft-dYDKa(Xq4)gEW%s2w{YD~)&vD(7T+|vu2+z&li#{@8H_QEy~Y+G6G3k#1P$+sm?b`9}= ztGDFmmHTho2ED_P>{O3;Z+P#XOh*$KMK9z+L+95q-Pv!3_@1`0Qj?le(D084zf>V& z>UibO=uo$KFcHw#YWG)7sRPt|HY<-;xO)*ZAFne`pD|Bsf(}L?y&q`Uef~>_`K9t& z%w@^h@kYqGdif>i0Uf_%grg_ZyYP|rbb=vn$Ag{=Q zP74o(9izUz(8W?AociE{hnF{~&J-UCjF-y2E zxi#R*im0AGm!RXZE&+cVP_K4~PHoRvZcW8A+{4wnf=Y9U(ZYG}xof_M$RAjOr3(TI zZxlT0TIlZxW|%GQ7&~@NxE0HwQ1khQTYKK_H)I7^`5=Zz~$3Z!#_MuzoFd$98%NzE{liot87y?x$7jw6jzfk50Vn}Zk`MsWxd{5)RRheeRZ>5 z?9N*W5?plt`51jn`6`$beq(%?tgB-fOD;<~G@#|@qbiP*GwCt4FXY0eOjy*l8-v`ZLJ!trOy9y#YIK-%?k26IU4X?g+`mP!5_~HzJ zF8Sf-XZw|I|EgUZa$3z`0AlOfPda_jxjtg$Uw$h)-Do zzq>%ALe^X3n^pgSaxSu>)2>KsO1wFDe9Oam)U8ABPo+H!Uppk)Ji)SQVEm0CkDPwE z{!N+(Bb!~%wZESKI;h4FGI(YSj-$6_+1lH*K|C+%P8RBY_@8g!OFEqoqrmAbtUaOQ zVJmY}3U{_SK1Fep%Jz}&f%uXgJ^rnxme;r3D!ZpgU+(z6xprAM*cvTZ&stk)MI4-L zdb|#=0nXdL8 z>p`A#?ZYs~>`@;|-r&{B0Z;qROJtqZ8@+#er8Q&tj{r|}_urppT>dhr)wl4&f`TD>`%RWuCk12c)FJ})0jderz z)w(@^@y7kZlMa1KX;ssm4}>vUXb+2xS;)X!j|MGyfuB%spr2Fa-JrGGjp22%@5|o zqvjdt(K0WW)&K^k77%V8q>wkr+L{f;*UW2IjY1F9;t^x>bSNXvvyHq#2?ijGKziBl zc0<64k&gOUdm^PQ(bi&}(y{)Gl%)+2m~1*Zu}CHwGoMZEBN*W|fWodOo(Xfv+CfA3 zLlj$WTUqSw$}y3$cyBfc@%Uzj~L3oSa4lr*zAXfU0{k z%D==AJB3Ta0plIKtLv(8zK0RB_N(vX|H2Bs{4_qlE`j*L!T}%*$>HzXc7HMW0oon6 zpq3j4Io1`m%Q!b8pSovbCzL{=U3;*Y`#M}nzy(c`?Cn!Vu98GKM9umg^T?f&6-RxT z9XPBn)l~ATo8pYn6E<@(B_2no$=C^(9w&GS+W;dqAlX0K@pU}`uk!VZ3%RWeAg5*> zBC&+NA`n|2sKo42TcU2Q+zKLxGYbj}V(MuU1UWT{QDRtHS!krP?pK`V^VDR0=E00) z-M6e2VAG-xki`I%79!qVo#VwCv1^%*=(=VUrC(H4mKg2@2(Zh437G3&I=TMA>C?qd zllH$uM;f{jqk?d})od|4=w7%Mw!gJ7umk%6HLU#1dY2nM(R@GYi3&`ucfHA1)q)N~ zs98|=g><{(CieoSV--Dc%;7aUa|Zi>7GnEV#z4o86bc$aXliKPgP7WmSR^c~Bh#kM zGV5b!Vz)1E9F}Ld%XCy%qfl)-wymjmBK^0&aoH1N>KN_Fz*wCmj(yg8RV@v^6~4yd z1)oi?bt`PV6>n^4xkka6^?N+Y6Il($XB}kzLeB+;M=)C+w#ce<)ek zAhYKuhi&vVEA3$9`Pui5<74FHY#MhXsuQPaP%=~7^30irkI88shz;`z^lB9@G5}9@ zfEfBS>Ulq!Z&tKMX%@r5XtDgDB1{41*i)k#(rnULRv0F-L@sjP8{`ZdwjwYTPqP3T z!VB(g0D3lx9i_6Eu9wX>Cu3fvGNW%8z|o^I3UR5z2JuOBtc-V(~XarcNo z+~Vq;`?%&Ko}JM9Tce-3D1*@Wt>Mklu4^5B1VeJ>k!OAk5fG9U;_Dp*fbP5bgpJ>U zf_aj#_%_Z$`cF7Lv-r%;Hd2|?)6t_f;06fl0kS64RlG$m?P0n1m(uUf#=EEkvQ&U5 zwvt#`g2-xM!w+xGgq#OF~JyLYN~y5otb(vv)WRIY4k9M99C)CyZ-U9(E6Q2QVk|s730Uj0zz50tN4t# zQGhdj{53PS0@%*uT${g1nl-)}xU1HembLaPdP0!qFs}tDNIez|`d!~WpN^7}r>8fH z7#o<$q4fD5mfC@3(4EM(jne0U(xfDGloy__ytmH^2Oc17ba8ga$;KUfuI}kPH=2^m zA3=t^k7}%N>vI#%^2fic+t+C11h3Ej6P}Elh=dkYZ;GeHMuILxLSjA$KO|kIi^IZ#Y6T{ zp{3&5Kiup9I^%a~b!F}|so`C|qzX}aXJs44ELWdksfyHHjj{KdC`1fv>$KQ1bF<>F zG#+B>`8FpoWNLp?J$FO_&{(wENAWzo`P3%^@Vk}RVZo&es~qb#+|(tr;{EPmRB2XS zDTxdO0;>R`Wj%n9NtBs+dnw&C2|HYUfBOh-!povTy8#ao8?13Cb_PGY#lpB_P5Cw( z-??Tg^(85bV+Oxse3|^#tcG~;>A0Y)F*Vpx&wEOOwck|QeZ2kW!F<(;1MuE}f8qlH zgwX*)5Z4ISNUIqK;o&R~4j7Y{Z$kk=UaOU#P>}kB4Sbe1sFYYBuMP%3X7bcXoKcKr zo@)rh*?zXY3_6n{jh%+6P=%G{Rh1B5{A9@LUIrlqe0YB!%e0J;MEO`GS=99~E~qX= z0xljF%l%b=YXd(}*E_rytjqVwpL`(~WKqQzae4ks!y=^fra+-Z=TBtQU3IXXLXzH_ zImyLfP)ynSXe~fSWOY6ToHxCY`WLHy#d~JUCC}Tq`R&LhzhTP$LipLpIZB6q78)rC zA}oF;k~l5(rDoB-5qe9L1-{`$ql#>F*nqa)pUB8}yRDbTQRHF2?E8I?QJ+W=7#GMN$BIO#O43*6W6*6L5{J6a}fT4;_lFPFFj@O(MhGw zUjB8{uGCdC%~HmW{%YaUy_lo?J4X(#Le1}PC7+CaW)H?LdyeZ3o)yTn-q=she`5df z@WD~}k4Y%WfsgZ6?yxOWo$Yp#Z;OMXx6(o$pXmHc{onYl`oH!5 zZ0du;vo)cwt9_|0Vd&EovcVE%2n^4n_bx5eV$WvR{>vwq4F zNpL^RP(=7*qm=-N z4M{P_IH((1SEX%G;kz7o@vFu^yKH{`{-5T{2%@eYQ)8lzn&;96D9QtsVQJzcJs=^a z^+e6$Ya7Z7xptGZI__x<`vcY+?!W)}ssFFGUnxm1^45hiwj27v4~CIa@AXY`W$CPz z?i&i{Deo$=5oTO~4IK_-Qh2Np!g7O=fi&MI$kn zIVZ2XoE=o^J7kJoTq+N3%uh?N`8&)aurK6Z$f@(|=e1XA5a1cgn7fv;^w{z7#FOL3 zGlX@^=(HDdaZlF{yab^YBJ;W4itM!B`g31gKV#l9^wr;`>lA1sXz3P!q`t&KblS1zL^&VU#hs2wKR}JNs6U z#&7Aq=n|JXrpN{{g`LqqI5ZLYnhU2D z&~*UJEXbwRdE|v0sJMc4xMC4+G)s4UoeZ{EqG?{;l-XD$9&8*M@r$M_`aLA>JXdd6 z{SSt2ZwwnQcHYr4?I0fo6_RvU(dPJa|00)?s!9aQzd&h_60BRvxi(VPED%9KTT2lb zfJ$I#OaKVxhUO2uOo?`|o-SEy3}+Q14iqEygvP-EG!)l4TFDb;?s^jl>@{5F;d^gx zHR@+(_9O(N|2(2Fb<4zoDcSL59xGgBo77IlFrGTcFM49gq0dqFo(c<<{u>(BHdqBIB6ci%m%o#lsCu%khxFRiq3{IDSC|?z5rRsnP8JXAXJf&l!r2Z zN9IvU*^`GOvWC^gOuDlf3oQAuv>de(?yq7fl7eD!**m=ok>)ci^km`}& zeKPpE^=jXyAEdtWPcPN#Y(Qi-{<@*JHubr?^ljpmXkB!-vjs2yf4N|8gUzb zhbZ27SIx4_pt98Q_wo28FJr`qf7zgapgq65W~qq^N!`{2JIUcoY`baOJj04ZQ%l3* zl~j2Q54ZmP{!to~v6l6aG@oQZzbd~WYdkLT#N9~?9LSR01LfxA65955l{_6ZytYQ` z6;Dl9{|%s#Ed3XNMx^jm$tJSX7-g8Bjn;eCcg!e!#_qif_Eu0FdC!_&>Ys=5ULY1= zO)PD7_XB}&;tFH>g0-c=KZg_B7$s<~In04xoE@)m#U3D5Stk$yh=%pQLNpj9#xOvK z+0zaP8nRg1EGpZmq`7cp;{Naiw6m40ouyCu07%gPfP~Mx1mv4U2U-Hjbbp7}t6%L* zFpu9UK{GB6AGOg&tIz<`kg${iomU;TN!sff8mi~#UWnRE>-4CJn!{nyoOI$fohKv* z*k&uj0C~2*zGSudgH2YSBiFc0N_=?$P!|jI2YtDJiE$qCd~Y^yeJ?RdFQZLq>7kFV%Mg^j(!-z%Y)^`chEi;kgF8^!PDlFwD)bYrHrw zSN_n4W+B|f+3{f_v3KTqy0#|g3T{zybq9x8xq8A?;S0riwLiHK{Y zOS$or4QfTsnoSQlPEHs|ZBlw(da7UL9r(E@+0jNUY$VaPA~638__^S;wE6xdFU}wS zb=1_$FJGHJNND%jlSu^gt@&Y<7{R)b=GKu^6(*9se|=)FbB<0HJd8-Uzbp)Jb&2+nx_#R*_ z3P3|gN_F;P{cxM2!MM+-IS=dk0qpi{hfSF3;2J%7?$f{4%7271tLaiaBURTs7316x zaQQNB+Bea1BO4RF-7Ml@qyUxT12g|tbSXd&FMm!q&9U&wj%BO8i%8k*m`SD}=mGs^ z9_TC-0DlE|-+l_I+sU763o^l(r{+-n2=%N0iarU@C?J!|wSjm#>h|3~9F9I^QEGP2 z5T6hzvr}y^%MRCt*K=z7l@e0bQ?;%q38ux501$x44 zm@uDU_y!i`q}L7DSZHJTEcjU2*(sgLW9+&+B~me>Ai&J&l@WGVg`5_~I!>VaVHMa1-BVv;Ju+?8uwK zjp_zDal-gRO`qU1#lnUpq$rrRV&aU)XV#ZIJe+Q|r1aO~GfRTL-_^7o0u%t51EYxw zs+>Eispp6;1&u+IT$BMrF=?GPUuDl_g9=%KZbQgkA~GUY#+TfR61=mz&ZqBEoSvv-xZ2IqduLx$%N^0#YK(BWm4)UM`3sR#aRWknz8+%_Ooz z$9ibyp$}9fOT21TF?Cu2bN=pwvk%kHqL5X0ob#K&{3Zgwy(8bA)}nsFz{ zpy`~*8~d36da&VE{H15jsadO3sJRnIV`xgDMz#dw)SM>FZT%+mizYAMSdR6@VUf)$m$JSW z4Ol_krtm$OrfgXMY#cA|?J7Ou4=}9{HQM?+1)FMZ%93=OpkAhmEm24+o2>DRLh|sL zhlnE>zVnWjG>Wmj*DY%6r7Z42mjbJ=!mgGcJqG2%Lo z4^RgxvidC}c$ro0+!iuQxqsMz7BB(t$@Jw$a>ABpn--j&Z6Y-OWjee8QUHH>yS=nG zV(Sko(C7A}G)A|0pHWIPdLg%YeC@t45V-%bV1=orxt|R&&~c+ofs+^IuwKjwNxBHa_ln``QT#*Io9y>3A_8LC{6iyW7LyK z{IN9fkVi>3`-MimWOGvKC@3pTxxOMLq zm)`x<=Kqh^=q1?Zg_Mo>MYzM^9L*@)v9?sUH@Ii+)?Ia_(PN;N*YWu;)a-wI@tck- zRPsa^-`;eprK=2cS+Fy*Z}=o~x?-v zo{U!9woE&_gBa)jsQMNrrVvC^JyzpZhkUVII}pscKX5f(t$pq~ecs+Jzn`6J?H87J z;Tc7?g_&>-sj<~1+wZx2+EQ;zf{J0j6kfR5rBPl#!Mx%5U4mLV%nfQbNS;h~n$LVe-6q)2`$+vbuk=*pFUl>k{dyc&rvfFao%n zq`s`o@~}l91-7n=Ug>P0iM%%IGb_)oF0N##8`z&XfK3(n8Vcrgwd1G2iNK1SKYMOcw{2LP?}rJbMNZfatbp_Wtc z#4`P&)T2<(Le+ZB^rEU#FUhv#Gm34F?p%uHgj#Po`}>}3`1;!59AvL{ zwJNmO(WbHGZUo@ct3lZ%BZ$7QN4+RF*hWIMH}&C6N%v8puh{=zvw4O|#w z$$3-(Th&=C;^dmUSp~8@AAw?mQI}|-Q{&Q#`^h%s%(edUn}u3`IT2s0Uza?$ymLg) zJ$XboJ{dlJNIz|YZ?9dC&tG|X8e_j+FrnA@v)q7xo2dW28%p_r&-{#q`}3n0a=b(X z&FvR**HI1;X{seu_tV5En#10M7!AY^f2C5ta%Rh)YWyE8^8mf%EMpJ*bwiRNDP;zT zvZUVp$6e>WJRKiWJ7sUWaKMmC-riru1!&xhqEL9ENvRT)asmPcEG~K~VD<(ob}BX@ zFqlm*KS4?*Nr5#4afKCU9IgVQe%JRpEcRiom<;HX3F>LMLP6B}taZYo%%#I7h z-MM#?5M4#q2FbQEokhRQ*)O-^$j{AO_|&}fPR$DK;tPznRFsf@lh5K=o~b`5rDNA6 zh{wZ2bl9wn0%)(pjp1OMP|YPL0;RrogHVC=Sh@7m#a6kT)`TVn@I{`H>W4c_K&qDb% zTCpRfr)g`3Oc*PX&6#UPn0B?$>?nTO<*|_11sWf55O(|^%TPeFetyFJ=&0+N!IdR_ zk`@{FJfOKH4I7!<{zA?d6Cf7k$~0HT3v8U0{Ux_Ph1oNyW}aK+DIsn{qz)wa`aS$a z)9h9Q1n#c)s;ov9;UN*iYiChOUOTtl6S2`?5O~w0=uTmNX>M#A|2TY7GTr3vjuCW_ zt5EhS%q;sjIGU0h4f2Y18}c+Dk@czrAh2oRdjIfeo$-sCZfQpT+}?K70`;e0m;K!8 zJ-2S_boy*gy?q5`|JDTsvBkB`^iGGb*N@D<0q7ZK(5aN17(bS$K!25?0`N#(zO|7L zJ#5>ad8(gtY4p}V6Ey6FZ0XMM5{Xl%=encC|AZ!9;_Yu7MIMlB9pu}Bwi~$tr(L3) z=OhQ`rmr$nnq{%;jFAUX(Awj`SpC4jPKUt2E+W{TP}{9I7(9OiD>bT1M1U>7<2opn zJ>}J`@N#r@nw32A(ccB#s0s&~=0jnK9N(I1Yh28VZ;BXiQr+ys3|K6n&B=8qkr&Rl z33F58Tdqvg{0~VxA!de!>76TpYv}w7xtwPBtFD(PV(1n9Y6%wJap6ogj$g&wb%P8o zrfK$>@qo|e_I;UHRcS-EieYPN|17qFPXj|Slo_%iEhekFjj%?+<14*-Gc(8^RJ;|B z&#DToj|9Kf+;d<~fqlOy_Av7-fh4O%H#@zM`((6Leo^R7D#KO<3*=`XnD>P@T%BP} zm#Lugv-@ZKtUEgeP0;S_UX3Pxv$vh(139@@3NzD7DpPYJE{7i^s_0$4yaWW?hh!lP zK(QROQM#G2NA`2euMelsnDJGNaORbiWHn4Jxub@f4zhBJ=2$toOykoXJvk3YRrI{S ztzWq;Xz_BH5yPR1gGf~psB|%77T{{Sg-rmeXWAq)wN`e2WV8?4I&-y_Ug(vCqqU@* zWIO6!$}R+LkbG~n2M%}S#eQ2Gb&6c4rxZ&46`v^Me?{GI8xNHz3m?s-7YsN7cmyHSfenam*L zi6IkHM;5K`oxnUzS;SdBg3o`~!HhXO>^pq3`tGINR`+2FeSlGvB8`XH`8?|zeKr?~ zOQN#tqFxUZhg;ey1ZKPYGo)+?5vi^uu}HpmBv5Ts{ezoOdWND@jr2~hXRD{n;99o0Asty?-t2b1QfaE zZGfOXRvv8S`u6XnOEq>Ib;*Cqoe$?*)E~J_=WanOk=?O+XQc!KLfFXTZ3BR#cRw)x zFqljxNA&rVvTSh#4kaj*Qg=ACk(Lz7HH#2mT}l6%y4*syS*M3}Xx}cQ*?2;|HyBCn znPf6)QdvlgikNs(|A&sIxsz!g-yr6~tcq}azUcu*3W7$1)%0u51lN)>rsd@W&7rUe z;SKp$zKS~{M5mtk&#UvAFZ)l1k5-NM>>mc3i-^5vV?Gd0>L7I6iT03p=kn^4dU#_+ zxWVsMFW;(NU??W~%g=U)g}17=L!+%CA2|yBrx}DfMIn8}(s=we1^ag@E~coi($8NK zeBS=yzq^?Ka##LZgFp6%gQy;1%~eZiw~B69#uK}6d2glRRH#RkW>(GN#p&t*p}OkaU9hyc!Y1ay9>aWiAi1F8jRj$pg3!5e3I^a+;5IbKpQ3odGFFh2^VZR zwk`_{cIgF2IclK8EVNs>Y!5*aWSIm}q>7&KRDRcqhXRQ_CXhlq5jVpN8M9@|;;`lt zdeS9EfCq#fbtc#t5*J)Ipj}bU22@L-x0@{oy(eUr*Y+ms5OK@Nt;+kJPw<58p4+)p z`7c=u3RW(Ui{_R)ZSUXS9D1~Tq`cI!j3txidqL}@0oT}7av!U@JF^sRey{=Kx)1r= zF0`u&+b;lXO-XTS8GF|Uc&>kjuj;fyai#`1Gf06Sr2}X3dTytU?v~(`TD8)!VswM{ zEj-=L(KxfGL$4VIvQIaAsPy??j>KQvdr8}_Eh_el(b)gP-g||$b*B5HOlHy?#~wll zgLhyI1{-WybPUWSl-L#!B7{s4#K?#)x+uahi5rL(OtD0rh*$y%gh3WU2tjO$3`h`= zg#Z{;xXA1T_C36CEwdMWH>+QjgD%TC;%rN{b*_cItDz$r(Tm zm0+%fv1R27(n>A5GEo&F30KvCVnz zC1iHKzV_bBcPh7kR#8#sT24C2;t{*iIEUR>9J>fb>5RHBLZ<=9mZrhm`MIi8Wh#3sI(njk=I}Ywlx!I zd_7O4^*R_UbO~t2L<+R58~l`Zev9?Dk(bz2I+@N-vMc552U`I7xG!Nh?zT~&MUe2r;( znzM%c^|qWhlsa5mD5ll(hjFHa(>2fEuf0}z@zgfk`4`C`3j$=3mvF$IT0!xHv8wwg zE~vT1X3_jd8Rv8W#V*mGMu~k02^r3P5mBt|Dioo}=p(94IOmp%q`a8<< z=QeK;NKLH)NF{QKfFcD_&PvMs>;L%%|9^3wdz82&bM~^idg>D6+i@B5LRqF(mtT`v z$IYL+IUeAqcEqZ!{!WtMeg?TO|U>HF)FDB9Qb8sQFs`xd< z0kF;TYpuzmf20Rg-+7@qTY-MaQOZ1V=5)%>brT+rji z4iX`PBIzEDuLtLo*qhxx0-apYp+j(f%`chT;`(iejxu0(siq~St;s9<%9YdK>Xt;-6#tIN0Y z1d(zu0<^oco?C*Uk_hhpWe*#|x3{byj3u>#ehL8>HYZ$*T!GZnZj2VZKM>NstAAIs z50O4B{*>l4hT5GECIzx`)dL2an8&)gMH>#EhsUOT%1%J+Ps^*9)Awt z3!Yxn8%W9AuTbZj`H$Go^#{Ee>v~M#XC{nUjfl%lx=9Yu1aDEs40cy{pwjUmVra6( z0b3#;r%Bl(2IcFkJsx=#@y-+`%x7sSq+kPGu!(+&RqDZ?hpPQCmP8%xiQt5&F%HZ52ccNrpJ8{hB>8~nqJ-!?)E>7RM zOM$hT_u1t=fp$CNXm#vZof&5Od7`bk*L&g8PEN|>8w=y2^R-_Oxc60>%d+>jxL-6l z?H81+k3E!3{Y`r9b*Hr(h8v`0_^-kohMrGJ*6NvFq&W|Y`AE%OR}hI2L`Ua`eMPyc zF=j)z3E%{zLB^htVbvq&`!bo2xS&YW0$mzZy>|(u`oIdoaMg>$kw3oufin3=mY6@n zDC70!ZQsl^KGs|!RGXnt;WVr|+-IZb;-tz~fBr9e$UnX^qn+j)DL0PoIKtqBp%0Wf ziDq?GCa>WZu6YZh5&dNc2A4I-X>XI+O3e>PQ*iC=)>l|du)vxPE7&ib;Yi9%`;V*E z6^r>(LlMo|5_U)(dA=v9?$Gv0@u@GLiKj67^Py~VV)Eo>>s~oW-P6}<&@ymO4c-2x z4oKm|IS7dUGQ{L7oAez6FNb0dQs+%YnSyAh6o55c)*&I?2ouL3LcM%j7qobj<2p3u zR!1mUc01`KWhC^9%g`g%D-$dP^%)FMiZB;i!d<-;<&il#5!TxkEUZwzDzKC>0c!xS zlQ76M$Ptf!UReTn9Wa!$`fz{~eVIx0jj=rkpe6ndZaJAbveCF3O{$ht_3kUy7X_Xx z#=eBql6^xHc7A5|uAYVBAaJ`d0dNkiUkqZElFH}H0$|6-tsDNrW~^~ zbNhgDE0yzaD(^*aS%}OOPJ?=ALG#MN&`b*~>Vso93ylN35b0rmOZsxC9Qhf4Ae_t! zl+XxccuHobL6jc7F>;UgAitD@$C2Lv01hyBl=@nrUrsWLbd*(v{Y6^d*-V{V4sC>M z_rL>Pp@So})38BRh*w*AAaX!-L1HXj@orZhVhylSJ-v7-({|LV+-xn1$@E|Kx()L< zXvYj=uvW!Mp0&vmNiRR)sNqSqz3E}h&{%(NycnlYCOj|S4Q6*0;~K+tuoHt4nCNW< zqOH$(b_dwmW|U?wjXLRd+c?ouPjD! z43=BCl;bDu9itnnbyF`#s$bQ!L0aJ8g6@w<$WNfEC}WdonC8Cs27aQ;F){X-fvc*g5CHlFpilAHz=>scHlU9F;7f17 zObW1uGG#(sTwHFcssdW*wuZJpo`54@LMsv23NV=j4B1jqVFjVH%Zh&<6~9HD|IJaS zibm^T>C79~c5(oIQ*)l#8oo7IQz|W3J%C#jzgYS3pI;epF^aX!&9{zaBGF?+3qZ- zZxBxIWOkVp(J|XYHyE zyRhR0U};ve9yzJjuG68}BWXwt5}9UC%~>9CRZx|09c)GB1x?IV@WY}J#x)XBn=l~5 zg}sHkxVInnENNY%vzzl@b$*CQ7Fl{ncEXz{I0$c5d+(6r7`D)5X#(W==yv+C0{qR3 zE7%#fRUoCoknn0F2@W17vR{cD+wx3uzrS%5v^p1{!>Nrdg1CV}r5upz1f|^AQ5er$ z5&N!2P3w8enJXAWQv!!Mhn$H)|yojejGEms%+KquWkpPS~O`37eSK=`}a;O=+xBMLJ}^$rrX@R!DS!@EM1gIbL+ zjY$rwy-~^xOuqp5qyvB#gZdodPBXr%l;erKfWU03ds_Y-{sMXq@_|4g2|ewBOtexh zQVD{!*M6LnjmOX8s~)irk+iBm&s6JE*`-(Sevoe%pE4Oa$W~ukWmn`|i6tQ%2h&vv z%hkED=8IIxYJ}%Arq_=l$7m}L`>JX$J2gy$?OKSLB71oReD7D4_b8;y>)XNH@jdGa%?5erc7GnWHA@Vo0v$L=lH~=ZOaBGX+kl`qk*uV z_>@7|8ZPuA8kQp&xTaLw_)JV(@qJBzq5i_jspoU_T5qv zon{e3Xwp60#iH=kE{IoWc6Hxpv4wE)ber8&eXOtBjxP#zo&_4EC!V%RuZ$7VqXimC z^@aC6z|HpI?B3egPYW;oG(}u?N%dKSdkqoeD0U$Hi&T0cIP{QgOx=#em%9c(yP@_HnZ4e{Wiof*i~_@-f)tBxK+>F5o% z$0#P8pUR46Q*IzcYcCS*OB*_E-M~6gswod2Adf8K-f+)Yzj-kn(da%HYhClCXSw+i zW$sLI`YboIc#ve*c|Y)G&Y4&wTdja<`1A@i=50D zanou0*#nkltQU)TVo7VFo8n2oN(%EAoF9yWg9!ZDwZS=iXgBPRE=s6i+b9vs-*% zFA*=Sksgy5XmJY@eQ|kzm3DU8V7(XQyWb1bPV$x)`)n@qb^wU8_J)TB^i1+{uND(g zn>@aWR*J{ORnO)p1iddL@t3A&M*t>>5LSsZm#o0Zw-m9*vpg(jYWs zjjR*GgXBrpnPN-0y71m~OWcdpkWj1H>*x{ys*5TdY=sL4_CNxO%j2 zf}Z}%PV|u%wzpeIJ<0BTQ+Mr}*^~G7In4ly z?UG3ku|S#Eu-ZBkj>$NBs6XM{c#*`G^@mZX(nvr{}Hj&QPB=}V?+5JhO8+()vtDhz{V2cmdR~n#yDt#iKb_&`Tyt1XI;I@{E!#y7QDurTl)P#xgT;*5Qx`y@Kxlb#x@A7f5bX#~vUz;-MZ*KnZC~>Dl-eKN z6WaGJhZ91POVZnDYvop*ka3lvwK&am4f0*~`jeQUAv*gayI`mv67=cvj699u*RMEh zKe2Nr3ya{>^FnUNR@_hGEm~Wkbw(JkrxDr8)sfgMHNM5PW}}EZ9`h?acmt|&vUYYd zhei`!r{!A?qYT@=0APvF#)?AB80_>r%e_M%(T=<$vzL3-)2=HDdibo};!EG9ffvsH zp)#Y8V<$hT%Fa0m<+nJ=T$A1CGHTdbbKC0e;oC!Jgh0NtDf;C;-1mU|R!ywU@=?H*EvZ=6Rp8Piy`D zL)~m<{=@r)QCeCC5(qD#xiBOb6XUH0o`ASq%EdHJFf|(l9-8%efN_(dgSX!2>Qh}= zR_P6WsP>g$T0Bq}1nf=9Q1OIn3CpW?wi)5}tI9{`kB0k>>wkE>tG8d4QtYq6O7Cz-XfFq(Tzs9=Tq_tIr}0!heX!@%iBd`qHK6_z|43cA8f zA!C`r36|LMDN?*?^;AueG`$am?+1%CE5uFfuN~9KAe$iIpeK zI>9a#A`-=bBNv%%YTTQv6BQq3?y9-Wec!SNsydnd;!H~E&hG}F4-bj2#LUI8SlCQN z{n(iADUW4HMdE}QeS}j=iC9PIX-owrGTjDa!UH~D_fH)Kqoeba-Gmzt%e*6(AIb^UO1>!3!$olF5} zj-WmL{W?aNR`LLGg#WYwX8`ycY-!tO2L!Hu4+aQ z<4BaHoS{>c6hoUY|C~E9d07OG*N|}^;4;rOz3!O_p5pa^)kmL3-@5*16_pd@yiHH9 z?hT|#;mY1kU6G8PtMRr?$0-}%|D2=oMn)i6u6j7`Bj-^jjC6F$O{~1luZ_RbntAMR ze^VH1P+C!`y?4V3iEb=R4Nu_w#o3{|o)@?89x8m0Eu!MtOl!LO+FuU(U+tt^&_FR0=EpAfO`Qu; zO>l|{Fl}Nue*C7O<-qIU^YVB!z z{?4`Lbc;x-A7Uc~!<&s2fnAmXav-4ooJ!2ywB!we)3dYh4Ywb~1=iLU%gWPz;#?1s zlm-03_?FD%ww#GIGeWQ0t_L+?A~80G-FnJXT2%{uWu%hKB5Dk?kBJzW|v_V8}B za*u{|e`Hmq2A4|R=89>dO`%p7p!a=O1eUNf#rM_(S1pCw0-u;1{A5*&-*WX6AawtM z?Yi8U0T2yAS0!p^;vJCR-xAe({mW$1hvXJ)$X`C#^AtFoHI(jjE|0`&SuZ1d`ij?X z(6!c0j#{k-&fN(`?`3ebQs=5TogeSQGyPY~nmvZ>@;QJP<1bFD0Fi8*+8=x7K)f+6 z5W~c|@ZIPbZstp(DK4ywwUP!m7Y1^NVZK(H^TF}V!rL69kvm^SuyFMYvSAe157!z~ znW$wRK#(u`G0-7t#zr|!1|7*~ze+Bx$*znU&-JZ+YrRM)=+hATU`Bs@6#j#X%I~~3 zEKK|M(CW&=$G64I22Yv1<1i|P+6?plNz&W()9nxhetC70g4^0|yt5>!8l9?gN@`pc zw3I(^N2|-29#EIzPkoo(Vkid($xwJGY&4mV{0r|W)}1FC44x@B!{;o+&VEq03{%s; z=QVfyH6~+N5B%5F6in`>jFw-KQ9)ow3&E=~i-H(2>Zj}kh2hG<>OE5oNLC3M>@(bVZ;5>;D^e%3AUHkY)tq^phuGFT zkqKkrnSqBB4E=jw%-y*#-|<2F@m}f<%K8jUT8rr;fm?ISg;F9izNeyXCz1`;7pI`4 zGTG#oiw%A(n8r_}Og{Btl*CGiR+M=vS3me;{Ya zQgx(1X*3!6XjOb6#dwJEQ!Ij#ak9^U&Ucop;TyHly1p#*SSnKMzTaVT`-@ox{F}vD zdbulfI)LRdiEIu`itKJyb9J0#htpn^y#D=;Au7bs7=5m!&rIm3LXb!d@Hd4lTm+wzRwHlT(~K`VtACk`n@3RE~DO+tGgUP_(wy(^Jus4B8$oJg z1p?v?qqM8A@rjO>&B_%ewiPqjJXz)N3RaX7&m;ROM~C#gzK8vkwdZn04|C_f{g^P_ z#wOS1$)c~x0|F}uwUzZA-|2eXuPQeSEOKhJ(qZgQb<|uh?#&!s{kFGnv%vwKX`Wuc z^A~AmW1>)z#tCq)53`uqNEWCE431OmeT0R@h2|JzHnREDL_(i+c=&9;dSp2E#^+u|3kH9*`Yz>(t3okeEN7?XY z4M#IKtEU!^%e*2g8rhRhYUJC?0W@2)g)Qp((jxrrS4_mz(WWdA>HmrjZ-jNbz<*)b z{;Kkb`3v*y1zOWPy|wpo3Y)ioabL-_*@oQfYMXjR-`nRXd^6dHJ5IN;8-Ei$%KPWe z{oZ}W2hZCQ%q#Rhi6IH$N;D>cnkxzsI%#OLS|jn4kdVmLDROh%imbLw02a=Hp&)b& zV4#C+jU?S!czoA;P{JF}#XMbfjd#F8r~FUjWPaOc&NhYbYb-5c@;7LyEw$+;HvL|9 z>j8sKwRg9bXTM07)@D$vFIMO9H=siqz8k}JuaB_qzf?2Br_APaO^AsZC7U%G9dw1Q zbI{0^N#mr=0P9WvLgm!CtMk3F7xxQJi=N&2`2W89Z#Vy~S$^v+zYU__=9b@P#orc- z-`3FILJJ_|`YkB>EhzdeDEciZ`YkB>Ehzeb7ZlZ{lD+mcM_yw1gIC7R*^V>OB20`N zn$U(@UkxZwszN-1_S>Mz`LhCWdyJ$pr)fZ>`oMDf>HZCi57WqxI^O;q+m&&H0{ zv_AFqKPMnm{s+jFsHhxmVYs)s#J|Knz2c;ii`rEHE{el%2OO1I*2v&e3xvu2!87lk z?e~4{i^Os&jS^18q1xYhh=-H#V*qV82|yGBNwzI}5khmJ;;}J+B!=*K)9)+`Q5YAO zxWV!W3cw8hN8as0s0*6oxhNa7g0eO1Gc3^zErt7nh!4Z0~`eYfiS{S~e}rZ_5bss|rIz-}xflplU+|dd(;q64BAJ z$HF%``S@r`Safvv8H8rQ#oxrd*zngn3mezLcWytbkUKvnn1f&EEC@S(f6kX}9+DadKJ~y5LF180&Z`>iFFD@pI;sd^YO_P_v78 zNuTTfX*YsEn>XsiR~c4_Enz@1+$-Jb^yADbr@)@WhfSB1U9avaP}I`MF_Ovm9X~;a zQTAFQg^*+xwdG6G8TEJ|btL!14T`5aK>Wv0gKU?^iB;){|8G zxrShu+2F;pF$`mUM%_7ny2VT?H&Ux!Po>QEc)JBH}@K{o2xw}kujxFC4qW*^@4Jy)AK$&77}%dNa2&;t-i{p1w4UI zb}>z2^dN!(ds(30CdSo%T6tAFX6An4ckMA1PrCG?C2=--_E0B_4}zRRIcC`u0-y`Y z0uZP6+}P+pHG=&{wyDlHM>f-oTdLWB5bY z7brOs-7R%Fi9(Z-zmIBHCuSPy%@Me=)0u19C%-x=fk&>Gv*`{_z1V9clhlD``>6p2 zoctNzJHc{Pj$!0fe!f$%GbZUI8y_oHO8mz5`-sNnjZmK>xJmGb`>;tT{eiHD7b5Fe zEg?z_h!k15&rp0BF!dFa8o3$dj+y@$M{?FnckYK?RUg)voT=ry+E`ELb|${^M83K+ z**JrbC16`29`X4h?ZmMu<|M5#^EC5Ye;g=onTz5KgiyA|Sd>Oo5^D?|;P`Dai{{zY zHCcMNgEr2nQghVPG$n9<4C%EEV0eAtsGAPEHA`s(?O6Hx+12RD%fB~@vCW^a3eblqcC^&z({utvA5&sxLc&BEa6wuhLo7`D{2@k5FX~ z$|glrro&rGxZQNe3uTMhl^xSwKd=fNqms}5Agf5Rl8T6Vts8DuaF<&i4Z~+<&Zq}f zo9#e-mRa3$(*e>{+qWxiwiRXK$AvY_`I*VV7yKT!>tS?5)Rya@&2kXa$~!?gVD`=v z{1!Xrl8=DFvF~fHonn-a(tYdMsBH?7onkIhg=vf+z#y2_JJGl4%g=dZaBvY%(m!u5 zin57hk=o62NR&uY96*)<^x#@T0-2oozc<~?^{t;}cq~@u@mT~xy$5$oMs*mh8!34Fh<3FS63xoA=AtXS?&qsuD8Q9L8}41!kY%^_Q;xCsHdHUabW;%4INxk4k#1gV{P zRd?n&%bicNp5~5JMpWB}UTOObaeqDVf-}gSP)R#DTuu$b9zwRk$g*4LwKB@-n0P^J9Uq@7QntY1M<+2)EDXr zg_!0aUHv#VXXXfc@xVxTxwEahMzmGb8rYRb+~>(V&gO4M>%5rSIY?9UuyV7GX}q{% zYXuWe^$g-r?96>bRL*KZlh+*&@A1dG^VF)5B`uFF%vNXw8>FVW3cYW$%v+yitAafx z#u3$}0Dx(MVtrBiVOny&n0FL*oo$J9(ok!a-oY)ru9n>L$?(hh!jqVEqiC(^Z2Zr- z-4zG-bk=Ym!}*h+8M;CM8MuCa6^6zcngqN`X^hYnN(eZA#Zth82y4&YC~qZbL}JOF zV0ok9t=MwySCyaq^HBI~uHLhx#%XQQ>|99MS1XVG?A_M464Dy3w0A5oz?|MsJoaQw z6ZSN2!PS$V68wCx{weNX4Iou|V};GTXl!=1yrnp0b8THy>Y z_C7@#MKd3<8vcXJFt{<0?(a0=mTx{b-@WRjJiwxz zUpUSyjAQvwGRZ2|fl{T}C{YZjY}wCzG7)pu)D?TV#&q_41s&82PKYEFXcNR&gk!s5 zN2VP6f*%Vkr9(1`^~~$N>+KGyYvhl72anKy1)lx)F948Ij3`p6j$mMLjS^-;c@#52 z3TP3JAT(SA2n~Tf#OrqV6MrtlRJH2yo8Vjq`YZ_vG-cY4GV00%<9oT z;&bwg)y}A?^QZzH^=<6gTnxwpfv++#38$4my->@s7rqvR z$f1jkxl$zd^X)IYs-bp8143d{@{AMQXoM(*c~uVZ01Ojm_))Hv@T$#cBxQ1Mr$g5W z9naQT&by`m$y=e1yG&Ym$^>T*MSyy*pH0lVh;V;XZS5;8jKV81+muVoB_h2l%>!)g zG82_Rnrq%{+rHi7Rt#Pgyw~2hW3v>MkU>gxVYqb>1+5nbT>3(cRyRtKiBHCxeM1Z{ z6DZcxKj<+5`UG z6uC_;@hlay(6dlP`yzfcB*gd}E-kMWX_DDNLrXDqUqyKou^rHDq*!~rYfu5uj>d+! z%mdiy?KU=w62mp6eih(gK)E zaRv8nBJ$$Ifi9j7#^;s_&qeMmdskB^5v(#E)B$Cr8?|PZ&0QtsD8KMZ&ia1k%x3lx zby7KACD2NIF1ehkh5;!dBQ}6|BwL{2q26bV7Mf zwZS}9^#JZRetIHrJ*1g!Q<^`yis}5zK-}dS0W81vv{4+TZW~aKYj0J=2v>$524W(_ zi+`@5FaNGXYv0C(8$1wN`ygg^S;B+tTy0z&bOjGOU2mJX=Q5M`l|T8Jah03p!sMML zdM^yHRM79tS4}h!U9V|l>)AZEs8Ci-(&Kj#`^ynvhq9RjK5eI_p3WFyaub7O%EaJ) z!fos21NG!{KPE*9FV1gc*IUED1PTrW=+otOB*lwIXi>9-l0-`KRF}?S#DM5=zqrN< zZ5+2O#GqrAd!XablXo(WdfN`YcODlki$jy#im<2Az4T(=YBs@V@~!LSvl;+aw(t@m zR?NqxIGN^;jXdMsA3#n|4Ehsi0VId|-t~Dp3~C$QtFOTJcj)qlpCqyX3$FDj7Q$!O zl(5i)F*MZpY|Hx}{Ympe-PH8^XIXEjgjYU0p2_-VcwVtv@3+6YIlfo4I&e4W`u`-1 z-v8$v8GuGVQCv8?h>-Y`TiVuRxSOvQHF`1# z2iPJ5q+39_4uBrM*!O2(js~J9NR(9=2;h~0!QkibcFL(lRYCb4adB9SvSKluVuWAu zeN%_Cj;yPVB+Wt&#BBaTg~o_|#<7)-KAT%fHs$O~pjls&@|{htrZiWyVJ`NKSNHZa&$9+H#^XY`QlGZJgit2syLZiXdu&0ef# zFiST4=jQ)yHehTU49BurXumW}J-!OrO;1;18ljMV!}1WLSAB??sm3kYL2*iYa*X@e zgvvM`%0f!Avj?_`0*JdhR8_V2V|R~Vl00WEz<1g zcOzqj0O}S zyvIjVjEx;0Ehb0--G25n0gN>bF!8D-p1nU$v@>5x@3Qs6Y-iuSc4+L`3khAUkN}dS zYV7HR$_{@cx%bC6{=6ijnU62@6?T*}0EU7oQNF*aSzmBH24$>lTY-K8|5{?s6M`yN z2*u@d@#XbQO+~d7v#;TWfhQt2BVI|F-L;tJrwJF5dRzwy*gFB4p?s6p2sR_Ar-$hS zBo2ys834>IQ^JW`)YnUwb1wPP&z_)`8TU@IVWAXeB%y`}!DyZ$zjB%j15rQsjWP{f zbG6#LZp6Zv(K1q%O-B%Bz=jOyeQ^ zfg_0k+`8>GsUccY-Q&XdooCvZDigjs1`pXjywbc@aOq_$XAV!a2&Cr}yLU%>+q-!B zPNj4Y^^Ap$V5FZ7#tbc;jko`K@J>`>a$wny5a=kS0&X-gqBegKHo}QwBuKAhTUAYp zcGFiMjkP@9*ep=Bf;yfcuSVsCQ{P%$rvy>7PwP@hxJX)iJrQRLjKq2%MOBXUr%>ug z0S0_ND(sgfL{b0|9f&7M-wnZgfbb-N@H%_uv8BKYSbrfx;8J{Z@0=0;K953Ab-vF0 zn31Eu95Y{j3mEe(sMurKz#+kqK+pFY5>-HUX+zC`%B8Egym05~&Mc?02`udT#;(5B zNL$QT>`?HO*)@3B=RPhT)-&ICNW8Ak&gf+3t7_2zZw;R+ml2fts>R`C->)h!=*2W^ zC|6_7sDNfmcQE}`MJFF>2`#J#>`vZsT7b`b0&t9>P*@bozkx!bQle<6NJ1Y91K3Rs zUIg%NA5Hx6FmCo;|5s7@L;nVA?z7I{x6Q1123I(zIncZkV}@R`RAX@~esB~@2{+3R zpGaI4ZM`MnE(X@VDM`<-Dq(g@Er=KGT!%Iu-)G(PG~n*-wJt!!^nc~?ghjTPY`df*O>z5SBX~D-%6b=_lgLDKE++@r^5UcdKPFsJ>ispIxqSx==&CZ<0z~4JYeV z2VTyn|FK(iVOC5A%{nxllc9U1-I#$UF`bC_AI%$JV=WL{VHjWByd@D_JZOjg1%ClY~ zDp95d7vT23YX$iRH+1UtVq<;V-PV)ngsWHDpD7mw2EYdMo9yoB!}d6;P9Lr2y_j{+ zP;OeQbcg%xF!M1QPpoY4e`7xP8jugc(<^d)_!vr+u^~1_^b_9-rb-PtC>r}fk(~3> zK0JBTa*CntI+*xcM)%?V%t2!W4#tLpp9kHut(A<|6l-^xrW6rpHIpw;9M~F&}XtYMs~*610izg`mjt5M;~%%PEI+ zRhKOAu;)i-EG150-DIikCbYW0VE6lYN=Mi8!Qd*oqjurku37cRq^l)EsxWmVtS6Tx zjSNeoJ*er>zuH%&?GiZ6Mmsnq;Ad-2*^=ULUw30BZ5(r*jiO|i6Refpnw|3Hz=}lI zfvf-oSnMH&8@1vV%j;;>lcKo+u5tYU!w|j0heq-?Se?EkN_vN-0 zvT8SH#n*gfYM`5BbI~??6*hCL7bYQQ3;bw17bQeP$K)@i?!-z=S}?55xLZACCTA5$f#p`cdH)6hK)_k3RA%)%!v?tO$p-VG| zl8T9QH|YCCRTbh2Fp=I7|KAVe4d))B@jfs=I$KW_jWlUO+jz$E|;1i z0fvvy-jWcuUKie!Jx@DOOLP`yl06P?&gejP)C03;nFOX+F)e<=!^Ye{yYN0HEPA+t zsr=nz*2v(huWyX#xx69OXGg*C*{Uz_Ben0WdH*pdqvk;ZP3Q5Nh4<4H2lIVW$Se6c zp8HaOi0t7pZ7y$~&&k;xqrvs7%RU82?rf#-7&{`KC!w|udBb;Y!VeLtaeV5ttwuzC zajP`hZAg8cxT^WE!`F#UL;>=h?x)?FPSjMnOe56BDfrUMblBhi^RA`xKD0Tm0NFoR z!#Tdxxv~WVZ5`^p53guKA*r!uf?%TToD8Di;x{dV|Yc_Mziov-&B6h!)MEy z#G20{B+MIjI#xhMrh_|aD(NJEoE;E8UX-NjzAw?DW@kkEyc@@NsOG1eRrKvjzLn@< zNL~ZV`be4V4SMeTSwXT>M~a?NzTNdroq-vCKzRgr9#MgH0I7}l#_a@O(1X$B8Fx$O z=RBLOkVdTr(*q!#ru~xpe{EjCTY3az- zj30<$JKtY5hmo*S=ED-DiM-a%(44Ti43 zV)KzJHua;ZolVT~;uL->Wj%og`)=dS#hx3Vr-V%e*KtG(68eufhvp)>yN5(UQBNM4 zQyCrw5?6fAOuBK>x>Af79;zNrZ(i``Hq*q_0d^Sq zl3<-miL6d1g%0=_{71U*{}DL+Uv#4X{>%R(YR11W%FT>#xj0q$*8WX>A*RMP{&lZ)rE1)wFTsgs zI6(Yrf@sEeFsx&0xJCrT?~_DKc5O9prudin*iu@}iP@}2#JF-|X5h5@pM)UG=Ivqo z<{|t1B1A@ED%;k;BnOFnzB;|!*6#T%<#HXZ>0Thy*#UC|k9BKL*;V?xcRTQ4)zoW7x?(t;?;aqg*VJsm{*K@L0M$4JxBD_ciVC(SrP z8Zzo*-MOpU)%M}Ihy#hQRF$^&A06vV9;Bn=WQ85x&Q9Aeb-Q;^=jLM?a(0}h3euS9 zLQyQlG{ZZVyc?pT;jkp0wBxuUeI?j2l2)o^4u`Qzyv(fx0EcxVCnuw6yt$n28w_^U zx(F=H9`9V}`a!lmT=Zwq@AjU|SB6lvE6c*?0$lYc%_hIAAKdp;b@I=sPQW2imU9uLjGwqCk3w=8B8RJu zXU-?4+ZRdipv-vT^a_CCS+4rLTy|!FNE8`9CBFh=zTS(Brt2UThd#f(B2@5^73d^#sNz$;qq{Y)!OyJB^fUMBbNd8l3W zk>Db$&*LY*KMv0r2%OcT@5laZ^AWkwzkJ=!;#ZaX7~0MOhERSe#?I^&7*M`cz@I#`ER*WSo?K{u*dGfr-olh4S#TRIwXGpDz%hv~)!lERjt z`Rc>MHyNFt$tJJlx-fRYGzZgl$hZl6+#HzcW*fmqfRF7{!%11^^iWqx2A&@=N(TP; z?_J;nNJee)icJF~sB~j_{2-Qz?Cm_;HY?c`S4;EJSvwk&imf?i>v@qua*dh+p|&N4 zn-yRE!a%Uz;rEH-wb(f%;Pw`3o|Hu0H520p#pJyz=vAAREjMfH;gV*^NDCDtzszkK zqB`o~n=+F=$vSr0PMuQ<&K9$Lj{S{h11VWL8)&Z^-?J8m-G=Z0&F_EXaWXuuTv0Ri z*yKPkdBx!{7I$09Okl%!6H*&RNOY(iNIY^g2^PbP|Z^Gsq;ZdvT*76?SA2p zh(&Z+PC6yBJnT6yEW|jMY3-@ujeJ3mjGL|y3V=FtCD^1s|K&E;b!#Ov&njsd(*C1JN~MYIumfeN`#bLv6dV-J7gJf9JZn~V5lPs zk?Nif!=>@+IN!*lBWB(IZ5;Gcxdcnp|)wCEiObG;dp zlWOI7!D}p`^mej?Ptbs{*C)=)9IO`sqyb4GNE|ebRE3$e3!GU#EPj1p@_7?0k}um5 zPcj4O6CSp^XqeBmJdoOA9!R}T3OP@qklA|bio25mUrePj{uUeiNWdgDm=YV(?V|b6 z7DFivvUj1>>wU`n2~vo;2nI_s(qj%%PafabQ0O{)fq&`)gSs)V?rgcFCUFNz)^1=R zzd2e_%HPl8+O2%}+@|4X9@Ph??LfQg?Kb@#4AFIsV>z7J3&RK_IWfY;QIl&qDGfnX zrdNaXlER@o?4(?s=f@jS)mr8qmakQY6U4CgW+Ls3VI7XhmvWYbyTMl5`Sx8sLXd#r z3r4psbJaIs+ORWiNVWG^zp6l3T3(wD75AI&D{W{Vwhm)f8X0Pa4yX!vtv~tnCANO+ zQnl2CZRHX<=H;*Nxf%>(9Y3gdfBee|?0%)Rt>#?tIjg=2M#?F@WT1>1PH9K}G~gke z@-Rx@IJ(#v)oHJt_A>!ww?2|17dBP#j#7ypk>gX(@|&L1w!2mE1u z$fNBw)IISt`S637O;X8_rjIZ|svac<6$Yoj8m7ez?7T!d(Mw6QhqiepO#Nd6#d5!F zV=q1G?MMqYero!g(*dvE3rqXsOjd0B0e2&cIYp-jbk)ET7wA~MvqtfKtO>D!WbIC z``z^1B$u6lDnsqGu}jTbzHEUFSX_bG`HmvY+dAKO{0)VS2GYGaWuF63#v0FA_^)BsJKj1^%1)9*Xy``+`N^MBtn&++)&EI!Z8 zb>H4x_jUcQ-!E9^X4(@CwNf~{wJ@g3IqFYMn0JB1{ zdpx7E-E%GB#JWMb&t!djsW?2J;> zljStKS+m7qWOv($9lj&Rm}S{|!z?H)>xKM?eus+PQ2%weFyJQV<+jpBJL=%%3!9_! zu`8yCN2u^0xpew#TU*xK1NCMp6_S0N=#t=|#~*(Ar$4uU z16BhBQQaa0+xo|JzcH%n$y?M$B~ZBow*u)w-`@<&jk&Q7$eMcG!IrB`SQNxlJ9g!~ zCLAs3M<-h(|BkTv2Buq{_tifA+nz;6eLmMn>M*Mm*a__O!BHzPqFUerN)5 zu4Ipa6+x4R^GW^Cqy|U_!!_K@8wQRs@o$r$r@bJZzY~H%)&xrj0?S3}C8xgceb;ogi@RmoOpWwp1y%>mo+uFeGI_&4$HV$af4FM%J8o8g!klK zghNj%q$Lyvfby+K2jIRTfQz3R%Ol7$@PT}|xexFXkkd@1>4PYg!Ut;FNYt&X0LZri zSdx%jptwFl0AOjN1>ZUOB?@k#Bzf(&krZ#oF^`lpxM_j`<8ln$T_M1H%S{h&Z>8bW zpN7okp|$~z8=^A&)QFk%Ah^Q6nd{&=V=$Pf*-suQ@3f0@f^dCDM9f*!%jQUnR>+jSE%s#|;MdmDry;*?=9{qhCgTVqi3?O5G z3<`q=NWW7C0eY}HBuZo&4~PF7&GCZ=KL!6fPPDd*{|0sZn>F9*O<&*ySOLCI!(3q) zE1i};S4_wUDAMy@%6lG%XVjq?)CbQ&V0GP!tRE&AVJr%*K8+Sfk1z^o%@GA9D33iv zNWnSaCF6}f6uZRsK7x4xI2FgKw#^nNE*j8fMk~P3Zqx^9nFe+lU*%V@$c!}L z#^V#Si~pDhHk$GAe#wEBgkvs?_AP#E z59&4EOR+0MRn8}17AQ$>W(4YEmXvXuCGR#)FK4A!kn_>B^0dFcH|>5WD6fWE6Ns>I zvAQfd|F>5d=uCtB5&{I`uCCsCm)C~*U3^tPvJEJiDYG(p! zfGBJhYm07CQZm?n_bc2>X|Mp{fB^BPp|0;6Ms)F69HF;w1utHn z8wOj5yaWZv&rkltH2BpuWYqPf)N-E8uY2VJ0>qtmhJON< zxxC=y*tWe9t0r%7yg+^<&8*@@cC_Iq{n&M)$fty76HiMtIT_WmAC4SB(~MUMhML7D zUI>qC7bG8qFrY6ss)I6T5;9{U4@CijkkIZom=WpIV5BYLY~+`^r(5Zenn-YU#HL_V z&{tIkBvw1(d^kVu{=zkWz`wN6JKpJd{3&jJ)e4hdq$o)0^sUB{piSLj>9neF*(FTp zyg{O0?Cz9U4O-`mw^CRzl*Ql5h1(1ziBNjzc5_{02SCG`)`{6M-=!2Axj6k6ogVfq zl_+5>(yB!R&)zTTpj!*Q-PKWf7;SdITD4x&-BrUX+?Ys~{%Jb=) z(>_dJfcsv;3uu@K4vuBXW9Mw)y3_+D{Nb@G`JAT><~o5r*t9tfAj!J2+e851ZahGv zL%p9>NM3>4((Y8;bVQg`3{|tCv3&_491WO#^m&Zf@#~qD=C7Az*D`jppL-;1y34DG z9Nm)CLB>2SX(L{mRG(9<;9-l40Y?4FpuN}~^Le|{X<}Y<1(zyM?O;B(l%$yG0Q)Md zO4w?hti(|Vp#~qkigokZ!h}32TUdh@dPk*WBWUvBiO%%&*SWw)Joo{*Oy|bqydQsc zUjOEH1HXfgADSJFu2QiH?i)l>O%;(K%{}u$ny4=Mu$Rk_K0vIg*ajGg|d#b?8Kc zyR0Xjp4F925s8L0m^GYaq2YndKhHv5+7f#@WG`IGqFwrBtil%?*?+NMZA@!(>4)J~ zxtR-Wa|x+bQ0Zxih|%VNd_!%=*Iiw;q^a9?wmUZQ^VG^EBeLXK55a-~2o7KGzL_V8 zrB5Q@ps6MJu)vQu^gIbG@zIty$h8xa(M*bQ)Gl`4<#2~@TZD#(-@vY{EMM3O0 z!v$7R?b9~^R#^Hw`WOXC-r$&EM59U^B}kP~+F&^k-2i;QHObHZ7PznG82_Da)ONGb zXYkozHeCz5fyZK@i~MQyD^gb|jC=b(y-mSIPfa}Ez!7Z&EWj@*?O@1_J5Wyx1ZwTxcP z`F4fQRK`a&Co`fJLmn3e6ukf1Yx5pQv%h3cWdCT4tJa5=d29^@R%P^@`ef66nphX1 z*x%41Mn>|AT$DqF`07)US-juQG}SW%oiA=VF7D`ToZ|7d*0hpQUVx-`AQ2RhxVgA> z*dnA0UXk5mBetC#lV8`u%$SB^`ZO|PJ1yW_*Cx6C*VZCrA=%MAo~SQ|2$;t*m^`1r z=Nv!C*UeYG))F?b;9ebU3y2UVwe9(XRZ0x!dhFs}5Wv%YuMlfjceZJt738+-<#Lk7Fy=n{w;FBTs-U{3kK<^S=)O z3zjTyy*+S2M%`Z|7Oybx*3d_acbdB19_YoSxC+0|W;QDikIm!X9w>Mw0RKkxOV9J? z%N!y_Py3yejAmxFh>2m6?J=!nbrSzfMLvdDQHxlQftdK{$_Fiu7_{e?$ac|`*0 z;hwYgmUAstuIpka1KCYI3qMqQ_DEJr5Q7jp+sZ~H*sXr2(gh-#a%A;=)Kox8#r^}0 zxEm|d;q{Dwo`9mow(ivzvm=3pY8%(hVg88`AZAAaO8(rnxj=|aF%5v}6sQTcb+6D? zzaM=LY{2S*WQDw)?Ct}DDJ*cxf>lb+=O1^afNQrHDH+Fxp$Q-VY=VDl{bqF0M(<>R zH!_y4pLJHYV!8l#S|atYzKH((_gm=;{L!nqlpo&^BKkXPn9MWDau73%D5K&b{w?jz zSng89AUey0EE>0H+r~H(H(-jJ3J{>uOWbD5blOA>b!ck5Ovv4j$5C3CmJ2kLPL=x8 zicEXHC#X)~_ORzz`SuT`pRywptiBqxt&P^WQR|iLN_oX%Ae~I?LF!x9t&@Fsjt`yq zuj6^pr(W?GJUbX{Iz}_+B%I|;!Tbrt+5L!whXEnZJ?Oy|=8r<>IEzj`;sQw)P)zV} zAR2kA)eS6n%CkTHEZ$mDV+KcVIE>8gX#spy8vRZTTJ`?^0IaYJX};Sw%{E`hx|w&L zXj^I9UsnVWBK-t@8Fh3mlx)!>bT&TdACc+b3@`Eq7dnalN7q97x};VZw!vuNd&%dz zI4OF2+(iaOkzT^j%;ABHLF+1E%|}u3i-^om@eh zPCqNCVz3YaFtw-oNLCi8H307n@pQ2k0~*!_p-V5<8#mcS9NJvnJgTE(>@Iya#HxS(V@a?+h3bU>)LQiQ zd16W60}FGD!7(3Sj-U2M!I&wc40?(&8>)azo=ybvudae9w>#<<2#}hFoG~rXM?X%% z-dnt-a{IWZWcpHmdG@33<<{;1##y@m=FBCUp?-^iN)Ct45MJ*Iv)IC% zR76{?<{2bD>b>~L-tn4J=af+<>izVIhLDnHoa&g^!o{9gaP-vLfGbdtrKjtVw&fMl z3RxA1%mow01%`zy`|)+IfZpw%rOeYkS(+SH>V)NcrCfhetM0IXhXC0rTObo0TNqrP zRg5PN1}!ZLmZIY5*}UzWC*-^)qzz- z%^bKnB=|+osl}NH5xEBe?a>ecF9@I(&cMPGLC({iPWt#4qx{dNo<+Y)xA9LkRV5AR zk_Ho+amn8+Ie{X^{E}F5QP+JSc9R*!O(PeC+&#Lb`jFdh#e0nD_fo{O1Ko!c@Z<~_ zLIgrH@Po>8z&3~DQxeA9@HI1avN{da+HLs~;A2Xa#Qi$>G!+Ei`efK)fBqh+s3V47 zC<|90K2-(GFq1}9S)GUV!V5`aS4)Sz5lR+GpHlnceD(`PY8Jk~Ci154sV?RIYNUPV zTGh1s`vtw9 zb}q8>hu3gkt4N?M+?}~w#5|pTn-OCZfy#~;Wp*zwyPQr3NSXBuF0};yr9m~yw<`@t zl=P;U0bAiI*7y)Bb(V|cGcX!IBhX51@O3rj}7!gvi?$a_a9%=2M~70A=_Ve@g7AaI(>uk z;nIo5mWvsh;L)s*?Y9SvshXaZgiYD{9}9=)NmZslQI+PuS3#*kyxaFtz)6B4r_(>( zG+Ap{Y}JQ1j|lmE;PPXZ+fm2Q^O-9EKz>(aekidFZ-!GM8gE6|;|AKGJ@GbTtk1J> zhZ<-hYt&sA57R4N$PbYf$9$wh4WX*`f=Y=&JX+XE)UiiaX70i3go+**Za|QneD=-< zMdx38ElkEdjT6!P^Lr8P=KWK%MT#z3{hm&>d+XFf+JwqvDzTI_dJ$Fz_my4BKh%5o=O$zi zH8=JX6L}VGZS60zMrT5q__mH3bC?GqNeiH1;Bk-KO45|mSBLG(xu3k{TU=X6RL zoRE*S4tW9v$nKx(%oie;2CFiW_zUePUr&sX*_yay6h}bC{aa*`ShzF!{E|9bt%-7u2fVHTV39o4o6UNKH+*+~*Wl z-i*VJ0t;#15iuC-z%6{La$F++{h!t{;w;1+ z4~HAhDo|ebeu`1vFs^*SK_7Zywl&P4sxmnS9-ick5RHZ(*=Nup{v*;uU8Och8Lk4!^14U+eF_2T>li9VHGX`DVse*2ekLLPDkeoYT`K zgIz_&%ofXb3+LyqG|Ddm&426fv17^a7VLnrQ_cuAFj`r(El;k_H5Y7$NLB}gi0eJ` z+%R^+CGMH`Shgr-=Y{CaW%5QS7;%|n8=I(SJ)Qmbz#pqN-5q3p;vv2Vp}}w(kVP$F zpd`@GQrTRStt0I|{(_shqOfeE>>I`Vc8DbE;F2_>?zI+5b<^x>_x7LvZnob+fX&Vv zNUE-ztFD)prjIn#9KJMp|JJfWkXz!|YW6Aji|u_?(=o>^(5A!edY4!agON(l6a6Rp zA0#sg9O}ur?C#4Zv`zLfiKlk;i@lFYq$N7y*$sKoGo$8epu5K9V4+)SR^)M^HHF?|!3N{C-B|01qZH#vta0vkaWs4QmUZx z3e{{QNM5k|C3WuyUY zgxO5ZcndQYfbD_m3_$_;=m`cYcvH@*wqhsDn7mxAb-k9-8L%6`lEFb)No0m|Yu5 zxizIzhPMKFCuU+`s(uYOv0`!+DWA(W$^25@`@~!)6Gn=w_V1mso-Nh(=E1(+y2eW~ z22GY}5=XDUuyMWhdew9RH~RE-fEm^%Z1S@)=Oc6ZD=fzVg0qz5fjG{xO+39lyKyJ6m0$^OQC$|}muyW}OKE~^N?qVxk z?TW_{4?u44sD;~!wzigp*w#urH%GSX80BOg%L6MD${WI8b|eD4{4r<4S=@X;dRk2*Pg*~0o)6neg#$Q|hYHiG|g2lL|C{n}MO z%bj{&?a93vh$qBFlUH`ajdb?RC#ke1XmRr&qCD1yRuTw5lMxTJVU9h z_#AmKn1N4aq>(q~*F)J>mpQ?TrbS%m*`>VZz`!a0Ql3uDi~Boo51bgaR?cZ7lN|yU zB*B>%sIg*iOS}c*glC|G5K#FnU-ER^Pb)NVINWMRWm9UWF@3+oWLqm(BpWJ1v31Sx zD@#Dq&}g-`vwX5ped5Ldpy)wyPsT)>tB|)dd+IeGZSJblIIo5ohU}*)u7r)nJ0v(>)N>nEI9iPrPD#%Rjg_7`^}#d2ZGr{$0DkMi zvj+9000^{V%l3(B%#dG&;=0y)K}QWepd~7UsE~8i?VpXYaZ}^%cSlHIlh+?f2Dhev zpj$9+P3ryW~Hcw$aM)WOV#V>hyzvd+voHf?D zNbtg{Lf?ip5JKto^T+{zAI2<-hQ5_fGAi6los@o(LQxbe9jBs~T=JC-YI;x{lWs zAw$j8O!4}~uq`{U@nuGD=!{+9yZBxQf!)PCTgCi-dNduBz@5rC1=>BIstRCPJ#1o( ziQ2jC%Nx~Prw>Li8!JV_>s@d3qOSQK#DmL-@sh1})C+TQzX~kGAOF7318=LGdwca^B z%szt5qHKOGpO4-yx@r@XOSc5dnolx|@qUUT$Yw^;@Tg7ibe?W*fHqQ?!3i7I5?Hx#>N%b{@b7;DAkYzJuNCI;p3WaH3E zmJ@^>`7Jhp@tO-g$*obc0{f>?-;-{MZ2YiGO=5tJ#(Sv|SjXVD5UBTN+z1At4tS6d zkz-nx-G}>k7ySmjb3ooPM#Te6`cZDB{Do8}#vL&~(1$btw2KTb4Y6bPh>=R7CYxmT zC~eIk5WD^ z)}2}_CL**8;Z{~5S6{CBq+4I~>+#KyOGOZQkplNat;76i0Meik=0t7A#)UByF>Yx& zSL_}#Hr{;q%hkz&SSfABG7(|v3W*jR;9|TSoCE?nrmeSqbysG&L$-=7M6><-?#9S- z2F1Yk6_Pjxu_mUqOR_)y`(^%&0vXt?cXR3lg~c3jH~~qu^{lGSF{J#`0Sgx52ww?fYy0qzt&u(Ve#} zIK(V=zJ>B2TR)RdV{_A6O|$w0NUTNkG;5ncNJ3aYL&NHUj2L4%5X zdHrK|fjw-NDs~B$TOUXh2Q6!^Er;7C*D)@rkW(pc7G@W+m9yK)>cK)V&e0-JBcKu8 zdHhw|dC7*(3;;cvF`CMHpo~&Q#~u>3{bZaEtbRyQn&zntvHO!x|7=mbkU6$39Ge{Y z=5mlgk&G^$Xsv?w_ij?5&1C>efyXTu@0Z ztbxG&=UkXxf<9b(Ml_I{>4%#Offf6+UrqnHc3l{t~{?s0cDYKg(^;$>8g>(>9r*d zB;&N~b|QgO8mF?lQQN3pQ6vl-5vO%z43i%Da&)~hF!@Ba3{REqZt&v3T|x<|oAYD@7ax57%~ z`{(C^x&{5n*QW3xMz5MCEV!X8lk|E~{7?Y(k#`B=4{i2|mxORXg&$ANLe!;(GwDEK zVp|fHdsA8y?$mWGv~u4YYYJ}job1mc+!nMj>M69*an2ZRknrwEiJcK2n?_b-h19Y~ zs~cVdQsq@peGC4NVqC-HYx=g)*vg9|lvlL9^a<*qagi}rT7tCf0M%yrwKwou8{+%Q zmyUg|^xc;kly{^rk5h?89qE&77ns^}J9zrr1AedmF(Usf&UNxX&37K2V;N?=;G8em zc?OLm>HW_0Q6rMzp6hCs_S2q{OkRl;qX%oghl7Vww_h$aGe^sDjzJ{w1KYyb$#6r| zVG6S`7uxjD<%IiK$0$SI81g;~-D0pThqjM8tTa!pXE@E)SR)b|!)o2Im4;RFvF(M``cuj+OPVnqA{^Bhj{uYKHE53Qfz7p;`*6_8 zw`nLTbZK2C;^4S{vBDvP&jUayz@NA7oQ(18XMob)SccVVM=`=%&OM}-4fHNz*I|@_ z(wABfZ`LV5Qx!#Lemgi+B#-f5>2&*2CmbMmWi$Xk3jkM4!wi6dW)uRy=so}#8c!*{ z{^0_P_ej{23uIrBNI)|gNTGm%%}!jX84PMJ0;19<+HR`ps2xA$_J@C+3&$}Ts+CCJ zt`0s>0My=XcB46Xno#Y-$Ck6?QUpe50g&zi5a_=`iq9n0p+LC;PinV6YY;7t4$$cL z0+0YOYZ2T61_JN^ZIGXikPqhwV&339J0U-u?GFLUS^?g@r@_GhlsJN1_${T-aDksC zc_oXX-tuh+%C}JOByr`n8TH~}=t-*&vK5W~Bh9dw(GebyZ%80+9vry;tjW)B)s8-R zZsfv(-FbEa^AKjN=>3wn2i~<@^3V`IRz`VTX|$)=MM~f*oUTI79^ZH`)&Djws9%O9`?1s-EnKl!%A7KOnFCc8u!L(fxF2e*0^}yulJ=T z0W~ZKyGsfUrt@j&(!eeTC7tdqM{d9y<%sYzpAD9;=3_<}+fC@y;&aL5qNOWSuId2* z2%fG3tfXPA$|^ZV@lsW7xRLpAJ;uB({yNN2SKVH2j7&Znt?8lTJgN4l(sO_L*D?S5 zqsgi931mOCu`&F#sewz>bOYJg9p;Gp3)B$P<+32KUn>qw#`q} zl!jW!V4td2Qu~$tQ*E2q%JVN`{E5ite8{e<1+=+KiU&weL1V04IGB!P5A7Y=i2Sa1 z0iX0lIqfC1!uh&;3#08F>$rbXwGKX0Nu^%qZrHMZiQK+S9r}#fnhBRSWQh z-48Zu`3PH|FkvIAmQ$L~6f&<}+a&NNedLMKn~2Ckgpyr}}k`R_O1iDO^4)9g`?J1blUH zkN1n2tfs~Drk#(Mc8U|I!>S9z%%Fut!2byt-gABvbLt{&PZth2wu;-sM-0UI;k+|i z&BsV2g7fasU9Ek3p&)|6O^-Jk)|(kt3M%@p@t;4{`@3~MjQry50hynf(p|pS8G0bx zNpiY*gWB9#@rPT@l#yMrQ~Ui08vhT!wB>(ke{`SHi-Pa&aqf)Ew_T5(R3%NEXTDy; zoo5s_pPX{dJ#(;)g%!BhAhMjd!|wgC$7>K)TQP4XFhtmtl4&ElO+jjrw#10s0|e!} zM)Ip6?jXeDTJNrs({2L>3nG+Z3JGk!Z@Dg{TCaFQ+GH$8eDsNsR^3CTUsX5{HlEh} zFZ}@?{x)mMI#6RCH=A|7c?ml=n=#ONYd7b^)U6uFdF!#GRxf6Z1~6_D%0*_4f0V~^ zsXVR7qN{W!f$-YQ>y4KpTe9TQd}QU-e%eT%?VT$$ElnUwbe=%$$}p4jrx(F#|vOS=+QMcFbHEF zF)oRwl@EJCB7Ulwh7RKJVcWGCJ_U~w&HZU6w0OfqB~j!FvQ)j!;GB(Z!0T{)3sW0C zUo@=UWXP{o^*;_j}yEQ>Z(q5>NIzc!_i$E8%m)PM?o$ogQ4DUz|-M z+?sTHFzoR??jbA^>@kMCT+`1cMYb^7h8X!FnzaO$PUu)9QkIQ0>BBlKF~`OM=64zs zHpC%Bv$EU#S08{|1AhO)Ont^bs6b&!>^0=STB2fRX$G6Ra%_l)@2Y86s$Nc4dQy z)zs!F#nEj7=MejYhfd>*1&YF=8Put{cIjzqA(xv|k1I5t`r?&84Vm$nK*Eax3U(RB zX@h&7@N{zkwS?lkHtl`KuUXxGSGq$Hn-bQvgzDx&15q@drE%6H&quW2+s!z`dmEmX zw_6Vx@xU)R4;%tE%wj&HjdJ+w;>dH>a92N!g+vErg}jt+RAhYi(CbO4=1s3dGAo@u zsg)s44!+De+Im@mSY3-TlXZ2!;2~(!3o0~gx|?XZJ)XH;ekFsS%dKH9Y9~YxoU^OiF|DHY ze;?F8R)4xZm)p62v@`zh0+)J%7%`3&6PJ*R6Lazs;hvoYY&jpBngf-BW|v@UP#e-f z%Cn*v{7mnBq@sIGo1+N}2U|->COT@+xDdEh?YWMXscUyatcyA9Smc$2NtRTdt2Vqp0s}111 z(o2G)@}M)?+YgbK#Q?dor3twpIE-On35R<1ozn0UYkK^y<^2t}Qfc*X`7yZX zR37~lk9gf@??pjY0~Vnct{q#FnjQuKQE3?iZGK$a@Dp&*RbPjgjSs3eLdZ;S5wcM^ zg9y4qI^J<(&i#Z`&=!%!J|QCLpXXYKoSbKzzqLQLap%D(H9A)q8xbBWs>@8&CcBPQ zLDq!o<1ih(GxYkU&bHKlACLnFjEj!5JO40~2)o5dWsNSpsEar}AYN-e*d+rgrr`c= z5&bUd42p>JNg&^E7Q}b>VwS{(gW#3Qsz+>pkAqjHw~e^qp>%_a0?Tprdt&wY+7DiG zhz=D1l~!ii$mDC73(Q@Y!hHW;Sn(4A_s3uB!mm7+pd8^O0Dh84qu)Oa4qkYBphsPO zwixosd45kg_pX<$)Q>Fo2u-GNDmP&<>!?qPop(7vVL-!!zXPBTYYap#f0ZNKjhv@^ zkP_Wofm+)j4OH$Cw-ys$sHXo^eePGjVSc3}|7Se)-bV@ieXn@c9(pu|cM*)hH7iW* z_S_{aH;*hh4G!n@!I!GKXJH@z-}F|!dU$Q$hikPrwB$62I2__p>!eD`1xf%$_Oqy; z>LOBPrd44Iddfh0GXGlY9 z-Mw*ZQ4+&ed)0}pXdx?m#!2A3o(?M}tw^Sr8UKu$^Z5@|#B%8+<+ND$L5hCzaa525 zhSldujJDLryO&=m^{_J<^QXdUJ-X;E%v$hMvNHA|X?r7|5IUDne@t+*I^Osl=VC~+ zGC>rGxlxA-`u>ZyNzd=MgRy`XHj9!2hYQRu+*`QKJz`87@CV$a*LUs5-m`nyl9l4s zJ7Wn=(gM6B6qtG zUaSx=c1RCPqbMA=BKV7=$WfRXL`>!d0GO^;3pnURCjt3Ux}!(a)N1n8M%_Zy zc<5SI0dLzGxmlz8&L=hB-R1^po8AAm$A^{~XA4sshf7(N=psQ+iSM=gf0*Xy^D%>D z^U#UF8hR5WjhdoA?YN!x_5fbD`J-3j%bw-8E>5Gy;U0I^N->U0$8XMc2NpC1QyV=2 zjq8@WTy=F2=zAbq=SU{6w>|kZjTTjyd-$cHZq1L!KK}U*@A|aHcbdG?Zm&|MF8NR` z$0K>r?wSS3nae_p_Lz+No3iwkm=$A&1(kT4Q5Z{3C8uRfGL=t>V+`S|(s<5sPeIsr zm9+~Dphr}wS#Q~GGCJf7Fi>VcF2ADlP>FtdTKchNW$#^nLXvMFphZLO_BeRW-q`Sn zt@lEvaY=O(EjViUIrzwTu~xz$y?KipiQ##ov<{oHUPVDd%o%j(X8jeU?@bWE>%937wLt*$!Pa#mQO|gGxib*)vzul7633%3y8l!Sjtw*w96K#7_(ohYEb|AOo z<-OcMtIKPSx)nv*6f`Z0#B*TSuGCG z*r+onNA&$kqC%yp2!$S>@K6rl%_xK#&TVjY4Ofj39=3cLomybR@elc0k!b*GmtO_Y zCZx{`Sh)N}^huyFx$}cz$D^@u9Z)7vTGNM){`%T{^Oeh%XQ98q+bc@g&^oFE6dWWnf;{xtyZEPkVjBrPnxoiup?1+0Q)o@aD~@ z=wBI-clTF&*n4&J`_BmseV(1=MMYyEje!iAvrAgENAGFDEZ5i=xVmG5&z}~F-zCIU z7hc?mZTB|cIb9(31m!%hfiq)<@*@K|ULF^4CB59*hBwGWg?(?AL5@&S-OndO$Ihu!H1z zE|53Gky|ypl4Je$tUnX}cD4UNWq)ba!sNc=g`dHb*U`}Cl#9!TpYUHd=(^H1OTvakUo#W?Kl$`WsgZqO9n!PB0*)8!Oy%wFa7 z;fJEN;q3++J2=1=@2(~-dS5AUv|^vU;QCibWv}=2XVRR{2@6{NbrYk#)%~ZiZx8rR z?xvR*(|8-Z6||hkyj8ojV*Xv9orgZ9-`d;q1xDGU;1SQIg~9W~!4y_J>K1YD#bH^~AfS7|CB>D;!AO-Fn zPPU2q=jZ=#rzGE{EX=$;V0Q{iOfZ$mUW}OqFM1mWI4DEmfx@h_b>-EVcD~0>Z3Br{}7}{c2^WVw>HN56XndDo1Dk^e1YO2C(^r z+84A-oS4>}@u>ZiCe2X(^wWoeUE{>l$|w@qw)TUcS;T-V>LU#d3_r~tA_Iy=>yS^? zLDn5z_jT+HzkHB$VgGjI^b|&JJMWzsz#~E2t$Jc2=Lm|qLeOT`=HC1>E>6i8Bvuq{ zz=;^y65PvMil`Z@yBF@1-;IY#-V3KE&zyX!RW`qC%m9j59`#DR09ml*3rK?mIK01> zSO)iuPECrz8-|;qH&s{+E2|;#LWg%c!8tL!E-d@~Z0*Mrmr^?zms0b6j$)$IzWCVy z|D#*)Fh^C!1WX=r)TFe%6g{%0GOlWyn}FR(BLY5JDkXc@x8HTtG%#ySzPr!I6%{r< zcHayR+ww%p5e9ZO?#Hpz+(I|cp1Jj2jUc{DeUW>ir@MpT#^*AQj&LlxPtG|kzJ*f8 zbN%jNwwn?*14Fl0FJBa|VgtC~ZL{9Z8YXH(;b*}@a}1R90)c-sfjiEc9+_zXgfHNb zI=kHN(DmKI%Iwd{r6x$ZCv!w6$~!-UlOy|Cxa`B z4GBNxf@SO(SA}>q^$m+T;%+T*4vkyg#F|qQ;Ecn-wsrh^s zR8=oW1-(qr@?M6+<=|VM#Ctr?E_=K*M~nQ%;d~4Eu1y?3AOzpNuoyl>iIW(!A7tfX zc~*<^l2}H@V`h4INx8~EYpHJv+z^PHDXai$_neRbsSwc!D7Y&h2PlKm(z1Kbu5M+V z1`x$Ku_(sOAMj-aP_TNZy7sw__%mPp+c^JjU^R^WhAOcbn=keF5<^1v0rHC$Ohr+^ zqI4aGppWiVa4g)q?zJ|r?0pxHc{OS}%P5}NvIih@t@jsBnehFcHyx|6=xpJIn9X|w zwps*gne+bV8$IkZRN8qOiZhLFtu@*lUi*K+1$1I_`l*P>PdTQaQIx;933Ev?7-OXG zyOkunRo}l|1UG^MQCATh@HqrOIUVZidSr6Z5LvhA4?lgp{{%mNG06Ylf*-$W6UZ(R zc9Jg=0y6!QEBLs4gDM9v7bBB%vuT|OdEf+UEGS4MU6R~hxaX>eN z)j*d68F@6tf55Lq4034*&OiH={-spq6$(I7=3q=ivU;8m|M&|F{Fq%SB)TBc-uM}ybkJ_2wu;|68lEzBFpfc`avKPY?5|-Ip^To5M9Qh^ z_fKjf&$6?7Ke*M$9;E8(UPl13hG-#p65*dhRoonQKFRU90CaaUP}thJlz7%mtCQ%i z%1RcqmPnt{`D3g?i?l4g9}^J6)OhRr1yPfPbTso-TaP$0R*Dt0 zS9QKO)fNtlG}Ggzs*pxp+p7yiH*uvibdiNjEjsq7VREcYAZ1yHk(D;xG2i{tMnHZl zZ>r9sR9pY-YcxX$TQ$z!JM%;x8e|a?$@0_oj(N}ug*mH2G-q1k#qtl88VF?Egn=E^ zaO|#rPTu?fa;eL$({?OG!k0CO78}P<#MXVy){;hlSvpUm+IK=T38qtW9@rufSY;PV z#M=y&6k_!MLe0#wEAvhK}ujdeA zw~Pb1-%oGsow9j?GAQpx;W!Zp^F_vaK9-4xg4-Rm=*N1*-w0)*wZWLpDC*$Feq2Eu zsHB_$S`5*?5jTJQz*s``i`6&#TfyZ@cz~Q2MN7+sN+a{sKCB`L&<+b~+3x89V{;y+nFtR36%F&Xo0AXOu&G*K$ zz?MtHWYqwio-ACzJ4>5`7hNBD`u|_-y?0m}XSz4+O|dt2Y%c+fZNNT(HJEN$h+g(= zC@vC&6+))3!3fg?NFYG8B#v!5A($eG5<@IN0x2L1A%q|{0!%j+qDcZ%M3?A@YJcPG zclKn@N#1kL`(D@gy?b5Z511J=GtWHpjOMxT`&VEPN3yb1I39+LiUtxdvRT7`=$qiz z!_I2XCm{f&##=c8@lL%*?aFE}-sdy-PGrTR+X5$#X2M%vg94xViN6xN*-}k%v}A^a zimcQt9u0&~ycYPzs9;G^OPDtT%uJ8KEoYp1p^Eg>p%E6vN4PL9kQ?6~d5Q04IAl|H zt+Mvu4nnY*XV2{m%5lMzB2+|Ho?9@1ZRc;?+oeNkXp?R&ZhS7rFZM|+kekYJd84v4-V0D#1XX))iM(e4c%3`_v+)E#YT6}Zz%|y5?$Ug!u%O~VPmM} z_T~l_$YxRcLS|D{_`F)|dW&V%4A}KCN-9g9=O%k~0g;22#A~46GO_I#8!O(o0 zFl56O;Ag1U{Yt?2x1)h}XKz|y_Huo!`fBS#J>8TXh(S|MPSZA(!|wf?+XpSKL408{ zg8KPVV|7vgy_{E=dd=EbBzDQQeaBPdP~7cvghA9_uI^{5ls|ZbmL`Z*lMih=#H9CH zH`~cEeF5#UGYHk@mGo@9rteoSt~0a!D1cDo;om0QZ1YK>Q2a{2Z8F71uv+l5+Mm4` z=lBJ#=PKA&N)E!XFvW*zcD-IXM)pNCf6%Tj%D><%^EtnlE9&@G7DPCLyEzIz-)8Pv zycj86QrH+s%{HYW?fT0-A32p&ZaLvkGn|r^;W2U1CvfFi<30p7GNcRnlB~@{H*|c3 zGU@%xP`a0t>*eTYvdVw8I||0RH9pbL%z*Qp*Y{qi1f#k{pglp{_F4 z>3ku%R!Ia*x7%~bIp^*EY{!=e#u!(o@UNcJZ&r9?*xRTbsLzK&`%!^vIPRlcjPTbk zP+Xb%jfTB1mankFhQkV};Uf9R$IA!I;s|H?>J00WlU>$WUAM=N=Np+|r>fkp*`Sh( zdco<%+1b$M=rJaC{ShCD)<7!WSvq}ni~@MOkpR7a3%gNK7<@V=Iy0V-Z>68Dcx{=K zi_!G8E8|WsUW{N;g6Wq~v!$extfNKIIJ{{kgW- z5BH{u-KG#S>QmddJ~*@X z2cw@K=ExC*mu7)XbRus#fpdpFDYMiHYobQM5H8`myf!z+6^vGCqS@$9fgS^+$zppg zjBy)T6Ve#U;SN7$BSvq2u@Q$N<(%z-V=|wL89u5B#Y+fe@Z9*YS=ci`9%|x6xYK>Y zOUUI89Rkz1XEKA2JgLmjZZB&{TUh3SIc@9EnEfeHPbB_j?R!^GRszx*57{Ic%Ap>t} zAjsrATIG8~;Ff+KEkm0LvX#Z%VilK)^5QN4j~&?thE8T+_^!7R;0`EnjU(xM^2I-P z$Up1adk^Qt*3;gOBeKwTFpHtr^*$Jqhrc!L0_0jH$Uh-I253Zhwz zTjG;9AO;$<%AslV)N?FcX|A_fyLDA#0tMKi6xSN3XX$WxrS>ElNKn zh`gUiW4ie3rVo(NNmQoAP3U$ib-mnXUVeSL%^!#XgR%Wku+KrNRY%Hv-J)a>@QM zQUS!MfPq0LZroFO{fjs9bO4nV>dnIUcISt?v+V&0I$)Vp4=7jbu`uE;Exj^{^50PA zA*X9d!*#=zJpoIUaX+yO06_;bHUhw11;7MB5sHB7r5R89&||(#s)(MkcUw$NP0jcT zgznUtnwhKkyr5WrX-lPCHG89bQ^-{pntA1Oby#>y9aczON=kZ+|G;XYoas>VN4qwp zZr__H+)9IqbWi$F*htyIZTp%(;_9XvwD1M;U$qAo87| z<7ed|c$#dk+?*_;4EX^p?9zL#c2aU<-~&s=dhJlC)1bnlv!h)0Azl_%$mXmyQuiE| zP!oKR4yERDZR2RU?>+C-Lb9RbE1DA#264tf%7^AY=kyBl_O?zaxWz{WQ-AE?JKqo1 z!nqL2Y_(lOQ`i^N=y!O0*If%tGPd!@S8}r0JftvSDl0unR|;pY^)B0w|-{YkUz zJ660PiEJ8vjp&!2^TeI&ZB+nvF{kEO7qaoyfmxA7f%oa-KSW==u~J`A)NwwE<*i`# zbPT|tkIfI9#i{5R>HqR@`;U$K+d7_pi zj9Lc{^8P?hUS=vfJm8LdJM#jmKsFGZva7zhNQNYa2CU46th?j&*qGR=RKo1T8!}I( z^9_j$%!*+KfY&NLwJzc_u5sDknf?pLy+yHwTZp7BKoM>c(4bcFal}N24k@GXCI*Mw zV@)233&emMEj1E@P*!FaM^&>VY39aPBK()lv+~Mzl4V%cka0&vOESlXLKm+9W3`9+K9nUaOC4|C&>y_p(K z#^6?DmY3gmf78(W_DHq(jrH~SFCFv^&sM$Bw+w(R{HNXieS@E6j~uZxr@q($Zl|!t zrt#-gan_!=4?1wYu|lm;KO*+((u#Wr^`_4rG2!MT!9v;j+$A9;acSv&x;WXDOp3EU zMI8;+IPB$KW`5i4QL2sBe&V&GibAD<+BKT|k0xxHe?LK|_JSXf;Pzv+)D^mzdMC17 zTm)CUYyD!6-W~Jy$S1u`El)=vOU}=5jZ_AvQTy7fZFI|Vb~O$PM<^i_g*T?ePT$Kl zad^{}TYGQHohEb&Qz(Tc9tO8(79^<@J&G16Emt`cY~UZ-;neKD5)r=?f`GgBBA@~U z9D+c=!4PO40}K{|uNLT#i8^VQQ_}pdq-5qOsC`~(t6ucQyAC-q$8WBdgdz1qMa07% zE~Tn$$V7sp(C$cU=gFikC<3c}T>F}oKpVtE$Qp$mrT8*-nHhE4UM^%N zvbrlKvy8Ynr#smX+9`k0=OP8r(r>7J*nwygB>%A`+LbMX43S?vprY2sBLRu!|oZ{trpZz zv_X3}8i0kW0*Z!V!%D+w2>_7d@t`+--7~lcPxjW?6g?(^^^P>id&e0xg8`QVaLg>< z*~#N>Y8Z$BV6tf#LfM1z&R!mvt?_v6ovBlW_)?XKUmPGR0Ma~YJl5I`SHo`~kL|!~ zzRp7`qoh$i`-|HgR&ZLv<;^~8?3r0W9;rtF&M9`<|19Lt3lVNVlt6yWZkU`QM{)~N zCyST}C-n>FwXSXK(k~GJ%Z-v5!>1P8#`#rmJC+v={jhT@R>e|9!)&MNd&e7QQsF2W}dGn?qCjRpxa#GrI zU|0{-`Pc``w6yX&?Vviq=FHsBg;SN}Q`us!I`Ljvx@llbymqFDcA0^R52n?m$i;^#f~=#=u|z+XMJFW5G{0ryYt4 zIf;pPz z@6qJlYS?$Fc{#{JFu^&m7tbvB8MmI|%i|5QhrqkSbNC3MwVphP>7-s1oN+F#?c#RDe4AX=t1mb16bMY(eJhMb1Fv_h!0&-!h#${#jtosREbad`;K ztRLLA8zURd1ld$^@mkrAG@?$PBuA8~ZE)Ycigwu7f6qDHX&g^h3fY@Q&vxJPtf;Mz zo8unW(>BsGSsw3x(UOZxG&K^_r1@oGqnIWA#7)7J4<{BGl`VJ?Hnl@ zpMKrgj*B+%1XnumEXnn<1PCZEM)UV!wz#L2FXb_s?!`LuN)uxbANUUDkU?@74-A!q8YO$zi znNTKbJ`uq&S~hHZP^)5H5zj7?HwhD&`T5OE0v1jGD!{lr9IA2b%jQhXNv>;Ms{DB` zo(L*+d`K#AEYsAGmA>r78t>T_KhmRmtXq`$O(^+LPYw3;#DB}J%ZpkcTAU_ojz=oV zzx(+Cj(nomMc1LGZ_(53k*FbU&5S++()oocKF56}Y^Xv2a+9a0TO?#h=O^(zm)s=# z_VZ7NeLwq@+9o#H7FoCuDpZx^*!*?=L;pO5XvyPtmY^9QRPm&+v-cd)^1_V>w(Voe z5;*)N$@{PWaNd9B75#qro_Z^ugqn5ou^mftRD$}i8`KLLF(H)8G9jz+mOP&Y4UT`h zjWiaM3ty!_vg>O&9M)z$L>@+rP)$piTPLMy2_J8z1*PYL&cdDiG9S%`wJX%I(;xAo z!T_Z*vlsCNLq4mrfENtEmg=ChJMQth)@Owoy^Zy~l!jOk85K!MtN0i+Fo^yJ>qL+s zRA)b!k*XN(#3tMePg{|iTT2rxV+`efO=^@f?FG}aG_qfO@t!}|qG&0w(&vZ9l0Ino z1<&rg2;=~>q*l?#W7cdlh*GT)Dk@ApK#Y*93aO9zWD9J8=i`=rPBYGbfQ3J|Q*nOT z>pAJ^dXIw{Ah|@*@(+z_1e+NItN8r*i?>rZNv9|7*a=aUX#3;EHT3?-iw>%1q5Du3 zq4a&zGr?&_LTRyfU87bsnG(p1Lj&R{;m*j$rVv#+fzm6@@m8F4=Ry;14y`?JjEyMH zgJ&5dV7G3h(`4JZO>yR(!S!X0HU=(rjoSHX4StE8uK~WEwxd&HZ%3TKB;sl?s}5tH zLaw1}EW?V%ri_W(O~k1*j3rS z&3h&4#g{3XAE?bG8cNiT9wN}UCQgj$u|;hYSE?vYdIR7K>gN=M*kf9i#a5O?I{_U- znSz8QS2vSm`l%oH2&nGsd&-E(aPwe5&^7y6+8YQdcir%|qFGxb%`S=nYTTEWg~KW{ zij$me6*ApIp6g|~SEMy2?Unq#^@&o?Yu4}cV!rtKO@D7YE@m`IycM77Nh=NwW1ou` z?DBo)#+uYJiaeg~THZGSq@rjopXT^VqC7{qvIG;A!`Q8$-eZ68*@q$R8YNDGp1~_K; z`6a?nKL|APH!Wa4>UDwjFvkG@jNlAE;2{FAz0;|wfS^}2rI4aUtOwi?E5c9A;C7K} zLV2u=pMy!QEe$TUFIrB1G6Po-ipypeFe#gD%CCkdZmCwpVB~bjV?>6eiduoH+8GKF z+D&(W&JMV)MlDcJrkk1;6fyT|5_}8?S9PD{Z~R-Efxjn`xqPu`J+Z4vw|q0qg}yI! z(b^Eshs3aT=liXd4n;^D0eSP1qyJfXz+mO^FMhV`kt3E_)*SB<)5GkE>2wF$B>L54*pJqS9d9RGyhlJ<7HAae}>xK z4A5v=DfP}}K~!~L0rs>upTfL1*EsI>fZSYl%s7%^uD5MajqB2tc5+L#X&U*wP zMp*-zM@y##>eTv`G4d9%jEdkZ!$I|0TAo&yg@!gfUW48PF!Pf~#HGNL2sR zKU~2-^Gf9U8VI~bpA7Vyo}H9<(E6OTyh(9pqh~_0q&WHr7lxyI&@2H9S-;zo{yP|t z5~tbHDtBh#3!k#P>|iO78TAI&0h+dDfTnF`F3bgF6|pzclB|a>>hoxn&Rzz_VHE-B zWHT*d`A4Z)I;m|Z@ud>mW44o)9Wc755UbsSpF7vbMUIKm<|YtM!^M~oHfz{xNzBBD zFvbg0Xaa>%`Wtp)igB-VcgUfOSA}+IQ83k+>vibEo-FM4p`NcsSmI4&y>5+g1?3Ue zS%=TiNFR1J{WIr@^Qdj#I}Uy+2LYgNOv-b;lxa$l-g6KUjks*u5-HtCmm#;4K4Z>? zspcCm#3-8dx>03IAea#0RKE_A1=Xk+^tvr&jiLORHR4&Z_q3?jM|O|vuHXI{l3}Av zecB6t2&hm$qop+jvF!x*k@ZBfNuB>q!BcUFw$tP9Cs>7@!_N?k8MulpVtE#^3?N>D zK3T}$`|cNq%sQD;Ng>WtfE;rrC2axdws%706d;TO%#DY%tWRws0b5iFn}~)3R)A(u zXjp1$W-Z9-6Tst`LU`u`?Eg{f>%!|k#k*gNO~T&~o-MK2sD~>FnH(1dpOuGzQLpp! zcs>-3^LHAf6t0iET64^UFsE+B!Gx(*&V^$i+;$qhdB}1G;E2l$Uyc<8-~dZ$TMxd{dLUmIfiCq>!P7EJ5LvhEScfG~_9pdE1= z!O36D%>8;2!Fkl?@(gk13oyX|{;&PJAB$BmWB034v(5*nPEm;E56s_{R?}RjOLwt9 z_LGFAN4eo4-Nk5Rtz_6s%373C=wIIHPmMVWKtaly4{HLik)m3a_WHM-_>k-D>gaGx zMm|20f{8&T(Y;pta{%Y!YJrt2;uSN42L$h*3@vVPh+R>b_+IEl?K73Cl=YmAg;8Z5 zrd>I*-^t}-{D^6ZX(={z0w=0rSPU^tuGaKg?^*Jp-nAIZAxtR1OB1uvluD{oXa0%s zGt1#e7lNbb_d6ePa|iEEmPyR~&-O$C_}6!W=w?WJgo~T1?jt!FzWylEl^wHpk zg_4hE0Ksi)KCw*8Y;y3jQS8q~&3gg6rlT5fk7&-SJ>cNmM;W)nOwb7R9Bgb4Rd?WIZ?o7o~RV4D_<3a5?maW{^JoXKnazEkkn)>fnDR)BvtCWq%m9DRRZe00qHRk`04}JXSt@wk=jg>tC zpgxcDLIDhkF^`zNV*1qcb3@5BjEg1I3D3Njc8X1i1!P2MMb`Q^((B!$PnIo_%nLdu=H*=J$k*z{j|8 zk;&vv=cuA;#8^|zMa%e0)d&P3g~m~aXPrF=)*T&Pb-&mv!phGdK$m+mD9jJyQ7vs2=9H*4_#d0LgNrR zSD+S6CGFMEdovZkp5USdh1|pbr*7K6A8pZV*xQ*0BuHuw!Cb=?0OPXoCR89Hf zXL}ww^6^20S{LioN6#5c6yj3flo$3YWq}exZmh#4SPBp@ECTKgf#G>e7W?$UK*a9e zmQRgoj4K<2=;^!v4F?RU(u=wPe2^9j<%fz)ZI7I6_oyDPZVE6h{Yw`g&>XTYEYtk> z%Dk9%r8WKDmu~bYAN<4l|G8KG;??rinok_dX}AlQ;N8cwhiBs(NbU_t-At=cH6h%= z$)G=m;|g~pB9t9|sAX+X!@8Eh*NasXub#mY?shzO4if=ad71P=_A=FmcPmFlI>| z?%5k|Sd44B+&Kn-nxdw&lm<{@+l3-e%x2ptVYFbL52?dOVPp@L`>21M0dQHQm^Zg&XLe~ad!^rXQuisf5 zLVb?SDrT>&1-_pL56MFFl?GNDsijW|G1iI*QyB~)<=fV9!FGv%39K#kcHf7~>NncB zMu~oz+Fpez>kROgB@@#Y4eiZHf{hY2`=QJJeB}-z%672-6~!+1d3i7gt;aMe}UQSwNgOvljdj=~7AO zqB$PxexiOQfbyD>R#rKeWpisX>!avJ&!1H%KhBT4J~D@1C~=ZvQqqeaelsWWU{{32 zdM0vIy(wCWU?r5_3^dtJxbj1vv@dt?P>PX)RHD7zwz`5POh4k)%?^x|^TzmxX?ms; zm?UxdbL#3$29$W5l> zBMz)3&(+cDb)J6oweNoA0)WjQ2gYA#O&rVEl0PDXsj_1eS2AAz&z_usN=jdK3ZGoWUedU$Qx>p~x_apkX*XmeAHT-ql9;z{wC zS)af^VkVx;LA2)y($jI5sn?3NZbzZpXI6Z6QQ8I^^Ao#`3q`t=!W5QW{|87Mn=DYY z^0t`1aOnxxQ{JeWlbC~S^4|LTRp*`U4+&Uw#1$6OS zYG@3nWc$R|=_P+S^1EHI5>MdDgDU`jU*Fp~0++UJXJ?*5BZqht6{mbpyIsUK}XeBU2)%vQxPDl@uR--T!*)r(OR3>)h*wW4o6YVh+U-rE4LfNhJK&Z>Ho%Z;vck zYrZKh2;QhZy}tqY6Ora@zxVQTt$X^Xzwi3bzi@s!KH5syesr|`;PGm2pN$HqUEJ5$ ziv8q3zP8OV)zthtVwrvll^LVY!Ez)XbPgsxc1OAWsZT!d@FAYOzFXAqiSMQJMi(Sc zcPJ(>>{%36X?k6!^izA64Cru@_Vco{8^gG*T}wB)vo`Xfj|%pz^M_U@(tdREIoF6u zCFc*AYYQ<18aocx;t&p#m$F1o>4H1q-ug4S@wSG1vhf*{Uw>oyqrd zP$(=lNP1avKki}1$p76bMyCY zmSYEZ&i>*UJdydlv7&nif|G_3HgcJ8U;J!$Lrk5?URm%^%Xo}hRm^0I$q|O4(nHVaw6JM; zbg?n_j4q*AL;F>qjDASoYo0h;u3hc5X~J?-nAuQv%%N0m#1-k3pE7E1Ba(4&<%sVL zrWQG|Pu(foPNlRN|L_~4*vN~CAz?m$99CnTc+wo%XWjKfxnknjYD~h7Dq>B7h8Q9U z=T$hXC~BpW-$0__)_G$z;?pg1=Cs&)Xu{j#s%7W5-GS@ivwS{TD`>&-ITLe*ChCbm zqA9_xU%5GusEdsk0+-GQ?6VViPU9JqS!xKl%}JMRWf#zhL!Y~ZbYWTCHA&)41M(57 zPFoWke_v-@yTmVzK1SB8BceSxU>o9O3TJIOK938T!#DTup0Do-V8jX>gEQI`Abf>q z?-0hQSoEL$UgBrDc5wgLxj}n6`YN6#ZmtI@7qzt=;3(uf0r3K6Q z#r6uhEU%%c3N|oFkMs-KY=a<_x3_uD{tEI|>d6Dq&0N)9@~nP9Sw#B4g}=0U;%?(b zg79;bX{btieqnLyLx=I2iDAGIdA3Hx0j+A`O*IS7>prh3s#R3W)wTXB?eAmhsQ(_K zHc=WieScZtGCAHpy`LzeSaQc_afy{8@B+Us9*m*kdhGhieyaP6&bW#wizi~~1g#`< z-@-eM=5Y2le#^#ZGsaLv51jQJ#N%?w{fl41te^aN zL(lc^Xa4UlDEL;lOh&he5{wpiQ~$1KTVoKuJM&J@HdrMs>%V)b{|i3%{vWtLfSb70 z{u^evt+?PEmF>HoU;L&bWaozm(WOhF9di`GqhCItl0~L>pZ_@P?JeGmOHP-Z%|OgSiP!?0Bx4!Ns$x!?0y6&P5H9fn zE~pk&Rai#Cg}LnPi`8`36D{-L_QnE5Tw@5CPVZ+aqNv>pr1O z`;-p-2~w@6Z}{f3run#>o2^H-{E1 z(nwK!S3x!y0aCEweKt(pLJIoWsLn zWqOw%Hf7nIII>#%!!Amkmn5+Yv^Cj;!_4#12$qN&b3=N20E%$a-l|$2PX2S3_xMR3 zO%~|PQbhFBBq=ZIWHJx{iL#3i4I}ENu$9_Dh|wZVqrLL&vf8F|-Ina3lV>oEd1Gbi zagA0dlm(U=q|Kgw;4L$%0#IimPKp2~C(!KUo2V-vyYD*y>G=T(7S*=U0@D-94O#2l zdTeD&9y&vGswDCtjdrW{g{hiFS!iH5=YDsLCc2ef)0klX;su%N65QwX=PlJi-qw90 z)qA)RC%STMtKrmBC*Hp3ghWYGtVYpg$=9=N-t%td?(Q$yC z)xEy(qVvZJlQ|s8jg@tq>%*JgM`A?wCZXe94111oOc-Cu<@-RbCr$BR3TT87&61v( zsHXdkS6HYkX^o&(V|SJ!hRX@20ATYptKZp1a+V#Y*@ENt7*UbWN6^p*|SlEz_r@uKEy zR`ArpXW#n64s{7b>3L(X2=cuJMWs3GDm&_Cc zC-nmqoOlj(RHVMn!OY&n&$!oOWMH4aEcZK*qG3KN-%zSA6N5)l)mj!NQw^bAKR#&v z;>d@H);K3$g$WSLD`~6y{Eq4aeZ=R^V=bc0V}fEJ27)H z==ss=%RL8{Dp%UWyi-aty}0LgAiRhH@B_uKI|@wmDUrx5+WbF=3?qGizU_ zv!(Kd7tebcuqBnCLj<@Qh+nOrda(e79KHn%V#nKV^%`r=Eq%$<8*`{ahXt;00lfgg zDI%=^>d1XpfvPUquab~@zZ4_JQAyG5$~-Cd(eR(ngcL=`qo?IYVI*~qXZ;E~goT$P zpwbc3pdqbvrYA+OtHs{e+FlU~x6TF32eij&jTwTNG6B~=mO{Vuc=*06Utwo|uul{O z7!imS)s%-7!L2YwXxoi?=bP*#4ass4Q`R5Pl4-i_cE_n`vJvskO9gpo3TJStt&?#- zoOLTb78hT**%PGB9p79Kg7sPA-VQNrkg0UnUC#u~yKQP=ttUuWV)}bccfOi$2Y+oB zid>e2227uDr$H&?h(oCjTX~R}lfV^65!sS2x<4OOS*WP;-JyG4{ z+&y>A98gJ$-VHkk|NygkAlJ=r&)q3zN?tHV+RfniEgiezk6_>zg%W&5b&jr&wxYp}Pv=Fh_p z{Vi?hw+(s$0}ba70ad?7vQAb{>)fHBuL>ipj|P*r{EO!je~=Vyd=rRKpE?8?k1(-@ z4H;oA#|L|Tj*dQ^^kk-|hq$NT8oCSED2BI2v3#$KYQ{Rz!#uOh)BMAt zoz-J>iBuXr(;MNe`aUzv*|d5Q$@JRt))(yOdV7&#HOw^%pA-GlG(JTad{XqZX{BNi zor8@TSsn<-W`=aPmUHY?A8?u8tm-x;lp{G&0lQ}e%WmS(op9RL6>x>3NlM|U^0t4P z?ig2=1O#DR{S`yCUAwsp3@*#2uD0$XjMLESGm)gpP+ zJ3b-sY0~E<#Uo_mI&&C&--H3oB=rgjELc>>^;*N4z2(LI8dZ?fN}xujk4}5jlLLd< zpwWy;yBO&H*8dlT^MM2;89{3rM_ssNL<%2 z>`_&5Uh2J!ep9kXRra7I4wg2EBctyLq^?4s-h(Ccrp-epGQ0cr?HempW7huN<&(GDl-pcJt~cw7c4o?!785@v?@J69*zD(8Th-x`+1S~jl=bcDZwtxW zYSE7qu~k5h`xW=GPdOwoEp3&BWh&Zy=*=ctUjN`Z1%P*tmmen!qP$WT9G|hFPyk(a zQkmzh^jx<;h**+cxNdQu^ezPfdPNQ@E{f_`!vG>2ow_PHn}HQg1w3}LAG1C{G!$s+ zPci8pa6Q<<`U#Z7}sS#R~+QmPE?X#V*6!Rw{rKQ}rXC&)*9m65;$!MAZ0x>Ren~FcN z@4TdfWvXdpNI6LDv}IVeWi(R35%L$7J1HqijD04$Qn!lkYxL-8=cZ%F`|{$uH(ii- z_TnuSY?5ydZc>{+bM5x+_7%Psv%DMYBbI3zfH~N5bGRO$+ktLd%8vm$Usz{2fR?x|PtVM{v+{6~C`T^24}w4<(X~*cB%0hA z(oB+mkCsr8dfjtOfY6v{4}lpEU;t<(r7G+9Wg>y=+T_{F_)hBBfU(u=6K_|*CCjrw zCl#2Gl2eI(8nKZS4NZpr0M8zz1ZbZd^Xz{52?8iuISQv=J~3{4xBVyQP*_w?PapXC zA?EcjK9B#ajsIKOmG{1xE&3J^0~=eDf1D8Fju;mi-0tNFhV4PHo&@TK7fhWyUlf}? z;I^r*J5Dd68erIE#IW95JiAo{^fqhGDsEZee$xe0m`b3YG5VZOF|Z-`MP($Z@tR{ri8eZE5Pw$*}*rKx)w_iL)__F>2VcWy~byEIJ_jMYH$# zrb+fz>j@Du-^kVEz!!&_gBkQvcJDDV`XDWCW@l2=JpKAjf6ks`)j3~VEb%l{ysNa) zxz@@~?09xqs=1l{m#fW5bH*14oOPYK-06py{p@@DHjWDyz7I$^?7M3Xj+ue?Yj>QI z$S)q-PRM>`eXVPEzvv|%weq5(#5qg7TV`{5dH3S?e{27Dzcv52-v4dz{OzIs?a}@1 zo9DML&fi{JzrA&Tn>743W&3T$`P+o~w{YdRXzM=(i*yxLF*=;2b#w_QIAe(NWP7{S z2oSC=q88ksJp{2*af?NHA-Ec~u)9yN&?Q!t`GHE#wQD3TGV{5n%W$0kN7R;kP4J0d z1k?XL3-Etvse2@#queUZ+z}d^G-qlBO^>%Pre8%xv&~7y0;Vq;2PxKjK~-$q3Q^|q zg04J2+~aFsAMe@zi{=R|9u4mt;Ox9eS$4cxE_w!ny zY4NV@3jGl0tCKJPANJk^Dy=l#`%PDMB~=;QHZh4)x{``UjT(YOoV%+WsuR#Qh{OS{ zfMT35;()VVl`?Tc%Q8j=(Gx6DAz~S#1QD%7#i*cV6cG`P^TgmhYwphZ?staO!&>*A zbhgsF0&P@X;wy53(}2Lg&?k#M)k(44Y@?0bU7q-YH< zIr)BO7VSRKBNdr!Jty0&4CeGFSRNOKZs(PxdINMG@DvLXe!<)lk#Pp9NdSeB>pG53 zo-2m`viIXQWWM>tGkx%{`eeko-_qp$sgjseWHr1^P$Wv81y!cXE8F+IT;}Mh+Mz#z z-XFTNh<-+hUmNXRwAp9pyNZXO`R(iF8@l$GAJOu<$M;yj%iBQpP@m4rE}blrdCi#N zv4JZ^%E_gl@hOxp^P=XvIo?1fdRkq+Z2@NK*Eg)w;j z6nj{!$m{Myi|HCqe^+?{vN4o(BY{ESCH!TqELlJ0DQ;IhwJc0~8r!vwND2Hnb4A_Y z7YFm|$ig-SL~~X~vP~i37X4xSL|Qe$L4p5$9zkh0h#^7zdf`6~7_}ac@|hD4$xuvC z{#7ybPDe8T1fES$*^c41U7{jW%cs%pZ?7v+PJ< z$?(??kH z;}8HU0wAiJ0l*RgKKJnKMUjkQFXGV>M zq95s*ak}?QUZJZ4kdV&G%<6a^k!+|veBVmnhOJCVM-A7_wGD3|3!~bG8>pP$kMf27 zCwL!;a_#MtEU8yGE*663@Bd5@&8%*dS4oQ;^AIyQA#Q{b&Z?gN;LHRt@4-fehJ~H; z+rHO*j(IDBYG8ddd1ELo+X!$m$VM5_?KCt_if5Dlct^h?(RXEY@FcWu)v!^Y++mF@rins=m!GfW=_<*sPto&iEp#W;3cJ$3Z^4-OK4NfN<{Jo23 zLnKhm5>0z%#H?@ud%h81@{OWamQ@{wiPs`V>kGofyJsUu>yqSWfmcXtQzT%B`>%;z z40(=40t*8IfVs6Dy;) zkXJJ-(NEZ35nMQUJ8U8$vLBRjx~FR)i-9iJ=&uPSead}^SxdN}Ws?jZnwoYsxNG)@ zLx(<@o0FJvU#O!yp0glIp8QRvzA)|ixE9K5JyPQxU@JvbS)WR+wH#!f)-k;*1;B=B zaf>fxc}A1WACqq{hxrU!DD6O1{(ID%Gb5$q(;`@BXZMK*HGVV^FFq1>+OHmy`(`zJGe6#RA=;+tv5U>t zc;2Vnq0*aN!~E}9cbxU&~gabJ<2P@eQm*M{2ibMVgr<9GR@byfD< z2S^7?-W~S=+UhI>3N=8$*-i6Ut0{?xQl4+B=&Itoc*4*00Vd5t_YV|Lpfm*_84C=* zeXKSM5SOyn-d@|9^@)yJf0Q{)@xC`2H8tG2pfApMe=LUEwRbrl>q2D?vQ*=A`0y;} zI*^*O)Kdai6qzjgP9J5rd!T5++B}7s%_yn2faBeS2s@OaspjOW_~EZG$x!5W_+JD`!)lV6rjxH90YLKRdiy zL_{ZbcM8H|S2t=g7c&`6{PY~*@bt=)u%({?OZCc%u&$(fnbe52PoOUD#Q; zvfh4vs0ba%;O@tbY5Dx7v3YLRR|pR7kb$j4;wcs@dvX0J!2VO|OXafICB?g(nk!Dx`% zWlt-n(m5e^6H|qxmNSqJqq}tvx~(!d5B+$ zhdxOS4g7k^pg2ZjbOB$wtmGHgrnBLcmVRNT$Eif46=q{Q829=Gc4u{eW*DXYeMUtOVNTk~) z8-WX9j2T9(Y@n_8x0ux%ZYU5B+zWOneqLH{J$UhAj0I#xL3&!Ep6Iw&h4hMU3)o;3)l8Yn^|uW0>&eY z$kVFF!(~PCx2YYCy==GJ4YZQjP*!8Yf@n5Gf5a7IR4Q>h**YHRv%4JNH2>0h*@dEG z2b)^njE;{_a_GOMEzRIV;kd%`bK~_|@))+z9JG(@%BEY=+Z)yH z&4k#T*tA@@KP07MyOEpF!i4z?EQVEAu|{7oaED^7pCnErArP`vv4gUR&Uy|W9O)xN%Ct8cao)LjGSXLSE&o!?7t<)Z4SuTNu!pY8qe^xaEC&Nm+KNt{;w^MB{hPsd5UE(rX-vrCz2=YA$aqB zp=i=&gaB(WFsZD!Gu}+HpJ#k4dGil?|3ir(mfDg(fuC2&MPxS14bvEyjq2?@5YV#v z#o#NqlEHn{LDgD_PW;cD3$L~UGc56En+wrzf~q^l5#t{C2P3b%YwExL2a5-qe^YBn z=65K|h-u8AOb{jqY=f7s~oXy!&}q44{ZX<&Te%raNE1zb`%$fBlGR_#frQKahDS2kGQ;y(w*Kb z&+;!nMO?`Xj)`dzG$>U}t6KSx6~7!c5?`|4dkITh^DItl8cB)_YWGITV_e{s%?yW< zsxiHzgR4>AVFw5gVaH7oQ^Og_7zJzK8dWf)h07hZ3&;g#G43Tq|L%e9*ao>4$N5gR zpvr@plLwx&`&yFrBv#ej?;(IRAkGsW10YzvM(9Sh+80T$gAs{Z8&4;`!8zEG5JOv*VHZ|Onh&q?Ql>3wb0rMXP8TuK{cK9I@_2Ymi3yE1cM@~ z^Y1OD-d#McVyy&62CeS`+F-I08sNIt2Y6;Q6Jp@;i`f?$)q=)(mJtAxs-hcr^R&<3 zJah=Os{CxV8u9ofRbd%TU`LJFJ{_>H=|A%5F19aertif&#Re#Blxww^Pl#{d<0Yrc zyR`-#E&S`xpREnI#GCrlF{Kr@)p_i=?!GF2R*!nBn#NrB{2qaX3%BjOAZ_hnFPOjB zTeFW|a!pW0{BCD`F+Pd;YlJ%>j8{(fijh`EwdZNsk!^{$#BC6$Cq&|6(U%*`VCvqd zSCxDkJr>qMO)V~xO(hq@;tyco+IXvGmQ5EkmKJqmz*^bW2X!=RA$k~(Y#z(-z_$sy z>XSmo5Xd-)aK<%R+RrE%rP}D6Kf1En2tGZ^N!ydt(-4zp2p3r1h%qg6A~Un~_~kdr zkT`(1HTf4|nANJ4t*7N3ZgHI!BfoHq7mI-0Wow&cznsBDcZB3$MWzg;2-jc_*VFI5 zt_{umicm=4M_5Po7vaB|qPWB5yyW4q&TP{ZgZ7ec%@}P(AC|erG4&^3AE21$+j@UP7QWEgTGXDA4$=vv6G3%m8)i{JXnM5u$#x zl4>mHoYeR=GCyiz)>x(rXdmIm$HytsN+Nw4)+>LJsUpQNZj9X%Y`=xPBz)*jfj0CR zlRcV^%V*YNkWmRM17WhsBtF=kbup9;1=%p>OKoYjhua{Ld5;l+T^#q$66m7&aQUC) zCE_Hau7)=B_1PEd;Zp;qucr?*-WauV zu+woP!wILpPLTYejSbvP+8Z;*Zp@mG%yY2VJ`KwtJby3TOZYmavg%|->@5w~+K>t_ zLD%YeS;I_1{DGO0e4}z={CPZRqV`@h-%_?3KuCWIaR4?GbsxoY33I~W7}%3j(Q95CNY;uz&R*@0|&Gnnt&6pSW}ioM4o}2 zfmw)`FxP@iu)^~DvZa_g!j+!Zb|KBd*0T_mGazW@Uu>vZhY*qiDoOp=NN#ZpZeT+x zvGCv>({IFN&t#2f5ocobkNgoB4xha-mP9k0d@y404#+aS?)KHu1zHUXJtd<%Z0|Ce zU*}$rwy*a{R@u7z%=j>X{%!hbD-kOieFN*FRBB{Y+6CA>oEUAjsnCIC} z8D4Gi7o#Uq4z_zOrc&KzQkZ3{Cj=^GS7PNK=OnZlPY~T@$Pn4c^42JGz)pPY-34&Ubjo+i5M46gM<*jP9Wl~ za`cDISBjw`1BN3c-jwWe+bwL>BMw#1?+_AiHlCUE4hV_B z#iRLx-0dNoWGq~9Rgp}TdK;?%iy;dJi3r4F3IFOc70NI`RZ&r~&gV<&_oxfcx5=2C zfu5lFPEnnjH+EjWWPM=6QzakXtq<}nZiuq8O7oUBMoPWc zv#(!cFR`Ru?R*HN4esLA^W(oP%37XAc@v0o`7FRL(fim28#&gEiS%nht#ij|O3Di{ zVE6KU0ze|kb>?rM_{ymw#B{+HxyX(DQiL?Ye=v1?4A%v4T>z!Tfk+JIbaU!!t97sQ zTk_)6AzR&(UhoioR^SW2Hkpk|PS89pQaro2W!B!6q67HZSneG$;0`iL*2aoZ$uI!6 zJ}LK!;-9BZZzT2X)bP)^zy(wirFe}ZR+bU~yYutpH?a&V+hg!q|2fYnQ!KTPr01KA zRy#hjTI;F1nuNHOmANB&Ngu^#Cx%tNs!#uPqU^GN4;VgNQNki@KbYGLj1S}>jc4tg z4Cx}WnaU2ztG|nb7PnaR%ST_T;%@8;ucaCuf3e4W&obe`v}>gz;;yka0X ze{NlP^p_>OIy6ze?gG|?1Y^&#=kpY8ZTOf<13P|czALpfW4Cg>dyqx?KDd7WHtO1I zvp~jL#JgN`=$qEMR}Y2P{I&_5@~eZ62#>Bdz!m+d4+TrrJO}-}c5%^0(PFtth9hz1$)sMgID+FqWG=49^ogsLcSuLs$!&B+Jq-`gjc*JH0hucHyZoJX0tGF zFm~Uw(>knmkw!Q{`|v&WCFuCiwU+4495F0p+uew@P?U@VAj!aG8uFxv!4#$CZ33sRB#;l}I)+JO;fO^fd6!bBljTbG!n`i}71Jvrsm8$(^eRb~8o z=ll2X!*oAupIQv&+698AeZWW=2{2WwL(6%V2!GFpNd%?%w8Xm}4(%Ly*0wRf_A(-Q z=q#SqlhdT5q>!0BlITunAN-E6Em$d9du9xwFEokLzIPxhSd3lrlR znbLD3%%|>erdHy%I)57S)BC$)>Yq0L7O`l)g^b#~aBQa;6*v;L;Ip?Mux@h8?;!EQ zb%$-=jEVBU{_O(lQ<3iv9bQVugIZo%UmoKI4i-C!7Y-bby4URumi4&tZ`*#c-tf2c z{r9vKjeNX!O6oKLpo`*zp30{Vc*2yq15*=@`$4c3(48}JW+W4F~5{Gr#tv4Fum{G3?`4- z(&IS}yYRa8sY7-JtZ%hBe;{(kApLCKnG~tie#Ak5q@e%~1(A#aEau`qV1cvpI

X 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

p?F2$iYHp@ zn?<8WQ$g*yS|dDeD>iH$;NEO!E6-=M{4;D={zpq{KC-Cw{` zKAkFx_q|f)z=V=Hw|km!yX8~iM-9HZU7V8UFp{!s8^&B%2P`;s$#L=lH9`-M zE@9%GO1*|%T>s!$Q_bKat-|V=y3=)+=5AJB@C+R=HYtC09BE6D+KhL#fMcY4e1_VCv) zlI>tLDK)jIBfdKPQ;k7Gh)z7G_<7#Ha zT8nG6DJn%Nm8CY^i_drG;M!rF$ko!jsRIqR@siEx?A04#3`1ZcgMugt0IdX5OYrp} z)RF)UFn|HKE)P?H^u)bp8%A`7!@w}J9$NJsl;W?8j$x-VSHpM` z+mj{9q~wuGq#-u^1;-oIfPC_fJ<$YP=$9>08YB#0edP|Cb}KU<@ct|nL_R$zlN{k% zSPz=8^dg~?#*mvg0KGOejC`8pNr+=@0ZG4YH8C+jG1Su>t-~hcYt|MdwmC{z30L9g z)&=!;yt7(J*m4gRdRupS336Y)w8{zADky$ce;tIBxbafa)tJPLc$CgKmDif{{QEvN+}oJt&UTQ@tEOFk)_DH z)pR!z2J-qvDQ~XL^Zmg7Sp%P24ioi6$B~1QmCuQ85dQ^~JS|a#9X?*Frq!>l)m`08dCTYO#zGNl z7_@AAAt+(k1jLR(t$Rh-AP1Lc9MNfUsIc|7ew*6JuhQAbhUC~i7HevH+X936Rgs)# z-bzZF1}_Yon3xXzVeXMb*1)BN6?=~*Z-FZ9M1ftIv#xj9yE)E^L66e>FC8LZ72Lh% zLo`iOJTfC^4Ij+YQW7%N9Sit{|B&tL{rnD($)m+tnTI_@Rc_8nb!8=3dl_nUvOjMmxs{_wKkQ z4w+Ic=+roy#znh__&8GOmckn%bS@5Kp4V@Co##hD88Ktsssj2SD2Ht`aEbnVYB(k1kmu85m|!42lJWHLA$8 z;GMn~?815vgay?4nri6e5ES%1;8oIqg7kd>#;pFAzcP!=`FJMR1k3Xi3I~q~0W;?a zId%;3r+;X-@x&#=QJ(gN33b3q$X%EBpn`L~U97O##gJ#1QpE^8p}f|4{R>)kM4*L# z_uc-X{IkA~7~%I#)zN@&H3dJy90}Sbgmd*_(tP>3>E1@mg)S!Jpn%5d5ArR;WaXa- zbw5og$CjjU7PC1Nv&Cl#G$WH?Zj9qEaER;qAG@!`>KkNNOl)qO78&H!ovj+_@AiDD z*a2^u=8yRvP4NBe$p(8L7Uxy2#}tfBIa|y&vn%(+&5SA@xpS*|zZ|a$cuJY?kgco$ zc&VnBTk~7nJJu*Rk^pz>4%2t&RJJn*9$PO^TZe74=#fD_Uo>0HUfNtrwl6_rIq>*? z0?zFQk^|Q{KTfZ@m(QmTH3!#{E5DQrH^a|T+dz!|-l}=G=(fhJIf;*jO{d?W{$IZ=bPIBbwNs4;2^G{4xd+Y4Ge^Bdy|X1&XqG3Dx85VxDQx0T{xgjVN39~ z*W;y)>`hikPFrmD1c>qR1DYv{(>Dk7Pl-=|-8CJ596WEVO!{#(0sr@HmbY&( z9ygeh(M{01-;8Q1sgiMPBbI_m711J7OZgzaWQ1OlR4O+Y_*7p?cvrl*K^<-=E*LA9< zqSkvqX@bfhMJ|oK;GScGuM5C_V&qW1%~0Ht>0ZV#V`YJZf>owq9JNbV)FHP7C&Q{n z+97u|2>I_#;lu2_;2ND;oxb|MN9eSg+4Y`ws}S49Ic79iHlgb1s671kn*9@dpW7L& z{YXaw<9sEslK^Rm+%hpTeIlPPm!Dc;v0XnX?+59+!To+R0175a@wqYcjp2`CSB;O> z8&H#kgUcq>i+|o1Z2@r_;~wEFIxTxI2eB-xaW}%Waa3r1A!gXyW+Cv@mP$nE-_toK zz-%xk0K6o#VTNJ(rgUOrg1(|7Qoah{jv#(rVPr4C=So%5{RS1W;AG-V*wDp# z8|W_E4O(lGM@zSCY%5;ubOOuUIc93apIJ5L{R0}SVHtcU4Ow?XQ<5GI0BM7kLA7B) zi{zZxC1x?nQG$bm@v4**CHY=*$slIqs3O!J&n$9u(s+^iGIP<*&C=ZV!t~r+ApLyh z){RwOo$=z|{(1l5;{#sz$tSZ;kb5^&-Ji8hNk5!_q~OW38TFg(AE}+2nXwM@#E(?* z^72&p&_~Ny^3fnVE!|tNW4_5KCmNh9?&fMXI9_C4cM$Bq9o!q49NIS>r>*Y5ubX92 z!t4FqM9x|F+5CZ_vWGExtoEiCB`DEV8M}ehr(2!HJmVVO%g-RAtMhuO_S#r_8te$z zp2+j+6h7FV8{+`(QGI~lp=r=_M|8KwVRv8 zanBvqfQ4;?a;+QwW}aPsr9)30*2EJo_l{Y@-|AVuZt&h)SK)dF^ydzG00 zyPQmZb|$JN6o`;uH6Ht7( z^(dVT1Q7v?&s<;`ch${fggo;5r`<*BZw8O$IQ5akMtQw4L1i2wDi*un;*44J;Ho7C zyJia9&{9Gu*_zy_Fl2|fhQ_Hrlh{A} z0LZx<`?ksi1E#(9$GqGYof3%(G^UtktO}79&}xR93*C|o^MgcV@|PQzV>z|TthV@m zQwX*D*p1zmkZJXYuD70aG1UjO`BdWBUzYbHA(%naX-k;r37xjcJ+KX6rSAvq?!fW} zI2?cpRFtr975ELpPl6PR!MQ>enLK%a7zl)Tf8_VCZv1&? z?_!l)rplPnQnz0F>yVM@S^9JY*Jk{CIp0o_w(r{s-xDMGemC4C-$!L)_fohy_5x}< zRiVE%y#~Ql<;KqW8Xo7zI^FX2P~@22Qd z$K-}yY8y{;lYi7m!HLy3U-!YJU1LndEzr{nFm-PSviS8_jRn`#gE}aY^NVDAx8mqV zcW2h?Lt2`vbQk><&+po8t`wsFyaC_nyT7%N1cbAc5Bb|)hI_U%Om{kcT|Xkfy64lz za7cfTVp0S7>AkQ+Z~w97^3Gx1Ia4nO?#!pf!BjDdpCu|i!SRKk+L7fXmdgcOaihyD z8NI3HL}7vdI|>2R#y3Awdm|2-;48Z<2$^|Atgi^?@?B3&g3$d=T1e)&*o$D2a%%8h z5ERBec1kXBDXWf|S(|r8USIp(4NetG+JT!6#%3!s+oP>_LP%hc4IHJR=>^X|l3-dT zV=`V1rpzMyT;jF_3nomCyYudi%~xNTgq?^OU0GmFO{k~|B#RNQf>CQMK*14kxL6mv z+mMKSZix-Ljk?g;qlW4GiGV+PMvm+^O_i=v&lEOMY-mS4xKpeC5$!n-P@%fhZ*)Qn zG>*4MkH*Okw=WskrngO91`O}`m`v~G2PM98V2s#7`=|&_y2^Sx@D<-m$4jP+V3@5~ ztf-h~*26|Fnnk!Kv!y_WQJAuTaKJ08ON#S*edtYRjx;>N5=NK3gt^%Gg6u>Wu5OaX z$~@+^x2!%6-Ng}%reE1b)I&p#J7@7xE@!pey0qGDy|S--HL!6)c*1=bo)Vk9qH?w2LRh_&O z<2u8?)B3@bw59Oo#;K8nmr{nc=yUGvMnFfJ~fpOH~m-nhfBDt7xephu@WV&24>o$(qs-ne=$DyoT0?tK3jfEUty{y$cMR z!bFFbR+^3rE$1O?1pR;wk-z^n>D`gKYqmGcxDGy7_g){Oe7JR{Zzei)1X-p%Sh;s5 zN>HFAxdJ&3DOU}|`Br?m!%fq>IGu`+vA0j?=>@1aBOsR7BAnG@g(It<$O7jeA96J& zW|nreB6PPNE!Pg!q+lq~s^?-2mnrcde)ZvgS{$49?!)zrpOD_oOk(S~-T`IeCHhRl zUeUQpDKt<&Jrj-Oj?u+3X9=+mF92Cb>NNDl)m@Ev*!s1+b9bPYxsgLHHyI9++v_(A z!wmgrJ=Ex`DMn5#rX*})jA3^+UqFm3^)bIEm%@_}Sn8JXQbboytW!N4Wv?3gNb(lj z_Mhb}PFOl+o{>HOhOQ2*1Iqyf9hL%lZ=Qh4Xg4iFcw0dc$W1J4-vZ zU2Q^oB5izcH!DWd5c-6jH=#y3y&XMIp7L|ZXtgbr!skXQ$^pV@Spn2n^Ox=@pYpH< zM-9P(&Lat?e-~S>0ymgkEJns7+e_Pia(Z-DOlJLi~_NyL_UPuxBA>3ZE= zOz~5moV=cLMQ3(?Znh5AL#UhlVz%DyMS0q$^Yqe-$fZTT-zFh?`yRo&_1WT3%*@{N z4Eo?@AGYgM^_J1cF_^Gpo#_s#TTz=W=TAI4W25+bS0}`VMcr_{t8(TJUYY94}FZ{595>(WC3O|dT^v1 zPq_oi@CbJ-q}u1)_0||F-$=B$(J^EVXb=i`sWBUO8#SSN^-N67R5h@|MTG=gjpTn! zFz0&PsTkQ2%sevy_125{Oz3H2bUWt?TISd;K4`cjA7z~AfeP|qPh3Ai!eMyws)^}Zh8cEpo>llz3`}RoZ-9b;>ZRR(` zcMKdwc4GTTUa7R`eD)>j>qEb|BjK1!HdmZ^eId*bO6`kDiNSq8xTU=WnE#-f`hTvv(r0t`TMvrp1{3c#G>nEkWRo z@!L6T8^rzd+mDBcKTn(3y}BpM>-DX7zVN0U{PlR-=m2J?6>O?AI5VDsQe0n8t&i@iN{~uwEv7hp7McbZhM@zuc*OpRZ%rZ6qV~r5@}H&2U{F(v;c+ zN}Y=Ar}&kRTmUJksdK~e#b0trBfll=Iyf}=i$@=}nYAC8v4?ec=>?2!+; z%?S+Sf;(iD$gaDw;3lGfb2hBKUf9@Wo2u~(ym3*7(bkiVc1aQNfiRmL9kVhY!hUv` z`2Df~CG32h9>oyHPq>*g^sJJH0#HMQc^1*U@_b8TL|e&56~hIt`TaIK*T?CPXAIX) zJWKmjdp_@T@4kW%%EYQZk&l#0h9)p#9YWRqv8*9oWoqD39yNEsKV~$agsI}?V`)XM zZ{e?Ti#&znhKL?<4>CS=>^n89MJ`FItJKesBcV1Riq2XXm|80&{cm z>)_In5^6nsVCg9*tdl8NHKX_|;!@+04IoUUAXL$%G3c-72>PgMWGIenD>*sjgCVSW zxTueeMb8h2NbCtpYF!6?I*+a=~vwJL2^rw*k-F z8SkLzMrJG3ZB^5yWybab+EyDaJYhjzBMwmNMu&U|Zm1E&f!(^T3YZVvR$x8_d3N7_ z;C}4RKb+q?)AO8@Lr)sz)?Ih)40cGE)Q!F^76R}wQIzD!qFRQMH|$aikIUVU{BYVD zrqQqQdp3J54?p92KDeSX_mEcjiI=Y`N^$q1^+O|`${t~^m*hMajgNmF$f|YGXv82M zanaI3%hEP6kzEjCZoaxttpENg_EKF6p){d3;(*&o+S-kulca3qlb5)xiwmA3Nk00i*zy0<61KUJW zFVk@gM2*wJB?On!@g;=4%qQ2;`a6EB8qHYk2hE#ihUj#w;= zK9)Y;+Pp3;rlf1#pZC!6y;lyPIf}`2=0*pKMJ~?dxWj$zZVev}qOf-0{$&N(kNBL_;;yAgc~E>PM!q=UHf}S&9sq=W3Ilq_pE$V$f4Fq)Mn}uL`z`1iYb>GV{^FKhVC7=LbVat(R;)OJ7}J z^$yP$#Mo|-;yGRe28{A}3Zqq1SLD^e0TNB~D(I?LgCUgt>Q(<&blBzWimPI~A!@%U zzb6;p08~vdHO~Q~%cYLi2!p+B3#rW6rS%Alv?%LX_H1Kgh;g?^%ah8VclF%&2#!Mk z{@+jL%@gBL@)@u`q>rmxVID6^nF;R9%@^Q4CZ%NK<5<4Xco+{?xS)_W96haZQr7wa zE@K8+z)-#j{BH`?vS|9Q%%fTP)vwp&-==G{|z`X${Yw(T?JBoi85I_wGEbi((H;bPZ|N+5QRg*E|ooH(?0SAyzh$$aj|yc$aqjwa$@Y!$Kl zNJkGpzrFHn*_Pv}i@K_-QOu%!^xnzb> zoS}cV36NE}seu&P0C3}r-0uP1cU1co6F-~HJEgI&`X|;kZ+nQkS3yAjZPCOSyBlP3 zo$uetjYQ?L0?W|EA?b=*`vuWi&!~H)vv)(LdwAM@5r!sdd;BpL15=Bw&%kxLu(kPO zxXp3znHa00r@kb6{n{4N$yKr6Ity9W!s3;RK~Ps6t=5V;|Mf=2 zT;6S}^(qW2bMw|SW<2w{bJ>yX&RXRJeCR`Ogm`$hBdyw5}OQ$UL_yhX{7!^4El)r2C!7CVp#0Xqz*tc$hhq`%QGW=C}0 z$c_elHUNnO(5V5#Y4rWG&Fy=i@G6~ov@VBF?Oz?v5bJvfT1f0$qhbZ5ab6ae8M|o0$Cy_1i zN?HFr6_%VHT)hed#VEHNQYnNh`OCZKz@z5MvXRd8fK2Kbs(z{x)4Rgdcil<*$~Kk& z3SYT*;lDK3{)h4K|MeH~{4(Pgw%5xV_yZ%i;2`k$)XWQRTCFq4!$~qJE4vE?|A9*^ z3r_Mlkx~-Ozq5oSc>a2W!HpECp|ahF`-?uTV&)X~XeuxH)Ca=7VuJPKq*u6!NRH=L07l$Um(eYdiX?|M#)pz}#mZK*1d znzupqONpSXO)MxasFP@!;LOkXx8URJ)NiiLTQ6#_nr}$RMYICN`fjwWhpI8Z;d_Vy zvg7LhDtd`bzt%-b)f$mrtm4%~IP^bdPrw~IfL6NswgA{v0ip^4vDII;SKf?;pS@u{ zW*(kg&#df8V*zI=C z!zKX0YiS_-TnT<1x$3{;pxt~dtlqB^{`$}dhc)p%|J)AWb$n{qGSmZlWzp6xs-mO2 zqG{*)y2+AR%LwPal)-2%cRwFq9k!5heZ(L{@~Mr_q>+>Eu`Cwvu{!47@UOYAyZ5NH3a(nFeJwH z7cUvZi4HR;6zQLFaJjJ7{YO?!X+;>s;M6ki6?w0qduj7zkm4^{g#q4|Ju_O=_vYz5 zxMW_k8wE=Y9a^eD1(oJKNO5_6$S}1v0e{U@pQHH##X29F)x9~&ceFrOutT?)58CYvjF=yolnxY!m#&euP08@5pUf@;8Uxxj*k&Vs#0nRe46|Rzg?-dhx{& zRJ(C_D{b)nr0pU=%_e{dE}w_TKapPNYdnBY!15D)++&?wkrGuF)R6WP9{ znwxl<=~zgwxs!q|ZZqdmdf;f)PUW5RLU@Y8$=WOGi{LT|B1kXi2!kU@Qz?tog8krc;LKA>#-S@P&ZFJ)HJ(uo;od;qZa!c75>Lxur3U+#t zX3GjHFMWUhYMhoZn!zh3GtX^ZmJ+|@4Ar+fIP;%JWeI*{MT^<_PeXu`UG;d0l{7cW z$oM;B6ln9#j+c^TH+*CF=kMARZ{{s}_dLHzEO9jHOz5{B!V07=jP2Szj>P{il+?Ap zu&cY^S{wQbxA*mi4_vwo9bt{1{N;tmYCx&0Ot|yaUw&jR@8p+hONv`@ufb_nYmcdhv+%MlW zOdBf_UJFCuJNMubBXAq9%kOgxAihIulKB2$E24RI0J8!wR+@1Ma^H3+ zVIez`4%9V`V0VJS_Xh$hZSL{hWt>=&&5$1)>e~kecplxDv%;jmiMn;bzsMa1mEjkE zeGvsCC`Pc1xWrex#$VhZP;Eq${Wb&j%Qe--Y>YLTTG$CQ7{wMBr{pQiU<(=Pcq!+8 z_S}$47&4&9J8F-`I3)QTzQ?x<;^>7}`oTfJmGg2SXz+1+g9=RLupHr#X+1 zs4h^~4|yXmyH2gsi%Xivub`tFlc;IObCMbZ?1n)gP>o2=$tRI;RND*EO0hdX-p%vr zovn41>)BtXE<~h6GcL@JMEV7BaK&vD3n>78$_~p0h9~3tWA6xOtY+4C3D zky8VX;U7X+q;~nMeGp9uBgDw_3Ih;Hep&g7-8RrlXyj*rLMyQg1p=ZDV= zNWJVRRAs0SVVW5)(VbVfBm%nJo>tF-)({VVT&I6fR$fGjLA7#$Fjrcrk!CiXQ*dMp zw>sNFsLE`gMtQ46l>`OCLB>7m*8v4Tu;m`PR4ej+ylZ5=zQ?ZRQx?8UTBF8HTLaX? z5?YgKX%;;_5v_GJ_~**NZJoFzLJZvHz>Kf+K+o3N9V}Qy0#qbA1^>u4r$EytkuM_9 z?#q?R4Wg26z5lNERzQ$or0c@fxso&sh_P&yts%=Ko|7-q^c)iDj$ogmP8m!z;0Qo8 ztY;+FA`KgH;RCqPqX6#f-gGV-;1fMFa(b)P7t% zI?oF8mhw&~CWs`~lCJ~Pje|f8VeqwRI2$=sRiMk z&tf;5kHS66n_@3)(@OK{P)&RqmP+&&gY~Rttl*lRHsTChJ7PZcv{!BGEnH^l^RNLG zP_%e+{GXV_lRIQ`S5n9~|5MYPw<30>&uGjVx!qW!?X+#p)oap92wKMS)fyOldZWB) zv%ih3Mxbo@8*pGF6z{k(q2RlDC33!mP(P_}rr5|WH#JbcB(0k{_g?Apk?<=G5tIs2 z63%1`vt^w8X!ii2TRY^e_t@>=tNsA@UOP0X{YX{!RU|#T@)oP^kCW6vjj^pX(9;_@ z6<^U!OUKC`*107vUY(R!BQ*RX-KFrZLO|O}vGnzWd-a1qYHwEifGcOzSL5#WpQgh5 zZD39?!&k8#%U;nW(*60AQqMq9jj}2FDgOsyFrW;#1LPa{uy4@>KnknM_-xJj<=$rhmsmp+Vl^R=Nptx$I5ix}SPF3HgkQ-GS9jwnO(3<~1>xc( zmA5t>aKW=MwsG*Y-Mf7Z?q)&el1{8zm>9PPnvIeY*>q0VIM3VC;%PZ~7@f^v`nY)s z{~RP!mp4hrn&xP--`E?|k+dT9(8kRc{WzVa9mj+#dH}qW@$e;}*f1FyPTY!Hf4}VW z@YQvB<%BQd9&dCmcpiRgRp^Eno<+R7dMh8pv=@9bW^9R$VAba2i}AxwyW#D9@+B$v zE}oo~$)MWS0*ZIS;^t*rhlb7Ly)Rgbis8}+I?Al9lF~1*^sLD_c|QUQG0Pg!f??&n ztgJajaod-KwFH2yI|aWl_u>}hov=v%fXRh2FcEnj5_rJMkp2fb4`cgta-tgud5)Yb zQF{sbC7n;$P=;9@A8HdKKt{%ynoPkA_PAz@={PAIc40?O63J`(o>|N}R{z*HWlg=Q zy*PBTV?aX_6}QYnGT)y^vH)f-@K%7t!NBg8a!Z)5%urtO0K6U878-B=-t%1mmLlVs^e%5DD%qS58T34++a~pGGbP=k}GoF9(;GZs>*dli*r7z1vS|=gAyg6|j#7(y>Cg z>n?nS08GQFF)UX7BfX6BNq5M?{7lT1+-r~S&zS7*Ha6>G&U3xSwG=FQGdlA2gH}EH zT^UI#jNFl#M2m(v9)Mm>95$uu#u3DzC+daWUfO%k z&Mk&6HjP|2Nhp0tF%pCkJjfpwX%E87c%8||ie2(X85AavvD8r;>_50b-rX?p;MIYVTj%r4BJ#|_vK`rPtjghu zkhss}D5K%5@}QhRJzpu{%N|FdkN^Zo#i$0<ITz-2K#pxdha(!Xu(hpUE+oi8pfnp6quFQ`Dr}f2J6^=x7RI9lU!cC^Vr9`^$Fb% zSHBSy5A6_hbSsZkKb6zTdwY*}%+oVa7P%>%;yln$$XkNA19;-@U^G{ou-_!_wU}Ar z54-EQ3@=jC)6691wm@DclkXSEc2C6SO*hdm^@U0<5%~{fVlaEV$@oabB#XCg4I3%L z8)0d8EfUmeN-S}{?!|A`Rj(38x|(J{ba7*QCB9WaH~sF^JluN7Q0vR#@2Ul!Q~QB4 zdrQvKBk4yJ5MednR@EPy!M!5QKXEuhT8n_kg~dqgtLbt^0)=iY04&FFxLs zD}ME?avoy|&qo(;KmLnw)VMU3Opam_663t&&L4Gs_lxgP&x^`q;cr?WFf??d62ibv zfT_&O&HWv^`O7y=t2gw14pOr>{0r93Z6&AmOv#4M?`BLdZ$~q(=Y3MpHP4dwksI%Y zRzO>Z_knbXIt;>4i`GJQ9$_@+zsIYLn-@X!+-S<-NrTG}@6*Ik!|2s6*Z0gvz{tgH z2fHwv^>FRo-a6DmSV{#`{=76VqY|0T=4EyFxG$O*QRprwNAn7;rTIsI7)Q`a>AdLu zrb)@cPaA7Lid*6=+S{bDmLYkroe$0VG3d!{u8A=(D<2NCKh3>PcZy;P79@0M>!Fjr zUUAJ-5o5_CZo%PpKp;K*XIx3jNl!EYY*y0PFLI4coeVla0Eb95u=%%=qE6rPz zH>Mm5`w|w$>H+Nhul0tY1G!e!9xqjcmEV5?~kVb!M=m)+$= z`_FoBKrWg0^;CuqOFOu6hPBS=-uZW{%;o&PgTY9?BWu5L25`6fewUxm9Rkk--a6Io zI3EVak?r~it>Lj}xOcf*7+PK~|1O;iIaX5BvRMl3OBA&nUDyaFeG&|~r~O9^;~LZN9d*D zEwGrp8w?DEZ%$_+_~V_vQm}WmG2{5a#$JtFCtg_|**mkg`RZ}{uAn9cll}uY?!#W0 zLKXI#BZnp~zrn|LqCR+i=se<9%(C*q+6Jo$m}d4B0`Zi+3|7+uu(#c$1WY6g4B&q% zU_cHetH?3K6g0qX%*;k#%*-=+&kOLLwyoe_{_S-C{V@q}W{cojB4|9qO9Z!ZgG2qq zy1xXzhR-XyGMhv$NsE4Y&6^{+g%o~0#%u_GQk>1` zVAc7#L0jD-ydur@0%d)tOX74xwCk4pHJ42}tKrMUlgmu9GiJKkVy2#vU)XKX5}Mvn z?|4T}<6MZq$mf4T{Y1TRSCS-a2#(UcRny#inRi$GIhLO+L z6D}8Yg1iondCHLXfHur0>`WTs==ZXvMeXyF(Dx3Yt=>&QLh5{_GM&Eb>K>2VM_F7d z-m!rjs$CN z*Jh+Q##S3%5+#Kvh6&u2=H<1HXkUQQwDGApG>GR~l~Bm1Sn}^@ww2XgUBqB3GNPN* zLvR8kH~dJg80wqXbGwtjH!cXSCNAi4s>AU*v0XQBFWjG~qd{%lZ9Ff)H8s0Gkc!H% z5=yC-w~N&u2Pd4prK-g1Ec--5?(L>+4Oho-!bDNS5k{-Vhz>sbn%4ottaP|_w-10R z`#kb~C62S%N6-QW2Q6nbF90%KEVxgwt^`qVUd2k zAI12gM``t#bG!`nOh}Y!PdU$XYOFl*)}}Ci&4H@zKz;Ths%y!IAYVMtX^wVce-ufk zyJ*-2cPsAu+mJ9A#(7==%DOu|jd)6D_{@REZqHLVAW?-=XDhITu+#M62Svh&t&39U z6Xy5VZ#OMWWCJ-VV(@sf-DnvkQJPL*Yd{6cp*UX9wn;OmFF8AQdQP@0@aw+d4i|bJ z{sQLuJ@M1#pW>>xF`6}wt_H%o*=1hKdrKWA!Y$$`QpT;(kIrKaqE07t2`CT0OM882 zg{Pu5g5koM>F|ULg-$y0d|s;O1MZ3U2K-gYRVsK9{f6}0*xyngI21{i=>yy_i<%=rJlIjgwrJqs8d>}bZy?5fJ=GHd#u%Y)%CK>u6(JnY*}a`r;^kJb6_$?)qlrXL=` zzAPz>m(ZKj>3Z)vTK2dj>c$v3dkw0z?1+9j`#e1&hs$S!u${$>2tZLriH3otfOiWO zoTAKN7z`_82*!zA0+~nVfkMK;NH>&Fo>@GPxC4TobQ1<~G>5oe1EWkJNvEB*GG>5C zwF!Kla6UU4rU_;G3D+%rd-OTpJ-}MXZxwb@q;uS?_Trmf`JX-hi#WCa?AQEnd;cHn zPQN~Mcr#u0Dn@zZmd)!!3pJA2g)PbEr#pppWW%-QuR=p+=yOSzRdA*?@halC$?z$mmfUb(uLgVeqh~; zwqg2>-+7wzyt}ikwQ|De%o7^zG@YmntId)L$9}RIok>LRCv^s6@DkHWV6W1aQPvC7 zc$9wHTX7HZy-aqYp9?m}$zt&rTvAIo5`msrB9${SMqQL`Lv?{xzOZZD% zZ+k9IXF-5x#=(1EA<22`n*)^I^r4h{$|C=vRSLb9-{cVv6HeEn_=K4tF&tn3XGby^ zN=huFnp}b*^r3=xT8ZODW6_}&_nybye>BXw(BE{9t^!!MLn%#0Mxc>XuwQ>5hW>tn zc-A+huX9^HgaT{16GQqMR2yy`!j8^>;$eXCS6w#r8O3%2=b=XEK!_gC9_bjxX7x>9 z+BC5Xzawr6zY|{SJDeCQNia)s$V-G2)00>sJY<^IS5-w{{rJ~r^E>;U`Zgx`C)x1z zC1_H@ifl9@i*Ce-#z&Xu$mi>Ph#t$!dk`R=^He7)=V`f5XNOPIR zxoFy_=30~aCw<{?ppFALUSE=lRk^}zyF(&$jRV9OM_~>=D6ki*AD%o;}-c3j$6QRYlHjVut0RuKlyEi8TVP)L(gz$P6rEe($ktL3YU=mPyx?>B;N}jqTP;J zjPx#!#bcjRO!;v};SG#)T&v$8^{)@H1uYej_rOgmhU;S}I@@vL5 zODilbqLh?4Q)9-;AuuBQSl;!@vHq8^wFG?en70(R%J>$(S)hjY<+LsI}8`k)RpXCA97v0)x@> z!{>oYOkaUJ!<g$jb}nZM0;vJjU;+VG#t;Bn*td>TA(Gd zt8Ptr_&ZVG;UQL^%TVtravpTqc-|%~cDN_9yprJJ7Zc?rm~(WalJF16Y~_(MRIYI0kQqz+E!c#fq#P>4B`Fd|r_e0iD3ga=Inp_Wd zz!o?C^lXm#rEp=ScG1HLXYUJ}k26$qRZoqPZN= zb}@@m-YN7}4zVu$i2KqWX&-iGO=*mZb$byPRi)*OVL^$+&uO~pZO zo-u!f5rdam0Fr<);qs0b)Y+bn&7zx_KAdfSeW)UtqbG-Q8dL$=snb;LYI=59APoq}s{|G>WO2m6yQiO@eew| z<*BA)4wC1k_M-hf%OIM_%qm8YX3OA5hD~mBeB%-oRvn&kUdRabD7~6a9nq3<6j`jZ z!E*TtaC4BL*2*F`epXl6eyTik8$O7&vjZ{EC4^e&hC-M(jZ=grfnWIiSa~!)46tYW z_Yo#%y+`RF3Q&A(LzAOcI=6@W+mmLxJMA_N^wPS!3C$K|*!FV3Pkl6|yF$0qM#dad z0C4j?iRGJo_8BY#Q%%NrUp6fgt=?a?|02ac($5`O-@s0J;*x>!I7$_1413O|bXBCo zpPN(3i=Cq^gx`u7DI6F$Cw*jm)k8z?V}-!#{l6a={+m62yQ^uA3x&%VKfQ4#tHriP7ho88mmCLk(R`-2%7sg!|kkm!TI+A)A&el*_+NK3#QlcgMMVp$u z_7v24-B*;KcM-zyh&idVE$B|t%gIj=l>c| ze~u2sJe9ctEfEaptIq9pMiz*;hvqtnzxgwYbf8X`xW03HBs?Ge7~dJS%xF_Lh#?8&%ZrC3~P=ehU}5-_@!r?scC!d ztT29BC)}g-Y|is}yg0SA`dK^>q+LHgI6vb2#o!MEzFMMAr}#k&aJ%Nx%H#<_ZvP@D z)zQYwhv(cF;Nl~47F}Pt)KI3GAe{`NXP?W@m=sC(FZG`pISJDxF2vTcfLVv{{d(Sx zFb}e7H`crAmK47^;c}7?q3-Yy_ZNs4$J%mU_$Drg^E*dN6Y7hLX{L|D9-&h~=8m@z zhyQS4%b6=v)FLXc$&T7AtVZzDWZgZ**&m~qEDZGbZEiASm&8YAsCLsc_GV=%T989L z#pt8j6xFN*Q8@(d)3#nb$j*XqVVd#qp>7>hdFImPp6V{0>e8UJMJA`K^53q@+sT7h zLfxw8(|=$=dLb9iahekb$@msJM%u$U^M1uOPC@wX*qcP!LM${OIoR`~N_=-FWs=v} z9|V9jL^XpEs+8fC1ai7pDM^?|yU)4bhBhHH&@sp^(^KSZ^^QY*o?cQcx+kp$Z!<6D z#Mqn?rGxOy;$<(-Un^sm1g$lm`9L;<9h`8AGvU!Ns(xzB3WsL1n`*bNAjOkX zw{W>m;-+7eTojp!kjp>XA1TZ5zicI1nUEp4?{~LJzsH;C)3=uV|9r7W8MqL?>b^%i zqw^r6@xh~%kDm#7!%G?+6%D4lQpdzL5->${yts8#gI*vt%mR>10jHO)rTvufK{tp` zP66nB5O=>w>V9uBLCSx8BLsB&E|&QG+6!syfq~cSLyl#4BaJUvOW0$Z zXOGL21a=nJ9_jS5gUs8`M$6dW_Neb@We_q_NJPTVd^n&|oyi_*G=@jUVM|4nE9AO0$P|Jv(AM{5rz z$I}tQ%X_5#%dTZi#e;~*^g-hp&sOss<$cEjYC_w3M zIC5=cZ(;A_SG^KpezM}cRlxu1v&}aA`W1aSk2}g2Oo%--XEzt;!+yLn35(MsEYGP& zI;V=Qp{*IgnVIwwib)C8x3Y!j4#GwmsAb2klIKhMn=kD?_UOB-XFdfe46g6Z0dBKZ7u6wUGe%>5E_N|>E|%{*#gQ~!PI?*uf=!p5Ys1fW z-dx0YzElGI`V;2PCpctJ$ifLNzTnFCJw&G+>zY${;Q+h|!?>}u*c_)K?K3v!^Heso z-WJ8=Ey?-3=On)KR~s3E|AW2vfNJYX_r*Qqaf<5@Om7nyg8>7UMKd*%P;MLv!U%yW zf*6c20)%P8AWAZhZ4fO411gjW*b+z}3>btE0vjW$1i`WpAPG#b61^9{Lo##c&fLs> z@BP(2VGD;spqk?gh4-us-hzwi5%dN(VV0zyXBy=1FRyHESH42%(ToJjTjz1S#+ zGNXmXY+869xp6So_xa3RhfOA+v%3^H!DAuxOM`Lf82xFgVp)%{2(jI#WItuL(M!JG z4Ev!_QGl^HO6j|%Py2oi?Mw<~*R2*?*GQGB!}e{(p;pLXKcI9BcQO?*#=WYw1w)N{ zZ3`4VK~`pf+2N-decQo$YVnE9$p!*y@GBN(I#NL>Z+EIGKvGWJgU8Tt22aB_BL=tP zst{2JGFg$IPxLjn2jaef6g5CY>aABjI*o*x(OE4pAQd1l&+!LJ0kCw}HAR=Nj=O9m z@CSU|{QzB`@a1?SQGtRijd_@FJJXSAeR{SI+TlMP=PG*{5R{oG%4j zuY#TPjo=Kmwlr~eGPKz+3lDYt7}L_2_`Lq>?T{u;cWPZh-w2giRFXd5?knQFh596IozlWPz5e>A z7M%E1j{oJu6I97fgxAbXE4YNBb6@J^j%oLFdA^oNGIJ(}lq`NglaTg8-+GAbpJmqy zFsRL%*p2J^!Lmn6IzcR>G>&%)&^) z-S1A!z3Gow+rbzG?%weFZFo}J?|yE;&%doCllMk;js(mI(kRA!_<6Xpmvz=`?=!P+N0zlcy1nMRlk&!sZsn?t1!GRD&UR#sCL!m4US*z>QMo_ME$-e&&ZRwZ+&}T&iAXf=48Lx@)^5Pt;2p=ndRIx zOpYnyN0U=!Zteo*22+M>3#s0>{cvaOj7U&^WPqZ4UI$hz2W-utJ!R8yj+SCk4&y1f z<~-G^zGpM3H06n-l0`Zg;u0_w{wnLrfW3AGhI@-oYb(luz%D9&>Zz>@WI~P;A=+jH z0>F{UhICCJwL!(d*;&-GDSi}Vk{*9^f@Q3_NSG%d*{yel1;`Y4jN*(0 z?umLA-YfJ`S$851wbzBR-4U%0pYI(}7DlBv#g&gYqJ{eD%#pH(hD*I(_>K0o!CzrRT0-9VG8(V+wl(Z4n1%Cf2*C1>o~r66P1xgqd&m@=1Qy%p58; z{MJhha~L7xx@f4~TXEAc%0+zHeCW9T@xb}VqwGh0R_V{Aq^GHS=Vq~6GO;^I;o8!fTT1xlh|rT41XB4#PveDjKgYT|rOE;F_hjnk%y=_WVbvB%)v3LV$BB4@8{6m`sO#`j~Vi2JX*et2U3rAY+9%;0~GB!K*tBV zw_h^YaD4Iep#AIpzJOR9jFft&XiI5|;ryTE;lsTduE+B5d`Hs*!goHRh0HjewT?pk4xI`YjU}OM?`b z!$xYHdXMec(?EgK@3&IsU&d@@Jz6<9FU5X4yX+bGIkm7bjl)@XrjwNY&JAT^W2n+d z*;Z(|?_u4oVRLV5k_(?99U$ky(*RCz&xBnC2B$3@-Zg`CS%38p!xqvlWiJ%@F7{

9AXoLFF}q>^a>ae=Z*8+ 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℘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 z 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

bD5$``3{q~nj|9StevIH_NjUaGx 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≪(k6fvL<<6CbXQ4&CIN2Cg0rb0 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⩔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 diff --git a/pages/postSiteForm/index.html b/pages/postSiteForm/index.html deleted file mode 100644 index 85b408f..0000000 --- a/pages/postSiteForm/index.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - GAI - AI 뉴스 사이트 추가 - - -

-

사이트 / 서비스 제출

- - -
-
- -
- 작가 jcomp 출처 Freepik -
-
-
-
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
-
- - -
-
- -
-
-
- - - diff --git a/pages/postSiteForm/success.html b/pages/postSiteForm/success.html deleted file mode 100644 index 04d667b..0000000 --- a/pages/postSiteForm/success.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - GAI - AI 뉴스 사이트 추가 - - - - -
-

제출 성공

-
-

제출이 완료되었습니다. 감사합니다

- -
-
- - - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index c4bd897..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,2680 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: ^7.3.1 - version: 7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/parser': - specifier: ^7.3.1 - version: 7.3.1(eslint@8.57.0)(typescript@5.4.2) - eslint: - specifier: ^8.57.0 - version: 8.57.0 - prettier: - specifier: ^3.2.5 - version: 3.2.5 - - common: - dependencies: - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - mongoose: - specifier: ^8.2.2 - version: 8.2.2(socks@2.8.3) - devDependencies: - '@types/node': - specifier: ^20.11.28 - version: 20.11.28 - tsc-alias: - specifier: ^1.8.8 - version: 1.8.8 - - lambdas/news-scraper: - dependencies: - '@ai-news-noti-bot/common': - specifier: workspace:^ - version: link:../../common - '@sparticuz/chromium': - specifier: ^127.0.0 - version: 127.0.0 - mongoose: - specifier: ^8.2.2 - version: 8.2.2(socks@2.8.3) - puppeteer: - specifier: 23.1.1 - version: 23.1.1(typescript@5.4.2) - devDependencies: - '@types/aws-lambda': - specifier: ^8.10.136 - version: 8.10.136 - '@types/node': - specifier: ^20.11.28 - version: 20.11.28 - google-auth-library: - specifier: ^9.7.0 - version: 9.7.0 - google-spreadsheet: - specifier: ^4.1.1 - version: 4.1.1(google-auth-library@9.7.0) - nodemon: - specifier: ^3.1.0 - version: 3.1.0 - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@20.11.28)(typescript@5.4.2) - tsc-alias: - specifier: ^1.8.8 - version: 1.8.8 - - lambdas/register-site-api: - dependencies: - '@ai-news-noti-bot/common': - specifier: workspace:^ - version: link:../../common - devDependencies: - '@types/aws-lambda': - specifier: ^8.10.136 - version: 8.10.136 - '@types/node': - specifier: ^20.11.28 - version: 20.11.28 - tsc-alias: - specifier: ^1.8.8 - version: 1.8.8 - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.57.0': - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - deprecated: Use @eslint/object-schema instead - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@mongodb-js/saslprep@1.1.5': - resolution: {integrity: sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@puppeteer/browsers@2.3.1': - resolution: {integrity: sha512-uK7o3hHkK+naEobMSJ+2ySYyXtQkBxIH8Gn4MK9ciePjNV+Pf+PgY/W7iPzn2MTjl3stcYB5AlcTmPYw7AXDwA==} - engines: {node: '>=18'} - hasBin: true - - '@sparticuz/chromium@127.0.0': - resolution: {integrity: sha512-3YdElfXb6kqcFtlgaArNZohhZ1gWAiWg5kPYIZbaoHFau7dHZvbYg3EEjeE30bYi6cfOnB8wVpluuasF8Y3QyQ==} - engines: {node: '>= 16'} - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/aws-lambda@8.10.136': - resolution: {integrity: sha512-cmmgqxdVGhxYK9lZMYYXYRJk6twBo53ivtXjIUEFZxfxe4TkZTZBK3RRWrY2HjJcUIix0mdifn15yjOAat5lTA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/node@20.11.28': - resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/webidl-conversions@7.0.3': - resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - - '@types/whatwg-url@11.0.4': - resolution: {integrity: sha512-lXCmTWSHJvf0TRSO58nm978b8HJ/EdsSsEKLd3ODHFjo+3VGAyyTp4v50nWvwtzBxSMQrVOK7tcuN0zGPLICMw==} - - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - - '@typescript-eslint/eslint-plugin@7.3.1': - resolution: {integrity: sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.3.1': - resolution: {integrity: sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@7.3.1': - resolution: {integrity: sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.3.1': - resolution: {integrity: sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@7.3.1': - resolution: {integrity: sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.3.1': - resolution: {integrity: sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@7.3.1': - resolution: {integrity: sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@7.3.1': - resolution: {integrity: sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - - agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - axios@1.6.8: - resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} - - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bare-events@2.2.2: - resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==} - - bare-fs@2.2.2: - resolution: {integrity: sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==} - - bare-os@2.2.1: - resolution: {integrity: sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==} - - bare-path@2.1.0: - resolution: {integrity: sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} - engines: {node: '>=10.0.0'} - - bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - bson@6.5.0: - resolution: {integrity: sha512-DXf1BTAS8vKyR90BO4x5v3rKVarmkdkzwOrnYDFdjAY694ILNDkmA3uRh1xXJEl+C1DAh8XCvAQ+Gh3kzubtpg==} - engines: {node: '>=16.20.1'} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chromium-bidi@0.6.4: - resolution: {integrity: sha512-8zoq6ogmhQQkAKZVKO2ObFTl4uOkqoX1PlKQX3hZQ5E9cbUotcAb7h4pTNVAGGv8Z36PF3CtdOriEp/Rz82JqQ==} - peerDependencies: - devtools-protocol: '*' - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - devtools-protocol@0.0.1312386: - resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - gaxios@6.3.0: - resolution: {integrity: sha512-p+ggrQw3fBwH2F5N/PAI4k/G/y1art5OxKpb2J2chwNNHM4hHuAOtivjPuirMF4KNKwTTUal/lPfL2+7h2mEcg==} - engines: {node: '>=14'} - - gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} - engines: {node: '>=14'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-uri@6.0.3: - resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} - engines: {node: '>= 14'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - google-auth-library@9.7.0: - resolution: {integrity: sha512-I/AvzBiUXDzLOy4iIZ2W+Zq33W4lcukQv1nl7C8WUA6SQwyQwUwu3waNmWNAvzds//FG8SZ+DnKnW/2k6mQS8A==} - engines: {node: '>=14'} - - google-spreadsheet@4.1.1: - resolution: {integrity: sha512-Npk/xAMTgxEt/m/X9EXIqdY6CEYGiqUHrSuiLnNSKli5H+wiOQLSLsnfMxcdNPH6aSh6GttZm6QJhrnsxjwpZQ==} - peerDependencies: - google-auth-library: ^8.8.0 || ^9.0.0 - peerDependenciesMeta: - google-auth-library: - optional: true - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - gtoken@7.1.0: - resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} - engines: {node: '>=14.0.0'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.5: - resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} - engines: {node: '>= 14'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore-by-default@1.0.1: - resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - - kareem@2.5.1: - resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} - engines: {node: '>=12.0.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - memory-pager@1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - mongodb-connection-string-url@3.0.0: - resolution: {integrity: sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==} - - mongodb@6.3.0: - resolution: {integrity: sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA==} - engines: {node: '>=16.20.1'} - peerDependencies: - '@aws-sdk/credential-providers': ^3.188.0 - '@mongodb-js/zstd': ^1.1.0 - gcp-metadata: ^5.2.0 - kerberos: ^2.0.1 - mongodb-client-encryption: '>=6.0.0 <7' - snappy: ^7.2.2 - socks: ^2.7.1 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - - mongoose@8.2.2: - resolution: {integrity: sha512-6sMxe1d3k/dBjiOX4ExNTNOP0g1x0iq8eXyg+ttgIXM3HLnQ0IUyXRwVVAPFFY6O4/8uYN5dB0Ec72FrexbPpw==} - engines: {node: '>=16.20.1'} - - mpath@0.9.0: - resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} - engines: {node: '>=4.0.0'} - - mquery@5.0.0: - resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} - engines: {node: '>=14.0.0'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mylas@2.1.13: - resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} - engines: {node: '>=12.0.0'} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - nodemon@3.1.0: - resolution: {integrity: sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==} - engines: {node: '>=10'} - hasBin: true - - nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - pac-proxy-agent@7.0.2: - resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} - engines: {node: '>= 14'} - - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - plimit-lit@1.6.1: - resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} - engines: {node: '>=12'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} - engines: {node: '>= 14'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pstree.remy@1.1.8: - resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - puppeteer-core@23.1.1: - resolution: {integrity: sha512-OeTqNiYGF9qZtwZU4Yc88DDqFJs4TJ4rnK81jkillh6MwDeQodyisM9xe5lBmPhwiDy92s5J5DQtQLjCKHFQ3g==} - engines: {node: '>=18'} - - puppeteer@23.1.1: - resolution: {integrity: sha512-giN4Ikwl5hkkouH/dVyxIPTPslWuqZ8fjALdSw5Cvt+r0LuDpLdfPxRADlB75YJ2UjPZhgok+xYBYk8ffzv4MA==} - engines: {node: '>=18'} - hasBin: true - - queue-lit@1.5.2: - resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} - engines: {node: '>=12'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - sift@16.0.1: - resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} - - simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - socks-proxy-agent@8.0.4: - resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} - engines: {node: '>= 14'} - - socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - sparse-bitfield@3.0.3: - resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - - streamx@2.16.1: - resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - tar-fs@3.0.6: - resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - touch@3.1.0: - resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} - hasBin: true - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsc-alias@1.8.8: - resolution: {integrity: sha512-OYUOd2wl0H858NvABWr/BoSKNERw3N9GTi3rHPK8Iv4O1UyUXIrTTOAZNHsjlVpXFOhpJBVARI1s+rzwLivN3Q==} - hasBin: true - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typed-query-selector@2.12.0: - resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - - undefsafe@2.0.5: - resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-url@13.0.0: - resolution: {integrity: sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==} - engines: {node: '>=16'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4(supports-color@5.5.0) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.2': {} - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@mongodb-js/saslprep@1.1.5': - dependencies: - sparse-bitfield: 3.0.3 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@puppeteer/browsers@2.3.1': - dependencies: - debug: 4.3.7 - extract-zip: 2.0.1 - progress: 2.0.3 - proxy-agent: 6.4.0 - semver: 7.6.3 - tar-fs: 3.0.6 - unbzip2-stream: 1.4.3 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - '@sparticuz/chromium@127.0.0': - dependencies: - follow-redirects: 1.15.6 - tar-fs: 3.0.6 - transitivePeerDependencies: - - debug - - '@tootallnate/quickjs-emscripten@0.23.0': {} - - '@tsconfig/node10@1.0.9': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/aws-lambda@8.10.136': {} - - '@types/json-schema@7.0.15': {} - - '@types/node@20.11.28': - dependencies: - undici-types: 5.26.5 - - '@types/semver@7.5.8': {} - - '@types/webidl-conversions@7.0.3': {} - - '@types/whatwg-url@11.0.4': - dependencies: - '@types/webidl-conversions': 7.0.3 - - '@types/yauzl@2.10.3': - dependencies: - '@types/node': 20.11.28 - optional: true - - '@typescript-eslint/eslint-plugin@7.3.1(@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/scope-manager': 7.3.1 - '@typescript-eslint/type-utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.3.1 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.2)': - dependencies: - '@typescript-eslint/scope-manager': 7.3.1 - '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.3.1 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@7.3.1': - dependencies: - '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/visitor-keys': 7.3.1 - - '@typescript-eslint/type-utils@7.3.1(eslint@8.57.0)(typescript@5.4.2)': - dependencies: - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) - '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.2) - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@7.3.1': {} - - '@typescript-eslint/typescript-estree@7.3.1(typescript@5.4.2)': - dependencies: - '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/visitor-keys': 7.3.1 - debug: 4.3.4(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@7.3.1(eslint@8.57.0)(typescript@5.4.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.3.1 - '@typescript-eslint/types': 7.3.1 - '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.2) - eslint: 8.57.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@7.3.1': - dependencies: - '@typescript-eslint/types': 7.3.1 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} - - abbrev@1.1.1: {} - - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - - agent-base@7.1.0: - dependencies: - debug: 4.3.4(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - agent-base@7.1.1: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@4.1.3: {} - - argparse@2.0.1: {} - - array-union@2.1.0: {} - - ast-types@0.13.4: - dependencies: - tslib: 2.7.0 - - asynckit@0.4.0: {} - - axios@1.6.8: - dependencies: - follow-redirects: 1.15.6 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - b4a@1.6.6: {} - - balanced-match@1.0.2: {} - - bare-events@2.2.2: - optional: true - - bare-fs@2.2.2: - dependencies: - bare-events: 2.2.2 - bare-os: 2.2.1 - bare-path: 2.1.0 - streamx: 2.16.1 - optional: true - - bare-os@2.2.1: - optional: true - - bare-path@2.1.0: - dependencies: - bare-os: 2.2.1 - optional: true - - base64-js@1.5.1: {} - - basic-ftp@5.0.5: {} - - bignumber.js@9.1.2: {} - - binary-extensions@2.3.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - bson@6.5.0: {} - - buffer-crc32@0.2.13: {} - - buffer-equal-constant-time@1.0.1: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - callsites@3.1.0: {} - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chromium-bidi@0.6.4(devtools-protocol@0.0.1312386): - dependencies: - devtools-protocol: 0.0.1312386 - mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.23.8 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@9.5.0: {} - - concat-map@0.0.1: {} - - cosmiconfig@9.0.0(typescript@5.4.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.4.2 - - create-require@1.1.1: {} - - cross-spawn@7.0.3: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - data-uri-to-buffer@6.0.2: {} - - debug@4.3.4(supports-color@5.5.0): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 5.5.0 - - debug@4.3.7: - dependencies: - ms: 2.1.3 - - deep-is@0.1.4: {} - - degenerator@5.0.1: - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - - delayed-stream@1.0.0: {} - - devtools-protocol@0.0.1312386: {} - - diff@4.0.2: {} - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dotenv@16.4.5: {} - - ecdsa-sig-formatter@1.0.11: - dependencies: - safe-buffer: 5.2.1 - - emoji-regex@8.0.0: {} - - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - env-paths@2.2.1: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - escalade@3.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint@8.57.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - espree@9.6.1: - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - esutils@2.0.3: {} - - extend@3.0.2: {} - - extract-zip@2.0.1: - dependencies: - debug: 4.3.7 - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - - fast-deep-equal@3.1.3: {} - - fast-fifo@1.3.2: {} - - fast-glob@3.3.2: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.17.1: - dependencies: - reusify: 1.0.4 - - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - - fill-range@7.0.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - flatted@3.3.1: {} - - follow-redirects@1.15.6: {} - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - gaxios@6.3.0: - dependencies: - extend: 3.0.2 - https-proxy-agent: 7.0.4 - is-stream: 2.0.1 - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - supports-color - - gcp-metadata@6.1.0: - dependencies: - gaxios: 6.3.0 - json-bigint: 1.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - get-caller-file@2.0.5: {} - - get-stream@5.2.0: - dependencies: - pump: 3.0.0 - - get-uri@6.0.3: - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.3.7 - fs-extra: 11.2.0 - transitivePeerDependencies: - - supports-color - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - google-auth-library@9.7.0: - dependencies: - base64-js: 1.5.1 - ecdsa-sig-formatter: 1.0.11 - gaxios: 6.3.0 - gcp-metadata: 6.1.0 - gtoken: 7.1.0 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - google-spreadsheet@4.1.1(google-auth-library@9.7.0): - dependencies: - axios: 1.6.8 - lodash: 4.17.21 - optionalDependencies: - google-auth-library: 9.7.0 - transitivePeerDependencies: - - debug - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - gtoken@7.1.0: - dependencies: - gaxios: 6.3.0 - jws: 4.0.0 - transitivePeerDependencies: - - encoding - - supports-color - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.4: - dependencies: - agent-base: 7.1.0 - debug: 4.3.4(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.5: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - ieee754@1.2.1: {} - - ignore-by-default@1.0.1: {} - - ignore@5.3.1: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - - is-arrayish@0.2.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-path-inside@3.0.3: {} - - is-stream@2.0.1: {} - - isexe@2.0.0: {} - - js-tokens@4.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsbn@1.1.0: {} - - json-bigint@1.0.0: - dependencies: - bignumber.js: 9.1.2 - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jwa@2.0.0: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - - jws@4.0.0: - dependencies: - jwa: 2.0.0 - safe-buffer: 5.2.1 - - kareem@2.5.1: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lines-and-columns@1.2.4: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - - lodash@4.17.21: {} - - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - - lru-cache@7.18.3: {} - - make-error@1.3.6: {} - - memory-pager@1.5.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.5: - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.1 - - mitt@3.0.1: {} - - mongodb-connection-string-url@3.0.0: - dependencies: - '@types/whatwg-url': 11.0.4 - whatwg-url: 13.0.0 - - mongodb@6.3.0(socks@2.8.3): - dependencies: - '@mongodb-js/saslprep': 1.1.5 - bson: 6.5.0 - mongodb-connection-string-url: 3.0.0 - optionalDependencies: - socks: 2.8.3 - - mongoose@8.2.2(socks@2.8.3): - dependencies: - bson: 6.5.0 - kareem: 2.5.1 - mongodb: 6.3.0(socks@2.8.3) - mpath: 0.9.0 - mquery: 5.0.0 - ms: 2.1.3 - sift: 16.0.1 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - gcp-metadata - - kerberos - - mongodb-client-encryption - - snappy - - socks - - supports-color - - mpath@0.9.0: {} - - mquery@5.0.0: - dependencies: - debug: 4.3.4(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - ms@2.1.2: {} - - ms@2.1.3: {} - - mylas@2.1.13: {} - - natural-compare@1.4.0: {} - - netmask@2.0.2: {} - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - nodemon@3.1.0: - dependencies: - chokidar: 3.6.0 - debug: 4.3.4(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.6.0 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.0 - undefsafe: 2.0.5 - - nopt@1.0.10: - dependencies: - abbrev: 1.1.1 - - normalize-path@3.0.0: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - pac-proxy-agent@7.0.2: - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.1 - debug: 4.3.7 - get-uri: 6.0.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - - pac-resolver@7.0.1: - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - path-exists@4.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-type@4.0.0: {} - - pend@1.2.0: {} - - picocolors@1.1.0: {} - - picomatch@2.3.1: {} - - plimit-lit@1.6.1: - dependencies: - queue-lit: 1.5.2 - - prelude-ls@1.2.1: {} - - prettier@3.2.5: {} - - progress@2.0.3: {} - - proxy-agent@6.4.0: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.2 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.4 - transitivePeerDependencies: - - supports-color - - proxy-from-env@1.1.0: {} - - pstree.remy@1.1.8: {} - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode@2.3.1: {} - - puppeteer-core@23.1.1: - dependencies: - '@puppeteer/browsers': 2.3.1 - chromium-bidi: 0.6.4(devtools-protocol@0.0.1312386) - debug: 4.3.7 - devtools-protocol: 0.0.1312386 - typed-query-selector: 2.12.0 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - puppeteer@23.1.1(typescript@5.4.2): - dependencies: - '@puppeteer/browsers': 2.3.1 - chromium-bidi: 0.6.4(devtools-protocol@0.0.1312386) - cosmiconfig: 9.0.0(typescript@5.4.2) - devtools-protocol: 0.0.1312386 - puppeteer-core: 23.1.1 - typed-query-selector: 2.12.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - - queue-lit@1.5.2: {} - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: {} - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - require-directory@2.1.1: {} - - resolve-from@4.0.0: {} - - reusify@1.0.4: {} - - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.2.1: {} - - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.3: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - sift@16.0.1: {} - - simple-update-notifier@2.0.0: - dependencies: - semver: 7.6.0 - - slash@3.0.0: {} - - smart-buffer@4.2.0: {} - - socks-proxy-agent@8.0.4: - dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - - socks@2.8.3: - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - - source-map@0.6.1: - optional: true - - sparse-bitfield@3.0.3: - dependencies: - memory-pager: 1.5.0 - - sprintf-js@1.1.3: {} - - streamx@2.16.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - optionalDependencies: - bare-events: 2.2.2 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-json-comments@3.1.1: {} - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - tar-fs@3.0.6: - dependencies: - pump: 3.0.0 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.2.2 - bare-path: 2.1.0 - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.16.1 - - text-table@0.2.0: {} - - through@2.3.8: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - touch@3.1.0: - dependencies: - nopt: 1.0.10 - - tr46@0.0.3: {} - - tr46@4.1.1: - dependencies: - punycode: 2.3.1 - - ts-api-utils@1.3.0(typescript@5.4.2): - dependencies: - typescript: 5.4.2 - - ts-node@10.9.2(@types/node@20.11.28)(typescript@5.4.2): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.28 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tsc-alias@1.8.8: - dependencies: - chokidar: 3.6.0 - commander: 9.5.0 - globby: 11.1.0 - mylas: 2.1.13 - normalize-path: 3.0.0 - plimit-lit: 1.6.1 - - tslib@2.7.0: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-fest@0.20.2: {} - - typed-query-selector@2.12.0: {} - - typescript@5.4.2: {} - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - - undefsafe@2.0.5: {} - - undici-types@5.26.5: {} - - universalify@2.0.1: {} - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - urlpattern-polyfill@10.0.0: {} - - v8-compile-cache-lib@3.0.1: {} - - webidl-conversions@3.0.1: {} - - webidl-conversions@7.0.0: {} - - whatwg-url@13.0.0: - dependencies: - tr46: 4.1.1 - webidl-conversions: 7.0.0 - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrappy@1.0.2: {} - - ws@8.18.0: {} - - y18n@5.0.8: {} - - yallist@4.0.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - zod@3.23.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index 89ef8a1..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,3 +0,0 @@ -packages: - - 'lambdas/*' - - 'common' diff --git a/samconfig.toml b/samconfig.toml new file mode 100644 index 0000000..b4ddaae --- /dev/null +++ b/samconfig.toml @@ -0,0 +1,51 @@ +# More information about the configuration file can be found here: +# https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html +version = 0.1 + +[default] + +[default.build.parameters] +parallel = true + +[default.validate.parameters] +lint = true + +[default.package.parameters] +resolve_s3 = true + +[default.sync.parameters] +watch = true + +[default.local_start_api.parameters] +warm_containers = "EAGER" + +[default.local_start_lambda.parameters] +warm_containers = "EAGER" + +[prod] +[prod.deploy.parameters] +stack_name = "ai-news-agent-prod" +parameter_overrides = "PROFILE=prod" +capabilities = "CAPABILITY_NAMED_IAM" +confirm_changeset = true +resolve_s3 = true +resolve_image_repos = false +image_repositories = [ + "NewsScraperAgentFunction=339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/news-scraper-agent-prod", + "ScraperLambdaFunction=339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/scraper-lambda-prod" +] + + +[dev] +[dev.deploy.parameters] +stack_name = "ai-news-agent-dev" +parameter_overrides = "PROFILE=dev" +capabilities = "CAPABILITY_NAMED_IAM" +confirm_changeset = true +resolve_s3 = true +resolve_image_repos = false +image_repositories = [ + "NewsScraperAgentFunction=339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/news-scraper-agent-dev", + "ScraperLambdaFunction=339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/scraper-lambda-dev" +] + diff --git a/scraper-lambda/.gitignore b/scraper-lambda/.gitignore new file mode 100644 index 0000000..3d7b5e2 --- /dev/null +++ b/scraper-lambda/.gitignore @@ -0,0 +1,244 @@ + +# Created by https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### OSX ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### PyCharm ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Ruby plugin and RubyMine +/.rakeTasks + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### PyCharm Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +*.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +.idea/sonarlint + +### Python ### +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +.pytest_cache/ +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule.* + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Build folder + +*/build/* + +# End of https://www.gitignore.io/api/osx,linux,python,windows,pycharm,visualstudiocode \ No newline at end of file diff --git a/scraper-lambda/README.md b/scraper-lambda/README.md new file mode 100644 index 0000000..d71e132 --- /dev/null +++ b/scraper-lambda/README.md @@ -0,0 +1,45 @@ +# scraper-lambda + +## 동작 +url, content_type, selector를 받아 해당 url의 데이터에서 +html인 경우 전체 내용 또는 selector에 해당하는 데이터를 추출하여 반환 +json인 경우에는 해당 데이터 자체를 반환 + +**body** + + +| 필드 | 설명 | 필수여부 | 타입 | 값 | +|--------------|---------------|------|-----|------------| +| url | 요청 URL | 필수 | str | | +| content_type | 컨텐츠 유형 | 선택 | str | html, json | +| selector | html selector | 선택 | str | | + +Example +```json +{ + "url": "https://www.naver.com", + "content_type": "html", + "selector": "div" +} +``` + +## 배포 +1. sam build 실행 (이미지 빌드 및 배포용 template.yaml 파일 생성) + ```bash + sam build + ``` + +2. 변경된 stack 배포 + ```bash + sam deploy + ``` + - 자세한 로그가 필요한 경우 --debug 추가 + ```bash + sam deploy --debug + ``` + - 아래와 같이 ROLLBACK 관련해서 state 변경할 수 없다고 표시되는 경우 cloudfront 콘솔에서 stack 삭제 후 재배포 + + [참고](https://repost.aws/questions/QUjl_fJ_-bQEW-_a-i6qCVog/rollback-complete-state-and-can-not-be-updated) + ```aiignore + An error occurred (ValidationError) when calling the CreateChangeSet operation: Stack:arn:aws:cloudformation:ap-northeast-2:339712918956:stack/scraper-lambda/3277bad0-9a85-11ef-81d5-069f4e3fe3e7 is in ROLLBACK_COMPLETE state and can not be updated. + ``` \ No newline at end of file diff --git a/scraper-lambda/__init__.py b/scraper-lambda/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scraper-lambda/events/event_json.json b/scraper-lambda/events/event_json.json new file mode 100644 index 0000000..efce9a0 --- /dev/null +++ b/scraper-lambda/events/event_json.json @@ -0,0 +1,4 @@ +{ + "url": "https://jsonplaceholder.typicode.com/users/1", + "content_type": "json" +} diff --git a/scraper-lambda/events/event_render.json b/scraper-lambda/events/event_render.json new file mode 100644 index 0000000..dda660b --- /dev/null +++ b/scraper-lambda/events/event_render.json @@ -0,0 +1,5 @@ +{ + "url": "https://d1qbk7p5aewspc.cloudfront.net/test/test_render.html", + "content_type": "html", + "selector": "#content-section > section.products > div:nth-child(2) > span" +} \ No newline at end of file diff --git a/scraper-lambda/events/event_static.json b/scraper-lambda/events/event_static.json new file mode 100644 index 0000000..0888b64 --- /dev/null +++ b/scraper-lambda/events/event_static.json @@ -0,0 +1,5 @@ +{ + "url": "https://d1qbk7p5aewspc.cloudfront.net/test/test_static.html", + "content_type": "html", + "selector": "#content-section > section.products > div:nth-child(2) > span" +} diff --git a/scraper-lambda/poetry.lock b/scraper-lambda/poetry.lock new file mode 100644 index 0000000..12b672d --- /dev/null +++ b/scraper-lambda/poetry.lock @@ -0,0 +1,488 @@ +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. + +[[package]] +name = "black" +version = "24.10.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812"}, + {file = "black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea"}, + {file = "black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f"}, + {file = "black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e"}, + {file = "black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad"}, + {file = "black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50"}, + {file = "black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392"}, + {file = "black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175"}, + {file = "black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3"}, + {file = "black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65"}, + {file = "black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f"}, + {file = "black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8"}, + {file = "black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981"}, + {file = "black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b"}, + {file = "black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2"}, + {file = "black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b"}, + {file = "black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd"}, + {file = "black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f"}, + {file = "black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800"}, + {file = "black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7"}, + {file = "black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d"}, + {file = "black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2024.12.14" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, +] + +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev", "test"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = {dev = "platform_system == \"Windows\"", test = "sys_platform == \"win32\""} + +[[package]] +name = "greenlet" +version = "3.1.1" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +groups = ["test"] +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +groups = ["dev"] +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["dev", "test"] +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "playwright" +version = "1.48.0" +description = "A high-level API to automate web browsers" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "playwright-1.48.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:082bce2739f1078acc7d0734da8cc0e23eb91b7fae553f3316d733276f09a6b1"}, + {file = "playwright-1.48.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7da2eb51a19c7f3b523e9faa9d98e7af92e52eb983a099979ea79c9668e3cbf7"}, + {file = "playwright-1.48.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:115b988d1da322358b77bc3bf2d3cc90f8c881e691461538e7df91614c4833c9"}, + {file = "playwright-1.48.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:8dabb80e62f667fe2640a8b694e26a7b884c0b4803f7514a3954fc849126227b"}, + {file = "playwright-1.48.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ff8303409ebed76bed4c3d655340320b768817d900ba208b394fdd7d7939a5c"}, + {file = "playwright-1.48.0-py3-none-win32.whl", hash = "sha256:85598c360c590076d4f435525be991246d74a905b654ac19d26eab7ed9b98b2d"}, + {file = "playwright-1.48.0-py3-none-win_amd64.whl", hash = "sha256:e0e87b0c4dc8fce83c725dd851aec37bc4e882bb225ec8a96bd83cf32d4f1623"}, +] + +[package.dependencies] +greenlet = "3.1.1" +pyee = "12.0.0" + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "pyee" +version = "12.0.0" +description = "A rough port of Node.js's EventEmitter to Python with a few tricks of its own" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "pyee-12.0.0-py3-none-any.whl", hash = "sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990"}, + {file = "pyee-12.0.0.tar.gz", hash = "sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "sphinx", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"] + +[[package]] +name = "pytest" +version = "8.3.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[metadata] +lock-version = "2.1" +python-versions = ">=3.12, <4.0" +content-hash = "a4e1f47ef92dd99f643b9d3b920c171f04444021e811d7ded335a93ebf4e9eec" diff --git a/scraper-lambda/pyproject.toml b/scraper-lambda/pyproject.toml new file mode 100644 index 0000000..412254f --- /dev/null +++ b/scraper-lambda/pyproject.toml @@ -0,0 +1,31 @@ +[project] +name = "scraper-lambda" +version = "0.1.0" +description = "" +authors = [ + { name = "hyejungg", email = "kimhyejung12@naver.com" }, + { name = "Lee Jongwoo", email = "jongwoo328@gmail.com" } +] +readme = "README.md" +package-mode = false +requires-python = ">=3.12, <4.0" +dependencies = [ + "playwright==1.48.0", + "requests (>=2.32.3, <3.0.0)", +] + +[tool.poetry.requires-plugins] +poetry-plugin-export = ">=1.8" + +[tool.poetry.group.test.dependencies] +pytest = "^8.3.3" + +[tool.poetry.group.dev.dependencies] +black = "^24.10.0" + +[tool.pytest.ini_options] +pythonpath = ["src"] + +[build-system] +requires = ["poetry-core>=2.0.0, <3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/scraper-lambda/src/.dockerignore b/scraper-lambda/src/.dockerignore new file mode 100644 index 0000000..9414382 --- /dev/null +++ b/scraper-lambda/src/.dockerignore @@ -0,0 +1 @@ +Dockerfile diff --git a/scraper-lambda/src/Dockerfile b/scraper-lambda/src/Dockerfile new file mode 100644 index 0000000..8c70f59 --- /dev/null +++ b/scraper-lambda/src/Dockerfile @@ -0,0 +1,30 @@ +ARG FUNCTION_DIR="/function" + +FROM mcr.microsoft.com/playwright/python:v1.48.0-noble + +RUN apt-get update && \ + apt-get install -y \ + g++ \ + make \ + cmake \ + unzip \ + libcurl4-openssl-dev + +# Include global arg in this stage of the build +ARG FUNCTION_DIR +# Create function directory +RUN mkdir -p ${FUNCTION_DIR} + +# Copy function code +COPY . ${FUNCTION_DIR} + +WORKDIR ${FUNCTION_DIR} + +# Install the runtime interface client +RUN pip3 install \ + --target ${FUNCTION_DIR} \ + awslambdaric +RUN pip3 install -r requirements.txt + +ENTRYPOINT [ "/usr/bin/python", "-m", "awslambdaric" ] +CMD [ "app.handler" ] diff --git a/scraper-lambda/src/__init__.py b/scraper-lambda/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scraper-lambda/src/app.py b/scraper-lambda/src/app.py new file mode 100644 index 0000000..35d224b --- /dev/null +++ b/scraper-lambda/src/app.py @@ -0,0 +1,120 @@ +import json +import requests + +from typing import get_type_hints, get_args +from playwright.sync_api import sync_playwright, ElementHandle, TimeoutError as PlaywrightTimeoutError +from used_type import RequestBody + + +def error(msg: str, status: int) -> dict: + return { + "statusCode": status, + "body": json.dumps( + { + "message": msg, + }, + ensure_ascii=False, + ), + } + + +def success(result: list) -> dict: + return { + "statusCode": 200, + "body": json.dumps( + { + "result": result, + }, + ensure_ascii=False, + ), + } + + +def handler(event, context) -> dict: + """Sample pure Lambda function + + Parameters + ---------- + event: dict, required + API Gateway Lambda Proxy Input Format + + Event doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format + + context: object, required + Lambda Context runtime methods and attributes + + Context doc: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html + + Returns + ------ + API Gateway Lambda Proxy Output Format: dict + + Return doc: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html + """ + # body check + body: dict = event + # url, content_type, selector + url = body.get("url") + content_type = body.get("content_type") + selector = body.get("selector") + + if url is None: + print("url is required") + return error("url is required", 400) + if content_type is None: + print("content_type is required") + return error("content_type is required", 400) + if content_type not in get_args(get_type_hints(RequestBody)["content_type"]): + print(f"Invalid content type: {content_type}") + return error(f"Invalid content type: {content_type}", 400) + + if content_type == "json": + try: + response = requests.get(url, timeout=10) # 10초 타임아웃 + response.raise_for_status() # HTTP 오류 확인 -> 발생 시 RequestException으로 catch + return success(response.json()) + except requests.Timeout: + print("Request timed out while fetching JSON") + print(f"url={url}") + return error("Request timed out while fetching JSON", 408) + except requests.RequestException as e: + print(f"Request failed: {str(e)}") + return error(f"Request failed: {str(e)}", 400) + + elif content_type == "html": + try: + with sync_playwright() as p: + browser = p.chromium.launch( + args=[ + "--no-sandbox", + "--disable-setuid-sandbox", + "--disable-dev-shm-usage", + "--single-process", + "--disable-gpu", + ], + headless=True, + ) + page = browser.new_page() + page.goto(url, wait_until="domcontentloaded", timeout=70000) # 70초 + page.wait_for_load_state("networkidle", timeout=70000) # 70초 + if selector: + page.wait_for_selector(selector, timeout=10000) # 10초 + selected: list[ElementHandle] = page.query_selector_all(selector) + if len(selected) == 0: + return error(f"Element not found with {selector}", 400) + result = list(map(lambda x: x.evaluate("(element) => element.outerHTML"), selected)) + else: + page_content = page.content() + result = [page_content] + return success(result) + except PlaywrightTimeoutError as e: + print(f"playwright timeout: {e}") + print(f"HTML rendering timed out: {url}") + return error("HTML rendering timed out", 408) + except Exception as e: + print(f"An unexpected error occurred: {e}") + return error(f"An unexpected error occurred: {str(e)}", 500) + + else: + print(f"Invalid content type: {content_type}") + return error(f"Invalid content type: {content_type}", 400) diff --git a/scraper-lambda/src/requirements.txt b/scraper-lambda/src/requirements.txt new file mode 100644 index 0000000..c68831b --- /dev/null +++ b/scraper-lambda/src/requirements.txt @@ -0,0 +1,193 @@ +certifi==2024.12.14 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56 \ + --hash=sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db +charset-normalizer==3.4.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537 \ + --hash=sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa \ + --hash=sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a \ + --hash=sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294 \ + --hash=sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b \ + --hash=sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd \ + --hash=sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601 \ + --hash=sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd \ + --hash=sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4 \ + --hash=sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d \ + --hash=sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2 \ + --hash=sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313 \ + --hash=sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd \ + --hash=sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa \ + --hash=sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8 \ + --hash=sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1 \ + --hash=sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2 \ + --hash=sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496 \ + --hash=sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d \ + --hash=sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b \ + --hash=sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e \ + --hash=sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a \ + --hash=sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4 \ + --hash=sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca \ + --hash=sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78 \ + --hash=sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408 \ + --hash=sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5 \ + --hash=sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3 \ + --hash=sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f \ + --hash=sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a \ + --hash=sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765 \ + --hash=sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6 \ + --hash=sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146 \ + --hash=sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6 \ + --hash=sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9 \ + --hash=sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd \ + --hash=sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c \ + --hash=sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f \ + --hash=sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545 \ + --hash=sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176 \ + --hash=sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770 \ + --hash=sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824 \ + --hash=sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f \ + --hash=sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf \ + --hash=sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487 \ + --hash=sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d \ + --hash=sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd \ + --hash=sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b \ + --hash=sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534 \ + --hash=sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f \ + --hash=sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b \ + --hash=sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9 \ + --hash=sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd \ + --hash=sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125 \ + --hash=sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9 \ + --hash=sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de \ + --hash=sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11 \ + --hash=sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d \ + --hash=sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35 \ + --hash=sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f \ + --hash=sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda \ + --hash=sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7 \ + --hash=sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a \ + --hash=sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971 \ + --hash=sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8 \ + --hash=sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41 \ + --hash=sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d \ + --hash=sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f \ + --hash=sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757 \ + --hash=sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a \ + --hash=sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886 \ + --hash=sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77 \ + --hash=sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76 \ + --hash=sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247 \ + --hash=sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85 \ + --hash=sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb \ + --hash=sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7 \ + --hash=sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e \ + --hash=sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6 \ + --hash=sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037 \ + --hash=sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1 \ + --hash=sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e \ + --hash=sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807 \ + --hash=sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407 \ + --hash=sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c \ + --hash=sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12 \ + --hash=sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3 \ + --hash=sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089 \ + --hash=sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd \ + --hash=sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e \ + --hash=sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00 \ + --hash=sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616 +greenlet==3.1.1 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e \ + --hash=sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7 \ + --hash=sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01 \ + --hash=sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1 \ + --hash=sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159 \ + --hash=sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563 \ + --hash=sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83 \ + --hash=sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9 \ + --hash=sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395 \ + --hash=sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa \ + --hash=sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942 \ + --hash=sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1 \ + --hash=sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441 \ + --hash=sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22 \ + --hash=sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9 \ + --hash=sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0 \ + --hash=sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba \ + --hash=sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3 \ + --hash=sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1 \ + --hash=sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6 \ + --hash=sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291 \ + --hash=sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39 \ + --hash=sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d \ + --hash=sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467 \ + --hash=sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475 \ + --hash=sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef \ + --hash=sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c \ + --hash=sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511 \ + --hash=sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c \ + --hash=sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822 \ + --hash=sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a \ + --hash=sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8 \ + --hash=sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d \ + --hash=sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01 \ + --hash=sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145 \ + --hash=sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80 \ + --hash=sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13 \ + --hash=sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e \ + --hash=sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b \ + --hash=sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1 \ + --hash=sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef \ + --hash=sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc \ + --hash=sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff \ + --hash=sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120 \ + --hash=sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437 \ + --hash=sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd \ + --hash=sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981 \ + --hash=sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36 \ + --hash=sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a \ + --hash=sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798 \ + --hash=sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7 \ + --hash=sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761 \ + --hash=sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0 \ + --hash=sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e \ + --hash=sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af \ + --hash=sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa \ + --hash=sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c \ + --hash=sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42 \ + --hash=sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e \ + --hash=sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81 \ + --hash=sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e \ + --hash=sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617 \ + --hash=sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc \ + --hash=sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de \ + --hash=sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111 \ + --hash=sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383 \ + --hash=sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70 \ + --hash=sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6 \ + --hash=sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4 \ + --hash=sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011 \ + --hash=sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803 \ + --hash=sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79 \ + --hash=sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f +idna==3.10 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9 \ + --hash=sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 +playwright==1.48.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:082bce2739f1078acc7d0734da8cc0e23eb91b7fae553f3316d733276f09a6b1 \ + --hash=sha256:115b988d1da322358b77bc3bf2d3cc90f8c881e691461538e7df91614c4833c9 \ + --hash=sha256:7da2eb51a19c7f3b523e9faa9d98e7af92e52eb983a099979ea79c9668e3cbf7 \ + --hash=sha256:85598c360c590076d4f435525be991246d74a905b654ac19d26eab7ed9b98b2d \ + --hash=sha256:8dabb80e62f667fe2640a8b694e26a7b884c0b4803f7514a3954fc849126227b \ + --hash=sha256:8ff8303409ebed76bed4c3d655340320b768817d900ba208b394fdd7d7939a5c \ + --hash=sha256:e0e87b0c4dc8fce83c725dd851aec37bc4e882bb225ec8a96bd83cf32d4f1623 +pyee==12.0.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:7b14b74320600049ccc7d0e0b1becd3b4bd0a03c745758225e31a59f4095c990 \ + --hash=sha256:c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145 +requests==2.32.3 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ + --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 +typing-extensions==4.12.2 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \ + --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8 +urllib3==2.3.0 ; python_version >= "3.12" and python_version < "4.0" \ + --hash=sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df \ + --hash=sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d diff --git a/scraper-lambda/src/used_type.py b/scraper-lambda/src/used_type.py new file mode 100644 index 0000000..7126f5d --- /dev/null +++ b/scraper-lambda/src/used_type.py @@ -0,0 +1,7 @@ +from typing import TypedDict, Literal, NotRequired + + +class RequestBody(TypedDict): + url: str + content_type: Literal["html", "json"] + selector: NotRequired[str] diff --git a/scraper-lambda/tests/__init__.py b/scraper-lambda/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scraper-lambda/tests/unit/__init__.py b/scraper-lambda/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/scraper-lambda/tests/unit/test_handler.py b/scraper-lambda/tests/unit/test_handler.py new file mode 100644 index 0000000..eda81de --- /dev/null +++ b/scraper-lambda/tests/unit/test_handler.py @@ -0,0 +1,55 @@ +import json + + +from src import app + + +def test_static_page(): + resp = app.handler({ + "url": "https://d1qbk7p5aewspc.cloudfront.net/test/test_static.html", + "content_type": "html", + "selector": "#content-section > section.products > div:nth-child(2) > span", + }, "") + data = json.loads(resp["body"]) + + assert resp["statusCode"] == 200 + assert "result" in data + assert data["result"][0] == '$25' + + +def test_render_page(): + resp = app.handler({ + "url": "https://d1qbk7p5aewspc.cloudfront.net/test/test_render.html", + "content_type": "html", + "selector": "#content-section > section.products > div:nth-child(2) > span", + }, "") + data = json.loads(resp["body"]) + + assert resp["statusCode"] == 200 + assert "result" in data + assert data["result"][0] == '$25' + + +def test_json(): + resp = app.handler({ + "url": "https://jsonplaceholder.typicode.com/users/1", + "content_type": "json", + }, "") + data = json.loads(resp["body"]) + + assert resp["statusCode"] == 200 + assert "result" in data + assert data["result"]["username"] == "Bret" + + +def test_devocean(): + resp = app.handler({ + "url": "https://devocean.sk.com/blog/index.do?techType=NEWS", + "content_type": "html", + "selector": "div.sec-area > ul.sec-area-list01 > li:first-child > div a > h3.pc_view" + }, "") + data = json.loads(resp["body"]) + + assert resp["statusCode"] == 200 + assert "result" in data + assert data["result"] is not None diff --git a/template.yaml b/template.yaml new file mode 100644 index 0000000..e99ee0b --- /dev/null +++ b/template.yaml @@ -0,0 +1,185 @@ +AWSTemplateFormatVersion: '2010-09-09' +Transform: AWS::Serverless-2016-10-31 +Description: AI News Agent stack + +Parameters: + PROFILE: + Type: String + Default: local + AllowedValues: + - dev + - prod + - local + Description: 배포에 사용할 phase + +Conditions: + IsProd: !Equals [!Ref PROFILE, prod] + +Resources: + NewsScraperAgentFunction: + Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction + Properties: + FunctionName: !Sub news-scraper-agent-${PROFILE} + ImageUri: !Sub 339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/news-scraper-agent-${PROFILE} + Timeout: 600 # 600초 (10분) + EventInvokeConfig: + MaximumRetryAttempts: 1 + MaximumEventAgeInSeconds: 21600 # 6시간 + MemorySize: 512 + PackageType: Image + Architectures: + - x86_64 + Role: !GetAtt NewsScraperAgentFunctionRole.Arn + Tags: + PROJECT: AI_NEWS_AGENT + PHASE: !Ref PROFILE + Policies: + - LambdaInvokePolicy: + FunctionName: + !Ref ScraperLambdaFunction + Environment: + Variables: + PROFILE: !Ref PROFILE + Metadata: + Dockerfile: Dockerfile + DockerContext: ./news-scraper-agent + DependsOn: NewsScraperAgentFunctionRole + + NewsScraperAgentSchedule: + Type: AWS::Events::Rule + Condition: IsProd + Properties: + Name: !Sub news-scraper-agent-schedule-${PROFILE} + ScheduleExpression: 'cron(0 10 ? * 2-6 *)' + ScheduleExpressionTimezone: Asia/Seoul + Description: news-scraper-agent daily scheduler + State: ENABLED + Targets: + - Id: NewsScraperAgentFunction + Arn: !GetAtt NewsScraperAgentFunction.Arn + + ScraperLambdaFunction: + Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction + Properties: + FunctionName: !Sub scraper-lambda-${PROFILE} + ImageUri: !Sub 339712918956.dkr.ecr.ap-northeast-2.amazonaws.com/ai-news-agent/scraper-lambda-${PROFILE} + Timeout: 300 # 300초 + MemorySize: 512 + PackageType: Image + Architectures: + - x86_64 + Role: !GetAtt ScraperLambdaFunctionRole.Arn + Tags: + PROJECT: AI_NEWS_AGENT + PHASE: !Ref PROFILE + Environment: + Variables: + PROFILE: !Ref PROFILE + Metadata: + Dockerfile: Dockerfile + DockerContext: ./scraper-lambda/src + DependsOn: ScraperLambdaFunctionRole + + NewsScraperAgentFunctionRole: + Type: AWS::IAM::Role + Properties: + RoleName: !Sub news-scraper-agent-function-role-${PROFILE} + Tags: + - Key: PROJECT + Value: AI_NEWS_AGENT + - Key: PHASE + Value: !Ref PROFILE + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: sts:AssumeRole + Policies: + - PolicyName: LambdaECRAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - ecr:GetAuthorizationToken + - ecr:BatchCheckLayerAvailability + - ecr:GetDownloadUrlForLayer + - ecr:BatchGetImage + Resource: !Sub arn:aws:ecr:ap-northeast-2:339712918956:repository/ai-news-agent/news-scraper-agent-${PROFILE} + - PolicyName: LambdaCloudWatchLogsAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: !Sub arn:aws:logs:ap-northeast-2:339712918956:log-group:/aws/lambda/news-scraper-agent-${PROFILE}:* + - PolicyName: EventBridgeSchedule + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: !Sub arn:aws:logs:ap-northeast-2:339712918956:log-group:/aws/lambda/news-scraper-agent-${PROFILE}:* + - PolicyName: LambdaInvokePermission + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - lambda:InvokeFunction + Resource: !GetAtt ScraperLambdaFunction.Arn + + ScraperLambdaFunctionRole: + Type: AWS::IAM::Role + Properties: + RoleName: !Sub scraper-lambda-function-role-${PROFILE} + Tags: + - Key: PROJECT + Value: AI_NEWS_AGENT + - Key: PHASE + Value: !Ref PROFILE + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: lambda.amazonaws.com + Action: sts:AssumeRole + Policies: + - PolicyName: LambdaECRAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - ecr:GetAuthorizationToken + - ecr:BatchCheckLayerAvailability + - ecr:GetDownloadUrlForLayer + - ecr:BatchGetImage + Resource: !Sub arn:aws:ecr:ap-northeast-2:339712918956:repository/ai-news-agent/scraper-lambda-${PROFILE} + - PolicyName: LambdaCloudWatchLogsAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogGroup + - logs:CreateLogStream + - logs:PutLogEvents + Resource: !Sub arn:aws:logs:ap-northeast-2:339712918956:log-group:/aws/lambda/scraper-lambda-${PROFILE}:* + +Outputs: + NewsScraperAgentFunction: + Description: "News Scraper Agent Function ARN" + Value: !GetAtt NewsScraperAgentFunction.Arn + ScraperLambdaFunction: + Description: "Scraper Lambda Function ARN" + Value: !GetAtt ScraperLambdaFunction.Arn diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index c9fd079..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", // 어떤 버전으로 컴파일 - "allowSyntheticDefaultImports": true, // default export가 없는 모듈에서 default imports를 허용 - "experimentalDecorators": true, // decorator 실험적 허용 - "emitDecoratorMetadata": true, // 데코레이터가 있는 선언에 대해 특정 타입의 메타 데이터를 내보내는 실험적인 지원 - "skipLibCheck": true, // 정의 파일 타입 체크 여부 - "moduleResolution": "node", // commonJS -> node 에서 동작 - "module": "commonjs", // import 문법 - "strict": true, // 타입 검사 엄격하게 - "pretty": true, // error 메시지 예쁘게 - "sourceMap": true, // 소스맵 파일 생성 -> .ts가 .js 파일로 트랜스 시 .js.map 생성 - "outDir": "./dist", // 트랜스 파일 (.js) 저장 경로 - "allowJs": true, // js 파일 ts에서 import 허용 - "esModuleInterop": true, // ES6 모듈 사양을 준수하여 CommonJS 모듈을 가져올 수 있게 허용 - "typeRoots": [ - "./node_modules/@types" // 설정 안할시 기본적으로 ./node_modules/@types - ] - }, - "exclude": [ - "node_modules", // build 시 제외 - "tests" - ] -} From 4c8cd9945a879c1194248735c44f33782134c480 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Fri, 17 Jan 2025 00:36:01 +0900 Subject: [PATCH 02/16] =?UTF-8?q?eventBridge=20=ED=81=AC=EB=A1=A0=EC=8B=9D?= =?UTF-8?q?=20utc=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/template.yaml b/template.yaml index e99ee0b..e98e342 100644 --- a/template.yaml +++ b/template.yaml @@ -50,8 +50,7 @@ Resources: Condition: IsProd Properties: Name: !Sub news-scraper-agent-schedule-${PROFILE} - ScheduleExpression: 'cron(0 10 ? * 2-6 *)' - ScheduleExpressionTimezone: Asia/Seoul + ScheduleExpression: 'cron(0 1 ? * 2-6 *)' Description: news-scraper-agent daily scheduler State: ENABLED Targets: From 7e63047532bd859d955a37ba6bb428acca121b9f Mon Sep 17 00:00:00 2001 From: hyejungg Date: Fri, 17 Jan 2025 01:25:02 +0900 Subject: [PATCH 03/16] =?UTF-8?q?readme=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ++++++++++++++++++++++++++++++------ news-scraper-agent/README.md | 13 +++------- scraper-lambda/README.md | 6 ++++- 3 files changed, 49 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 89b894a..f7bfda0 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,48 @@ -# ai-news-noti-bot +# LangGraph 기반의 AI 뉴스 트렌드 알림 봇 (v2) + +AI 뉴스 트렌드 알림 봇은 회사 내 GAI(Generative AI) 스터디원들에게 최신 AI 뉴스들을 매일 오전 10시에 전달 하기 위해 제작 됐어요! +특정 사이트에 대한 뉴스 기사 중 GAI, AI와 관련된 뉴스들만 필터링 합니다. +현재 크롤링 중인 사이트는 '긱뉴스', '데보션', 'AI 타임즈'이고, 사이트 추가는 누구든 [링크](https://d1qbk7p5aewspc.cloudfront.net/index.html)에서 자유롭게 가능합니다. -AI 트렌드 알림 봇 +> 📍 v1은 [여기](https://github.com/hyejungg/ai-news-noti-bot/releases/tag/1.0.0-archive)에서 볼 수 있습니다. -## modules +### v1 에서 v2로 개선한 이유 +- 기존 방식은 DB에 저장되어 있는 각 사이트별 keyword를 기준으로 기사 제목에서 동일한 값이 있는 뉴스들만 필터링 +- 이로 인해 **원하지 않은 뉴스도 알림 메시지에 포함**되는 문제가 존재 + - (ex. '왜 통신사 직원이 중학교 교실 찾아 AI를 가르칠까') +- **LLM을 이용하여 크롤링, 필터링, 정렬을 개선**하기 위해 **전체적인 구조**를 변경 + - 동적으로 변경되는 html에 대한 파싱 대응을 위해 크롤링 과정도 LLM을 통해 진행 + +## 📂 modules ### news-scraper-agent -> 뉴스 스크래핑 + 알림 python 봇 +> LLM 관련 뉴스 정보 필터링/정렬 + 알림 python 봇 + +### scraper-lambda +> 뉴스 스크래핑을 위한 람다 + +## 📈 flow chart +- news-scraper-agent는 뉴스봇 실행부터 각 에이전트를 돌며 파싱, 크롤링, 필터링, 정렬 하는 과정을 거친 후 카카오워크 메시지로 매주 10시에 알람을 보내줍니다. +Image + +## 🛠️architecture +- news-scraper-agent와 scraper-lambda는 AWS 리소스로 이루어져 있습니다. +- aws sam (serverless application model)을 이용하여 로컬 환경에서 람다 디버깅 편의성을 높이고, cloudFormation 기반으로 뉴스봇에 사용하는 모든 리소스를 stack 형태로 관리하고 있습니다. +![Image](https://github.com/user-attachments/assets/af96cb0a-fcbc-4a61-8108-d328497f900a) + +## 🔥result +![Image](https://github.com/user-attachments/assets/a6a4a2c7-3520-4331-8160-44ed5ce3832d) +![Image](https://github.com/user-attachments/assets/d1fb5f52-f06a-41ff-ab71-702d7998212b) + +## 🔖 convention + +## 🔥schedule management +> [여기](https://github.com/hyejungg/ai-news-noti-bot/issues/10)에서 전체 일정(v1, v2) 관리 내용을 볼 수 있습니다. -## git convention +- v1 개발 기간: 2024.03.12 ~ 2024.03.25 (13d) +- v2 개발 기간: 2024.11.04 ~ 2024.12.05 (32d) -### branch +### ⚡ git +**1. branch** ``` -------- main -------- \ @@ -30,5 +64,5 @@ AI 트렌드 알림 봇 - docs : 문서 수정 - comment :주석 추가 및 수정 -### commit +**2. commit message** - 별도의 규칙 없음 diff --git a/news-scraper-agent/README.md b/news-scraper-agent/README.md index 83405b8..c16e275 100644 --- a/news-scraper-agent/README.md +++ b/news-scraper-agent/README.md @@ -3,6 +3,7 @@ ## required - python 3.12.2 +- poetry 2.0.1 ## 실행 방법 ```shell @@ -17,12 +18,11 @@ python {파일명}.py sam local invoke # 빌드 후 배포 -sam build -sam deploy +sam build --config-env {phase} +sam deploy --config-env {phase} ``` ## memo -- 현재는 langsmith 로 연결해두었는데 .. 만약에 이게 사내망에서 서비스 하는 걸로 변경된다면 langfuse 써보기! - 의존성 내보내기 - -f, --format: 내보낼 파일의 형식을 지정합니다. 현재는 requirements.txt 형식만 지원합니다. - --output, -o: 내보낸 의존성 목록을 저장할 파일의 경로를 지정합니다. 지정하지 않으면 표준 출력으로 결과가 나타납니다. @@ -32,10 +32,3 @@ sam deploy ```shell poetry export -f requirements.txt --output requirements.txt ``` -- 프로젝트 빌드 및 배포 - - 이 명령어는 wheel과 source archive를 생성 - - PyPI에 배포하려면 먼저 PyPI 계정이 있어야 하며, 다음과 같이 배포 가능 -```shell -poetry build -poetry publish -``` diff --git a/scraper-lambda/README.md b/scraper-lambda/README.md index d71e132..835f9e2 100644 --- a/scraper-lambda/README.md +++ b/scraper-lambda/README.md @@ -1,5 +1,9 @@ # scraper-lambda +## required +- python 3.12.2 +- poetry 2.0.1 +- ## 동작 url, content_type, selector를 받아 해당 url의 데이터에서 html인 경우 전체 내용 또는 selector에 해당하는 데이터를 추출하여 반환 @@ -42,4 +46,4 @@ Example [참고](https://repost.aws/questions/QUjl_fJ_-bQEW-_a-i6qCVog/rollback-complete-state-and-can-not-be-updated) ```aiignore An error occurred (ValidationError) when calling the CreateChangeSet operation: Stack:arn:aws:cloudformation:ap-northeast-2:339712918956:stack/scraper-lambda/3277bad0-9a85-11ef-81d5-069f4e3fe3e7 is in ROLLBACK_COMPLETE state and can not be updated. - ``` \ No newline at end of file + ``` From 0dee1d762d79102808904c5b2b564d3d39db6166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=98=9C=EC=A0=95=20=28hyejung=20kim=29?= <68772751+hyejungg@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:26:25 +0900 Subject: [PATCH 04/16] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f7bfda0..c980fb0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ AI 뉴스 트렌드 알림 봇은 회사 내 GAI(Generative AI) 스터디원들 특정 사이트에 대한 뉴스 기사 중 GAI, AI와 관련된 뉴스들만 필터링 합니다. 현재 크롤링 중인 사이트는 '긱뉴스', '데보션', 'AI 타임즈'이고, 사이트 추가는 누구든 [링크](https://d1qbk7p5aewspc.cloudfront.net/index.html)에서 자유롭게 가능합니다. -> 📍 v1은 [여기](https://github.com/hyejungg/ai-news-noti-bot/releases/tag/1.0.0-archive)에서 볼 수 있습니다. +> 📍 v1 소스코드는 [여기](https://github.com/hyejungg/ai-news-noti-bot/tree/1.0.0-archive?tab=readme-ov-file)에서 볼 수 있습니다. ### v1 에서 v2로 개선한 이유 - 기존 방식은 DB에 저장되어 있는 각 사이트별 keyword를 기준으로 기사 제목에서 동일한 값이 있는 뉴스들만 필터링 From 7ecfcf22d85ad944e91a3be9aea678a551070c84 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 20 Jan 2025 22:50:27 +0900 Subject: [PATCH 05/16] =?UTF-8?q?real=20->=20prod=20=EB=A1=9C=20=EC=9D=BC?= =?UTF-8?q?=EA=B4=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/config/env_config.py | 8 +++----- news-scraper-agent/config/log.py | 2 +- news-scraper-agent/external/kakaowork/client.py | 2 +- news-scraper-agent/loader/connect.py | 7 +++---- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/news-scraper-agent/config/env_config.py b/news-scraper-agent/config/env_config.py index 141f81b..d35124e 100644 --- a/news-scraper-agent/config/env_config.py +++ b/news-scraper-agent/config/env_config.py @@ -1,8 +1,6 @@ -from typing import Optional - from dotenv import load_dotenv from pydantic_settings import BaseSettings, SettingsConfigDict - +from typing import Optional load_dotenv() @@ -14,12 +12,12 @@ class Environment(BaseSettings): # db MONGO_DB_LOCAL_URI: str MONGO_DB_DEV_URI: str - MONGO_DB_REAL_URI: str + MONGO_DB_RPOD_URI: str # kakaoworks KAWORK_WEBHOOK_LOCAL_URI: str KAWORK_WEBHOOK_DEV_URI: str - KAWORK_WEBHOOK_REAL_URI: str + KAWORK_WEBHOOK_PROD_URI: str # langsmith LANGCHAIN_ENDPOINT: Optional[str] = None diff --git a/news-scraper-agent/config/log.py b/news-scraper-agent/config/log.py index 2e4ff8c..f01d255 100644 --- a/news-scraper-agent/config/log.py +++ b/news-scraper-agent/config/log.py @@ -29,7 +29,7 @@ def _initialize_logger(self): formatter = logging.Formatter(fmt="%(name)16s - %(message)s") # Logger 레벨 설정 - self.setLevel(logging.DEBUG if env.PROFILE != "real" else logging.INFO) + self.setLevel(logging.DEBUG if env.PROFILE != "prod" else logging.INFO) # RichHandler 추가 rich_handler = RichHandler( diff --git a/news-scraper-agent/external/kakaowork/client.py b/news-scraper-agent/external/kakaowork/client.py index 340c4f8..fb50280 100644 --- a/news-scraper-agent/external/kakaowork/client.py +++ b/news-scraper-agent/external/kakaowork/client.py @@ -9,7 +9,7 @@ HTTP_CONTENT_TYPE = "application/json" WEBHOOK_URL_MAP = { - "real": env.KAWORK_WEBHOOK_REAL_URI, + "prod": env.KAWORK_WEBHOOK_PROD_URI, "dev": env.KAWORK_WEBHOOK_DEV_URI, "local": env.KAWORK_WEBHOOK_LOCAL_URI, } diff --git a/news-scraper-agent/loader/connect.py b/news-scraper-agent/loader/connect.py index 28c7032..1ecd649 100644 --- a/news-scraper-agent/loader/connect.py +++ b/news-scraper-agent/loader/connect.py @@ -1,17 +1,16 @@ -from mongoengine import connect - from config.env_config import env from config.log import NewsScraperAgentLogger from models.message import Message from models.site import Site +from mongoengine import connect logger = NewsScraperAgentLogger() def connect_db(): try: - if env.PROFILE == "real": - connect(host=env.MONGO_DB_REAL_URI) + if env.PROFILE == "prod": + connect(host=env.MONGO_DB_PROD_URI) elif env.PROFILE == "develop": connect(host=env.MONGO_DB_DEV_URI) else: From 2c131e21cffe3eef3a167823bac1bb96b9acf39a Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 20 Jan 2025 23:08:16 +0900 Subject: [PATCH 06/16] =?UTF-8?q?EventBridge=20=EB=8C=80=EC=8B=A0=20?= =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A4=84=EB=9F=AC=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/template.yaml b/template.yaml index e98e342..255b09e 100644 --- a/template.yaml +++ b/template.yaml @@ -46,12 +46,14 @@ Resources: DependsOn: NewsScraperAgentFunctionRole NewsScraperAgentSchedule: - Type: AWS::Events::Rule + Type: AWS::Scheduler::Schedule Condition: IsProd Properties: Name: !Sub news-scraper-agent-schedule-${PROFILE} - ScheduleExpression: 'cron(0 1 ? * 2-6 *)' Description: news-scraper-agent daily scheduler + FlexibleTimeWindow: 'OFF' + ScheduleExpression: 'cron(0 10 ? * 2-6 * )' + ScheduleExpressionTimezone: Asia/Seoul State: ENABLED Targets: - Id: NewsScraperAgentFunction From 891655770a2aa3658d891e91fb80234e4ef132fa Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 20 Jan 2025 23:23:31 +0900 Subject: [PATCH 07/16] =?UTF-8?q?=EA=B3=B5=EC=8B=9D=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EC=9D=BC=EB=B6=80=20=ED=8C=8C?= =?UTF-8?q?=EB=9D=BC=EB=AF=B8=ED=84=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/template.yaml b/template.yaml index 255b09e..62513c6 100644 --- a/template.yaml +++ b/template.yaml @@ -51,13 +51,16 @@ Resources: Properties: Name: !Sub news-scraper-agent-schedule-${PROFILE} Description: news-scraper-agent daily scheduler - FlexibleTimeWindow: 'OFF' + FlexibleTimeWindow: + MaximumWindowInMinutes: 1 + Mode: 'FLEXIBLE' ScheduleExpression: 'cron(0 10 ? * 2-6 * )' ScheduleExpressionTimezone: Asia/Seoul State: ENABLED - Targets: - - Id: NewsScraperAgentFunction - Arn: !GetAtt NewsScraperAgentFunction.Arn + Target: + Arn: !GetAtt NewsScraperAgentFunction.Arn + RoleArn: !Sub news-scraper-agent-function-role-${PROFILE}.Arn + ScraperLambdaFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction From 28097143dd86ec8699411fed2bf69e9e7ec47e72 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 20 Jan 2025 23:26:59 +0900 Subject: [PATCH 08/16] =?UTF-8?q?RoleArn=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/template.yaml b/template.yaml index 62513c6..26f7ff6 100644 --- a/template.yaml +++ b/template.yaml @@ -59,7 +59,8 @@ Resources: State: ENABLED Target: Arn: !GetAtt NewsScraperAgentFunction.Arn - RoleArn: !Sub news-scraper-agent-function-role-${PROFILE}.Arn + RoleArn: !GetAtt NewsScraperAgentFunctionRole.Arn + ScraperLambdaFunction: From eabd03042bd1f179225af000c3c28c239ff2e2c5 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 20 Jan 2025 23:31:26 +0900 Subject: [PATCH 09/16] =?UTF-8?q?Role=20=EA=B6=8C=ED=95=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/template.yaml b/template.yaml index 26f7ff6..3ed6713 100644 --- a/template.yaml +++ b/template.yaml @@ -99,7 +99,9 @@ Resources: Statement: - Effect: Allow Principal: - Service: lambda.amazonaws.com + Service: + - lambda.amazonaws.com + - scheduler.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: LambdaECRAccess @@ -156,7 +158,8 @@ Resources: Statement: - Effect: Allow Principal: - Service: lambda.amazonaws.com + Service: + - lambda.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: LambdaECRAccess From d0234b6cea17bee59b2d1518c1ab3e47d93c92d1 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Tue, 21 Jan 2025 23:13:48 +0900 Subject: [PATCH 10/16] =?UTF-8?q?=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/config/env_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/news-scraper-agent/config/env_config.py b/news-scraper-agent/config/env_config.py index d35124e..584b7c1 100644 --- a/news-scraper-agent/config/env_config.py +++ b/news-scraper-agent/config/env_config.py @@ -12,7 +12,7 @@ class Environment(BaseSettings): # db MONGO_DB_LOCAL_URI: str MONGO_DB_DEV_URI: str - MONGO_DB_RPOD_URI: str + MONGO_DB_PROD_URI: str # kakaoworks KAWORK_WEBHOOK_LOCAL_URI: str From c3a6f5b6c6f1662f8ca61464c91b607e0dbe8592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=ED=98=9C=EC=A0=95=20=28hyejung=20kim=29?= <68772751+hyejungg@users.noreply.github.com> Date: Thu, 23 Jan 2025 01:11:03 +0000 Subject: [PATCH 11/16] =?UTF-8?q?=EC=8A=A4=EC=BC=80=EC=A4=84=EC=9A=A9=20?= =?UTF-8?q?=EB=A1=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template.yaml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/template.yaml b/template.yaml index 3ed6713..011f54f 100644 --- a/template.yaml +++ b/template.yaml @@ -59,7 +59,7 @@ Resources: State: ENABLED Target: Arn: !GetAtt NewsScraperAgentFunction.Arn - RoleArn: !GetAtt NewsScraperAgentFunctionRole.Arn + RoleArn: !GetAtt NewsScraperAgentScheduleRole.Arn @@ -144,6 +144,34 @@ Resources: - lambda:InvokeFunction Resource: !GetAtt ScraperLambdaFunction.Arn + NewsScraperAgentScheduleRole: + Type: AWS::IAM::Role + Properties: + RoleName: !Sub news-scraper-agent-schedule-role-${PROFILE} + Tags: + - Key: PROJECT + Value: AI_NEWS_AGENT + - Key: PHASE + Value: !Ref PROFILE + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - lambda.amazonaws.com + - scheduler.amazonaws.com + Action: sts:AssumeRole + Policies: + - PolicyName: LambdaInvokePermission + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - lambda:InvokeFunction + Resource: !GetAtt NewsScraperAgentFunction.Arn + ScraperLambdaFunctionRole: Type: AWS::IAM::Role Properties: From 35ac782175c9b7bb078e41720166ccc5060b8960 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Fri, 31 Jan 2025 15:44:44 +0900 Subject: [PATCH 12/16] =?UTF-8?q?db=20=EC=97=B0=EA=B2=B0=20=EC=8B=9C=20?= =?UTF-8?q?=EC=9D=B8=EB=8D=B1=EC=8A=A4=20=EC=A1=B4=EC=9E=AC=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=ED=99=95=EC=9D=B8=ED=95=98=EB=8A=94=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/loader/connect.py | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/news-scraper-agent/loader/connect.py b/news-scraper-agent/loader/connect.py index 1ecd649..a402bba 100644 --- a/news-scraper-agent/loader/connect.py +++ b/news-scraper-agent/loader/connect.py @@ -1,7 +1,5 @@ from config.env_config import env from config.log import NewsScraperAgentLogger -from models.message import Message -from models.site import Site from mongoengine import connect logger = NewsScraperAgentLogger() @@ -16,13 +14,7 @@ def connect_db(): else: connect(host=env.MONGO_DB_LOCAL_URI) - logger.info("MongoDB Connected ...") - - # 컬렉션 생성 확인 - Site.ensure_indexes() - logger.info("Site Collection is ready!") - Message.ensure_indexes() - logger.info("Message Collection is ready!") + logger.info(f"MongoDB connected. phase={env.PROFILE}") except Exception as err: logger.error(f"MongoDB connect error: {err}") From ca647088dfe226c54045c649f8b2a7f8d20c0df1 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Fri, 31 Jan 2025 15:44:52 +0900 Subject: [PATCH 13/16] =?UTF-8?q?local=20invoke=20=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EC=84=A4=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/news-scraper-agent/README.md b/news-scraper-agent/README.md index c16e275..1071a6f 100644 --- a/news-scraper-agent/README.md +++ b/news-scraper-agent/README.md @@ -15,7 +15,8 @@ python {파일명}.py ## 배포 방법 ```shell # 로컬에서 실행 방법 -sam local invoke +sam local invoke --config-env {phase} {이미지 이름} + # 빌드 후 배포 sam build --config-env {phase} From 12c7fa7281379a590d7fcb9c5322367ee9af7de5 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Mon, 3 Feb 2025 21:12:32 +0900 Subject: [PATCH 14/16] =?UTF-8?q?db=20=ED=95=84=EB=93=9C=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9D=B8=EB=8D=B1=EC=8A=A4=EB=AA=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/models/message.py | 15 ++++++++------- news-scraper-agent/models/site.py | 22 ++++++++++------------ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/news-scraper-agent/models/message.py b/news-scraper-agent/models/message.py index 53b7b75..e363a60 100644 --- a/news-scraper-agent/models/message.py +++ b/news-scraper-agent/models/message.py @@ -14,24 +14,25 @@ class MessageContent(EmbeddedDocument): - name = StringField(required=False) - title = StringField(required=False) - url = StringField(required=False) + name = StringField(required=False, db_field="name") + title = StringField(required=False, db_field="title") + url = StringField(required=False, db_field="url") class Message(Document): - type = StringField(required=True) - status = StringField(required=True) + type = StringField(required=True, db_field="type") + status = StringField(required=True, db_field="status") messages = ListField(EmbeddedDocumentField(MessageContent)) # timestamps 옵션 대신 createdAt과 updatedAt 필드를 직접 정의 - createdAt = DateTimeField() - updatedAt = DateTimeField() + createdAt = DateTimeField(db_field="createdAt") + updatedAt = DateTimeField(db_field="updatedAt") meta = { "collection": "messages", "indexes": [ { + "name": "createdAt_1", "fields": ["createdAt"], "expireAfterSeconds": 60 * 60 * 24 * 180, } # 180일 후 만료 diff --git a/news-scraper-agent/models/site.py b/news-scraper-agent/models/site.py index 9418a02..e3a79f5 100644 --- a/news-scraper-agent/models/site.py +++ b/news-scraper-agent/models/site.py @@ -1,27 +1,25 @@ -from typing import Optional - from mongoengine import Document, StringField, ListField, BooleanField, DateTimeField from pydantic import BaseModel - +from typing import Optional from utils.time_utils import get_datetime_kst class Site(Document): - name = StringField(required=True) - url = StringField(required=True) - keywords = ListField(StringField(), required=False) - verified = BooleanField(required=True, default=False) - requestedBy = StringField(required=False) + name = StringField(required=True, db_field="name") + url = StringField(required=True, db_field="url") + keywords = ListField(StringField(), required=False, db_field="keywords") + verified = BooleanField(required=True, default=False, db_field="verified") + requestedBy = StringField(required=False, db_field="requestedBy") # timestamps 옵션 대신 createdAt과 updatedAt 필드를 직접 정의 - createdAt = DateTimeField() - updatedAt = DateTimeField() + createdAt = DateTimeField(db_field="createdAt") + updatedAt = DateTimeField(db_field="updatedAt") meta = { "collection": "sites", "indexes": [ - {"fields": ["name"]}, - {"fields": ["url"]}, + {"name": "name_1", "fields": ["name"]}, + {"name": "url_1", "fields": ["url"]}, ], "auto_create_index": True, "index_background": True, From dfd39e0fcc7c5990f56159821f49fb5fe61d3621 Mon Sep 17 00:00:00 2001 From: hyejungg Date: Tue, 4 Feb 2025 21:29:19 +0900 Subject: [PATCH 15/16] =?UTF-8?q?EmbeddedDocumentField=EC=97=90=20?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EB=90=98=EB=8A=94=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EC=97=90=20=5Fid=20=ED=95=84=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/models/message.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/news-scraper-agent/models/message.py b/news-scraper-agent/models/message.py index e363a60..ce799f3 100644 --- a/news-scraper-agent/models/message.py +++ b/news-scraper-agent/models/message.py @@ -1,5 +1,3 @@ -from typing import Optional - from mongoengine import ( Document, StringField, @@ -7,13 +5,15 @@ EmbeddedDocument, EmbeddedDocumentField, DateTimeField, + ObjectIdField, ) from pydantic import BaseModel - +from typing import Optional from utils.time_utils import get_datetime_kst class MessageContent(EmbeddedDocument): + _id = ObjectIdField(required=True, db_field="_id") # _id 필드 추가 name = StringField(required=False, db_field="name") title = StringField(required=False, db_field="title") url = StringField(required=False, db_field="url") @@ -22,7 +22,7 @@ class MessageContent(EmbeddedDocument): class Message(Document): type = StringField(required=True, db_field="type") status = StringField(required=True, db_field="status") - messages = ListField(EmbeddedDocumentField(MessageContent)) + messages = ListField(EmbeddedDocumentField(MessageContent), db_field="messages") # timestamps 옵션 대신 createdAt과 updatedAt 필드를 직접 정의 createdAt = DateTimeField(db_field="createdAt") @@ -37,6 +37,7 @@ class Message(Document): "expireAfterSeconds": 60 * 60 * 24 * 180, } # 180일 후 만료 ], + "auto_create_index": True, # 인덱스가 없을 경우 자동 생성 "versionKey": False, # __v 필드 생성 방지 } From a0971f249b5136a0296dd3d9ae327ea109cd060b Mon Sep 17 00:00:00 2001 From: hyejungg Date: Tue, 4 Feb 2025 21:29:29 +0900 Subject: [PATCH 16/16] =?UTF-8?q?=EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=ED=82=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- news-scraper-agent/models/site.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/news-scraper-agent/models/site.py b/news-scraper-agent/models/site.py index e3a79f5..5597b6b 100644 --- a/news-scraper-agent/models/site.py +++ b/news-scraper-agent/models/site.py @@ -21,8 +21,7 @@ class Site(Document): {"name": "name_1", "fields": ["name"]}, {"name": "url_1", "fields": ["url"]}, ], - "auto_create_index": True, - "index_background": True, + "auto_create_index": True, # 인덱스가 없을 경우 자동 생성 "versionKey": False, # __v 필드 생성 방지 }