├── .gitignore ├── Chinook.db ├── callbacks ├── __init__.py ├── streamlit_debug_callback_handler.py └── capturing_callback_handler.py ├── runs ├── leo.pickle └── alanis.pickle ├── mrkl_minimal.py ├── Pipfile ├── minimal_agent.py ├── .pre-commit-config.yaml ├── clear_results.py ├── callback_handler_test.py ├── README.md ├── .github └── repo_meta.yaml ├── streaming_demo.py ├── mrkl_demo.py ├── LICENSE └── Pipfile.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .streamlit/ 3 | __pycache__/ 4 | .DS_Store 5 | -------------------------------------------------------------------------------- /Chinook.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamlit/StreamlitLangChain/HEAD/Chinook.db -------------------------------------------------------------------------------- /callbacks/__init__.py: -------------------------------------------------------------------------------- 1 | from callbacks.capturing_callback_handler import playback_callbacks -------------------------------------------------------------------------------- /runs/leo.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamlit/StreamlitLangChain/HEAD/runs/leo.pickle -------------------------------------------------------------------------------- /runs/alanis.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamlit/StreamlitLangChain/HEAD/runs/alanis.pickle -------------------------------------------------------------------------------- /mrkl_minimal.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | 3 | st.info( 4 | """ 5 | This copy of the MRKL app has been deprecated. View the latest app at [langchain-mrkl.streamlit.app](https://langchain-mrkl.streamlit.app) 6 | ([Source Code](https://github.com/langchain-ai/streamlit-agent/blob/main/streamlit_agent/mrkl_demo.py)). 7 | """ 8 | ) 9 | -------------------------------------------------------------------------------- /Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | url = "https://pypi.org/simple" 3 | verify_ssl = true 4 | name = "pypi" 5 | 6 | [packages] 7 | streamlit = ">=1.24.0" 8 | openai = "*" 9 | watchdog = "*" 10 | duckduckgo-search = "*" 11 | langchain = ">=0.0.217" 12 | 13 | [dev-packages] 14 | black = "*" 15 | pre-commit = "*" 16 | mypy = "*" 17 | 18 | [requires] 19 | python_version = "3.11" 20 | python_full_version = "3.11.2" 21 | -------------------------------------------------------------------------------- /minimal_agent.py: -------------------------------------------------------------------------------- 1 | from langchain.llms import OpenAI 2 | from langchain.agents import AgentType, initialize_agent, load_tools 3 | from langchain.callbacks import StreamlitCallbackHandler 4 | import streamlit as st 5 | 6 | llm = OpenAI(temperature=0, streaming=True) 7 | tools = load_tools(["ddg-search"]) 8 | agent = initialize_agent( 9 | tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True 10 | ) 11 | 12 | if prompt := st.chat_input(): 13 | st.chat_message("user").write(prompt) 14 | with st.chat_message("assistant"): 15 | st_callback = StreamlitCallbackHandler(st.container()) 16 | response = agent.run(prompt, callbacks=[st_callback]) 17 | st.write(response) 18 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.4.0 4 | hooks: 5 | - id: check-yaml 6 | - id: end-of-file-fixer 7 | - id: trailing-whitespace 8 | - repo: https://github.com/psf/black 9 | rev: 23.3.0 10 | hooks: 11 | - id: black 12 | # It is recommended to specify the latest version of Python 13 | # supported by your project here, or alternatively use 14 | # pre-commit's default_language_version, see 15 | # https://pre-commit.com/#top_level-default_language_version 16 | language_version: python3.9 17 | args: ["--line-length", "100"] 18 | -------------------------------------------------------------------------------- /clear_results.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | 3 | # A hack to "clear" the previous result when submitting a new prompt. This avoids 4 | # the "previous run's text is grayed-out but visible during rerun" Streamlit behavior. 5 | class DirtyState: 6 | NOT_DIRTY = "NOT_DIRTY" 7 | DIRTY = "DIRTY" 8 | UNHANDLED_SUBMIT = "UNHANDLED_SUBMIT" 9 | 10 | 11 | def get_dirty_state() -> str: 12 | return st.session_state.get("dirty_state", DirtyState.NOT_DIRTY) 13 | 14 | 15 | def set_dirty_state(state: str) -> None: 16 | st.session_state["dirty_state"] = state 17 | 18 | 19 | def with_clear_container(submit_clicked): 20 | if get_dirty_state() == DirtyState.DIRTY: 21 | if submit_clicked: 22 | set_dirty_state(DirtyState.UNHANDLED_SUBMIT) 23 | st.experimental_rerun() 24 | else: 25 | set_dirty_state(DirtyState.NOT_DIRTY) 26 | 27 | if submit_clicked or get_dirty_state() == DirtyState.UNHANDLED_SUBMIT: 28 | set_dirty_state(DirtyState.DIRTY) 29 | return True 30 | 31 | return False 32 | -------------------------------------------------------------------------------- /callback_handler_test.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import streamlit as st 4 | from langchain.callbacks import StdOutCallbackHandler 5 | 6 | from callbacks import StreamlitCallbackHandler, playback_callbacks 7 | 8 | # Build our sidebar 9 | selected_run = st.sidebar.selectbox("Saved Query", ["alanis.pickle", "leo.pickle"]) 10 | max_pause_time = st.sidebar.number_input( 11 | "Max Pause Time", min_value=0.0, value=2.0, step=1.0 12 | ) 13 | max_thought_containers = st.sidebar.number_input( 14 | "Max Thought Containers", 15 | min_value=0, 16 | value=3, 17 | step=1, 18 | ) 19 | expand_new_thoughts = st.sidebar.checkbox("Expand New Thoughts by Default", value=True) 20 | 21 | RUN_PATH = Path(__file__).parent / "runs" / str(selected_run) 22 | 23 | streamlit_handler = StreamlitCallbackHandler( 24 | parent_container=st.container(), 25 | expand_new_thoughts=expand_new_thoughts, 26 | max_thought_containers=int(max_thought_containers), 27 | collapse_completed_thoughts=True, 28 | ) 29 | playback_callbacks( 30 | [streamlit_handler, StdOutCallbackHandler()], 31 | str(RUN_PATH), 32 | max_pause_time=max_pause_time, 33 | ) 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # StreamlitLangChain 2 | 3 | Repository for experimenting with Streamlit <> LangChain integrations. Current projects: 4 | 5 | - **MRKL Demo:** Demo the LangChain MRKL agent as a Streamlit app. 6 | 7 | ## Setup 8 | 9 | Create Python environment: 10 | 11 | ```shell 12 | $ pipenv install 13 | $ pipenv shell 14 | ``` 15 | 16 | Install pre-commit hook: 17 | 18 | ```shell 19 | $ pre-commit install 20 | ``` 21 | 22 | Create `.streamlit/secrets.toml`: 23 | 24 | ```toml 25 | openai_api_key = "[YOUR_KEY]" 26 | ``` 27 | 28 | ## Run 29 | 30 | ```shell 31 | $ streamlit run mrkl_demo.py 32 | ``` 33 | 34 | ## Relevant Source Files 35 | 36 | - `mrkl_demo.py` - Replicates the [MRKL Agent demo notebook](https://python.langchain.com/en/latest/modules/agents/agents/examples/mrkl.html) as a Streamlit app, using the callback handler. 37 | - `mrkl_minimal.py` - Minimal version of the MRKL app, currently embedded in LangChain docs 38 | - `minimal_agent.py` - A most-minimal version of the integration, referenced in the LangChain callback integration docs 39 | 40 | ### `callbacks/` 41 | 42 | - `capturing_callback_handler.py` - LangChain callback handler that captures and stores LangChain queries for offline replay. (This is a developer tool, and is not required by `streamlit_callback_handler`!) 43 | -------------------------------------------------------------------------------- /.github/repo_meta.yaml: -------------------------------------------------------------------------------- 1 | # point_of_contact: the owner of this repository, can be a GitHub user or GitHub team 2 | point_of_contact: sfc-gh-tconkling 3 | 4 | # production: whether this repository meets the criteria for being "production", see https://snowflakecomputing.atlassian.net/wiki/spaces/CLO/pages/2239988967/Production+Repository+Criteria for criteria 5 | production: false 6 | 7 | # distributed: whether any source code in this repository is distributed directly to customers (e.g. driver and frontend software) 8 | distributed: false 9 | 10 | # modified: whether any open source dependencies in this repository have been modified 11 | modified: false 12 | 13 | # release_branches: list of release branch patterns, exact matches or regex is acceptable 14 | release_branches: 15 | - main 16 | - release.* 17 | 18 | 19 | # code_owners_file_present: whether there is a CODEOWNERS file in this repository 20 | code_owners_file_present: false 21 | 22 | # jira_project_issue_type: the jira issuetype used to raise issues related to this repository in the SNOW Jira project 23 | jira_project_issue_type: Bug 24 | 25 | 26 | 27 | # jira_area: the jira area that raised issues should use 28 | jira_area: Streamlit 29 | 30 | 31 | #audit_in_scope: whether this repository is included in scope for audits or certifications (SOX, SOC, ISO, Fedramp etc.) 32 | audit_in_scope: False 33 | 34 | -------------------------------------------------------------------------------- /streaming_demo.py: -------------------------------------------------------------------------------- 1 | from langchain.callbacks.base import BaseCallbackHandler 2 | from langchain.chat_models import ChatOpenAI 3 | from langchain.schema import ChatMessage 4 | import streamlit as st 5 | 6 | 7 | class StreamHandler(BaseCallbackHandler): 8 | def __init__(self, container, initial_text=""): 9 | self.container = container 10 | self.text = initial_text 11 | 12 | def on_llm_new_token(self, token: str, **kwargs) -> None: 13 | self.text += token 14 | self.container.markdown(self.text) 15 | 16 | 17 | with st.sidebar: 18 | openai_api_key = st.text_input("OpenAI API Key", type="password") 19 | 20 | if "messages" not in st.session_state: 21 | st.session_state["messages"] = [ChatMessage(role="assistant", content="How can I help you?")] 22 | 23 | for msg in st.session_state.messages: 24 | st.chat_message(msg.role).write(msg.content) 25 | 26 | if prompt := st.chat_input(): 27 | st.session_state.messages.append(ChatMessage(role="user", content=prompt)) 28 | st.chat_message("user").write(prompt) 29 | 30 | if not openai_api_key: 31 | st.info("Please add your OpenAI API key to continue.") 32 | st.stop() 33 | 34 | with st.chat_message("assistant"): 35 | container = st.empty() 36 | stream_handler = StreamHandler(container) 37 | llm = ChatOpenAI(openai_api_key=openai_api_key, streaming=True, callbacks=[stream_handler]) 38 | response = llm(st.session_state.messages) 39 | st.session_state.messages.append(ChatMessage(role="assistant", content=response.content)) 40 | container.markdown(response.content) 41 | -------------------------------------------------------------------------------- /callbacks/streamlit_debug_callback_handler.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any, Optional 4 | 5 | from langchain.callbacks.base import BaseCallbackHandler 6 | from langchain.schema import AgentAction, AgentFinish, LLMResult 7 | from streamlit.delta_generator import DeltaGenerator 8 | 9 | _TEXT_COLOR_MAPPING = { 10 | "blue": "blue", 11 | "yellow": "orange", 12 | "pink": "violet", 13 | "green": "green", 14 | "red": "red", 15 | } 16 | 17 | 18 | def _convert_newlines(text: str) -> str: 19 | """Convert newline characters to markdown newline sequences (space, space, newline)""" 20 | return text.replace("\n", " \n") 21 | 22 | 23 | def _colorize(text: str, color: str | None) -> str: 24 | if color in _TEXT_COLOR_MAPPING: 25 | # Syntax: `:color[text to be colored]` 26 | return f":{_TEXT_COLOR_MAPPING[color]}[{text}]" 27 | 28 | return text 29 | 30 | 31 | class StreamlitDebugCallbackHandler(BaseCallbackHandler): 32 | """Callback Handler that prints to std out.""" 33 | 34 | def __init__(self, container: DeltaGenerator) -> None: 35 | """Initialize callback handler.""" 36 | self._text_element: DeltaGenerator | None = None 37 | self._text = "" 38 | self._container_stack: list[DeltaGenerator] = [container] 39 | self._chain_stack: list[str] = [] 40 | self._tool_stack: list[str] = [] 41 | 42 | @property 43 | def _container(self) -> DeltaGenerator: 44 | return self._container_stack[len(self._container_stack) - 1] 45 | 46 | def _push_container(self, container: DeltaGenerator) -> None: 47 | self._container_stack.append(container) 48 | self._close_text_element() 49 | 50 | def _push_expander(self, label: str) -> None: 51 | self._push_container(self._container.expander(label)) 52 | 53 | def _pop_container(self) -> None: 54 | assert len(self._container_stack) > 1, "Can't pop final container!" 55 | self._container_stack.pop() 56 | self._close_text_element() 57 | 58 | def _print_text(self, text: str, color: str | None = None, end: str = "\n") -> None: 59 | if end != "\n": 60 | text += end 61 | 62 | text = _colorize(text, color) 63 | text = _convert_newlines(text) 64 | 65 | self._text += text 66 | if self._text_element is not None: 67 | self._text_element.markdown(self._text) 68 | else: 69 | self._text_element = self._container.markdown(self._text) 70 | 71 | if end == "\n": 72 | self._close_text_element() 73 | 74 | def _close_text_element(self) -> None: 75 | self._text_element = None 76 | self._text = "" 77 | 78 | def on_llm_start( 79 | self, serialized: dict[str, Any], prompts: list[str], **kwargs: Any 80 | ) -> None: 81 | """Print out the prompts.""" 82 | pass 83 | 84 | def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: 85 | """Do nothing.""" 86 | pass 87 | 88 | def on_llm_new_token(self, token: str, **kwargs: Any) -> None: 89 | """Do nothing.""" 90 | pass 91 | 92 | def on_llm_error(self, error: Exception | KeyboardInterrupt, **kwargs: Any) -> None: 93 | """Do nothing.""" 94 | pass 95 | 96 | def on_chain_start( 97 | self, serialized: dict[str, Any], inputs: dict[str, Any], **kwargs: Any 98 | ) -> None: 99 | """Print out that we are entering a chain.""" 100 | class_name = serialized["name"] 101 | self._print_text(f"\n\n**> Entering new {class_name} chain...**") 102 | self._chain_stack.append(class_name) 103 | 104 | def on_chain_end(self, outputs: dict[str, Any], **kwargs: Any) -> None: 105 | """Print out that we finished a chain.""" 106 | class_name = self._chain_stack.pop() 107 | self._print_text(f"\n**> Finished {class_name} chain.**") 108 | 109 | def on_chain_error( 110 | self, error: Exception | KeyboardInterrupt, **kwargs: Any 111 | ) -> None: 112 | """Do nothing.""" 113 | pass 114 | 115 | def on_tool_start( 116 | self, 117 | serialized: dict[str, Any], 118 | input_str: str, 119 | **kwargs: Any, 120 | ) -> None: 121 | """Do nothing.""" 122 | tool_name = serialized["name"] 123 | self._tool_stack.append(tool_name) 124 | self._print_text(f"**on_tool_start: {tool_name}**") 125 | 126 | def on_agent_action( 127 | self, action: AgentAction, color: Optional[str] = None, **kwargs: Any 128 | ) -> Any: 129 | """Run on agent action.""" 130 | self._push_expander(f"**on_agent_action**: {action.tool}") 131 | self._print_text(action.log, color=color) 132 | self._pop_container() 133 | 134 | def on_tool_end( 135 | self, 136 | output: str, 137 | color: Optional[str] = None, 138 | observation_prefix: Optional[str] = None, 139 | llm_prefix: Optional[str] = None, 140 | **kwargs: Any, 141 | ) -> None: 142 | """If not the final action, print out observation.""" 143 | tool_name = self._tool_stack.pop() 144 | self._push_expander(f"**on_tool_end**: {tool_name}") 145 | if observation_prefix is not None: 146 | self._print_text(f"\n{observation_prefix}") 147 | self._print_text(output, color=color) 148 | if llm_prefix is not None: 149 | self._print_text(f"\n{llm_prefix}") 150 | self._pop_container() 151 | 152 | def on_tool_error( 153 | self, error: Exception | KeyboardInterrupt, **kwargs: Any 154 | ) -> None: 155 | """Do nothing.""" 156 | pass 157 | 158 | def on_text( 159 | self, 160 | text: str, 161 | color: Optional[str] = None, 162 | end: str = "", 163 | **kwargs: Any, 164 | ) -> None: 165 | """Run when agent ends.""" 166 | self._push_expander("on_text") 167 | # This text contains a lot of ANSI control characters 168 | self._print_text(text, color=color, end=end) 169 | self._pop_container() 170 | 171 | def on_agent_finish( 172 | self, finish: AgentFinish, color: Optional[str] = None, **kwargs: Any 173 | ) -> None: 174 | """Run on agent end.""" 175 | self._print_text(finish.log, color=color) 176 | -------------------------------------------------------------------------------- /mrkl_demo.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import streamlit as st 4 | 5 | st.set_page_config(page_title="MRKL", page_icon="🦜", layout="wide") 6 | 7 | "# 🦜🔗 MRKL" 8 | 9 | """ 10 | This Streamlit app showcases a LangChain agent that replicates the 11 | [MRKL chain](https://arxiv.org/abs/2205.00445). 12 | 13 | This uses the [example Chinook database](https://github.com/lerocha/chinook-database). 14 | To set it up follow the instructions [here](https://database.guide/2-sample-databases-sqlite/), 15 | placing the .db file in the same directory as this app. 16 | 17 | """ 18 | 19 | # Setup credentials in Streamlit 20 | user_openai_api_key = st.sidebar.text_input( 21 | "OpenAI API Key", type="password", help="Set this to run your own custom questions." 22 | ) 23 | 24 | if user_openai_api_key: 25 | openai_api_key = user_openai_api_key 26 | enable_custom = True 27 | else: 28 | openai_api_key = "not_supplied" 29 | enable_custom = False 30 | 31 | with st.expander("👉 View the source code"), st.echo(): 32 | # LangChain imports 33 | from langchain import ( 34 | LLMMathChain, 35 | OpenAI, 36 | SQLDatabase, 37 | SQLDatabaseChain, 38 | ) 39 | from langchain.agents import AgentType 40 | from langchain.agents import initialize_agent, Tool 41 | from langchain.callbacks import StreamlitCallbackHandler 42 | from langchain.utilities import DuckDuckGoSearchAPIWrapper 43 | 44 | from callbacks.capturing_callback_handler import playback_callbacks 45 | 46 | # Tools setup 47 | DB_PATH = (Path(__file__).parent / "Chinook.db").absolute() 48 | 49 | llm = OpenAI(temperature=0, openai_api_key=openai_api_key, streaming=True) 50 | search = DuckDuckGoSearchAPIWrapper() 51 | llm_math_chain = LLMMathChain(llm=llm, verbose=True) 52 | db = SQLDatabase.from_uri(f"sqlite:///{DB_PATH}") 53 | db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True) 54 | tools = [ 55 | Tool( 56 | name="Search", 57 | func=search.run, 58 | description="useful for when you need to answer questions about current events. You should ask targeted questions", 59 | ), 60 | Tool( 61 | name="Calculator", 62 | func=llm_math_chain.run, 63 | description="useful for when you need to answer questions about math", 64 | ), 65 | Tool( 66 | name="FooBar DB", 67 | func=db_chain.run, 68 | description="useful for when you need to answer questions about FooBar. Input should be in the form of a question containing full context", 69 | ), 70 | ] 71 | 72 | # Initialize agent 73 | mrkl = initialize_agent( 74 | tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True 75 | ) 76 | # To run the agent, use `mrkl.run(mrkl_input)` 77 | 78 | # More Streamlit here! 79 | 80 | expand_new_thoughts = st.sidebar.checkbox( 81 | "Expand New Thoughts", 82 | value=True, 83 | help="True if LLM thoughts should be expanded by default", 84 | ) 85 | 86 | collapse_completed_thoughts = st.sidebar.checkbox( 87 | "Collapse Completed Thoughts", 88 | value=True, 89 | help="True if LLM thoughts should be collapsed when they complete", 90 | ) 91 | 92 | # collapse_thoughts_delay = st.sidebar.number_input( 93 | # "Collapse Thoughts Delay", 94 | # value=1.0, 95 | # min_value=0.0, 96 | # step=0.5, 97 | # help="If Collapse Completed Thoughts is true, delay the collapse animation for this many seconds.", 98 | # ) 99 | 100 | max_thought_containers = st.sidebar.number_input( 101 | "Max Thought Containers", 102 | value=4, 103 | min_value=1, 104 | help="Max number of completed thoughts to show. When exceeded, older thoughts will be moved into a 'History' expander.", 105 | ) 106 | 107 | SAVED_SESSIONS = { 108 | "Who is Leo DiCaprio's girlfriend? What is her current age raised to the 0.43 power?": "leo.pickle", 109 | "What is the full name of the artist who recently released an album called " 110 | "'The Storm Before the Calm' and are they in the FooBar database? If so, what albums of theirs " 111 | "are in the FooBar database?": "alanis.pickle", 112 | } 113 | 114 | key = "input" 115 | shadow_key = "_input" 116 | 117 | if key in st.session_state and shadow_key not in st.session_state: 118 | st.session_state[shadow_key] = st.session_state[key] 119 | 120 | with st.form(key="form"): 121 | if not enable_custom: 122 | "Ask one of the sample questions, or enter your API Keys in the sidebar to ask your own custom questions." 123 | prefilled = st.selectbox("Sample questions", sorted(SAVED_SESSIONS.keys())) or "" 124 | mrkl_input = "" 125 | 126 | if enable_custom: 127 | mrkl_input = st.text_input("Or, ask your own question", key=shadow_key) 128 | st.session_state[key] = mrkl_input 129 | if not mrkl_input: 130 | mrkl_input = prefilled 131 | submit_clicked = st.form_submit_button("Submit Question") 132 | 133 | question_container = st.empty() 134 | results_container = st.empty() 135 | 136 | # A hack to "clear" the previous result when submitting a new prompt. 137 | from clear_results import with_clear_container 138 | 139 | if with_clear_container(submit_clicked): 140 | # Create our StreamlitCallbackHandler 141 | res = results_container.container() 142 | streamlit_handler = StreamlitCallbackHandler( 143 | parent_container=res, 144 | max_thought_containers=int(max_thought_containers), 145 | expand_new_thoughts=expand_new_thoughts, 146 | collapse_completed_thoughts=collapse_completed_thoughts, 147 | ) 148 | 149 | question_container.write(f"**Question:** {mrkl_input}") 150 | 151 | # If we've saved this question, play it back instead of actually running LangChain 152 | # (so that we don't exhaust our API calls unnecessarily) 153 | if mrkl_input in SAVED_SESSIONS: 154 | session_name = SAVED_SESSIONS[mrkl_input] 155 | session_path = Path(__file__).parent / "runs" / session_name 156 | print(f"Playing saved session: {session_path}") 157 | answer = playback_callbacks( 158 | [streamlit_handler], str(session_path), max_pause_time=3 159 | ) 160 | res.write(f"**Answer:** {answer}") 161 | else: 162 | answer = mrkl.run(mrkl_input, callbacks=[streamlit_handler]) 163 | res.write(f"**Answer:** {answer}") 164 | -------------------------------------------------------------------------------- /callbacks/capturing_callback_handler.py: -------------------------------------------------------------------------------- 1 | """Callback Handler captures all callbacks in a session for future offline playback.""" 2 | 3 | from __future__ import annotations 4 | 5 | import pickle 6 | import time 7 | from typing import Any, TypedDict 8 | 9 | from langchain.callbacks.base import BaseCallbackHandler 10 | 11 | 12 | # This is intentionally not an enum so that we avoid serializing a 13 | # custom class with pickle. 14 | class CallbackType: 15 | ON_LLM_START = "on_llm_start" 16 | ON_LLM_NEW_TOKEN = "on_llm_new_token" 17 | ON_LLM_END = "on_llm_end" 18 | ON_LLM_ERROR = "on_llm_error" 19 | ON_TOOL_START = "on_tool_start" 20 | ON_TOOL_END = "on_tool_end" 21 | ON_TOOL_ERROR = "on_tool_error" 22 | ON_TEXT = "on_text" 23 | ON_CHAIN_START = "on_chain_start" 24 | ON_CHAIN_END = "on_chain_end" 25 | ON_CHAIN_ERROR = "on_chain_error" 26 | ON_AGENT_ACTION = "on_agent_action" 27 | ON_AGENT_FINISH = "on_agent_finish" 28 | 29 | 30 | # We use TypedDict, rather than NamedTuple, so that we avoid serializing a 31 | # custom class with pickle. All of this class's members should be basic Python types. 32 | class CallbackRecord(TypedDict): 33 | callback_type: str 34 | args: tuple[Any, ...] 35 | kwargs: dict[str, Any] 36 | time_delta: float # Number of seconds between this record and the previous one 37 | 38 | 39 | def load_records_from_file(path: str) -> list[CallbackRecord]: 40 | """Load the list of CallbackRecords from a pickle file at the given path.""" 41 | with open(path, "rb") as file: 42 | records = pickle.load(file) 43 | 44 | if not isinstance(records, list): 45 | raise RuntimeError(f"Bad CallbackRecord data in {path}") 46 | return records 47 | 48 | 49 | def playback_callbacks( 50 | handlers: list[BaseCallbackHandler], 51 | records_or_filename: list[CallbackRecord] | str, 52 | max_pause_time: float, 53 | ) -> str: 54 | if isinstance(records_or_filename, list): 55 | records = records_or_filename 56 | else: 57 | records = load_records_from_file(records_or_filename) 58 | 59 | for record in records: 60 | pause_time = min(record["time_delta"], max_pause_time) 61 | if pause_time > 0: 62 | time.sleep(pause_time) 63 | 64 | for handler in handlers: 65 | if record["callback_type"] == CallbackType.ON_LLM_START: 66 | handler.on_llm_start(*record["args"], **record["kwargs"]) 67 | elif record["callback_type"] == CallbackType.ON_LLM_NEW_TOKEN: 68 | handler.on_llm_new_token(*record["args"], **record["kwargs"]) 69 | elif record["callback_type"] == CallbackType.ON_LLM_END: 70 | handler.on_llm_end(*record["args"], **record["kwargs"]) 71 | elif record["callback_type"] == CallbackType.ON_LLM_ERROR: 72 | handler.on_llm_error(*record["args"], **record["kwargs"]) 73 | elif record["callback_type"] == CallbackType.ON_TOOL_START: 74 | handler.on_tool_start(*record["args"], **record["kwargs"]) 75 | elif record["callback_type"] == CallbackType.ON_TOOL_END: 76 | handler.on_tool_end(*record["args"], **record["kwargs"]) 77 | elif record["callback_type"] == CallbackType.ON_TOOL_ERROR: 78 | handler.on_tool_error(*record["args"], **record["kwargs"]) 79 | elif record["callback_type"] == CallbackType.ON_TEXT: 80 | handler.on_text(*record["args"], **record["kwargs"]) 81 | elif record["callback_type"] == CallbackType.ON_CHAIN_START: 82 | handler.on_chain_start(*record["args"], **record["kwargs"]) 83 | elif record["callback_type"] == CallbackType.ON_CHAIN_END: 84 | handler.on_chain_end(*record["args"], **record["kwargs"]) 85 | elif record["callback_type"] == CallbackType.ON_CHAIN_ERROR: 86 | handler.on_chain_error(*record["args"], **record["kwargs"]) 87 | elif record["callback_type"] == CallbackType.ON_AGENT_ACTION: 88 | handler.on_agent_action(*record["args"], **record["kwargs"]) 89 | elif record["callback_type"] == CallbackType.ON_AGENT_FINISH: 90 | handler.on_agent_finish(*record["args"], **record["kwargs"]) 91 | 92 | # Return the agent's result 93 | for record in records: 94 | if record["callback_type"] == CallbackType.ON_AGENT_FINISH: 95 | return record["args"][0][0]["output"] 96 | 97 | return "[Missing Agent Result]" 98 | 99 | 100 | class CapturingCallbackHandler(BaseCallbackHandler): 101 | def __init__(self) -> None: 102 | self._records: list[CallbackRecord] = [] 103 | self._last_time: float | None = None 104 | 105 | def dump_records_to_file(self, path: str) -> None: 106 | """Write the list of CallbackRecords to a pickle file at the given path.""" 107 | with open(path, "wb") as file: 108 | pickle.dump(self._records, file) 109 | 110 | def _append_record( 111 | self, type: str, args: tuple[Any, ...], kwargs: dict[str, Any] 112 | ) -> None: 113 | time_now = time.time() 114 | time_delta = time_now - self._last_time if self._last_time is not None else 0 115 | self._last_time = time_now 116 | self._records.append( 117 | CallbackRecord( 118 | callback_type=type, args=args, kwargs=kwargs, time_delta=time_delta 119 | ) 120 | ) 121 | 122 | def on_llm_start(self, *args: Any, **kwargs: Any) -> None: 123 | self._append_record(CallbackType.ON_LLM_START, args, kwargs) 124 | 125 | def on_llm_new_token(self, *args: Any, **kwargs: Any) -> None: 126 | self._append_record(CallbackType.ON_LLM_NEW_TOKEN, args, kwargs) 127 | 128 | def on_llm_end(self, *args: Any, **kwargs: Any) -> None: 129 | self._append_record(CallbackType.ON_LLM_END, args, kwargs) 130 | 131 | def on_llm_error(self, *args: Any, **kwargs: Any) -> None: 132 | self._append_record(CallbackType.ON_LLM_ERROR, args, kwargs) 133 | 134 | def on_tool_start(self, *args: Any, **kwargs: Any) -> None: 135 | self._append_record(CallbackType.ON_TOOL_START, args, kwargs) 136 | 137 | def on_tool_end(self, *args: Any, **kwargs: Any) -> None: 138 | self._append_record(CallbackType.ON_TOOL_END, args, kwargs) 139 | 140 | def on_tool_error(self, *args: Any, **kwargs: Any) -> None: 141 | self._append_record(CallbackType.ON_TOOL_ERROR, args, kwargs) 142 | 143 | def on_text(self, *args: Any, **kwargs: Any) -> None: 144 | self._append_record(CallbackType.ON_TEXT, args, kwargs) 145 | 146 | def on_chain_start(self, *args: Any, **kwargs: Any) -> None: 147 | self._append_record(CallbackType.ON_CHAIN_START, args, kwargs) 148 | 149 | def on_chain_end(self, *args: Any, **kwargs: Any) -> None: 150 | self._append_record(CallbackType.ON_CHAIN_END, args, kwargs) 151 | 152 | def on_chain_error(self, *args: Any, **kwargs: Any) -> None: 153 | self._append_record(CallbackType.ON_CHAIN_ERROR, args, kwargs) 154 | 155 | def on_agent_action(self, *args: Any, **kwargs: Any) -> Any: 156 | self._append_record(CallbackType.ON_AGENT_ACTION, args, kwargs) 157 | 158 | def on_agent_finish(self, *args: Any, **kwargs: Any) -> None: 159 | self._append_record(CallbackType.ON_AGENT_FINISH, args, kwargs) 160 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Pipfile.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_meta": { 3 | "hash": { 4 | "sha256": "f51f3e4c114eebf620a410f03812939c8b06a4ec4bd0198160f43c67a7171e65" 5 | }, 6 | "pipfile-spec": 6, 7 | "requires": { 8 | "python_full_version": "3.11.2", 9 | "python_version": "3.11" 10 | }, 11 | "sources": [ 12 | { 13 | "name": "pypi", 14 | "url": "https://pypi.org/simple", 15 | "verify_ssl": true 16 | } 17 | ] 18 | }, 19 | "default": { 20 | "aiofiles": { 21 | "hashes": [ 22 | "sha256:9312414ae06472eb6f1d163f555e466a23aed1c8f60c30cccf7121dba2e53eb2", 23 | "sha256:edd247df9a19e0db16534d4baaf536d6609a43e1de5401d7a4c1c148753a1635" 24 | ], 25 | "markers": "python_version >= '3.7' and python_version < '4.0'", 26 | "version": "==23.1.0" 27 | }, 28 | "aiohttp": { 29 | "hashes": [ 30 | "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", 31 | "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", 32 | "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", 33 | "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", 34 | "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", 35 | "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", 36 | "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", 37 | "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", 38 | "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", 39 | "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", 40 | "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", 41 | "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", 42 | "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", 43 | "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", 44 | "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", 45 | "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", 46 | "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", 47 | "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", 48 | "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", 49 | "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", 50 | "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", 51 | "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", 52 | "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", 53 | "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", 54 | "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", 55 | "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", 56 | "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", 57 | "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", 58 | "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", 59 | "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", 60 | "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", 61 | "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", 62 | "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", 63 | "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", 64 | "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", 65 | "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", 66 | "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", 67 | "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", 68 | "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", 69 | "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", 70 | "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", 71 | "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", 72 | "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", 73 | "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", 74 | "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", 75 | "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", 76 | "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", 77 | "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", 78 | "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", 79 | "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", 80 | "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", 81 | "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", 82 | "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", 83 | "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", 84 | "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", 85 | "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", 86 | "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", 87 | "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", 88 | "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", 89 | "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", 90 | "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", 91 | "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", 92 | "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", 93 | "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", 94 | "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", 95 | "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", 96 | "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", 97 | "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", 98 | "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", 99 | "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", 100 | "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", 101 | "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", 102 | "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", 103 | "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", 104 | "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", 105 | "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", 106 | "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", 107 | "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", 108 | "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", 109 | "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", 110 | "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", 111 | "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", 112 | "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", 113 | "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", 114 | "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", 115 | "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", 116 | "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" 117 | ], 118 | "markers": "python_version >= '3.6'", 119 | "version": "==3.8.4" 120 | }, 121 | "aiosignal": { 122 | "hashes": [ 123 | "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", 124 | "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17" 125 | ], 126 | "markers": "python_version >= '3.7'", 127 | "version": "==1.3.1" 128 | }, 129 | "altair": { 130 | "hashes": [ 131 | "sha256:087d7033cb2d6c228493a053e12613058a5d47faf6a36aea3ff60305fd8b4cb0", 132 | "sha256:9f3552ed5497d4dfc14cf48a76141d8c29ee56eae2873481b4b28134268c9bbe" 133 | ], 134 | "markers": "python_version >= '3.7'", 135 | "version": "==5.0.1" 136 | }, 137 | "anyio": { 138 | "hashes": [ 139 | "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce", 140 | "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0" 141 | ], 142 | "markers": "python_version >= '3.7'", 143 | "version": "==3.7.0" 144 | }, 145 | "async-timeout": { 146 | "hashes": [ 147 | "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", 148 | "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" 149 | ], 150 | "markers": "python_version >= '3.6'", 151 | "version": "==4.0.2" 152 | }, 153 | "attrs": { 154 | "hashes": [ 155 | "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04", 156 | "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015" 157 | ], 158 | "markers": "python_version >= '3.7'", 159 | "version": "==23.1.0" 160 | }, 161 | "blinker": { 162 | "hashes": [ 163 | "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213", 164 | "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0" 165 | ], 166 | "markers": "python_version >= '3.7'", 167 | "version": "==1.6.2" 168 | }, 169 | "brotli": { 170 | "hashes": [ 171 | "sha256:02177603aaca36e1fd21b091cb742bb3b305a569e2402f1ca38af471777fb019", 172 | "sha256:11d3283d89af7033236fa4e73ec2cbe743d4f6a81d41bd234f24bf63dde979df", 173 | "sha256:12effe280b8ebfd389022aa65114e30407540ccb89b177d3fbc9a4f177c4bd5d", 174 | "sha256:160c78292e98d21e73a4cc7f76a234390e516afcd982fa17e1422f7c6a9ce9c8", 175 | "sha256:16d528a45c2e1909c2798f27f7bf0a3feec1dc9e50948e738b961618e38b6a7b", 176 | "sha256:19598ecddd8a212aedb1ffa15763dd52a388518c4550e615aed88dc3753c0f0c", 177 | "sha256:1c48472a6ba3b113452355b9af0a60da5c2ae60477f8feda8346f8fd48e3e87c", 178 | "sha256:268fe94547ba25b58ebc724680609c8ee3e5a843202e9a381f6f9c5e8bdb5c70", 179 | "sha256:269a5743a393c65db46a7bb982644c67ecba4b8d91b392403ad8a861ba6f495f", 180 | "sha256:26d168aac4aaec9a4394221240e8a5436b5634adc3cd1cdf637f6645cecbf181", 181 | "sha256:29d1d350178e5225397e28ea1b7aca3648fcbab546d20e7475805437bfb0a130", 182 | "sha256:2aad0e0baa04517741c9bb5b07586c642302e5fb3e75319cb62087bd0995ab19", 183 | "sha256:3148362937217b7072cf80a2dcc007f09bb5ecb96dae4617316638194113d5be", 184 | "sha256:330e3f10cd01da535c70d09c4283ba2df5fb78e915bea0a28becad6e2ac010be", 185 | "sha256:336b40348269f9b91268378de5ff44dc6fbaa2268194f85177b53463d313842a", 186 | "sha256:3496fc835370da351d37cada4cf744039616a6db7d13c430035e901443a34daa", 187 | "sha256:35a3edbe18e876e596553c4007a087f8bcfd538f19bc116917b3c7522fca0429", 188 | "sha256:3b78a24b5fd13c03ee2b7b86290ed20efdc95da75a3557cc06811764d5ad1126", 189 | "sha256:3b8b09a16a1950b9ef495a0f8b9d0a87599a9d1f179e2d4ac014b2ec831f87e7", 190 | "sha256:3c1306004d49b84bd0c4f90457c6f57ad109f5cc6067a9664e12b7b79a9948ad", 191 | "sha256:3ffaadcaeafe9d30a7e4e1e97ad727e4f5610b9fa2f7551998471e3736738679", 192 | "sha256:40d15c79f42e0a2c72892bf407979febd9cf91f36f495ffb333d1d04cebb34e4", 193 | "sha256:44bb8ff420c1d19d91d79d8c3574b8954288bdff0273bf788954064d260d7ab0", 194 | "sha256:4688c1e42968ba52e57d8670ad2306fe92e0169c6f3af0089be75bbac0c64a3b", 195 | "sha256:495ba7e49c2db22b046a53b469bbecea802efce200dffb69b93dd47397edc9b6", 196 | "sha256:4d1b810aa0ed773f81dceda2cc7b403d01057458730e309856356d4ef4188438", 197 | "sha256:503fa6af7da9f4b5780bb7e4cbe0c639b010f12be85d02c99452825dd0feef3f", 198 | "sha256:56d027eace784738457437df7331965473f2c0da2c70e1a1f6fdbae5402e0389", 199 | "sha256:5913a1177fc36e30fcf6dc868ce23b0453952c78c04c266d3149b3d39e1410d6", 200 | "sha256:5b6ef7d9f9c38292df3690fe3e302b5b530999fa90014853dcd0d6902fb59f26", 201 | "sha256:5bf37a08493232fbb0f8229f1824b366c2fc1d02d64e7e918af40acd15f3e337", 202 | "sha256:5cb1e18167792d7d21e21365d7650b72d5081ed476123ff7b8cac7f45189c0c7", 203 | "sha256:61a7ee1f13ab913897dac7da44a73c6d44d48a4adff42a5701e3239791c96e14", 204 | "sha256:622a231b08899c864eb87e85f81c75e7b9ce05b001e59bbfbf43d4a71f5f32b2", 205 | "sha256:68715970f16b6e92c574c30747c95cf8cf62804569647386ff032195dc89a430", 206 | "sha256:6b2ae9f5f67f89aade1fab0f7fd8f2832501311c363a21579d02defa844d9296", 207 | "sha256:6c772d6c0a79ac0f414a9f8947cc407e119b8598de7621f39cacadae3cf57d12", 208 | "sha256:6d847b14f7ea89f6ad3c9e3901d1bc4835f6b390a9c71df999b0162d9bb1e20f", 209 | "sha256:73fd30d4ce0ea48010564ccee1a26bfe39323fde05cb34b5863455629db61dc7", 210 | "sha256:76ffebb907bec09ff511bb3acc077695e2c32bc2142819491579a695f77ffd4d", 211 | "sha256:7bbff90b63328013e1e8cb50650ae0b9bac54ffb4be6104378490193cd60f85a", 212 | "sha256:7cb81373984cc0e4682f31bc3d6be9026006d96eecd07ea49aafb06897746452", 213 | "sha256:7ee83d3e3a024a9618e5be64648d6d11c37047ac48adff25f12fa4226cf23d1c", 214 | "sha256:854c33dad5ba0fbd6ab69185fec8dab89e13cda6b7d191ba111987df74f38761", 215 | "sha256:85f7912459c67eaab2fb854ed2bc1cc25772b300545fe7ed2dc03954da638649", 216 | "sha256:87fdccbb6bb589095f413b1e05734ba492c962b4a45a13ff3408fa44ffe6479b", 217 | "sha256:88c63a1b55f352b02c6ffd24b15ead9fc0e8bf781dbe070213039324922a2eea", 218 | "sha256:8a674ac10e0a87b683f4fa2b6fa41090edfd686a6524bd8dedbd6138b309175c", 219 | "sha256:8ed6a5b3d23ecc00ea02e1ed8e0ff9a08f4fc87a1f58a2530e71c0f48adf882f", 220 | "sha256:93130612b837103e15ac3f9cbacb4613f9e348b58b3aad53721d92e57f96d46a", 221 | "sha256:9744a863b489c79a73aba014df554b0e7a0fc44ef3f8a0ef2a52919c7d155031", 222 | "sha256:9749a124280a0ada4187a6cfd1ffd35c350fb3af79c706589d98e088c5044267", 223 | "sha256:97f715cf371b16ac88b8c19da00029804e20e25f30d80203417255d239f228b5", 224 | "sha256:9bf919756d25e4114ace16a8ce91eb340eb57a08e2c6950c3cebcbe3dff2a5e7", 225 | "sha256:9d12cf2851759b8de8ca5fde36a59c08210a97ffca0eb94c532ce7b17c6a3d1d", 226 | "sha256:9ed4c92a0665002ff8ea852353aeb60d9141eb04109e88928026d3c8a9e5433c", 227 | "sha256:a72661af47119a80d82fa583b554095308d6a4c356b2a554fdc2799bc19f2a43", 228 | "sha256:afde17ae04d90fbe53afb628f7f2d4ca022797aa093e809de5c3cf276f61bbfa", 229 | "sha256:b1375b5d17d6145c798661b67e4ae9d5496920d9265e2f00f1c2c0b5ae91fbde", 230 | "sha256:b336c5e9cf03c7be40c47b5fd694c43c9f1358a80ba384a21969e0b4e66a9b17", 231 | "sha256:b3523f51818e8f16599613edddb1ff924eeb4b53ab7e7197f85cbc321cdca32f", 232 | "sha256:b43775532a5904bc938f9c15b77c613cb6ad6fb30990f3b0afaea82797a402d8", 233 | "sha256:b663f1e02de5d0573610756398e44c130add0eb9a3fc912a09665332942a2efb", 234 | "sha256:b83bb06a0192cccf1eb8d0a28672a1b79c74c3a8a5f2619625aeb6f28b3a82bb", 235 | "sha256:ba72d37e2a924717990f4d7482e8ac88e2ef43fb95491eb6e0d124d77d2a150d", 236 | "sha256:c2415d9d082152460f2bd4e382a1e85aed233abc92db5a3880da2257dc7daf7b", 237 | "sha256:c83aa123d56f2e060644427a882a36b3c12db93727ad7a7b9efd7d7f3e9cc2c4", 238 | "sha256:c8e521a0ce7cf690ca84b8cc2272ddaf9d8a50294fd086da67e517439614c755", 239 | "sha256:cab1b5964b39607a66adbba01f1c12df2e55ac36c81ec6ed44f2fca44178bf1a", 240 | "sha256:cb02ed34557afde2d2da68194d12f5719ee96cfb2eacc886352cb73e3808fc5d", 241 | "sha256:cc0283a406774f465fb45ec7efb66857c09ffefbe49ec20b7882eff6d3c86d3a", 242 | "sha256:cfc391f4429ee0a9370aa93d812a52e1fee0f37a81861f4fdd1f4fb28e8547c3", 243 | "sha256:db844eb158a87ccab83e868a762ea8024ae27337fc7ddcbfcddd157f841fdfe7", 244 | "sha256:defed7ea5f218a9f2336301e6fd379f55c655bea65ba2476346340a0ce6f74a1", 245 | "sha256:e16eb9541f3dd1a3e92b89005e37b1257b157b7256df0e36bd7b33b50be73bcb", 246 | "sha256:e1abbeef02962596548382e393f56e4c94acd286bd0c5afba756cffc33670e8a", 247 | "sha256:e23281b9a08ec338469268f98f194658abfb13658ee98e2b7f85ee9dd06caa91", 248 | "sha256:e2d9e1cbc1b25e22000328702b014227737756f4b5bf5c485ac1d8091ada078b", 249 | "sha256:e48f4234f2469ed012a98f4b7874e7f7e173c167bed4934912a29e03167cf6b1", 250 | "sha256:e4c4e92c14a57c9bd4cb4be678c25369bf7a092d55fd0866f759e425b9660806", 251 | "sha256:ec1947eabbaf8e0531e8e899fc1d9876c179fc518989461f5d24e2223395a9e3", 252 | "sha256:f909bbbc433048b499cb9db9e713b5d8d949e8c109a2a548502fb9aa8630f0b1" 253 | ], 254 | "version": "==1.0.9" 255 | }, 256 | "cachetools": { 257 | "hashes": [ 258 | "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590", 259 | "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" 260 | ], 261 | "markers": "python_version >= '3.7'", 262 | "version": "==5.3.1" 263 | }, 264 | "certifi": { 265 | "hashes": [ 266 | "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", 267 | "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" 268 | ], 269 | "markers": "python_version >= '3.6'", 270 | "version": "==2023.5.7" 271 | }, 272 | "charset-normalizer": { 273 | "hashes": [ 274 | "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6", 275 | "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1", 276 | "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e", 277 | "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373", 278 | "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62", 279 | "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230", 280 | "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be", 281 | "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c", 282 | "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0", 283 | "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448", 284 | "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f", 285 | "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649", 286 | "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d", 287 | "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0", 288 | "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706", 289 | "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a", 290 | "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59", 291 | "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23", 292 | "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5", 293 | "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb", 294 | "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e", 295 | "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e", 296 | "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c", 297 | "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28", 298 | "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d", 299 | "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41", 300 | "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974", 301 | "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce", 302 | "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f", 303 | "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1", 304 | "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d", 305 | "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8", 306 | "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017", 307 | "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31", 308 | "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7", 309 | "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8", 310 | "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e", 311 | "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14", 312 | "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd", 313 | "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d", 314 | "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795", 315 | "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b", 316 | "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b", 317 | "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b", 318 | "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203", 319 | "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f", 320 | "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19", 321 | "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1", 322 | "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a", 323 | "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac", 324 | "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9", 325 | "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0", 326 | "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137", 327 | "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f", 328 | "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6", 329 | "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5", 330 | "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909", 331 | "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f", 332 | "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0", 333 | "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324", 334 | "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755", 335 | "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb", 336 | "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854", 337 | "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c", 338 | "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60", 339 | "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84", 340 | "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0", 341 | "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b", 342 | "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1", 343 | "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531", 344 | "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1", 345 | "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11", 346 | "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326", 347 | "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df", 348 | "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab" 349 | ], 350 | "markers": "python_full_version >= '3.7.0'", 351 | "version": "==3.1.0" 352 | }, 353 | "click": { 354 | "hashes": [ 355 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 356 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 357 | ], 358 | "markers": "python_version >= '3.7'", 359 | "version": "==8.1.3" 360 | }, 361 | "dataclasses-json": { 362 | "hashes": [ 363 | "sha256:6572ac08ad9340abcb74fd8c4c8e9752db2a182a402c8e871d0a8aa119e3804e", 364 | "sha256:65b167c15fdf9bde27569c09ac18dd39bf1cc5b7998525024cb4678d2653946c" 365 | ], 366 | "markers": "python_version >= '3.6'", 367 | "version": "==0.5.8" 368 | }, 369 | "decorator": { 370 | "hashes": [ 371 | "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", 372 | "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" 373 | ], 374 | "markers": "python_version >= '3.5'", 375 | "version": "==5.1.1" 376 | }, 377 | "duckduckgo-search": { 378 | "hashes": [ 379 | "sha256:4ebed7fd26f8fd00dfd032015afe5c21c64373809b99c3ca28b2233f9509dd0b", 380 | "sha256:8532d86f9c172d371639f22f1da8ba255d2f2b2a9fb77dc0285749347f37c882" 381 | ], 382 | "index": "pypi", 383 | "version": "==3.8.3" 384 | }, 385 | "frozenlist": { 386 | "hashes": [ 387 | "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", 388 | "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", 389 | "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", 390 | "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", 391 | "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", 392 | "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", 393 | "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", 394 | "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", 395 | "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", 396 | "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", 397 | "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", 398 | "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", 399 | "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", 400 | "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", 401 | "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", 402 | "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", 403 | "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", 404 | "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", 405 | "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", 406 | "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", 407 | "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", 408 | "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", 409 | "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", 410 | "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", 411 | "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", 412 | "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", 413 | "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", 414 | "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", 415 | "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", 416 | "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", 417 | "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", 418 | "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", 419 | "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", 420 | "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", 421 | "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", 422 | "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", 423 | "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", 424 | "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", 425 | "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", 426 | "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", 427 | "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", 428 | "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", 429 | "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", 430 | "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", 431 | "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", 432 | "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", 433 | "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", 434 | "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", 435 | "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", 436 | "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", 437 | "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", 438 | "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", 439 | "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", 440 | "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", 441 | "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", 442 | "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", 443 | "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", 444 | "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", 445 | "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", 446 | "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", 447 | "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", 448 | "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", 449 | "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", 450 | "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", 451 | "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", 452 | "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", 453 | "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", 454 | "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", 455 | "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", 456 | "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", 457 | "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", 458 | "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", 459 | "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", 460 | "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" 461 | ], 462 | "markers": "python_version >= '3.7'", 463 | "version": "==1.3.3" 464 | }, 465 | "gitdb": { 466 | "hashes": [ 467 | "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", 468 | "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7" 469 | ], 470 | "markers": "python_version >= '3.7'", 471 | "version": "==4.0.10" 472 | }, 473 | "gitpython": { 474 | "hashes": [ 475 | "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573", 476 | "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d" 477 | ], 478 | "markers": "python_version >= '3.7'", 479 | "version": "==3.1.31" 480 | }, 481 | "h11": { 482 | "hashes": [ 483 | "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", 484 | "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761" 485 | ], 486 | "markers": "python_version >= '3.7'", 487 | "version": "==0.14.0" 488 | }, 489 | "h2": { 490 | "hashes": [ 491 | "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d", 492 | "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb" 493 | ], 494 | "version": "==4.1.0" 495 | }, 496 | "hpack": { 497 | "hashes": [ 498 | "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c", 499 | "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095" 500 | ], 501 | "markers": "python_full_version >= '3.6.1'", 502 | "version": "==4.0.0" 503 | }, 504 | "httpcore": { 505 | "hashes": [ 506 | "sha256:125f8375ab60036db632f34f4b627a9ad085048eef7cb7d2616fea0f739f98af", 507 | "sha256:5581b9c12379c4288fe70f43c710d16060c10080617001e6b22a3b6dbcbefd36" 508 | ], 509 | "markers": "python_version >= '3.7'", 510 | "version": "==0.17.2" 511 | }, 512 | "httpx": { 513 | "extras": [ 514 | "brotli", 515 | "http2", 516 | "socks" 517 | ], 518 | "hashes": [ 519 | "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd", 520 | "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd" 521 | ], 522 | "markers": "python_version >= '3.7'", 523 | "version": "==0.24.1" 524 | }, 525 | "hyperframe": { 526 | "hashes": [ 527 | "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15", 528 | "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914" 529 | ], 530 | "markers": "python_full_version >= '3.6.1'", 531 | "version": "==6.0.1" 532 | }, 533 | "idna": { 534 | "hashes": [ 535 | "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", 536 | "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" 537 | ], 538 | "markers": "python_version >= '3.5'", 539 | "version": "==3.4" 540 | }, 541 | "importlib-metadata": { 542 | "hashes": [ 543 | "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4", 544 | "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5" 545 | ], 546 | "markers": "python_version >= '3.7'", 547 | "version": "==6.7.0" 548 | }, 549 | "jinja2": { 550 | "hashes": [ 551 | "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", 552 | "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" 553 | ], 554 | "markers": "python_version >= '3.7'", 555 | "version": "==3.1.2" 556 | }, 557 | "jsonschema": { 558 | "hashes": [ 559 | "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d", 560 | "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6" 561 | ], 562 | "markers": "python_version >= '3.7'", 563 | "version": "==4.17.3" 564 | }, 565 | "langchain": { 566 | "hashes": [ 567 | "sha256:86ee1f8973a4c48da4e530d582568d152129d51ea63f0af7b5538bb50b7bb15b", 568 | "sha256:9ca7be3d50ef291b023aae85090077ff3d30b483677cd870c53d3ea521b2603e" 569 | ], 570 | "index": "pypi", 571 | "version": "==0.0.217" 572 | }, 573 | "langchainplus-sdk": { 574 | "hashes": [ 575 | "sha256:6520c864a23dcadbe6fb7233a117347f6acc32725a97758e59354704c50de303", 576 | "sha256:899675fe850bb0829691ce7643d5c3b4425de1535b6f2d6ce1e5f5457ffb05bf" 577 | ], 578 | "markers": "python_version < '4.0' and python_full_version >= '3.8.1'", 579 | "version": "==0.0.17" 580 | }, 581 | "lxml": { 582 | "hashes": [ 583 | "sha256:01d36c05f4afb8f7c20fd9ed5badca32a2029b93b1750f571ccc0b142531caf7", 584 | "sha256:04876580c050a8c5341d706dd464ff04fd597095cc8c023252566a8826505726", 585 | "sha256:05ca3f6abf5cf78fe053da9b1166e062ade3fa5d4f92b4ed688127ea7d7b1d03", 586 | "sha256:090c6543d3696cbe15b4ac6e175e576bcc3f1ccfbba970061b7300b0c15a2140", 587 | "sha256:0dc313ef231edf866912e9d8f5a042ddab56c752619e92dfd3a2c277e6a7299a", 588 | "sha256:0f2b1e0d79180f344ff9f321327b005ca043a50ece8713de61d1cb383fb8ac05", 589 | "sha256:13598ecfbd2e86ea7ae45ec28a2a54fb87ee9b9fdb0f6d343297d8e548392c03", 590 | "sha256:16efd54337136e8cd72fb9485c368d91d77a47ee2d42b057564aae201257d419", 591 | "sha256:1ab8f1f932e8f82355e75dda5413a57612c6ea448069d4fb2e217e9a4bed13d4", 592 | "sha256:223f4232855ade399bd409331e6ca70fb5578efef22cf4069a6090acc0f53c0e", 593 | "sha256:2455cfaeb7ac70338b3257f41e21f0724f4b5b0c0e7702da67ee6c3640835b67", 594 | "sha256:2899456259589aa38bfb018c364d6ae7b53c5c22d8e27d0ec7609c2a1ff78b50", 595 | "sha256:2a29ba94d065945944016b6b74e538bdb1751a1db6ffb80c9d3c2e40d6fa9894", 596 | "sha256:2a87fa548561d2f4643c99cd13131acb607ddabb70682dcf1dff5f71f781a4bf", 597 | "sha256:2e430cd2824f05f2d4f687701144556646bae8f249fd60aa1e4c768ba7018947", 598 | "sha256:36c3c175d34652a35475a73762b545f4527aec044910a651d2bf50de9c3352b1", 599 | "sha256:3818b8e2c4b5148567e1b09ce739006acfaa44ce3156f8cbbc11062994b8e8dd", 600 | "sha256:3ab9fa9d6dc2a7f29d7affdf3edebf6ece6fb28a6d80b14c3b2fb9d39b9322c3", 601 | "sha256:3efea981d956a6f7173b4659849f55081867cf897e719f57383698af6f618a92", 602 | "sha256:4c8f293f14abc8fd3e8e01c5bd86e6ed0b6ef71936ded5bf10fe7a5efefbaca3", 603 | "sha256:5344a43228767f53a9df6e5b253f8cdca7dfc7b7aeae52551958192f56d98457", 604 | "sha256:58bfa3aa19ca4c0f28c5dde0ff56c520fbac6f0daf4fac66ed4c8d2fb7f22e74", 605 | "sha256:5b4545b8a40478183ac06c073e81a5ce4cf01bf1734962577cf2bb569a5b3bbf", 606 | "sha256:5f50a1c177e2fa3ee0667a5ab79fdc6b23086bc8b589d90b93b4bd17eb0e64d1", 607 | "sha256:63da2ccc0857c311d764e7d3d90f429c252e83b52d1f8f1d1fe55be26827d1f4", 608 | "sha256:6749649eecd6a9871cae297bffa4ee76f90b4504a2a2ab528d9ebe912b101975", 609 | "sha256:6804daeb7ef69e7b36f76caddb85cccd63d0c56dedb47555d2fc969e2af6a1a5", 610 | "sha256:689bb688a1db722485e4610a503e3e9210dcc20c520b45ac8f7533c837be76fe", 611 | "sha256:699a9af7dffaf67deeae27b2112aa06b41c370d5e7633e0ee0aea2e0b6c211f7", 612 | "sha256:6b418afe5df18233fc6b6093deb82a32895b6bb0b1155c2cdb05203f583053f1", 613 | "sha256:76cf573e5a365e790396a5cc2b909812633409306c6531a6877c59061e42c4f2", 614 | "sha256:7b515674acfdcadb0eb5d00d8a709868173acece5cb0be3dd165950cbfdf5409", 615 | "sha256:7b770ed79542ed52c519119473898198761d78beb24b107acf3ad65deae61f1f", 616 | "sha256:7d2278d59425777cfcb19735018d897ca8303abe67cc735f9f97177ceff8027f", 617 | "sha256:7e91ee82f4199af8c43d8158024cbdff3d931df350252288f0d4ce656df7f3b5", 618 | "sha256:821b7f59b99551c69c85a6039c65b75f5683bdc63270fec660f75da67469ca24", 619 | "sha256:822068f85e12a6e292803e112ab876bc03ed1f03dddb80154c395f891ca6b31e", 620 | "sha256:8340225bd5e7a701c0fa98284c849c9b9fc9238abf53a0ebd90900f25d39a4e4", 621 | "sha256:85cabf64adec449132e55616e7ca3e1000ab449d1d0f9d7f83146ed5bdcb6d8a", 622 | "sha256:880bbbcbe2fca64e2f4d8e04db47bcdf504936fa2b33933efd945e1b429bea8c", 623 | "sha256:8d0b4612b66ff5d62d03bcaa043bb018f74dfea51184e53f067e6fdcba4bd8de", 624 | "sha256:8e20cb5a47247e383cf4ff523205060991021233ebd6f924bca927fcf25cf86f", 625 | "sha256:925073b2fe14ab9b87e73f9a5fde6ce6392da430f3004d8b72cc86f746f5163b", 626 | "sha256:998c7c41910666d2976928c38ea96a70d1aa43be6fe502f21a651e17483a43c5", 627 | "sha256:9b22c5c66f67ae00c0199f6055705bc3eb3fcb08d03d2ec4059a2b1b25ed48d7", 628 | "sha256:9f102706d0ca011de571de32c3247c6476b55bb6bc65a20f682f000b07a4852a", 629 | "sha256:a08cff61517ee26cb56f1e949cca38caabe9ea9fbb4b1e10a805dc39844b7d5c", 630 | "sha256:a0a336d6d3e8b234a3aae3c674873d8f0e720b76bc1d9416866c41cd9500ffb9", 631 | "sha256:a35f8b7fa99f90dd2f5dc5a9fa12332642f087a7641289ca6c40d6e1a2637d8e", 632 | "sha256:a38486985ca49cfa574a507e7a2215c0c780fd1778bb6290c21193b7211702ab", 633 | "sha256:a5da296eb617d18e497bcf0a5c528f5d3b18dadb3619fbdadf4ed2356ef8d941", 634 | "sha256:a6e441a86553c310258aca15d1c05903aaf4965b23f3bc2d55f200804e005ee5", 635 | "sha256:a82d05da00a58b8e4c0008edbc8a4b6ec5a4bc1e2ee0fb6ed157cf634ed7fa45", 636 | "sha256:ab323679b8b3030000f2be63e22cdeea5b47ee0abd2d6a1dc0c8103ddaa56cd7", 637 | "sha256:b1f42b6921d0e81b1bcb5e395bc091a70f41c4d4e55ba99c6da2b31626c44892", 638 | "sha256:b23e19989c355ca854276178a0463951a653309fb8e57ce674497f2d9f208746", 639 | "sha256:b264171e3143d842ded311b7dccd46ff9ef34247129ff5bf5066123c55c2431c", 640 | "sha256:b26a29f0b7fc6f0897f043ca366142d2b609dc60756ee6e4e90b5f762c6adc53", 641 | "sha256:b64d891da92e232c36976c80ed7ebb383e3f148489796d8d31a5b6a677825efe", 642 | "sha256:b9cc34af337a97d470040f99ba4282f6e6bac88407d021688a5d585e44a23184", 643 | "sha256:bc718cd47b765e790eecb74d044cc8d37d58562f6c314ee9484df26276d36a38", 644 | "sha256:be7292c55101e22f2a3d4d8913944cbea71eea90792bf914add27454a13905df", 645 | "sha256:c83203addf554215463b59f6399835201999b5e48019dc17f182ed5ad87205c9", 646 | "sha256:c9ec3eaf616d67db0764b3bb983962b4f385a1f08304fd30c7283954e6a7869b", 647 | "sha256:ca34efc80a29351897e18888c71c6aca4a359247c87e0b1c7ada14f0ab0c0fb2", 648 | "sha256:ca989b91cf3a3ba28930a9fc1e9aeafc2a395448641df1f387a2d394638943b0", 649 | "sha256:d02a5399126a53492415d4906ab0ad0375a5456cc05c3fc0fc4ca11771745cda", 650 | "sha256:d17bc7c2ccf49c478c5bdd447594e82692c74222698cfc9b5daae7ae7e90743b", 651 | "sha256:d5bf6545cd27aaa8a13033ce56354ed9e25ab0e4ac3b5392b763d8d04b08e0c5", 652 | "sha256:d6b430a9938a5a5d85fc107d852262ddcd48602c120e3dbb02137c83d212b380", 653 | "sha256:da248f93f0418a9e9d94b0080d7ebc407a9a5e6d0b57bb30db9b5cc28de1ad33", 654 | "sha256:da4dd7c9c50c059aba52b3524f84d7de956f7fef88f0bafcf4ad7dde94a064e8", 655 | "sha256:df0623dcf9668ad0445e0558a21211d4e9a149ea8f5666917c8eeec515f0a6d1", 656 | "sha256:e5168986b90a8d1f2f9dc1b841467c74221bd752537b99761a93d2d981e04889", 657 | "sha256:efa29c2fe6b4fdd32e8ef81c1528506895eca86e1d8c4657fda04c9b3786ddf9", 658 | "sha256:f1496ea22ca2c830cbcbd473de8f114a320da308438ae65abad6bab7867fe38f", 659 | "sha256:f49e52d174375a7def9915c9f06ec4e569d235ad428f70751765f48d5926678c" 660 | ], 661 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", 662 | "version": "==4.9.2" 663 | }, 664 | "markdown-it-py": { 665 | "hashes": [ 666 | "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", 667 | "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb" 668 | ], 669 | "markers": "python_version >= '3.8'", 670 | "version": "==3.0.0" 671 | }, 672 | "markupsafe": { 673 | "hashes": [ 674 | "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e", 675 | "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e", 676 | "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431", 677 | "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686", 678 | "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559", 679 | "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc", 680 | "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c", 681 | "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0", 682 | "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4", 683 | "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9", 684 | "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575", 685 | "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba", 686 | "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d", 687 | "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3", 688 | "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00", 689 | "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155", 690 | "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac", 691 | "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52", 692 | "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f", 693 | "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8", 694 | "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b", 695 | "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24", 696 | "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea", 697 | "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198", 698 | "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0", 699 | "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee", 700 | "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be", 701 | "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2", 702 | "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707", 703 | "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6", 704 | "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58", 705 | "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779", 706 | "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636", 707 | "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c", 708 | "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad", 709 | "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee", 710 | "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc", 711 | "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2", 712 | "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48", 713 | "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7", 714 | "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e", 715 | "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b", 716 | "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa", 717 | "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5", 718 | "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e", 719 | "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb", 720 | "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9", 721 | "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57", 722 | "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc", 723 | "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2" 724 | ], 725 | "markers": "python_version >= '3.7'", 726 | "version": "==2.1.3" 727 | }, 728 | "marshmallow": { 729 | "hashes": [ 730 | "sha256:90032c0fd650ce94b6ec6dc8dfeb0e3ff50c144586462c389b81a07205bedb78", 731 | "sha256:93f0958568da045b0021ec6aeb7ac37c81bfcccbb9a0e7ed8559885070b3a19b" 732 | ], 733 | "markers": "python_version >= '3.7'", 734 | "version": "==3.19.0" 735 | }, 736 | "marshmallow-enum": { 737 | "hashes": [ 738 | "sha256:38e697e11f45a8e64b4a1e664000897c659b60aa57bfa18d44e226a9920b6e58", 739 | "sha256:57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072" 740 | ], 741 | "version": "==1.5.1" 742 | }, 743 | "mdurl": { 744 | "hashes": [ 745 | "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", 746 | "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba" 747 | ], 748 | "markers": "python_version >= '3.7'", 749 | "version": "==0.1.2" 750 | }, 751 | "multidict": { 752 | "hashes": [ 753 | "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9", 754 | "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8", 755 | "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03", 756 | "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710", 757 | "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161", 758 | "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664", 759 | "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569", 760 | "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067", 761 | "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313", 762 | "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706", 763 | "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2", 764 | "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636", 765 | "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49", 766 | "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93", 767 | "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603", 768 | "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0", 769 | "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60", 770 | "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4", 771 | "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e", 772 | "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1", 773 | "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60", 774 | "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951", 775 | "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc", 776 | "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe", 777 | "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95", 778 | "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d", 779 | "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8", 780 | "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed", 781 | "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2", 782 | "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775", 783 | "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87", 784 | "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c", 785 | "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2", 786 | "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98", 787 | "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3", 788 | "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe", 789 | "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78", 790 | "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660", 791 | "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176", 792 | "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e", 793 | "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988", 794 | "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c", 795 | "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c", 796 | "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0", 797 | "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449", 798 | "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f", 799 | "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde", 800 | "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5", 801 | "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d", 802 | "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac", 803 | "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a", 804 | "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9", 805 | "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca", 806 | "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11", 807 | "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35", 808 | "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063", 809 | "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b", 810 | "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982", 811 | "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258", 812 | "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1", 813 | "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52", 814 | "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480", 815 | "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7", 816 | "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461", 817 | "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d", 818 | "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc", 819 | "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779", 820 | "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a", 821 | "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547", 822 | "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0", 823 | "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171", 824 | "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf", 825 | "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d", 826 | "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba" 827 | ], 828 | "markers": "python_version >= '3.7'", 829 | "version": "==6.0.4" 830 | }, 831 | "mypy-extensions": { 832 | "hashes": [ 833 | "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", 834 | "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" 835 | ], 836 | "markers": "python_version >= '3.5'", 837 | "version": "==1.0.0" 838 | }, 839 | "numexpr": { 840 | "hashes": [ 841 | "sha256:059546e8f6283ccdb47c683101a890844f667fa6d56258d48ae2ecf1b3875957", 842 | "sha256:17ac9cfe6d0078c5fc06ba1c1bbd20b8783f28c6f475bbabd3cad53683075cab", 843 | "sha256:3f039321d1c17962c33079987b675fb251b273dbec0f51aac0934e932446ccc3", 844 | "sha256:5538b30199bfc68886d2be18fcef3abd11d9271767a7a69ff3688defe782800a", 845 | "sha256:655d84eb09adfee3c09ecf4a89a512225da153fdb7de13c447404b7d0523a9a7", 846 | "sha256:6931b1e9d4f629f43c14b21d44f3f77997298bea43790cfcdb4dd98804f90783", 847 | "sha256:6c368aa35ae9b18840e78b05f929d3a7b3abccdba9630a878c7db74ca2368339", 848 | "sha256:6ee9db7598dd4001138b482342b96d78110dd77cefc051ec75af3295604dde6a", 849 | "sha256:77898fdf3da6bb96aa8a4759a8231d763a75d848b2f2e5c5279dad0b243c8dfe", 850 | "sha256:7bca95f4473b444428061d4cda8e59ac564dc7dc6a1dea3015af9805c6bc2946", 851 | "sha256:7d71add384adc9119568d7e9ffa8a35b195decae81e0abf54a2b7779852f0637", 852 | "sha256:845a6aa0ed3e2a53239b89c1ebfa8cf052d3cc6e053c72805e8153300078c0b1", 853 | "sha256:90f12cc851240f7911a47c91aaf223dba753e98e46dff3017282e633602e76a7", 854 | "sha256:9400781553541f414f82eac056f2b4c965373650df9694286b9bd7e8d413f8d8", 855 | "sha256:9e34931089a6bafc77aaae21f37ad6594b98aa1085bb8b45d5b3cd038c3c17d9", 856 | "sha256:9f096d707290a6a00b6ffdaf581ee37331109fb7b6c8744e9ded7c779a48e517", 857 | "sha256:a38664e699526cb1687aefd9069e2b5b9387da7feac4545de446141f1ef86f46", 858 | "sha256:a6d2d7740ae83ba5f3531e83afc4b626daa71df1ef903970947903345c37bd03", 859 | "sha256:a75967d46b6bd56455dd32da6285e5ffabe155d0ee61eef685bbfb8dafb2e484", 860 | "sha256:b076db98ca65eeaf9bd224576e3ac84c05e451c0bd85b13664b7e5f7b62e2c70", 861 | "sha256:b318541bf3d8326682ebada087ba0050549a16d8b3fa260dd2585d73a83d20a7", 862 | "sha256:b96334fc1748e9ec4f93d5fadb1044089d73fb08208fdb8382ed77c893f0be01", 863 | "sha256:c867cc36cf815a3ec9122029874e00d8fbcef65035c4a5901e9b120dd5d626a2", 864 | "sha256:d5432537418d18691b9115d615d6daa17ee8275baef3edf1afbbf8bc69806147", 865 | "sha256:db93cf1842f068247de631bfc8af20118bf1f9447cd929b531595a5e0efc9346", 866 | "sha256:df35324666b693f13a016bc7957de7cc4d8801b746b81060b671bf78a52b9037", 867 | "sha256:df3a1f6b24214a1ab826e9c1c99edf1686c8e307547a9aef33910d586f626d01", 868 | "sha256:eaec59e9bf70ff05615c34a8b8d6c7bd042bd9f55465d7b495ea5436f45319d0", 869 | "sha256:f3a920bfac2645017110b87ddbe364c9c7a742870a4d2f6120b8786c25dc6db3", 870 | "sha256:ff5835e8af9a212e8480003d731aad1727aaea909926fd009e8ae6a1cba7f141" 871 | ], 872 | "markers": "python_version >= '3.7'", 873 | "version": "==2.8.4" 874 | }, 875 | "numpy": { 876 | "hashes": [ 877 | "sha256:0ac6edfb35d2a99aaf102b509c8e9319c499ebd4978df4971b94419a116d0790", 878 | "sha256:26815c6c8498dc49d81faa76d61078c4f9f0859ce7817919021b9eba72b425e3", 879 | "sha256:4aedd08f15d3045a4e9c648f1e04daca2ab1044256959f1f95aafeeb3d794c16", 880 | "sha256:4c69fe5f05eea336b7a740e114dec995e2f927003c30702d896892403df6dbf0", 881 | "sha256:5177310ac2e63d6603f659fadc1e7bab33dd5a8db4e0596df34214eeab0fee3b", 882 | "sha256:5aa48bebfb41f93043a796128854b84407d4df730d3fb6e5dc36402f5cd594c0", 883 | "sha256:5b1b90860bf7d8a8c313b372d4f27343a54f415b20fb69dd601b7efe1029c91e", 884 | "sha256:6c284907e37f5e04d2412950960894b143a648dea3f79290757eb878b91acbd1", 885 | "sha256:6d183b5c58513f74225c376643234c369468e02947b47942eacbb23c1671f25d", 886 | "sha256:7412125b4f18aeddca2ecd7219ea2d2708f697943e6f624be41aa5f8a9852cc4", 887 | "sha256:7cd981ccc0afe49b9883f14761bb57c964df71124dcd155b0cba2b591f0d64b9", 888 | "sha256:85cdae87d8c136fd4da4dad1e48064d700f63e923d5af6c8c782ac0df8044542", 889 | "sha256:8aa130c3042052d656751df5e81f6d61edff3e289b5994edcf77f54118a8d9f4", 890 | "sha256:95367ccd88c07af21b379be1725b5322362bb83679d36691f124a16357390153", 891 | "sha256:9c7211d7920b97aeca7b3773a6783492b5b93baba39e7c36054f6e749fc7490c", 892 | "sha256:9e3f2b96e3b63c978bc29daaa3700c028fe3f049ea3031b58aa33fe2a5809d24", 893 | "sha256:b76aa836a952059d70a2788a2d98cb2a533ccd46222558b6970348939e55fc24", 894 | "sha256:b792164e539d99d93e4e5e09ae10f8cbe5466de7d759fc155e075237e0c274e4", 895 | "sha256:c0dc071017bc00abb7d7201bac06fa80333c6314477b3d10b52b58fa6a6e38f6", 896 | "sha256:cc3fda2b36482891db1060f00f881c77f9423eead4c3579629940a3e12095fe8", 897 | "sha256:d6b267f349a99d3908b56645eebf340cb58f01bd1e773b4eea1a905b3f0e4208", 898 | "sha256:d76a84998c51b8b68b40448ddd02bd1081bb33abcdc28beee6cd284fe11036c6", 899 | "sha256:e559c6afbca484072a98a51b6fa466aae785cfe89b69e8b856c3191bc8872a82", 900 | "sha256:ecc68f11404930e9c7ecfc937aa423e1e50158317bf67ca91736a9864eae0232", 901 | "sha256:f1accae9a28dc3cda46a91de86acf69de0d1b5f4edd44a9b0c3ceb8036dfff19" 902 | ], 903 | "markers": "python_version >= '3.9'", 904 | "version": "==1.25.0" 905 | }, 906 | "openai": { 907 | "hashes": [ 908 | "sha256:2483095c7db1eee274cebac79e315a986c4e55207bb4fa7b82d185b3a2ed9536", 909 | "sha256:e0a7c2f7da26bdbe5354b03c6d4b82a2f34bd4458c7a17ae1a7092c3e397e03c" 910 | ], 911 | "index": "pypi", 912 | "version": "==0.27.8" 913 | }, 914 | "openapi-schema-pydantic": { 915 | "hashes": [ 916 | "sha256:3e22cf58b74a69f752cc7e5f1537f6e44164282db2700cbbcd3bb99ddd065196", 917 | "sha256:a932ecc5dcbb308950282088956e94dea069c9823c84e507d64f6b622222098c" 918 | ], 919 | "markers": "python_full_version >= '3.6.1'", 920 | "version": "==1.2.4" 921 | }, 922 | "packaging": { 923 | "hashes": [ 924 | "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", 925 | "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" 926 | ], 927 | "markers": "python_version >= '3.7'", 928 | "version": "==23.1" 929 | }, 930 | "pandas": { 931 | "hashes": [ 932 | "sha256:02755de164da6827764ceb3bbc5f64b35cb12394b1024fdf88704d0fa06e0e2f", 933 | "sha256:0a1e0576611641acde15c2322228d138258f236d14b749ad9af498ab69089e2d", 934 | "sha256:1eb09a242184092f424b2edd06eb2b99d06dc07eeddff9929e8667d4ed44e181", 935 | "sha256:30a89d0fec4263ccbf96f68592fd668939481854d2ff9da709d32a047689393b", 936 | "sha256:50e451932b3011b61d2961b4185382c92cc8c6ee4658dcd4f320687bb2d000ee", 937 | "sha256:51a93d422fbb1bd04b67639ba4b5368dffc26923f3ea32a275d2cc450f1d1c86", 938 | "sha256:598e9020d85a8cdbaa1815eb325a91cfff2bb2b23c1442549b8a3668e36f0f77", 939 | "sha256:66d00300f188fa5de73f92d5725ced162488f6dc6ad4cecfe4144ca29debe3b8", 940 | "sha256:69167693cb8f9b3fc060956a5d0a0a8dbfed5f980d9fd2c306fb5b9c855c814c", 941 | "sha256:6d6d10c2142d11d40d6e6c0a190b1f89f525bcf85564707e31b0a39e3b398e08", 942 | "sha256:713f2f70abcdade1ddd68fc91577cb090b3544b07ceba78a12f799355a13ee44", 943 | "sha256:7376e13d28eb16752c398ca1d36ccfe52bf7e887067af9a0474de6331dd948d2", 944 | "sha256:77550c8909ebc23e56a89f91b40ad01b50c42cfbfab49b3393694a50549295ea", 945 | "sha256:7b21cb72958fc49ad757685db1919021d99650d7aaba676576c9e88d3889d456", 946 | "sha256:9ebb9f1c22ddb828e7fd017ea265a59d80461d5a79154b49a4207bd17514d122", 947 | "sha256:a18e5c72b989ff0f7197707ceddc99828320d0ca22ab50dd1b9e37db45b010c0", 948 | "sha256:a6b5f14cd24a2ed06e14255ff40fe2ea0cfaef79a8dd68069b7ace74bd6acbba", 949 | "sha256:b42b120458636a981077cfcfa8568c031b3e8709701315e2bfa866324a83efa8", 950 | "sha256:c4af689352c4fe3d75b2834933ee9d0ccdbf5d7a8a7264f0ce9524e877820c08", 951 | "sha256:c7319b6e68de14e6209460f72a8d1ef13c09fb3d3ef6c37c1e65b35d50b5c145", 952 | "sha256:cf3f0c361a4270185baa89ec7ab92ecaa355fe783791457077473f974f654df5", 953 | "sha256:dd46bde7309088481b1cf9c58e3f0e204b9ff9e3244f441accd220dd3365ce7c", 954 | "sha256:dd5476b6c3fe410ee95926873f377b856dbc4e81a9c605a0dc05aaccc6a7c6c6", 955 | "sha256:e69140bc2d29a8556f55445c15f5794490852af3de0f609a24003ef174528b79", 956 | "sha256:f908a77cbeef9bbd646bd4b81214cbef9ac3dda4181d5092a4aa9797d1bc7774" 957 | ], 958 | "markers": "python_version >= '3.8'", 959 | "version": "==2.0.2" 960 | }, 961 | "pillow": { 962 | "hashes": [ 963 | "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1", 964 | "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba", 965 | "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a", 966 | "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799", 967 | "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51", 968 | "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb", 969 | "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5", 970 | "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270", 971 | "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6", 972 | "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47", 973 | "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf", 974 | "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e", 975 | "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b", 976 | "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66", 977 | "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865", 978 | "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec", 979 | "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c", 980 | "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1", 981 | "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38", 982 | "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906", 983 | "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705", 984 | "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef", 985 | "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc", 986 | "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f", 987 | "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf", 988 | "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392", 989 | "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d", 990 | "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe", 991 | "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32", 992 | "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5", 993 | "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7", 994 | "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44", 995 | "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d", 996 | "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3", 997 | "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625", 998 | "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e", 999 | "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829", 1000 | "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089", 1001 | "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3", 1002 | "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78", 1003 | "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96", 1004 | "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964", 1005 | "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597", 1006 | "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99", 1007 | "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a", 1008 | "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140", 1009 | "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7", 1010 | "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16", 1011 | "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903", 1012 | "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1", 1013 | "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296", 1014 | "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572", 1015 | "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115", 1016 | "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a", 1017 | "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd", 1018 | "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4", 1019 | "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1", 1020 | "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb", 1021 | "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa", 1022 | "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a", 1023 | "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569", 1024 | "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c", 1025 | "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf", 1026 | "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082", 1027 | "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062", 1028 | "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579" 1029 | ], 1030 | "markers": "python_version >= '3.7'", 1031 | "version": "==9.5.0" 1032 | }, 1033 | "protobuf": { 1034 | "hashes": [ 1035 | "sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8", 1036 | "sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223", 1037 | "sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288", 1038 | "sha256:2991f5e7690dab569f8f81702e6700e7364cc3b5e572725098215d3da5ccc6ac", 1039 | "sha256:3b01a5274ac920feb75d0b372d901524f7e3ad39c63b1a2d55043f3887afe0c1", 1040 | "sha256:3bcbeb2bf4bb61fe960dd6e005801a23a43578200ea8ceb726d1f6bd0e562ba1", 1041 | "sha256:447b9786ac8e50ae72cae7a2eec5c5df6a9dbf9aa6f908f1b8bda6032644ea62", 1042 | "sha256:514b6bbd54a41ca50c86dd5ad6488afe9505901b3557c5e0f7823a0cf67106fb", 1043 | "sha256:5cb9e41188737f321f4fce9a4337bf40a5414b8d03227e1d9fbc59bc3a216e35", 1044 | "sha256:7a92beb30600332a52cdadbedb40d33fd7c8a0d7f549c440347bc606fb3fe34b", 1045 | "sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359", 1046 | "sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a", 1047 | "sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5" 1048 | ], 1049 | "markers": "python_version >= '3.7'", 1050 | "version": "==4.23.3" 1051 | }, 1052 | "pyarrow": { 1053 | "hashes": [ 1054 | "sha256:051f9f5ccf585f12d7de836e50965b3c235542cc896959320d9776ab93f3b33d", 1055 | "sha256:1887bdae17ec3b4c046fcf19951e71b6a619f39fa674f9881216173566c8f718", 1056 | "sha256:2d3c4cbbf81e6dd23fe921bc91dc4619ea3b79bc58ef10bce0f49bdafb103daf", 1057 | "sha256:345e1828efdbd9aa4d4de7d5676778aba384a2c3add896d995b23d368e60e5af", 1058 | "sha256:3de26da901216149ce086920547dfff5cd22818c9eab67ebc41e863a5883bac7", 1059 | "sha256:43364daec02f69fec89d2315f7fbfbeec956e0d991cbbef471681bd77875c40f", 1060 | "sha256:459a1c0ed2d68671188b2118c63bac91eaef6fc150c77ddd8a583e3c795737bf", 1061 | "sha256:6251e38470da97a5b2e00de5c6a049149f7b2bd62f12fa5dbb9ac674119ba71a", 1062 | "sha256:6895b5fb74289d055c43db3af0de6e16b07586c45763cb5e558d38b86a91e3a7", 1063 | "sha256:6d288029a94a9bb5407ceebdd7110ba398a00412c5b0155ee9813a40d246c5df", 1064 | "sha256:749be7fd2ff260683f9cc739cb862fb11be376de965a2a8ccbf2693b098db6c7", 1065 | "sha256:85e705e33eaf666bbe508a16fd5ba27ca061e177916b7a317ba5a51bee43384c", 1066 | "sha256:8d6009fdf8986332b2169314da482baed47ac053311c8934ac6651e614deacd6", 1067 | "sha256:9120c3eb2b1f6f516a3b7a9714ed860882d9ef98c4b17edcdc91d95b7528db60", 1068 | "sha256:a3c63124fc26bf5f95f508f5d04e1ece8cc23a8b0af2a1e6ab2b1ec3fdc91b24", 1069 | "sha256:b13329f79fa4472324f8d32dc1b1216616d09bd1e77cfb13104dec5463632c36", 1070 | "sha256:bb656150d3d12ec1396f6dde542db1675a95c0cc8366d507347b0beed96e87ca", 1071 | "sha256:be2757e9275875d2a9c6e6052ac7957fbbfc7bc7370e4a036a9b893e96fedaba", 1072 | "sha256:c780f4dc40460015d80fcd6a6140de80b615349ed68ef9adb653fe351778c9b3", 1073 | "sha256:cce317fc96e5b71107bf1f9f184d5e54e2bd14bbf3f9a3d62819961f0af86fec", 1074 | "sha256:cdacf515ec276709ac8042c7d9bd5be83b4f5f39c6c037a17a60d7ebfd92c890", 1075 | "sha256:ce4aebdf412bd0eeb800d8e47db854f9f9f7e2f5a0220440acf219ddfddd4f63", 1076 | "sha256:cf812306d66f40f69e684300f7af5111c11f6e0d89d6b733e05a3de44961529d", 1077 | "sha256:e0d8730c7f6e893f6db5d5b86eda42c0a130842d101992b581e2138e4d5663d3", 1078 | "sha256:e2c9cb8eeabbadf5fcfc3d1ddea616c7ce893db2ce4dcef0ac13b099ad7ca082" 1079 | ], 1080 | "markers": "python_version >= '3.7'", 1081 | "version": "==12.0.1" 1082 | }, 1083 | "pydantic": { 1084 | "hashes": [ 1085 | "sha256:07293ab08e7b4d3c9d7de4949a0ea571f11e4557d19ea24dd3ae0c524c0c334d", 1086 | "sha256:0a2aabdc73c2a5960e87c3ffebca6ccde88665616d1fd6d3db3178ef427b267a", 1087 | "sha256:0da48717dc9495d3a8f215e0d012599db6b8092db02acac5e0d58a65248ec5bc", 1088 | "sha256:128d9453d92e6e81e881dd7e2484e08d8b164da5507f62d06ceecf84bf2e21d3", 1089 | "sha256:2196c06484da2b3fded1ab6dbe182bdabeb09f6318b7fdc412609ee2b564c49a", 1090 | "sha256:2e9aec8627a1a6823fc62fb96480abe3eb10168fd0d859ee3d3b395105ae19a7", 1091 | "sha256:3283b574b01e8dbc982080d8287c968489d25329a463b29a90d4157de4f2baaf", 1092 | "sha256:3c52eb595db83e189419bf337b59154bdcca642ee4b2a09e5d7797e41ace783f", 1093 | "sha256:4b466a23009ff5cdd7076eb56aca537c745ca491293cc38e72bf1e0e00de5b91", 1094 | "sha256:517a681919bf880ce1dac7e5bc0c3af1e58ba118fd774da2ffcd93c5f96eaece", 1095 | "sha256:5f8bbaf4013b9a50e8100333cc4e3fa2f81214033e05ac5aa44fa24a98670a29", 1096 | "sha256:6257bb45ad78abacda13f15bde5886efd6bf549dd71085e64b8dcf9919c38b60", 1097 | "sha256:67195274fd27780f15c4c372f4ba9a5c02dad6d50647b917b6a92bf00b3d301a", 1098 | "sha256:6cafde02f6699ce4ff643417d1a9223716ec25e228ddc3b436fe7e2d25a1f305", 1099 | "sha256:73ef93e5e1d3c8e83f1ff2e7fdd026d9e063c7e089394869a6e2985696693766", 1100 | "sha256:7845b31959468bc5b78d7b95ec52fe5be32b55d0d09983a877cca6aedc51068f", 1101 | "sha256:7847ca62e581e6088d9000f3c497267868ca2fa89432714e21a4fb33a04d52e8", 1102 | "sha256:7e1d5290044f620f80cf1c969c542a5468f3656de47b41aa78100c5baa2b8276", 1103 | "sha256:7ee829b86ce984261d99ff2fd6e88f2230068d96c2a582f29583ed602ef3fc2c", 1104 | "sha256:83fcff3c7df7adff880622a98022626f4f6dbce6639a88a15a3ce0f96466cb60", 1105 | "sha256:939328fd539b8d0edf244327398a667b6b140afd3bf7e347cf9813c736211896", 1106 | "sha256:95c70da2cd3b6ddf3b9645ecaa8d98f3d80c606624b6d245558d202cd23ea3be", 1107 | "sha256:963671eda0b6ba6926d8fc759e3e10335e1dc1b71ff2a43ed2efd6996634dafb", 1108 | "sha256:970b1bdc6243ef663ba5c7e36ac9ab1f2bfecb8ad297c9824b542d41a750b298", 1109 | "sha256:9863b9420d99dfa9c064042304868e8ba08e89081428a1c471858aa2af6f57c4", 1110 | "sha256:ad428e92ab68798d9326bb3e5515bc927444a3d71a93b4a2ca02a8a5d795c572", 1111 | "sha256:b48d3d634bca23b172f47f2335c617d3fcb4b3ba18481c96b7943a4c634f5c8d", 1112 | "sha256:b9cd67fb763248cbe38f0593cd8611bfe4b8ad82acb3bdf2b0898c23415a1f82", 1113 | "sha256:d111a21bbbfd85c17248130deac02bbd9b5e20b303338e0dbe0faa78330e37e0", 1114 | "sha256:e1aa5c2410769ca28aa9a7841b80d9d9a1c5f223928ca8bec7e7c9a34d26b1d4", 1115 | "sha256:e692dec4a40bfb40ca530e07805b1208c1de071a18d26af4a2a0d79015b352ca", 1116 | "sha256:e7c9900b43ac14110efa977be3da28931ffc74c27e96ee89fbcaaf0b0fe338e1", 1117 | "sha256:eec39224b2b2e861259d6f3c8b6290d4e0fbdce147adb797484a42278a1a486f", 1118 | "sha256:f0b7628fb8efe60fe66fd4adadd7ad2304014770cdc1f4934db41fe46cc8825f", 1119 | "sha256:f50e1764ce9353be67267e7fd0da08349397c7db17a562ad036aa7c8f4adfdb6", 1120 | "sha256:fab81a92f42d6d525dd47ced310b0c3e10c416bbfae5d59523e63ea22f82b31e" 1121 | ], 1122 | "markers": "python_version >= '3.7'", 1123 | "version": "==1.10.9" 1124 | }, 1125 | "pydeck": { 1126 | "hashes": [ 1127 | "sha256:9e0a67890ab061b8c6080e06f8c780934c00355a7114291c884f055f3fc0dc25", 1128 | "sha256:c89b3dd76f9991140a33b886b336c762105e9c9def8e842e891bc72dbce8a4ce" 1129 | ], 1130 | "markers": "python_version >= '3.7'", 1131 | "version": "==0.8.1b0" 1132 | }, 1133 | "pygments": { 1134 | "hashes": [ 1135 | "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c", 1136 | "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1" 1137 | ], 1138 | "markers": "python_version >= '3.7'", 1139 | "version": "==2.15.1" 1140 | }, 1141 | "pympler": { 1142 | "hashes": [ 1143 | "sha256:993f1a3599ca3f4fcd7160c7545ad06310c9e12f70174ae7ae8d4e25f6c5d3fa", 1144 | "sha256:d260dda9ae781e1eab6ea15bacb84015849833ba5555f141d2d9b7b7473b307d" 1145 | ], 1146 | "markers": "python_version >= '3.6'", 1147 | "version": "==1.0.1" 1148 | }, 1149 | "pyrsistent": { 1150 | "hashes": [ 1151 | "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8", 1152 | "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440", 1153 | "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a", 1154 | "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c", 1155 | "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3", 1156 | "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393", 1157 | "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9", 1158 | "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da", 1159 | "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf", 1160 | "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64", 1161 | "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a", 1162 | "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3", 1163 | "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98", 1164 | "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2", 1165 | "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8", 1166 | "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf", 1167 | "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc", 1168 | "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7", 1169 | "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28", 1170 | "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2", 1171 | "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b", 1172 | "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a", 1173 | "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64", 1174 | "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19", 1175 | "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1", 1176 | "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9", 1177 | "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c" 1178 | ], 1179 | "markers": "python_version >= '3.7'", 1180 | "version": "==0.19.3" 1181 | }, 1182 | "python-dateutil": { 1183 | "hashes": [ 1184 | "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", 1185 | "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" 1186 | ], 1187 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1188 | "version": "==2.8.2" 1189 | }, 1190 | "pytz": { 1191 | "hashes": [ 1192 | "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588", 1193 | "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb" 1194 | ], 1195 | "version": "==2023.3" 1196 | }, 1197 | "pytz-deprecation-shim": { 1198 | "hashes": [ 1199 | "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6", 1200 | "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d" 1201 | ], 1202 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", 1203 | "version": "==0.1.0.post0" 1204 | }, 1205 | "pyyaml": { 1206 | "hashes": [ 1207 | "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", 1208 | "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", 1209 | "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", 1210 | "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", 1211 | "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", 1212 | "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", 1213 | "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", 1214 | "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", 1215 | "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", 1216 | "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", 1217 | "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", 1218 | "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", 1219 | "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", 1220 | "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", 1221 | "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", 1222 | "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", 1223 | "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", 1224 | "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", 1225 | "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", 1226 | "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", 1227 | "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", 1228 | "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", 1229 | "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", 1230 | "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", 1231 | "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", 1232 | "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", 1233 | "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", 1234 | "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", 1235 | "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", 1236 | "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", 1237 | "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", 1238 | "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", 1239 | "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", 1240 | "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", 1241 | "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", 1242 | "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", 1243 | "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", 1244 | "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", 1245 | "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", 1246 | "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" 1247 | ], 1248 | "markers": "python_version >= '3.6'", 1249 | "version": "==6.0" 1250 | }, 1251 | "requests": { 1252 | "hashes": [ 1253 | "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", 1254 | "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" 1255 | ], 1256 | "markers": "python_version >= '3.7'", 1257 | "version": "==2.31.0" 1258 | }, 1259 | "rich": { 1260 | "hashes": [ 1261 | "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec", 1262 | "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898" 1263 | ], 1264 | "markers": "python_full_version >= '3.7.0'", 1265 | "version": "==13.4.2" 1266 | }, 1267 | "six": { 1268 | "hashes": [ 1269 | "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", 1270 | "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" 1271 | ], 1272 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1273 | "version": "==1.16.0" 1274 | }, 1275 | "smmap": { 1276 | "hashes": [ 1277 | "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94", 1278 | "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" 1279 | ], 1280 | "markers": "python_version >= '3.6'", 1281 | "version": "==5.0.0" 1282 | }, 1283 | "sniffio": { 1284 | "hashes": [ 1285 | "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", 1286 | "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" 1287 | ], 1288 | "markers": "python_version >= '3.7'", 1289 | "version": "==1.3.0" 1290 | }, 1291 | "socksio": { 1292 | "hashes": [ 1293 | "sha256:95dc1f15f9b34e8d7b16f06d74b8ccf48f609af32ab33c608d08761c5dcbb1f3", 1294 | "sha256:f88beb3da5b5c38b9890469de67d0cb0f9d494b78b106ca1845f96c10b91c4ac" 1295 | ], 1296 | "version": "==1.0.0" 1297 | }, 1298 | "sqlalchemy": { 1299 | "hashes": [ 1300 | "sha256:04383f1e3452f6739084184e427e9d5cb4e68ddc765d52157bf5ef30d5eca14f", 1301 | "sha256:125f9f7e62ddf8b590c069729080ffe18b68a20d9882eb0947f72e06274601d7", 1302 | "sha256:1822620c89779b85f7c23d535c8e04b79c517739ae07aaed48c81e591ed5498e", 1303 | "sha256:21583808d37f126a647652c90332ac1d3a102edf3c94bcc3319edcc0ea2300cc", 1304 | "sha256:218fb20c01e95004f50a3062bf4c447dcb360cab8274232f31947e254f118298", 1305 | "sha256:2269b1f9b8be47e52b70936069a25a3771eff53367aa5cc59bb94f28a6412e13", 1306 | "sha256:234678ed6576531b8e4be255b980f20368bf07241a2e67b84e6b0fe679edb9c4", 1307 | "sha256:28da17059ecde53e2d10ba813d38db942b9f6344360b2958b25872d5cb729d35", 1308 | "sha256:2c6ff5767d954f6091113fedcaaf49cdec2197ae4c5301fe83d5ae4393c82f33", 1309 | "sha256:36a87e26fe8fa8c466fae461a8fcb780d0a1cbf8206900759fc6fe874475a3ce", 1310 | "sha256:394ac3adf3676fad76d4b8fcecddf747627f17f0738dc94bac15f303d05b03d4", 1311 | "sha256:40a3dc52b2b16f08b5c16b9ee7646329e4b3411e9280e5e8d57b19eaa51cbef4", 1312 | "sha256:48111d56afea5699bab72c38ec95561796b81befff9e13d1dd5ce251ab25f51d", 1313 | "sha256:48b40dc2895841ea89d89df9eb3ac69e2950a659db20a369acf4259f68e6dc1f", 1314 | "sha256:513411d73503a6fc5804f01fae3b3d44f267c1b3a06cfeac02e9286a7330e857", 1315 | "sha256:51736cfb607cf4e8fafb693906f9bc4e5ee55be0b096d44bd7f20cd8489b8571", 1316 | "sha256:5f40e3a7d0a464f1c8593f2991e5520b2f5b26da24e88000bbd4423f86103d4f", 1317 | "sha256:6150560fcffc6aee5ec9a97419ac768c7a9f56baf7a7eb59cb4b1b6a4d463ad9", 1318 | "sha256:724355973297bbe547f3eb98b46ade65a67a3d5a6303f17ab59a2dc6fb938943", 1319 | "sha256:74ddcafb6488f382854a7da851c404c394be3729bb3d91b02ad86c5458140eff", 1320 | "sha256:7830e01b02d440c27f2a5be68296e74ccb55e6a5b5962ffafd360b98930b2e5e", 1321 | "sha256:7f31d4e7ca1dd8ca5a27fd5eaa0f9e2732fe769ff7dd35bf7bba179597e4df07", 1322 | "sha256:8741d3d401383e54b2aada37cbd10f55c5d444b360eae3a82f74a2be568a7710", 1323 | "sha256:910d45bf3673f0e4ef13858674bd23cfdafdc8368b45b948bf511797dbbb401d", 1324 | "sha256:aa995b21f853864996e4056d9fde479bcecf8b7bff4beb3555eebbbba815f35d", 1325 | "sha256:af7e2ba75bf84b64adb331918188dda634689a2abb151bc1a583e488363fd2f8", 1326 | "sha256:b0eaf82cc844f6b46defe15ad243ea00d1e39ed3859df61130c263dc7204da6e", 1327 | "sha256:b114a16bc03dfe20b625062e456affd7b9938286e05a3f904a025b9aacc29dd4", 1328 | "sha256:b47be4c6281a86670ea5cfbbbe6c3a65366a8742f5bc8b986f790533c60b5ddb", 1329 | "sha256:ba03518e64d86f000dc24ab3d3a1aa876bcbaa8aa15662ac2df5e81537fa3394", 1330 | "sha256:cc9c2630c423ac4973492821b2969f5fe99d9736f3025da670095668fbfcd4d5", 1331 | "sha256:cf07ff9920cb3ca9d73525dfd4f36ddf9e1a83734ea8b4f724edfd9a2c6e82d9", 1332 | "sha256:cf175d26f6787cce30fe6c04303ca0aeeb0ad40eeb22e3391f24b32ec432a1e1", 1333 | "sha256:d0aeb3afaa19f187a70fa592fbe3c20a056b57662691fd3abf60f016aa5c1848", 1334 | "sha256:e186e9e95fb5d993b075c33fe4f38a22105f7ce11cecb5c17b5618181e356702", 1335 | "sha256:e2d5c3596254cf1a96474b98e7ce20041c74c008b0f101c1cb4f8261cb77c6d3", 1336 | "sha256:e3189432db2f5753b4fde1aa90a61c69976f4e7e31d1cf4611bfe3514ed07478", 1337 | "sha256:e3a6b2788f193756076061626679c5c5a6d600ddf8324f986bc72004c3e9d92e", 1338 | "sha256:ead58cae2a089eee1b0569060999cb5f2b2462109498a0937cc230a7556945a1", 1339 | "sha256:f2f389f77c68dc22cb51f026619291c4a38aeb4b7ecb5f998fd145b2d81ca513", 1340 | "sha256:f593170fc09c5abb1205a738290b39532f7380094dc151805009a07ae0e85330" 1341 | ], 1342 | "markers": "python_version >= '3.7'", 1343 | "version": "==2.0.17" 1344 | }, 1345 | "streamlit": { 1346 | "hashes": [ 1347 | "sha256:102b07d196650f8f35841e35381427cdfcf98b3767c57b28a99af5a8bf22e8b1", 1348 | "sha256:3525face94c78792733c56d63a36b48845150e3ba67bb50a19adb4c5975a8225" 1349 | ], 1350 | "index": "pypi", 1351 | "version": "==1.24.0" 1352 | }, 1353 | "tenacity": { 1354 | "hashes": [ 1355 | "sha256:2f277afb21b851637e8f52e6a613ff08734c347dc19ade928e519d7d2d8569b0", 1356 | "sha256:43af037822bd0029025877f3b2d97cc4d7bb0c2991000a3d59d71517c5c969e0" 1357 | ], 1358 | "markers": "python_version >= '3.6'", 1359 | "version": "==8.2.2" 1360 | }, 1361 | "toml": { 1362 | "hashes": [ 1363 | "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", 1364 | "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" 1365 | ], 1366 | "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", 1367 | "version": "==0.10.2" 1368 | }, 1369 | "toolz": { 1370 | "hashes": [ 1371 | "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", 1372 | "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194" 1373 | ], 1374 | "markers": "python_version >= '3.5'", 1375 | "version": "==0.12.0" 1376 | }, 1377 | "tornado": { 1378 | "hashes": [ 1379 | "sha256:05615096845cf50a895026f749195bf0b10b8909f9be672f50b0fe69cba368e4", 1380 | "sha256:0c325e66c8123c606eea33084976c832aa4e766b7dff8aedd7587ea44a604cdf", 1381 | "sha256:29e71c847a35f6e10ca3b5c2990a52ce38b233019d8e858b755ea6ce4dcdd19d", 1382 | "sha256:4b927c4f19b71e627b13f3db2324e4ae660527143f9e1f2e2fb404f3a187e2ba", 1383 | "sha256:5b17b1cf5f8354efa3d37c6e28fdfd9c1c1e5122f2cb56dac121ac61baa47cbe", 1384 | "sha256:6a0848f1aea0d196a7c4f6772197cbe2abc4266f836b0aac76947872cd29b411", 1385 | "sha256:7efcbcc30b7c654eb6a8c9c9da787a851c18f8ccd4a5a3a95b05c7accfa068d2", 1386 | "sha256:834ae7540ad3a83199a8da8f9f2d383e3c3d5130a328889e4cc991acc81e87a0", 1387 | "sha256:b46a6ab20f5c7c1cb949c72c1994a4585d2eaa0be4853f50a03b5031e964fc7c", 1388 | "sha256:c2de14066c4a38b4ecbbcd55c5cc4b5340eb04f1c5e81da7451ef555859c833f", 1389 | "sha256:c367ab6c0393d71171123ca5515c61ff62fe09024fa6bf299cd1339dc9456829" 1390 | ], 1391 | "markers": "python_version >= '3.8'", 1392 | "version": "==6.3.2" 1393 | }, 1394 | "tqdm": { 1395 | "hashes": [ 1396 | "sha256:1871fb68a86b8fb3b59ca4cdd3dcccbc7e6d613eeed31f4c332531977b89beb5", 1397 | "sha256:c4f53a17fe37e132815abceec022631be8ffe1b9381c2e6e30aa70edc99e9671" 1398 | ], 1399 | "markers": "python_version >= '3.7'", 1400 | "version": "==4.65.0" 1401 | }, 1402 | "typing-extensions": { 1403 | "hashes": [ 1404 | "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26", 1405 | "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5" 1406 | ], 1407 | "markers": "python_version >= '3.7'", 1408 | "version": "==4.6.3" 1409 | }, 1410 | "typing-inspect": { 1411 | "hashes": [ 1412 | "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", 1413 | "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78" 1414 | ], 1415 | "version": "==0.9.0" 1416 | }, 1417 | "tzdata": { 1418 | "hashes": [ 1419 | "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a", 1420 | "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda" 1421 | ], 1422 | "markers": "python_version >= '2'", 1423 | "version": "==2023.3" 1424 | }, 1425 | "tzlocal": { 1426 | "hashes": [ 1427 | "sha256:67d7e7f4ce0a98e9dfde2e02474c60fe846ed032d78b555c554c2e9cba472d84", 1428 | "sha256:ee32ef8c20803c19a96ed366addd3d4a729ef6309cb5c7359a0cc2eeeb7fa46a" 1429 | ], 1430 | "markers": "python_version >= '3.7'", 1431 | "version": "==4.3.1" 1432 | }, 1433 | "urllib3": { 1434 | "hashes": [ 1435 | "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1", 1436 | "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825" 1437 | ], 1438 | "markers": "python_version >= '3.7'", 1439 | "version": "==2.0.3" 1440 | }, 1441 | "validators": { 1442 | "hashes": [ 1443 | "sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a" 1444 | ], 1445 | "markers": "python_version >= '3.4'", 1446 | "version": "==0.20.0" 1447 | }, 1448 | "watchdog": { 1449 | "hashes": [ 1450 | "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a", 1451 | "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100", 1452 | "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8", 1453 | "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc", 1454 | "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae", 1455 | "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41", 1456 | "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0", 1457 | "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f", 1458 | "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c", 1459 | "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9", 1460 | "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3", 1461 | "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709", 1462 | "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83", 1463 | "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759", 1464 | "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9", 1465 | "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3", 1466 | "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7", 1467 | "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f", 1468 | "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346", 1469 | "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674", 1470 | "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397", 1471 | "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96", 1472 | "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d", 1473 | "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a", 1474 | "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64", 1475 | "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44", 1476 | "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33" 1477 | ], 1478 | "index": "pypi", 1479 | "version": "==3.0.0" 1480 | }, 1481 | "yarl": { 1482 | "hashes": [ 1483 | "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", 1484 | "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", 1485 | "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", 1486 | "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", 1487 | "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", 1488 | "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", 1489 | "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", 1490 | "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", 1491 | "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", 1492 | "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", 1493 | "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", 1494 | "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", 1495 | "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", 1496 | "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", 1497 | "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", 1498 | "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", 1499 | "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", 1500 | "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", 1501 | "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", 1502 | "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", 1503 | "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", 1504 | "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", 1505 | "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", 1506 | "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", 1507 | "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", 1508 | "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", 1509 | "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", 1510 | "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", 1511 | "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", 1512 | "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", 1513 | "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", 1514 | "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", 1515 | "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", 1516 | "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", 1517 | "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", 1518 | "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", 1519 | "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", 1520 | "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", 1521 | "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", 1522 | "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", 1523 | "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", 1524 | "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", 1525 | "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", 1526 | "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", 1527 | "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", 1528 | "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", 1529 | "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", 1530 | "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", 1531 | "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", 1532 | "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", 1533 | "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", 1534 | "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", 1535 | "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", 1536 | "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", 1537 | "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", 1538 | "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", 1539 | "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", 1540 | "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", 1541 | "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", 1542 | "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", 1543 | "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", 1544 | "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", 1545 | "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", 1546 | "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", 1547 | "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", 1548 | "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", 1549 | "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", 1550 | "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", 1551 | "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", 1552 | "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", 1553 | "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", 1554 | "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", 1555 | "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", 1556 | "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" 1557 | ], 1558 | "markers": "python_version >= '3.7'", 1559 | "version": "==1.9.2" 1560 | }, 1561 | "zipp": { 1562 | "hashes": [ 1563 | "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b", 1564 | "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556" 1565 | ], 1566 | "markers": "python_version >= '3.7'", 1567 | "version": "==3.15.0" 1568 | } 1569 | }, 1570 | "develop": { 1571 | "black": { 1572 | "hashes": [ 1573 | "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5", 1574 | "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915", 1575 | "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326", 1576 | "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940", 1577 | "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b", 1578 | "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30", 1579 | "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c", 1580 | "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c", 1581 | "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab", 1582 | "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27", 1583 | "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2", 1584 | "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961", 1585 | "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9", 1586 | "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb", 1587 | "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70", 1588 | "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331", 1589 | "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2", 1590 | "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266", 1591 | "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d", 1592 | "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6", 1593 | "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b", 1594 | "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925", 1595 | "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8", 1596 | "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4", 1597 | "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3" 1598 | ], 1599 | "index": "pypi", 1600 | "version": "==23.3.0" 1601 | }, 1602 | "cfgv": { 1603 | "hashes": [ 1604 | "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426", 1605 | "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736" 1606 | ], 1607 | "markers": "python_full_version >= '3.6.1'", 1608 | "version": "==3.3.1" 1609 | }, 1610 | "click": { 1611 | "hashes": [ 1612 | "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", 1613 | "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" 1614 | ], 1615 | "markers": "python_version >= '3.7'", 1616 | "version": "==8.1.3" 1617 | }, 1618 | "distlib": { 1619 | "hashes": [ 1620 | "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46", 1621 | "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e" 1622 | ], 1623 | "version": "==0.3.6" 1624 | }, 1625 | "filelock": { 1626 | "hashes": [ 1627 | "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81", 1628 | "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec" 1629 | ], 1630 | "markers": "python_version >= '3.7'", 1631 | "version": "==3.12.2" 1632 | }, 1633 | "identify": { 1634 | "hashes": [ 1635 | "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4", 1636 | "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d" 1637 | ], 1638 | "markers": "python_version >= '3.7'", 1639 | "version": "==2.5.24" 1640 | }, 1641 | "mypy": { 1642 | "hashes": [ 1643 | "sha256:01fd2e9f85622d981fd9063bfaef1aed6e336eaacca00892cd2d82801ab7c042", 1644 | "sha256:0dde1d180cd84f0624c5dcaaa89c89775550a675aff96b5848de78fb11adabcd", 1645 | "sha256:141dedfdbfe8a04142881ff30ce6e6653c9685b354876b12e4fe6c78598b45e2", 1646 | "sha256:16f0db5b641ba159eff72cff08edc3875f2b62b2fa2bc24f68c1e7a4e8232d01", 1647 | "sha256:190b6bab0302cec4e9e6767d3eb66085aef2a1cc98fe04936d8a42ed2ba77bb7", 1648 | "sha256:2460a58faeea905aeb1b9b36f5065f2dc9a9c6e4c992a6499a2360c6c74ceca3", 1649 | "sha256:34a9239d5b3502c17f07fd7c0b2ae6b7dd7d7f6af35fbb5072c6208e76295816", 1650 | "sha256:43b592511672017f5b1a483527fd2684347fdffc041c9ef53428c8dc530f79a3", 1651 | "sha256:43d24f6437925ce50139a310a64b2ab048cb2d3694c84c71c3f2a1626d8101dc", 1652 | "sha256:45d32cec14e7b97af848bddd97d85ea4f0db4d5a149ed9676caa4eb2f7402bb4", 1653 | "sha256:470c969bb3f9a9efcedbadcd19a74ffb34a25f8e6b0e02dae7c0e71f8372f97b", 1654 | "sha256:566e72b0cd6598503e48ea610e0052d1b8168e60a46e0bfd34b3acf2d57f96a8", 1655 | "sha256:5703097c4936bbb9e9bce41478c8d08edd2865e177dc4c52be759f81ee4dd26c", 1656 | "sha256:7549fbf655e5825d787bbc9ecf6028731973f78088fbca3a1f4145c39ef09462", 1657 | "sha256:8207b7105829eca6f3d774f64a904190bb2231de91b8b186d21ffd98005f14a7", 1658 | "sha256:8c4d8e89aa7de683e2056a581ce63c46a0c41e31bd2b6d34144e2c80f5ea53dc", 1659 | "sha256:98324ec3ecf12296e6422939e54763faedbfcc502ea4a4c38502082711867258", 1660 | "sha256:9bbcd9ab8ea1f2e1c8031c21445b511442cc45c89951e49bbf852cbb70755b1b", 1661 | "sha256:9d40652cc4fe33871ad3338581dca3297ff5f2213d0df345bcfbde5162abf0c9", 1662 | "sha256:a2746d69a8196698146a3dbe29104f9eb6a2a4d8a27878d92169a6c0b74435b6", 1663 | "sha256:ae704dcfaa180ff7c4cfbad23e74321a2b774f92ca77fd94ce1049175a21c97f", 1664 | "sha256:bfdca17c36ae01a21274a3c387a63aa1aafe72bff976522886869ef131b937f1", 1665 | "sha256:c482e1246726616088532b5e964e39765b6d1520791348e6c9dc3af25b233828", 1666 | "sha256:ca637024ca67ab24a7fd6f65d280572c3794665eaf5edcc7e90a866544076878", 1667 | "sha256:e02d700ec8d9b1859790c0475df4e4092c7bf3272a4fd2c9f33d87fac4427b8f", 1668 | "sha256:e5952d2d18b79f7dc25e62e014fe5a23eb1a3d2bc66318df8988a01b1a037c5b" 1669 | ], 1670 | "index": "pypi", 1671 | "version": "==1.4.1" 1672 | }, 1673 | "mypy-extensions": { 1674 | "hashes": [ 1675 | "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", 1676 | "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782" 1677 | ], 1678 | "markers": "python_version >= '3.5'", 1679 | "version": "==1.0.0" 1680 | }, 1681 | "nodeenv": { 1682 | "hashes": [ 1683 | "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2", 1684 | "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec" 1685 | ], 1686 | "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6'", 1687 | "version": "==1.8.0" 1688 | }, 1689 | "packaging": { 1690 | "hashes": [ 1691 | "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", 1692 | "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" 1693 | ], 1694 | "markers": "python_version >= '3.7'", 1695 | "version": "==23.1" 1696 | }, 1697 | "pathspec": { 1698 | "hashes": [ 1699 | "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687", 1700 | "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293" 1701 | ], 1702 | "markers": "python_version >= '3.7'", 1703 | "version": "==0.11.1" 1704 | }, 1705 | "platformdirs": { 1706 | "hashes": [ 1707 | "sha256:b0cabcb11063d21a0b261d557acb0a9d2126350e63b70cdf7db6347baea456dc", 1708 | "sha256:ca9ed98ce73076ba72e092b23d3c93ea6c4e186b3f1c3dad6edd98ff6ffcca2e" 1709 | ], 1710 | "markers": "python_version >= '3.7'", 1711 | "version": "==3.8.0" 1712 | }, 1713 | "pre-commit": { 1714 | "hashes": [ 1715 | "sha256:10badb65d6a38caff29703362271d7dca483d01da88f9d7e05d0b97171c136cb", 1716 | "sha256:a2256f489cd913d575c145132ae196fe335da32d91a8294b7afe6622335dd023" 1717 | ], 1718 | "index": "pypi", 1719 | "version": "==3.3.3" 1720 | }, 1721 | "pyyaml": { 1722 | "hashes": [ 1723 | "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf", 1724 | "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", 1725 | "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", 1726 | "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", 1727 | "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", 1728 | "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", 1729 | "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", 1730 | "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", 1731 | "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", 1732 | "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", 1733 | "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", 1734 | "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", 1735 | "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782", 1736 | "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", 1737 | "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", 1738 | "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", 1739 | "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", 1740 | "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", 1741 | "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1", 1742 | "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", 1743 | "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", 1744 | "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", 1745 | "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", 1746 | "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", 1747 | "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", 1748 | "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d", 1749 | "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", 1750 | "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", 1751 | "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7", 1752 | "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", 1753 | "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", 1754 | "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", 1755 | "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358", 1756 | "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", 1757 | "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", 1758 | "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", 1759 | "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", 1760 | "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f", 1761 | "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", 1762 | "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" 1763 | ], 1764 | "markers": "python_version >= '3.6'", 1765 | "version": "==6.0" 1766 | }, 1767 | "setuptools": { 1768 | "hashes": [ 1769 | "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f", 1770 | "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235" 1771 | ], 1772 | "markers": "python_version >= '3.7'", 1773 | "version": "==68.0.0" 1774 | }, 1775 | "typing-extensions": { 1776 | "hashes": [ 1777 | "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26", 1778 | "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5" 1779 | ], 1780 | "markers": "python_version >= '3.7'", 1781 | "version": "==4.6.3" 1782 | }, 1783 | "virtualenv": { 1784 | "hashes": [ 1785 | "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419", 1786 | "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1" 1787 | ], 1788 | "markers": "python_version >= '3.7'", 1789 | "version": "==20.23.1" 1790 | } 1791 | } 1792 | } 1793 | --------------------------------------------------------------------------------