Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/.gitbook/assets/C coming soon (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/C coming soon dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/C coming soon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Dart_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions docs/.gitbook/assets/Frame 109.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 28 additions & 0 deletions docs/.gitbook/assets/Frame 23.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions docs/.gitbook/assets/Frame 51355.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Java coming soon dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Java coming soon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Untitled (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Untitled (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Untitled (3).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/Untitled.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 44 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,53 @@ cover:
dark: .gitbook/assets/Dark (1).svg
coverY: -273.37781484570473
coverHeight: 333
layout:
width: default
cover:
visible: true
size: full
title:
visible: true
description:
visible: true
tableOfContents:
visible: true
outline:
visible: false
pagination:
visible: true
metadata:
visible: true
tags:
visible: true
actions:
visible: true
---

# Welcome

### New to Atsign?
### Atsign Documentation

Start exploring by choosing a topic below or browse the Table of Contents.
Welcome to the Atsign documentation. Here you’ll find everything you need to understand the Atsign Platform, explore its core technologies, and start building secure, private applications and workflows. Choose a topic below to begin.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-cover-dark data-type="image">Cover image (dark)</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>AI Architect Walkthrough</strong></td><td><sup>This tutorial guides you through creating, loading, and exporting an app blueprint using AI Architect, then using that blueprint to generate and run an atPlatform app in your IDE.</sup></td><td><a href=".gitbook/assets/atArchitect.svg">atArchitect.svg</a></td><td><a href=".gitbook/assets/Hero - atarchitect - dark.svg">Hero - atarchitect - dark.svg</a></td><td><a href="https://docs.atsign.com/tutorials/ai-architect-walkthrough">https://docs.atsign.com/tutorials/ai-architect-walkthrough</a></td></tr><tr><td><strong>Core Technology</strong></td><td><sub>High-level tour of the atPlatform: how Atsigns, the atPlatform Protocol, and atServers work together.</sub></td><td><a href=".gitbook/assets/Core Technology.svg">Core Technology.svg</a></td><td><a href=".gitbook/assets/Core Technology-dark.svg">Core Technology-dark.svg</a></td><td><a href="https://docs.atsign.com/~/revisions/kPoFwMVlM1fLY2MMGYLD/core">https://docs.atsign.com/~/revisions/kPoFwMVlM1fLY2MMGYLD/core</a></td></tr><tr><td><strong>atSDKs</strong></td><td><sub>A practical introduction to the atSDK. Everything you need to build, authenticate, and exchange data across apps, devices, and environments.</sub></td><td><a href=".gitbook/assets/atSDK.svg">atSDK.svg</a></td><td><a href=".gitbook/assets/atSDK-dark.svg">atSDK-dark.svg</a></td><td><a href="https://docs.atsign.com/~/revisions/kPoFwMVlM1fLY2MMGYLD/sdk">https://docs.atsign.com/~/revisions/kPoFwMVlM1fLY2MMGYLD/sdk</a></td></tr><tr><td><strong>NoPorts</strong><sup><strong>TM</strong></sup></td><td><sub>See how NoPorts applies the atPlatform to deliver secure, zero-trust connectivity without open ports or VPNs.</sub></td><td><a href=".gitbook/assets/NoPorts.svg">NoPorts.svg</a></td><td><a href=".gitbook/assets/NoPorts-dark.svg">NoPorts-dark.svg</a></td><td><a href="https://www.noports.com/">https://www.noports.com/</a></td></tr><tr><td><strong>GitHub ↗</strong></td><td><sup>See how the atPlatform is built and join the development on our GitHub.</sup></td><td><a href=".gitbook/assets/GitHub.svg">GitHub.svg</a></td><td><a href=".gitbook/assets/GitHub-dark.svg">GitHub-dark.svg</a></td><td><a href="https://github.com/atsign-foundation">https://github.com/atsign-foundation</a></td></tr><tr><td><strong>atsign.com ↗</strong></td><td><sup>Learn more about the technology behind secure, private communications between people, entity, and things.</sup></td><td><a href=".gitbook/assets/atsign.svg">atsign.svg</a></td><td><a href=".gitbook/assets/atsign-dark.svg">atsign-dark.svg</a></td><td><a href="https://atsign.com/">https://atsign.com/</a></td></tr></tbody></table>
<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-cover-dark data-type="image">Cover image (dark)</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>AI Architect</strong><sup><strong>TM</strong></sup></td><td><sup>Explore how to visually map out secure apps and workflows and export LLM prompts that generate apps on Atsign Platform<strong>.</strong></sup></td><td><a href=".gitbook/assets/atArchitect.svg">atArchitect.svg</a></td><td><a href=".gitbook/assets/Hero - atarchitect - dark.svg">Hero - atarchitect - dark.svg</a></td><td><a href="atsign-ai-architect/atsign-ai-architect-overview/">atsign-ai-architect-overview</a></td></tr><tr><td><strong>Core Technology</strong></td><td><sub>High-level tour of Atsign Platform: how Atsigns, the Atsign Protocol, and atServers work together.</sub></td><td><a href=".gitbook/assets/Core Technology.svg">Core Technology.svg</a></td><td><a href=".gitbook/assets/Core Technology-dark.svg">Core Technology-dark.svg</a></td><td><a href="atsign-platform/core/">core</a></td></tr><tr><td><strong>atSDK</strong></td><td><sub>A practical introduction to the atSDK. Everything you need to build, authenticate, and exchange data across apps, devices, and environments.</sub></td><td><a href=".gitbook/assets/atSDK.svg">atSDK.svg</a></td><td><a href=".gitbook/assets/atSDK-dark.svg">atSDK-dark.svg</a></td><td><a href="atsdk/sdk/">sdk</a></td></tr><tr><td><strong>NoPorts </strong><sup><strong>TM</strong></sup><strong> ↗</strong></td><td><sub>See how NoPorts applies Atsign Platform to deliver secure, zero-trust connectivity without open ports or VPNs.</sub></td><td><a href=".gitbook/assets/NoPorts.svg">NoPorts.svg</a></td><td><a href=".gitbook/assets/NoPorts-dark.svg">NoPorts-dark.svg</a></td><td><a href="https://docs.noports.com/">https://docs.noports.com/</a></td></tr><tr><td><strong>GitHub ↗</strong></td><td><sup>See how Atsign Platform is built and join the development on our GitHub.</sup></td><td><a href=".gitbook/assets/GitHub.svg">GitHub.svg</a></td><td><a href=".gitbook/assets/GitHub-dark.svg">GitHub-dark.svg</a></td><td><a href="https://github.com/atsign-foundation">https://github.com/atsign-foundation</a></td></tr><tr><td><strong>atsign.com ↗</strong></td><td><sup>Learn more about the technology behind secure, private communications between people, entity, and things.</sup></td><td><a href=".gitbook/assets/atsign.svg">atsign.svg</a></td><td><a href=".gitbook/assets/atsign-dark.svg">atsign-dark.svg</a></td><td><a href="https://atsign.com/">https://atsign.com/</a></td></tr></tbody></table>

### Need Help?

<details>

<summary>via Email</summary>

Send us an email: [support.team@atsign.com](mailto:support.team@atsign.com)

Monday - Friday, 6am - 6pm (PT)

</details>

<details>

<summary>via Discord</summary>

[Join our Discord](https://discord.gg/atsign-778383211214536722) for technical support. Our team and community are here to help!

</details>
64 changes: 38 additions & 26 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,44 @@
# Table of contents

* [Welcome](README.md)
* [atPlatform](learn/core/README.md)
* [Atsign](learn/core/atsign.md)
* [atRecord](learn/core/atrecord.md)
* [atSDK](learn/sdk/README.md)
* [Get Started](sdk/get-started.md)
* [Authentication](learn/sdk/onboarding.md)
* [atKey Reference](learn/sdk/atid-reference.md)
* [CRUD Operations](learn/sdk/crud-operations.md)
* [Notifications](learn/sdk/events.md)
* [Additional Features](sdk/synchronization/README.md)
* [Synchronization](sdk/synchronization/synchronization.md)
* [Connection Hooks](sdk/synchronization/connection-hooks.md)
* [Infrastructure](infrastructure.md)

## Tutorials

* [Dart atSDK Walkthrough](tutorials/atsdk-tutorial/README.md)
* [Using the atSDK with Dart](tutorials/atsdk-tutorial/using-the-atsdk-with-dart.md)
* [Get sample code](tutorials/atsdk-tutorial/get-sample-code.md)
* [Cutting your Atsign keys](tutorials/atsdk-tutorial/cutting-your-atsigns-keys.md)
* [Put and Get data asynchronously](tutorials/atsdk-tutorial/put-and-get-data-asynchronously.md)
* [Send and Receive data synchronously](tutorials/atsdk-tutorial/send-and-receive-data-synchronously.md)
* [Remote Procedure Calls (RPC)](tutorials/atsdk-tutorial/rpc.md)
* [atTalk - Encrypted chat client](tutorials/atsdk-tutorial/attalk.md)
* [AI Architect Walkthrough](tutorials/ai-architect-walkthrough/README.md)
* [Nodes and Connections](tutorials/ai-architect-walkthrough/nodes-and-connections.md)

## Atsign Platform

* [Atsign Platform Overview](atsign-platform/core/README.md)
* [Frequently Asked Questions](atsign-platform/core/frequently-asked-questions.md)
* [Atsign](atsign-platform/atsign.md)
* [atRecord](atsign-platform/atrecord.md)
* [Infrastructure](atsign-platform/infrastructure.md)

## atSDK

* [atSDK Overview](atsdk/sdk/README.md)
* [Get Started](atsdk/sdk/get-started.md)
* [Authentication](atsdk/sdk/onboarding.md)
* [atKey Reference](atsdk/sdk/atid-reference.md)
* [CRUD Operations](atsdk/sdk/crud-operations.md)
* [Notifications](atsdk/sdk/events.md)
* [Additional Features](atsdk/sdk/synchronization/README.md)
* [Synchronization](atsdk/sdk/synchronization/synchronization.md)
* [Connection Hooks](atsdk/sdk/synchronization/connection-hooks.md)
* [atSDK Walkthroughs](atsdk/atsdk-walkthroughs/README.md)
* [Dart atSDK Walkthrough](atsdk/atsdk-walkthroughs/atsdk-tutorial/README.md)
* [Using the atSDK with Dart](atsdk/atsdk-walkthroughs/atsdk-tutorial/using-the-atsdk-with-dart.md)
* [Get sample code](atsdk/atsdk-walkthroughs/atsdk-tutorial/get-sample-code.md)
* [Cutting your Atsign keys](atsdk/atsdk-walkthroughs/atsdk-tutorial/cutting-your-atsigns-keys.md)
* [Put and Get data asynchronously](atsdk/atsdk-walkthroughs/atsdk-tutorial/put-and-get-data-asynchronously.md)
* [Send and Receive data synchronously](atsdk/atsdk-walkthroughs/atsdk-tutorial/send-and-receive-data-synchronously.md)
* [Remote Procedure Calls (RPC)](atsdk/atsdk-walkthroughs/atsdk-tutorial/rpc.md)
* [atTalk - Encrypted chat client](atsdk/atsdk-walkthroughs/atsdk-tutorial/attalk.md)

## Atsign AI Architect

* [Atsign AI Architect Overview](atsign-ai-architect/atsign-ai-architect-overview/README.md)
* [Nodes and Connections](atsign-ai-architect/atsign-ai-architect-overview/nodes-and-connections.md)
* [AI Architect Walkthroughs](atsign-ai-architect/ai-architect-walkthroughs/README.md)
* [Getting Started with AI Architect](atsign-ai-architect/ai-architect-walkthroughs/getting-started-with-ai-architect.md)
* [How to Think When Creating a Blueprint](atsign-ai-architect/ai-architect-walkthroughs/how-to-think-when-creating-a-blueprint.md)
* [Release Notes](atsign-ai-architect/release-notes.md)

## Important links

Expand Down
10 changes: 10 additions & 0 deletions docs/atsdk/atsdk-walkthroughs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
icon: readme
---

# atSDK Walkthroughs

Explore walkthroughs for building on Atsign Platform across multiple languages. Start with the guide available today, and check back as we expand support for additional languages.

<table data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-type="image">Cover image (dark)</th><th data-hidden data-card-cover-dark data-type="image">Cover image (dark)</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Dart atSDK Walkthrough</strong></td><td data-object-fit="contain"><a href="../../.gitbook/assets/Dart_logo.png">Dart_logo.png</a></td><td></td><td></td><td><a href="atsdk-tutorial/">atsdk-tutorial</a></td></tr><tr><td><strong>C atSDK Walkthrough</strong><br>Coming Soon</td><td><a href="../../.gitbook/assets/C coming soon (1).png">C coming soon (1).png</a></td><td><a href="../../.gitbook/assets/C coming soon dark.png">C coming soon dark.png</a></td><td><a href="../../.gitbook/assets/C coming soon dark.png">C coming soon dark.png</a></td><td></td></tr><tr><td><strong>Java atSDK Walkthrough</strong><br>Coming Soon</td><td><a href="../../.gitbook/assets/Java coming soon.png">Java coming soon.png</a></td><td></td><td><a href="../../.gitbook/assets/Java coming soon dark.png">Java coming soon dark.png</a></td><td></td></tr></tbody></table>

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This code is in a separate repo, so, once again, in VS Code click the "Clone Git
https://github.com/atsign-foundation/at_talk.git
```

<figure><img src="../../.gitbook/assets/VScode Git.png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/VScode Git.png" alt=""><figcaption></figcaption></figure>

Like before, you will get asked if you want to run `pub get` and should say yes, or, if you prefer, you can open a terminal window and type:

Expand Down Expand Up @@ -54,7 +54,7 @@ In the right window, the same, but in reverse.

In this session, you can see the typed messages in white and the received messages in green with the prompts in red.&#x20;

<figure><img src="../../.gitbook/assets/at_talk.png" alt=""><figcaption><p>talking atSigns</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/at_talk.png" alt=""><figcaption><p>talking atSigns</p></figcaption></figure>

Unlike Linux talk, however, these two Atsigns can be anywhere on the Internet and communicating with Privacy. Get a friend to run through the demo and use at\_talk !

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: It takes two to tango!

To complete this tutorial, you need at least two Atsigns to send and receive data. You can purchase Atsigns at the [Atsign Registrar](http://my.atsign.com/go).&#x20;

Once you have your Atsigns, you are ready to activate them, which means spinning up one atServer per Atsign and cutting your cryptographic keys for each Atsign. Sounds complicated, but it is easy! In fact, just a single command. In the terminal window type:
Once you have your Atsigns, you are ready to activate them, which means spinning up one atServer per Atsign and cutting your cryptographic keys for each Atsign. Sounds complicated, but it is easy! In fact, it's just a single command. In the terminal window type:

```
dart run .\bin\at_activate.dart
Expand All @@ -22,4 +22,4 @@ dart run .\bin\at_activate.dart -a "@crunchyfrog"

These keys are important to be kept safe, as they are the only keys to your Atsign and your data. Speaking of data, let's send some between the two Atsigns next.

<figure><img src="../../.gitbook/assets/image (19).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (19).png" alt=""><figcaption></figcaption></figure>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Open Source on GitHub

The atPlaform and atSDKs are open source. You can find the source code on GitHub and downloaded from [Atsign Foundation](https://github.com/atsign-foundation). This tutorial starts with sample code to demonstrate how to share data and send notifications between Atsigns. These are the basic building blocks for powerful open-source applications like [NoPorts](https://www.noports.com/), which you can use as a reference to see the code in action.
Atsign Platform and atSDKs are open source. You can find the source code on GitHub and downloaded from [Atsign Foundation](https://github.com/atsign-foundation). This tutorial starts with sample code to demonstrate how to share data and send notifications between Atsigns. These are the basic building blocks for powerful open-source applications like [NoPorts](https://www.noports.com/), which you can use as a reference to see the code in action.

## Clone the demo repo

Expand All @@ -14,15 +14,15 @@ https://github.com/atsign-foundation/at_demos.git

This will copy down all the sample code from GitHub to the directory you select. VS Code will ask you if you want to open the directory you just downloaded and say no. We will pick the one directory we need in the next step.

<figure><img src="../../.gitbook/assets/VScode Git.png" alt=""><figcaption><p>Clone code from GitHub</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/VScode Git.png" alt=""><figcaption><p>Clone code from GitHub</p></figcaption></figure>

## Open at\_getting\_started

Click the Open Folder selection and go to the directory you selected and then at\_demos then finally select the at\_getting\_started directory, then click "select folder". You might get a pop up asking if you trust the authors and if you trust us say yes!

At this point you will have the demo code in the IDE and probably see a bunch of red files, meaning something is wrong with them.&#x20;

<figure><img src="../../.gitbook/assets/dart pub get.png" alt=""><figcaption><p>dart pub get</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/dart pub get.png" alt=""><figcaption><p>dart pub get</p></figcaption></figure>

VS Code if you have the Dart plugin installed will ask if you want to run `pub get` you can safely say yes.

Expand All @@ -38,4 +38,4 @@ dart pub update

Once you have run those commands in the terminal window all the red text will have gone and we are ready to run some code.

<figure><img src="../../.gitbook/assets/dart update.png" alt=""><figcaption><p>Ready to run.</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/dart update.png" alt=""><figcaption><p>Ready to run.</p></figcaption></figure>
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Invalid argument(s): Option other-atsign is mandatory.

The `-n`namespace is lefthand side of the atRecord, so in this case the full atRecord would be `@7capricorn:message.atsign@energetic22` and you see this in the results, too. Experiment for yourself!

<figure><img src="../../.gitbook/assets/image (20).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (20).png" alt=""><figcaption></figcaption></figure>

You may also notice that the first time you fail to get the message. This is because we specified in the metadata that the TTL is 60000 millisecond or 1 minute. Try again as you see in the above image and you should get your message too.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ You will get a prompt after a second or two and you can put in a math expression

See our session in action:

<figure><img src="../../.gitbook/assets/RPC.png" alt=""><figcaption><p>RPC</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/RPC.png" alt=""><figcaption><p>RPC</p></figcaption></figure>

Something to notice here is that the RPC server will only respond to RPCs from the designated Atsign with the `--allow-list` argument.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ There are two examples in the repo `at_notify_receive.dart` and `at_notify_send.

To test for yourself, you will need two terminal windows. To do that, you can press the split button on the VS Code IDE.

<figure><img src="../../.gitbook/assets/terminal (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/terminal (1).png" alt=""><figcaption></figcaption></figure>

You can then run the following commands again note to replace the Atsigns with your own.

Expand All @@ -47,7 +47,7 @@ dart run .\bin\at_notify_send.dart -a "@7capricorn" -n "atsign" -o "@energetic22

The net result should look like this, and your message should appear in the right-hand side.&#x20;

<figure><img src="../../.gitbook/assets/dual.png" alt=""><figcaption><p>Message received.</p></figcaption></figure>
<figure><img src="../../../.gitbook/assets/dual.png" alt=""><figcaption><p>Message received.</p></figcaption></figure>

You can try sending different messages and make sure they arrive, you can also put Dart on another machine and talk from machine to machine without setting up any other infrastructure.&#x20;

Expand Down
Loading
Loading