├── .babelrc
├── .coveralls.yml
├── .dockerignore
├── .eslintignore
├── .eslintrc
├── .github
├── ISSUE_TEMPLATE.md
└── PULL_REQUEST_TEMPLATE.md
├── .gitignore
├── .prettierrc
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── OWNERS
├── README.md
├── config
├── theme.json
└── theme.json.template
├── docs
└── socket-types.md
├── example
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon-96x96.png
├── favicon.ico
├── index.html
└── stockphoto-01.jpg
├── package-lock.json
├── package.json
├── src
├── components
│ ├── App
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── functions.js
│ │ ├── functions.test.js
│ │ ├── index.js
│ │ ├── index.test.js
│ │ ├── storage.js
│ │ └── styles.css
│ ├── Chat
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── styles.css
│ ├── ClosedState
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── chaticon.svg
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── styles.css
│ ├── Header
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── style.css
│ ├── Input
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── styles.css
│ ├── Message
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── styles.css
│ ├── Notification
│ │ ├── __snapshots__
│ │ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── style.css
│ ├── Skeleton
│ │ ├── index.js
│ │ └── styles.css
│ └── ThemeProvider
│ │ ├── __snapshots__
│ │ └── index.test.js.snap
│ │ ├── index.js
│ │ ├── index.test.js
│ │ └── styles.css
└── index.js
├── test
├── client.load.yaml
└── setup.js
└── webpack.config.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "sourceMaps": true,
3 | "presets": [
4 | "@babel/preset-env"
5 | ],
6 | "plugins": [
7 | ["@babel/plugin-proposal-class-properties"],
8 | ["@babel/plugin-transform-react-jsx", { "pragma": "h" }]
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/.coveralls.yml:
--------------------------------------------------------------------------------
1 | service_name: travis-ci
2 | repo_token: nv9jFmvkNbGa5rdrXCWpGKlgdcOZXaXFL
3 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .git
3 | .github
4 | docs
5 | example
6 | .cmds
7 | *.swp
8 | *.swo
9 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | **/*.test.js
2 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": [
4 | "airbnb",
5 | "prettier"
6 | ],
7 | "env": {
8 | "browser": true,
9 | "node": true,
10 | "jest": true
11 | },
12 | "settings": {
13 | "react": {
14 | "pragma": "h"
15 | }
16 | },
17 | "rules": {
18 | "arrow-body-style": ["error", "as-needed"],
19 | "class-methods-use-this": ["warn"],
20 | "space-before-function-paren": ["error", "always"],
21 | "prefer-const": ["warn"],
22 | "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
23 | "no-unused-vars": ["warn"],
24 | "no-console": ["warn"],
25 | "no-prototype-builtins": ["off"],
26 | "no-multiple-empty-lines": ["off"],
27 | "no-use-before-define": ["warn"],
28 | "react/react-in-jsx-scope": 0,
29 | "react/no-multi-comp": ["warn"],
30 | "react/prefer-stateless-function": ["warn"],
31 | "react/no-array-index-key": ["warn"],
32 | "jsx-a11y/no-static-element-interactions": ["warn"],
33 | "import/extensions": ["warn", "always", {
34 | js: "never",
35 | mjs: "never",
36 | }],
37 |
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
10 |
11 | - `node` version:
12 | - `npm` (or `yarn`) version:
13 |
14 | Relevant code or config
15 |
16 | ```javascript
17 |
18 | ```
19 |
20 | What you did:
21 |
22 |
23 |
24 | What happened:
25 |
26 |
27 |
28 | Reproduction repository:
29 |
30 |
34 |
35 | Problem description:
36 |
37 |
38 |
39 | Suggested solution:
40 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 | ## Description
19 |
20 |
21 | ### Motivation
22 |
23 |
24 | ### Changes
25 |
26 | -
27 | -
28 |
29 |
30 |
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | .DS_Store
6 |
7 | # Runtime data
8 | pids
9 | *.pid
10 | *.seed
11 | yarn.lock
12 |
13 | # Directory for instrumented libs generated by jscoverage/JSCover
14 | lib-cov
15 |
16 | # Coverage directory used by tools like istanbul
17 | coverage
18 |
19 | # nyc test coverage
20 | .nyc_output
21 |
22 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
23 | .grunt
24 |
25 | # node-waf configuration
26 | .lock-wscript
27 |
28 | # Compiled binary addons (http://nodejs.org/api/addons.html)
29 | build/Release
30 | build
31 | dist
32 |
33 | # Dependency directories
34 | node_modules
35 | jspm_packages
36 |
37 | # Optional npm cache directory
38 | .npm
39 |
40 | # Optional REPL history
41 | .node_repl_history
42 |
43 |
44 | # webpack output
45 | dist
46 |
47 | *.swo
48 | *.swp
49 |
50 | /node_modules
51 | /npm-debug.log
52 | /build
53 | .DS_Store
54 | /coverage
55 | /.idea
56 | yarn.lock
57 | /.vscode
58 | *.swp
59 | *.swo
60 | /dist/*.js
61 | /dist/*.js.map
62 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
4 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 8
4 | before_script:
5 | - npm run lint
6 | script: make
7 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Minimal Chat Community Code of Conduct
2 |
3 | ## Contributor Code of Conduct
4 |
5 | ### Our Pledge
6 |
7 | In the interest of fostering an open and welcoming environment, we as
8 | contributors and maintainers pledge to making participation in our project and
9 | our community a harassment-free experience for everyone, regardless of age, body
10 | size, disability, ethnicity, gender identity and expression, level of experience,
11 | nationality, personal appearance, race, religion, or sexual identity and
12 | orientation.
13 |
14 | ### Our Standards
15 |
16 | Examples of behavior that contributes to creating a positive environment
17 | include:
18 |
19 | * Using welcoming and inclusive language
20 | * Being respectful of differing viewpoints and experiences
21 | * Gracefully accepting constructive criticism
22 | * Focusing on what is best for the community
23 | * Showing empathy towards other community members
24 |
25 | Examples of unacceptable behavior by participants include:
26 |
27 | * The use of sexualized language or imagery and unwelcome sexual attention or
28 | advances
29 | * Trolling, insulting/derogatory comments, and personal or political attacks
30 | * Public or private harassment
31 | * Publishing others' private information, such as a physical or electronic
32 | address, without explicit permission
33 | * Other conduct which could reasonably be considered inappropriate in a
34 | professional setting
35 |
36 | ### Our Responsibilities
37 |
38 | Project maintainers are responsible for clarifying the standards of acceptable
39 | behavior and are expected to take appropriate and fair corrective action in
40 | response to any instances of unacceptable behavior.
41 |
42 | Project maintainers have the right and responsibility to remove, edit, or
43 | reject comments, commits, code, wiki edits, issues, and other contributions
44 | that are not aligned to this Code of Conduct, or to ban temporarily or
45 | permanently any contributor for other behaviors that they deem inappropriate,
46 | threatening, offensive, or harmful.
47 |
48 | ### Scope
49 |
50 | This Code of Conduct applies both within project spaces and in public spaces
51 | when an individual is representing the project or its community. Examples of
52 | representing a project or community include using an official project e-mail
53 | address, posting via an official social media account, or acting as an appointed
54 | representative at an online or offline event. Representation of a project may be
55 | further defined and clarified by project maintainers.
56 |
57 | ### Enforcement
58 |
59 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
60 | reported by contacting the project team at contact@minimal.chat. All
61 | complaints will be reviewed and investigated and will result in a response that
62 | is deemed necessary and appropriate to the circumstances. The project team is
63 | obligated to maintain confidentiality with regard to the reporter of an incident.
64 | Further details of specific enforcement policies may be posted separately.
65 |
66 | Project maintainers who do not follow or enforce the Code of Conduct in good
67 | faith may face temporary or permanent repercussions as determined by other
68 | members of the project's leadership.
69 |
70 | ### Attribution
71 |
72 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
73 | available at [http://contributor-covenant.org/version/1/4][version]
74 |
75 | [homepage]: http://contributor-covenant.org
76 | [version]: http://contributor-covenant.org/version/1/4/
77 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing guidelines
2 |
3 | ## How to become a contributor and submit your own code
4 |
5 | ### Contributing A Patch
6 |
7 | 1. Submit an issue describing your proposed change to the repo in question.
8 | 1. The [repo owners](OWNERS) will respond to your issue promptly.
9 | 1. If instructed by the repo owners provide a short design document in a PR.
10 | 1. Fork the desired repo, develop and test your code changes. Unit tests are required for most PRs.
11 | 1. Submit a pull request.
12 |
13 | ## Bug reporting
14 |
15 | If you think you found a bug, please open a [new issue](https://github.com/minimalchat/client/issues/new)
16 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:11
2 |
3 | RUN mkdir -p /tmp
4 | WORKDIR /tmp/client
5 |
6 | ## Run these together otherwise we have to remember to run it with --no-cache
7 | # occasionally
8 | RUN apt update && \
9 | apt install -y git build-essential
10 |
11 |
12 | RUN apt autoremove -y
13 |
14 | # RUN git clone https://github.com/minimalchat/client.git /tmp/client
15 | COPY . .
16 |
17 | ENV REMOTE_HOST "localhost:8000"
18 |
19 | # ENV DIGITAL_OCEAN_SPACES_KEY
20 | # ENV CLIENT_KEY
21 |
22 |
23 | # TODO: Is this the best way to go about supplying the theme details?
24 | # ENV CLIENT_THEME_PRIMARY_COLOUR
25 |
26 | # Build the scripts
27 | RUN make dependencies
28 |
29 | CMD ["make", "compile"]
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2016, Matthew Mihok
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 |
6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 |
8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9 |
10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11 |
12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # Commands
2 | NPM_CMD ?= npm
3 |
4 | .PHONY: coverage test
5 |
6 | default: test lint coverage compile
7 |
8 | run: test format lint coverage compile start
9 |
10 | load:
11 | $(NPM_CMD) run load
12 |
13 | lint:
14 | $(NPM_CMD) run lint
15 |
16 | format:
17 | $(NPM_CMD) run format
18 |
19 | compile:
20 | mkdir -p dist
21 | $(NPM_CMD) run build:production
22 |
23 | coverage:
24 | $(NPM_CMD) run coverage
25 |
26 | test:
27 | $(NPM_CMD) test
28 |
29 | dependencies:
30 | $(NPM_CMD) install
31 |
32 | start:
33 | $(NPM_CMD) start
34 |
--------------------------------------------------------------------------------
/OWNERS:
--------------------------------------------------------------------------------
1 | mihok
2 | teesloane
3 | broneks
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Minimal Chat client script
2 |
3 | [](https://travis-ci.org/minimalchat/client)
4 | [](https://coveralls.io/github/minimalchat/client?branch=master)
5 |
6 | ---
7 |
8 | Minimal Chat is an open source live chat system providing live one on one messaging to a website visitor and an operator.
9 |
10 | Minimal Chat is:
11 | - **minimal**: simple, lightweight, accessible
12 | - **extensible**: modular, pluggable, hookable, composable
13 |
14 | We're glad you're interested in contributing, feel free to create an [issue](https://github.com/minimalchat/client/issues/new) or pick one up but first check out our [contributing doc](https://github.com/minimalchat/client/blob/master/CONTRIBUTING.md) and [code of conduct](https://github.com/minimalchat/client/blob/master/CODE_OF_CONDUCT.md). Check out our [design documentation](https://github.com/minimalchat/client/wiki/Design-Documentation) as well.
15 |
16 | Screenshot
17 | ---
18 | 
19 |
20 |
21 |
22 | ---
23 |
24 | The client script is embedded into a html page just before the `
66 |
67 | Star Wars — Classic Collection
68 | A New Hope
69 | Your friend is quite a mercenary. I wonder if he really cares about anything...or anyone. I care! So...what do you think of her, Han? I'm trying not to, kid! Good... Still, she's got a lot of spirit. I don't know, what do you think? Do you think a princess and a guy like me... No!
70 | I can't abide these Jawas. Disgusting creatures. Go on, go on. I can't understand how we got by those troopers. I thought we were dead. The Force can have a strong influence on the weak-minded. You will find it a powerful ally. Do you really think we're going to find a pilot here that'll take us to Alderaan? Well, most of the best freighter pilots can be found here. Only watch your step. This place can be a little rough. I'm ready for anything. Come along, Artoo.
71 | They've coming in! Three marks at two ten. I'll take them myself! Cover me! Yes, sir. I can't maneuver! Stay on target. We're too close. Stay on target! Loosen up! Gold Five to Red Leader... Lost Tiree, lost Dutch. I copy, Gold Five. They came from behind.... We've analyzed their attack, sir, and there is a danger. Should I have your ship standing by? Evacuate? In out moment of triumph? I think you overestimate their chances! Rebel base, three minutes and closing. Red Group, this is Red Leader.
72 | What? Yahoo! Look out! You're all clear, kid. Now let's blow this thing and go home! Stand by to fire at Rebel base. Standing by. Great shot, kid. That was one in a million. Remember, the Force will be with you...always.
73 | Help me, Obi-Wan Kenobi. You're my only hope. What's this? What is what?!? He asked you a question... What is that? Help me, Obi-Wan Kenobi. You're my only hope. Help me, Obi-Wan Kenobi. You're my only hope. Oh, he says it's nothing, sir. Merely a malfunction. Old data. Pay it no mind. Who is she? She's beautiful. I'm afraid I'm not quite sure, sir. Help me, Obi-Wan Kenobi... I think she was a passenger on our last voyage. A person of some importance, sir -- I believe. Our captain was attached to... Is there more to this recording? Behave yourself, Artoo. You're going to get us in trouble. It's all right, you can trust him. He's our new master.
74 | What is it? I'm afraid I'm not quite sure, sir. He says I found her, and keeps repeating, She's here. Well, who...who has he found? Princess Leia. The princess? She's here? Princess? What's going on? Level five. Detention block A A-twenty-three. I'm afraid she's scheduled to be terminated. Oh, no! We've got to do something. What are you talking about? The droid belongs to her. She's the one in the message.. We've got to help her. Now, look, don't get any funny ideas. The old man wants us to wait right here. But he didn't know she was here. Look, will you just find a way back into the detention block?
75 | Let him go! Stay on the leader! Hurry, Luke, they're coming in much faster this time. I can't hold them! Artoo, try and increase the power! Hurry up, Luke! Wait! I'm on the leader. Hang on, Artoo! Use the Force, Luke. Let go, Luke. The Force is strong with this one! Luke, trust me. His computer's off. Luke, you switched off your targeting computer. What's wrong? Nothing. I'm all right. I've lost Artoo! You may fire when ready. I have you now.
76 | The battle station is heavily shielded and carries a firepower greater than half the star fleet. It's defenses are designed around a direct large-scale assault. A small one-man fighter should be able to penetrate the outer defense. Pardon me for asking, sir, but what good are snub fighters going to be against that? Well, the Empire doesn't consider a small one-man fighter to be any threat, or they'd have a tighter defense. An analysis of the plans provided by Princess Leia has demonstrated a weakness in the battle station.
77 | To your stations! Come with me. Close all outboard shields! Close all outboard shields! Yes. We've captured a freighter entering the remains of the Alderaan system. It's markings match those of a ship that blasted its way out of Mos Eisley. They must be trying to return the stolen plans to the princess. She may yet be of some use to us. Unlock one-five-seven and nine. Release charges. There's no one on board, sir. According to the log, the crew abandoned ship right after takeoff. It must be a decoy, sir. Several of the escape pods have been jettisoned.
78 | Chewie! Get behind me! Get behind me! Can't get out that way. Looks like you managed to cut off our only escape route. Maybe you'd like it back in your cell, Your Highness. See-Threepio! See-Threepio! Yes sir? We've been cut off! Are there any other ways out of the cell bay?...What was that? I didn't copy! I said, all systems have been alerted to your presence, sir. The main entrance seems to be the only way in or out, all other information on your level is restricted.
79 | The Empire Strikes Back
80 | Well done. Hold them in the security tower - and keep it quiet. Move. What do you think you're doing? We're getting out of here. I knew all along it had to be a mistake. Do you think that after what you did to Han we're going to trust you? I had no choice... What are you doing? Trust him, trust him! Oh, so we understand, don't we, Chewie? He had no choice. I'm just trying to help... We don't need any of your help. H-a-a-a... What? It sounds like Han. There's still a chance to save Han...I mean, at the East Platform... Chewie. I'm terribly sorry about all this. After all, he's only a Wookiee.
81 | You said you wanted to be around when I made a mistake. well, this could be it, sweetheart. I take it back. We're going to get pulverized if we stay out here much longer. I'm not going to argue with that. Pulverized? I'm going in closer to one of the big ones. Closer? Closer?! h, this is suicide! There. That looks pretty good. What looks pretty good? Yeah. That'll do nicely. Excuse me, ma'am, but where are we going? I hope you know what you're doing. Yeah, me too.
82 | I can't abide these Jawas. Disgusting creatures.
83 | This ground sure feels strange. It doesn't feel like rock at all. There's an awful lot of moisture in here. I don't know. I have a bad feeling about this. Yeah. Watch out! Yeah, that's what I thought. Mynock. Chewie, check the rest of the ship, make sure there aren't any more attached. They're chewing on the power cables. Mynocks? Go on inside. We'll clean them off if there are any more. Ohhh! Go away! Go away! Beastly thing. Shoo! Shoo! Wait a minute... All right, Chewie, let's get out of here!
84 | What do you want? Well, it's Princess Leia, sir. She's been trying to get you on the communicator. I turned it off. I don't want to talk to her. Oh. Well, Princess Leia is wondering about Master Luke. He hasn't come back yet. She doesn't know where he is. I don't know where he is. Nobody knows where he is. What do you mean, nobody knows? Well, uh, you see... Deck Officer. Deck Officer!
85 | Lord Vader, the fleet has moved out of light-speed, and we're preparing to...Aaagh! You have failed me for the last time, Admiral. Captain Piett. Yes, my lord. Make ready to land out troops beyond the energy shield and deploy the fleet so that nothing gets off that system. You are in command now, Admiral Piett. Thank you, Lord Vader.
86 | Return of the Jedi
87 | You can see here the Death Star orbiting the forest Moon of Endor. Although the weapon systems on this Death Star are not yet operational, the Death Star does have a strong defense mechanism. It is protected by an energy shield, which is generated from the nearby forest Moon of Endor. The shield must be deactivated if any attack is to be attempted. Once the shield is down, our cruisers will create a perimeter, while the fighters fly into the superstructure and attempt to knock out the main reactor. General Calrissian has volunteered to lead the fighter attack
88 | Look. I want you to take her. I mean it. Take her. You need all the help you can get. She's the fastest ship in the fleet. All right, old buddy. You know, I know what she means to you. I'll take good care of her. She-she won't get a scratch. All right? Right. I got your promise now. Not a scratch. Look, would you get going, you pirate. Good luck. You, too.
89 | Luke...Luke...Do not...Do not underestimate the powers of the Emperor, or suffer your father's fate, you will. Luke, when gone am I, the last of the Jedi will you be. Luke, the Force runs strong in your family. Pass on what you have learned, Luke... There is...another...Sky...Sky...walker.
90 | Of course I'm worried. And you should be, too. Lando Calrissian and poor Chewbacca never returned from this awful place. Artoo whistles timidly. Don't be so sure. If I told you half the things I've heard about this Jabba the Hutt, you'd probably short-circuit. Artoo, are you sure this is the right place? I better knock, I suppose. There doesn't seem to be anyone there. Let's go back and tell Master Luke.
91 | I told you to remain on the command ship. A small Rebel force has penetrated the shield and landed on Endor. Yes, I know. My son is with them. Are you sure? I have felt him, my Master. Strange, that I have not. I wonder if your feelings on this matter are clear, Lord Vader. They are clear, my Master. Then you must go to the Sanctuary Moon and wait for them. He will come to me? I have foreseen it. His compassion for you will be his undoing. He will come to you andthen you will bring him before me. As you wish.
92 |
93 |
94 |
101 |
102 |