Docs: assets clean up (#598)
* Update ngrok.md * Update linode.md * Update cloudflare.md * Update testing.md * Update google_search.md * Update introduction.md * Update stable_diffusion.md * Update wolfram.md * docs: assets clean up
|
@ -64,6 +64,7 @@ Keep up with the latest updates by visiting the releases page - [Releases](https
|
|||
* [Mac Install](docs/install/mac_install.md)
|
||||
* [Windows Install](docs/install/windows_install.md)
|
||||
* [APIs and Tokens](docs/install/apis_and_tokens.md)
|
||||
* [User Auth System](docs/install/user_auth_system.md)
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
@ -85,7 +86,6 @@ Keep up with the latest updates by visiting the releases page - [Releases](https
|
|||
* [Wolfram](docs/features/plugins/wolfram.md)
|
||||
* [Make Your Own Plugin](docs/features/plugins/make_your_own.md)
|
||||
|
||||
* [User Auth System](docs/features/user_auth_system.md)
|
||||
* [Proxy](docs/features/proxy.md)
|
||||
* [Bing Jailbreak](docs/features/bing_jailbreak.md)
|
||||
</details>
|
||||
|
|
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 202 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 350 KiB |
Before Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 313 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 36 KiB |
|
@ -16,17 +16,17 @@ This document explains how to write and format documentation for LibreChat.
|
|||
- Use `##` for the main sections of the document.
|
||||
- Use `###` for the sub-sections within a section.
|
||||
- Use `**` to make text bold to highlight important information (not in place of a heading).
|
||||
- Use relative paths for images and links to other documents.
|
||||
- Use relative paths for links to other documents.
|
||||
- You can use HTML to add more features to a document.
|
||||
|
||||
## Important Notes
|
||||
- **⚠️Keep it organized and structured⚠️**
|
||||
- Do not add unrelated information to an existing document. Create a new one if needed.
|
||||
- All assets go into [assets/docs](../assets/docs/).
|
||||
- The assets folder structure follows the same structure as the docs folder structure.
|
||||
- The assets should have the same name as your documents followed by `-` and a number (e.g. `documentation_guidelines-1.png`).
|
||||
- example: an image for this document should be `../assets/docs/contributions/documentation_guidelines-1.png`
|
||||
- All assets should be uploaded in the document from GitHub's webui:
|
||||
- **Before submitting a PR, double-check on GitHub that everything is properly displayed and that all links work correctly.**
|
||||
|
||||

|
||||
|
||||
## Tips
|
||||
- You can check the code of this document to see how it works.
|
||||
- You can run MKDocs locally to test bigger documentation changes
|
||||
|
@ -36,9 +36,9 @@ This document explains how to write and format documentation for LibreChat.
|
|||
### Example of HTML image embedding:
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/NGaa9RPCft">
|
||||
<img src="../assets/LibreChat.svg" height="128">
|
||||
<img src="https://github.com/danny-avila/LibreChat/assets/32828263/45890a7c-5b8d-4650-a6e0-aa5d7e4951c3" height="128" width="128">
|
||||
</a>
|
||||
<a href="https://librechat.ai">
|
||||
<h2 align="center">LibreChat</h2>
|
||||
<h3 align="center">LibreChat</h3>
|
||||
</a>
|
||||
</p>
|
|
@ -62,5 +62,6 @@ the provided docker-compose file:
|
|||
|
||||
If everything goes well, you should see a `passed` message.
|
||||
|
||||
<img src="../assets/docs/contributions/testing-1.png">
|
||||

|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
[<img src="../assets/docs/deployment/cloudflare-logo.jpg" width="350">](https://www.cloudflare.com/)
|
||||
<img src="https://github.com/danny-avila/LibreChat/assets/32828263/cfbc7ca5-b51e-4f1d-aa89-b9b4cb13eead" width="350">
|
||||
|
||||
# Cloudflare
|
||||
### if you are new to Domain, here's a quick guide to use setup a domain with Cloudflare:
|
||||
|
@ -17,7 +16,7 @@
|
|||
- return to the cloudflare tab and tap on `Done, check nameservers`, then `finish later` and `Check nameservers` (this process can take about 5 minutes)
|
||||
- in the `DNS` tab select `Records` and `Add Record`
|
||||
|
||||

|
||||

|
||||
|
||||
(in the Name section, if you use @ it will use you main domain, but if you want to use a subdomain write it in the Name section)
|
||||
- For example: if you want to acces with chat.yourdomain.com just set in the Name section `chat`
|
||||
|
@ -106,11 +105,11 @@ Now that you have installed the tunnel, it's time to configure it. Follow these
|
|||
1. Proceed to the next step and select a public hostname.
|
||||
2. Follow the instructions provided in this image to configure it correctly.
|
||||
|
||||

|
||||

|
||||
|
||||
### If the tunnel dont works and show "bad gateway" put your ip instead of localhost
|
||||
**Note: If the tunnel doesn't work and shows "bad gateway", try using your ip instead of localhost**
|
||||
|
||||
## You did it! You have successfully set up a working tunnel.
|
||||
### You did it! You have successfully set up a working tunnel.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ sudo reboot
|
|||
- Make sure you have all the needed variables for the following before moving forward
|
||||
### [Get Your API keys and Tokens](../install/apis_and_tokens.md) (Required)
|
||||
- You must set up at least one of these tokens or APIs to run the app.
|
||||
### [User/Auth System](../features/user_auth_system.md) (Optional)
|
||||
### [User/Auth System](../install/user_auth_system.md) (Optional)
|
||||
- How to set up the user/auth system and Google login.
|
||||
### [Plugins](../features/plugins/introduction.md)
|
||||
- Optional plugins available to enhance the application.
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
[<img src="../assets/docs/deployment/linode-logo.jpg" width="250">](https://www.linode.com/)
|
||||
<img src="https://github.com/danny-avila/LibreChat/assets/32828263/d6e430db-518a-4779-83d3-a2d177907df1" width="250">
|
||||
|
||||
# Linode
|
||||
|
||||
|
@ -73,11 +72,13 @@ Password: changeme
|
|||
### Login to NGINX Proxy Manager.
|
||||
- Click on "Proxy Host" and add a proxy host.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
- If you want, you can add the `Let's Encrypt SSL` certificate.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -22,8 +22,9 @@ To use Ngrok for tunneling your local server to the internet, follow these steps
|
|||
7. In the `ngrok.exe` terminal, run the following command: ngrok http 3080
|
||||
|
||||
You will see a link that can be used to access LibreChat.
|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
Please note that this readme assumes some prior knowledge and familiarity with the command line, Docker, and running applications on your local machine. If you have any issues or questions, refer to the Ngrok documentation or open an issuee on our [Discord server](https://discord.gg/NGaa9RPCft)
|
||||
### Note:
|
||||
This readme assumes some prior knowledge and familiarity with the command line, Docker, and running applications on your local machine. If you have any issues or questions, refer to the Ngrok documentation or open an issue on our [Discord server](https://discord.gg/NGaa9RPCft)
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
# Azure OpenAI
|
||||
|
||||
In order to use Azure OpenAI with this project, specific environment variables must be set in your `.env` file. These variables will be used for constructing the API URLs.
|
||||
|
||||
The variables needed are outlined below:
|
||||
|
||||
## Required Variables
|
||||
|
||||
* `AZURE_API_KEY`: Your Azure OpenAI API key.
|
||||
* `AZURE_OPENAI_API_INSTANCE_NAME`: The instance name of your Azure OpenAI API.
|
||||
* `AZURE_OPENAI_API_DEPLOYMENT_NAME`: The deployment name of your Azure OpenAI API.
|
||||
* `AZURE_OPENAI_API_VERSION`: The version of your Azure OpenAI API.
|
||||
|
||||
For example, with these variables, the URL for chat completion would look something like:
|
||||
```plaintext
|
||||
https://{AZURE_OPENAI_API_INSTANCE_NAME}.openai.azure.com/openai/deployments/{AZURE_OPENAI_API_DEPLOYMENT_NAME}/chat/completions?api-version={AZURE_OPENAI_API_VERSION}
|
||||
```
|
||||
You should also consider changing the `AZURE_OPENAI_MODELS` variable to the models available in your deployment.
|
||||
|
||||
## Optional Variables
|
||||
|
||||
* `AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME`: The deployment name for completion. This is currently not in use but may be used in future.
|
||||
* `AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME`: The deployment name for embedding. This is currently not in use but may be used in future.
|
||||
|
||||
These two variables are optional but may be used in future updates of this project.
|
||||
|
||||
## Plugin Endpoint Variables
|
||||
|
||||
Note: The Plugins endpoint may not work as expected with Azure OpenAI, which may not support OpenAI Functions yet. Even when results were generated, they were not great compared to the regular OpenAI endpoint. You should set the "Functions" off in the Agent settings, and it's recommend to not skip completion with functions off.
|
||||
|
||||
To use Azure with the Plugins endpoint, there are some extra steps to take as the langchain library is particular with envrionment variables:
|
||||
|
||||
* `PLUGINS_USE_AZURE`: If set to "true" or any truthy value, this will enable the program to use Azure with the Plugins endpoint.
|
||||
* `AZURE_OPENAI_API_KEY`: Your Azure API key must be set to this environment variable, not to be confused with `AZURE_API_KEY`, which can remain as before.
|
||||
* `OPENAI_API_KEY`: Must be omitted or commented to use Azure with Plugins
|
||||
|
||||
These steps are quick workarounds as other solutions would require renaming environment variables. This is due to langchain overriding environment variables, and will have to be solved with a later solution.
|
|
@ -21,14 +21,15 @@ Then you can get the API key, click the "Get a key" button on this page: https:/
|
|||
|
||||
Click to sign in(make a Google acct if you do not have one):
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 3\. Register yourself a new account/Login to the Control Panel
|
||||
|
||||
|
||||
After logging in, you will be redirected to the Control Panel to create a new search engine:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 4\. Create a new search engine
|
||||
|
@ -36,13 +37,12 @@ After logging in, you will be redirected to the Control Panel to create a new se
|
|||
|
||||
Fill in a name, select to "Search the entire web" and hit "Create":
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 5\. Copy your Search engine ID to your .env file
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 6\. Go to [custom-search docs](https://developers.google.com/custom-search/v1/introduction) to get a Google search API key
|
||||
|
@ -50,16 +50,14 @@ Fill in a name, select to "Search the entire web" and hit "Create":
|
|||
|
||||
## 7\. Click "Get a Key":
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 8\. Name your project and agree to the Terms of Service
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## 9\. Copy your Google search API key to your .env file
|
||||
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Plugins Endpoint
|
||||
|
||||

|
||||

|
||||
|
||||
The plugins endpoint opens the door to prompting LLMs in new ways other than traditional input/output prompting.
|
||||
|
||||
|
@ -17,17 +17,17 @@ More than this, you can use this endpoint for changing your conversation setting
|
|||
|
||||
The LLM process when using Plugins is illustrated below.
|
||||
|
||||

|
||||

|
||||
|
||||
**When you open the settings with the Plugins endpoint selected, you will view the default settings for the Completion Phase.**
|
||||
|
||||
Clicking on **"Show Agent Settings"** will allow you to modify parameters for the thinking phase
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||

|
||||

|
||||
|
||||
- You can specify which plugins you would like to select from by installing/uninstalling them in the Plugin store
|
||||
- See this guide on how to create your own plugins (WIP)
|
||||
|
@ -68,8 +68,7 @@ Clicking on **"Show Agent Settings"** will allow you to modify parameters for th
|
|||
|
||||
### Showcase
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
|
|
@ -57,12 +57,13 @@ With the docker deployment you can skip step 2 and step 3, use the setup instruc
|
|||
|
||||
|
||||
### Select the plugins endpoint
|
||||

|
||||
|
||||

|
||||
|
||||
### Open the Plugin store and Install Stable Diffusion
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
|
||||
## 5. Select the plugin and enjoy!
|
||||

|
||||

|
||||
|
|
|
@ -8,14 +8,14 @@ An AppID must be supplied in all calls to the Wolfram|Alpha API.
|
|||
## 2. Go to the <a href='https://developer.wolframalpha.com/portal/myapps/'>Developer Portal</a> click on "Get an AppID".
|
||||
## 3. Configure it in LibreChat
|
||||
### Select the plugins endpoint
|
||||

|
||||

|
||||
### Open the Plugin store
|
||||

|
||||

|
||||
### Install Wolfram and Provide your AppID
|
||||

|
||||

|
||||
|
||||
- Alternatively: you (the admin) can set the value in `\.env` to bypass the prompt: `WOLFRAM_APP_ID=your_app_id`
|
||||
|
||||
## 5. Select the plugin and enjoy!
|
||||
|
||||

|
||||

|
||||
|
|
|
@ -6,7 +6,7 @@ This doc explains how to setup various tokens and APIs for the project. You will
|
|||
|
||||
To get your OpenAI API key, you need to:
|
||||
|
||||
- Go to https://platform.openai.com/account/api-keys
|
||||
- Go to [https://platform.openai.com/account/api-keys](https://platform.openai.com/account/api-keys)
|
||||
- Create an account or log in with your existing one
|
||||
- Add a payment method to your account (this is not free, sorry 😬)
|
||||
- Copy your secret key (sk-...) and save it in ./.env as OPENAI_API_KEY
|
||||
|
@ -15,9 +15,9 @@ To get your OpenAI API key, you need to:
|
|||
|
||||
To get your Access token for ChatGPT 'Free Version', you need to:
|
||||
|
||||
- Go to https://chat.openai.com
|
||||
- Go to [https://chat.openai.com](https://chat.openai.com)
|
||||
- Create an account or log in with your existing one
|
||||
- Visit https://chat.openai.com/api/auth/session
|
||||
- Visit [https://chat.openai.com/api/auth/session](https://chat.openai.com/api/auth/session)
|
||||
- Copy the value of the "accessToken" field and save it in ./.env as CHATGPT_ACCESS_TOKEN
|
||||
|
||||
Warning: There may be a chance of your account being banned if you deploy the app to multiple users with this method. Use at your own risk. 😱
|
||||
|
@ -41,35 +41,64 @@ To get your Bing Access Token, you have a few options:
|
|||
|
||||
To setup PaLM 2 (via Google Cloud Vertex AI API), you need to:
|
||||
|
||||
- Enable the Vertex AI API on Google Cloud:
|
||||
- Go to https://console.cloud.google.com/vertex-ai
|
||||
### Enable the Vertex AI API on Google Cloud:
|
||||
- Go to [https://console.cloud.google.com/vertex-ai](https://console.cloud.google.com/vertex-ai)
|
||||
- Click on "Enable API" if prompted
|
||||
- Create a Service Account:
|
||||
- Go to https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create?walkthrough_id=iam--create-service-account#step_index=1
|
||||
### Create a Service Account:
|
||||
- Go to [https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create?walkthrough_id=iam--create-service-account#step_index=1](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create?walkthrough_id=iam--create-service-account#step_index=1)
|
||||
- Select or create a project
|
||||
- Enter a service account name and description
|
||||
- Click on "Create and Continue" to give at least the "Vertex AI User" role
|
||||
- Click on "Done"
|
||||
- Create a JSON key, rename as 'auth.json' and save it in /api/data/:
|
||||
- Go back to https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts
|
||||
### Create a JSON key, rename as 'auth.json' and save it in /api/data/:
|
||||
- Go back to [https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts)
|
||||
- Select your service account
|
||||
- Click on "Keys"
|
||||
- Click on "Add Key" and then "Create new key"
|
||||
- Choose JSON as the key type and click on "Create"
|
||||
- Download the key file and rename it as 'auth.json'
|
||||
- Save it in /api/data/
|
||||
- Save it in `/api/data/`
|
||||
|
||||
##
|
||||
## Azure OpenAI
|
||||
|
||||
That's it! You're all set. 🎉
|
||||
In order to use Azure OpenAI with this project, specific environment variables must be set in your `.env` file. These variables will be used for constructing the API URLs.
|
||||
|
||||
##
|
||||
The variables needed are outlined below:
|
||||
|
||||
## Go Back to Your Install Documentation:
|
||||
- [Docker Install](docker_install.md)
|
||||
- [Linux Install](linux_install.md)
|
||||
- [Mac Install](mac_install.md)
|
||||
- [Windows Install](windows_install.md)
|
||||
### Required Variables
|
||||
|
||||
* `AZURE_API_KEY`: Your Azure OpenAI API key.
|
||||
* `AZURE_OPENAI_API_INSTANCE_NAME`: The instance name of your Azure OpenAI API.
|
||||
* `AZURE_OPENAI_API_DEPLOYMENT_NAME`: The deployment name of your Azure OpenAI API.
|
||||
* `AZURE_OPENAI_API_VERSION`: The version of your Azure OpenAI API.
|
||||
|
||||
For example, with these variables, the URL for chat completion would look something like:
|
||||
```plaintext
|
||||
https://{AZURE_OPENAI_API_INSTANCE_NAME}.openai.azure.com/openai/deployments/{AZURE_OPENAI_API_DEPLOYMENT_NAME}/chat/completions?api-version={AZURE_OPENAI_API_VERSION}
|
||||
```
|
||||
You should also consider changing the `AZURE_OPENAI_MODELS` variable to the models available in your deployment.
|
||||
|
||||
### Optional Variables
|
||||
|
||||
* `AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME`: The deployment name for completion. This is currently not in use but may be used in future.
|
||||
* `AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME`: The deployment name for embedding. This is currently not in use but may be used in future.
|
||||
|
||||
These two variables are optional but may be used in future updates of this project.
|
||||
|
||||
### Plugin Endpoint Variables
|
||||
|
||||
Note: The Plugins endpoint may not work as expected with Azure OpenAI, which may not support OpenAI Functions yet. Even when results were generated, they were not great compared to the regular OpenAI endpoint. You should set the "Functions" off in the Agent settings, and it's recommend to not skip completion with functions off.
|
||||
|
||||
To use Azure with the Plugins endpoint, there are some extra steps to take as the langchain library is particular with envrionment variables:
|
||||
|
||||
* `PLUGINS_USE_AZURE`: If set to "true" or any truthy value, this will enable the program to use Azure with the Plugins endpoint.
|
||||
* `AZURE_OPENAI_API_KEY`: Your Azure API key must be set to this environment variable, not to be confused with `AZURE_API_KEY`, which can remain as before.
|
||||
* `OPENAI_API_KEY`: Must be omitted or commented to use Azure with Plugins
|
||||
|
||||
These steps are quick workarounds as other solutions would require renaming environment variables. This is due to langchain overriding environment variables, and will have to be solved with a later solution.
|
||||
|
||||
|
||||
## That's it! You're all set. 🎉
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ Docker installation is recommended for most use cases. It's the easiest, simples
|
|||
## [Get Your API keys and Tokens](apis_and_tokens.md) (Required)
|
||||
- You must set up at least one of these tokens or APIs to run the app.
|
||||
|
||||
## [User/Auth System](../features/user_auth_system.md) (Optional)
|
||||
## [User/Auth System](../install/user_auth_system.md) (Optional)
|
||||
- How to set up the user/auth system and Google login.
|
||||
|
||||
## Update
|
||||
|
|
|
@ -65,7 +65,7 @@ sudo apt-get install -y nodejs
|
|||
## [Get Your API keys and Tokens](apis_and_tokens.md) (Required)
|
||||
- You must set up at least one of these tokens or APIs to run the app.
|
||||
|
||||
## [User/Auth System](../features/user_auth_system.md) (Optional)
|
||||
## [User/Auth System](../install/user_auth_system.md) (Optional)
|
||||
- How to set up the user/auth system and Google login.
|
||||
|
||||
## Run the project
|
||||
|
|
|
@ -33,7 +33,7 @@ Follow the instructions for setting up proxies, access tokens, and user system:
|
|||
## [Get Your API keys and Tokens](apis_and_tokens.md) (Required)
|
||||
- You must set up at least one of these tokens or APIs to run the app.
|
||||
|
||||
## [User/Auth System](../features/user_auth_system.md) (Optional)
|
||||
## [User/Auth System](../install/user_auth_system.md) (Optional)
|
||||
- How to set up the user/auth system and Google login.
|
||||
|
||||
## Setup Instruction
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
### [Get Your API keys and Tokens](apis_and_tokens.md) (Required)
|
||||
- You must set up at least one of these tokens or APIs to run the app.
|
||||
|
||||
### [User/Auth System](../features/user_auth_system.md) (Optional)
|
||||
### [User/Auth System](../install/user_auth_system.md) (Optional)
|
||||
- How to set up the user/auth system and Google login.
|
||||
|
||||
## Setup and Run the app
|
||||
|
|
|
@ -86,8 +86,8 @@ nav:
|
|||
- Mac Install: 'install/mac_install.md'
|
||||
- Windows Install: 'install/windows_install.md'
|
||||
- APIs and Tokens: 'install/apis_and_tokens.md'
|
||||
- User Auth System: 'install/user_auth_system.md'
|
||||
- Features:
|
||||
- User Auth System: 'features/user_auth_system.md'
|
||||
- Plugins:
|
||||
- Introduction: 'features/plugins/introduction.md'
|
||||
- Google: 'features/plugins/google_search.md'
|
||||
|
|