├── logo.png
├── website
├── www
│ ├── about.php
│ ├── api-doc.php
│ ├── generator.php
│ ├── .htaccess
│ ├── api.php
│ ├── css
│ │ └── style.css
│ ├── terminal.html
│ └── js
│ │ ├── generator.js
│ │ ├── popper.min.js
│ │ ├── bootstrap.min.js
│ │ └── jquery-3.4.1.min.js
├── content
│ ├── about.php
│ ├── generator.php
│ └── api-doc.php
└── base.php
├── twitter_bot
├── example_keys.py
└── tweet.py
├── generator
├── continuous_quotes.py
├── verb_list.py
├── adjective_list.py
├── noun_list.json
├── noun_list.py
└── hackergenerator.py
├── .github
└── workflows
│ └── twitter.yml
├── LICENSE.md
├── .gitignore
├── README.md
└── examples.txt
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GlOwl/hackerman/HEAD/logo.png
--------------------------------------------------------------------------------
/website/www/about.php:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/website/www/api-doc.php:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/website/www/generator.php:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/twitter_bot/example_keys.py:
--------------------------------------------------------------------------------
1 | consumer_key = ""
2 | consumer_secret = ""
3 |
4 | access_token = "-"
5 | access_token_secret = ""
6 |
7 | #path = "/path/to/generator/"
8 |
--------------------------------------------------------------------------------
/website/www/.htaccess:
--------------------------------------------------------------------------------
1 | DirectoryIndex generator.php index.php index.html
2 |
3 | RewriteEngine On
4 |
5 | RewriteCond %{REQUEST_FILENAME}.php -f
6 | RewriteCond %{REQUEST_URI} !/$
7 | RewriteRule ^(.*)$ $1\.php
8 |
--------------------------------------------------------------------------------
/twitter_bot/tweet.py:
--------------------------------------------------------------------------------
1 | import tweepy
2 | import json
3 |
4 | path = "../generator/"
5 |
6 | from keys import *
7 |
8 | import sys
9 | sys.path.append(path)
10 | import hackergenerator
11 |
12 | auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
13 | auth.set_access_token(access_token, access_token_secret)
14 |
15 | api = tweepy.API(auth)
16 |
17 | tweet = hackergenerator.sentence();
18 |
19 | api.update_status(status = tweet)
20 |
--------------------------------------------------------------------------------
/website/www/api.php:
--------------------------------------------------------------------------------
1 | 100) $n = 100;
8 |
9 | if($f != "json" && $f != "csv") $f = "json";
10 |
11 | if($f == "json") {
12 | header('Content-type: application/json');
13 | } else if($f == "csv") {
14 | header('Content-type: text/csv');
15 | }
16 |
17 | echo shell_exec("python3 ../../generator/hackergenerator.py ".$n." ".$f." ".$s);
18 | ?>
19 |
--------------------------------------------------------------------------------
/generator/continuous_quotes.py:
--------------------------------------------------------------------------------
1 | import hackergenerator
2 | import time
3 | import sys
4 | import os
5 |
6 | if(len(sys.argv) >= 2):
7 | i = int(sys.argv[1])
8 | else:
9 | i = 10
10 |
11 | if(len(sys.argv) >= 3):
12 | n = int(sys.argv[2])
13 | else:
14 | n = 10
15 |
16 | while(True):
17 | for x in range(0, n):
18 | sentence = hackergenerator.sentence()
19 | print(sentence)
20 | #os.system("espeak '" + sentence + "'") #if you are to lazy to read install espeak and uncomment this line.
21 | print("")
22 | time.sleep(i)
23 |
--------------------------------------------------------------------------------
/website/content/about.php:
--------------------------------------------------------------------------------
1 |
About
2 |
3 | This is a pure fun project, no money is being made here,
4 | no personal data is being collected and no hackers were harmed producing this website.
5 |
6 | If you like to contribute, give feedback or fork the source code
7 | check us out on GitHub
8 |
9 | Also make sure to follow @hackermanwtf for your daily dose of hackerman quotes!
10 |
11 |
--------------------------------------------------------------------------------
/website/www/css/style.css:
--------------------------------------------------------------------------------
1 | p {
2 | font-size: 1.2rem;
3 | }
4 |
5 | code {
6 | font-size: 100%;
7 | }
8 |
9 | .navbar {
10 | padding: 0.5rem 0rem;
11 | }
12 |
13 | .navbar-brand {
14 | font-size: 1.5rem;
15 | }
16 |
17 | .btn:not(.disabled):hover {
18 | margin-top: 0px;
19 | border-width: 0 1px 4px 1px !important;
20 | }
21 |
22 | .blockquote {
23 | font-size: 1.5rem;
24 | background: #DCDCDC63;
25 | border-radius: 5px;
26 | border-bottom: 4px solid #DCDCDC;
27 | }
28 |
29 | .blockquote p {
30 | font-size: 1.5rem;
31 | }
32 |
33 | #navbar {
34 | border-left: 0;
35 | border-right: 0;
36 | }
37 |
38 | #navbackgrond {
39 | border-color: #127ba3;
40 | border-style: solid;
41 | border-width: 0 0 5px 0;
42 | background-color: #158CBA !important;
43 | padding: 0.5rem 1rem;
44 | position: absolute;
45 | top: 0;
46 | width: 100%;
47 | height: 4.2rem;
48 | }
--------------------------------------------------------------------------------
/website/content/generator.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | Copy
4 |
5 |
6 |
7 |
8 |
9 | Nice one :D
10 |
11 |
12 |
13 | Meh :/
14 |
15 |
16 |
17 |
18 |
19 |
20 |
The good stuff
21 |
22 |
Download
23 |
24 |
25 |
26 |
Left overs
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/workflows/twitter.yml:
--------------------------------------------------------------------------------
1 | on:
2 | schedule:
3 | - cron: "0 14 * * *"
4 |
5 | name: Twitter Bot
6 |
7 | jobs:
8 |
9 | tweet:
10 | name: tweet
11 | runs-on: ubuntu-latest
12 | steps:
13 | - id: checkout
14 | uses: actions/checkout@v2
15 | - id: pip
16 | run: pip3 install tweepy
17 | - id: build-keys
18 | env:
19 | ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
20 | ACCESS_TOKEN_SECRET: ${{ secrets.ACCESS_TOKEN_SECRET }}
21 | CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
22 | CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
23 | run: |
24 | echo "consumer_key = \"$CONSUMER_KEY\"" > twitter_bot/keys.py
25 | echo "consumer_secret = \"$CONSUMER_SECRET\"" >> twitter_bot/keys.py
26 | echo "access_token = \"$ACCESS_TOKEN\"" >> twitter_bot/keys.py
27 | echo "access_token_secret = \"$ACCESS_TOKEN_SECRET\"" >> twitter_bot/keys.py
28 | echo "path = \"generator/\"" >> twitter_bot/keys.py
29 | - id: tweet
30 | run: |
31 | python3 twitter_bot/tweet.py
32 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Anatol Pomplun & Stefan Kremser
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/website/www/terminal.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Hackerman terminal
7 |
8 |
27 |
28 |
29 |
30 |
33 |
34 |
35 |
36 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/website/content/api-doc.php:
--------------------------------------------------------------------------------
1 | Online API
2 | Single Quotes
3 | Get a single random generated quote at:
4 | hackerman.wtf/api
5 | Returned is JSON file:
6 | { "quotes": ["Quantum LCDs restrict a UTF-8."] }
7 | Try it out
8 |
9 | Multiple Quotes
10 | Get multiple random generated quotes at:
11 | hackerman.wtf/api?n=3
12 |
13 | The parameter 'n' sets the number of requested quotes (max. 100 per query).
14 | Returned is a JSON file:
15 |
16 |
17 |
18 | { "quotes": [
19 | "A system framework addresses a system.",
20 | "The common model will identify the key.",
21 | "A virus framework addresses a random framework."
22 | ] }
23 |
24 |
25 | Try it out
26 |
27 | CSV Format
28 | Get quotes in CSV format at:
29 | hackerman.wtf/api?n=3&f=csv
30 |
31 |
32 | The parameter 'n' sets the number of requested quotes (max. 100 per query).
33 | The parameter 'f' sets the format, allowed is 'csv' and 'json' (default = json).
34 | Returned is a CSV file:
35 |
36 |
37 |
38 | A bandwidth will address a spacetime algorithm.
39 | Build the UTF-8 bandwidth, then you can build LCD models!
40 |
41 |
42 | Try it out
43 |
44 | Random Seed
45 | Get quotes generated using your own seed at:
46 | hackerman.wtf/api?s=123
47 |
48 |
49 | The parameter 's' sets the random seed string.
50 | Returned is a JSON file:
51 |
52 |
53 | {"quotes": ["Proprietary e-mails build a string."]}
54 |
55 | Try it out
56 |
57 | Offline Python Script
58 |
59 | No internet, no problem! If you like to generate quotes on your own machine, you can!
60 | Just visit our Github
61 | and run the python script that is creating these quotes.
62 |
63 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Twitter API
2 | twitter_bot/keys.py
3 |
4 | # Byte-compiled / optimized / DLL files
5 | __pycache__/
6 | *.py[cod]
7 | *$py.class
8 |
9 | # C extensions
10 | *.so
11 |
12 | # Distribution / packaging
13 | .Python
14 | build/
15 | develop-eggs/
16 | dist/
17 | downloads/
18 | eggs/
19 | .eggs/
20 | lib/
21 | lib64/
22 | parts/
23 | sdist/
24 | var/
25 | wheels/
26 | pip-wheel-metadata/
27 | share/python-wheels/
28 | *.egg-info/
29 | .installed.cfg
30 | *.egg
31 | MANIFEST
32 |
33 | # PyInstaller
34 | # Usually these files are written by a python script from a template
35 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
36 | *.manifest
37 | *.spec
38 |
39 | # Installer logs
40 | pip-log.txt
41 | pip-delete-this-directory.txt
42 |
43 | # Unit test / coverage reports
44 | htmlcov/
45 | .tox/
46 | .nox/
47 | .coverage
48 | .coverage.*
49 | .cache
50 | nosetests.xml
51 | coverage.xml
52 | *.cover
53 | .hypothesis/
54 | .pytest_cache/
55 |
56 | # Translations
57 | *.mo
58 | *.pot
59 |
60 | # Django stuff:
61 | *.log
62 | local_settings.py
63 | db.sqlite3
64 | db.sqlite3-journal
65 |
66 | # Flask stuff:
67 | instance/
68 | .webassets-cache
69 |
70 | # Scrapy stuff:
71 | .scrapy
72 |
73 | # Sphinx documentation
74 | docs/_build/
75 |
76 | # PyBuilder
77 | target/
78 |
79 | # Jupyter Notebook
80 | .ipynb_checkpoints
81 |
82 | # IPython
83 | profile_default/
84 | ipython_config.py
85 |
86 | # pyenv
87 | .python-version
88 |
89 | # pipenv
90 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
91 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
92 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
93 | # install all needed dependencies.
94 | #Pipfile.lock
95 |
96 | # celery beat schedule file
97 | celerybeat-schedule
98 |
99 | # SageMath parsed files
100 | *.sage.py
101 |
102 | # Environments
103 | .env
104 | .venv
105 | env/
106 | venv/
107 | ENV/
108 | env.bak/
109 | venv.bak/
110 |
111 | # Spyder project settings
112 | .spyderproject
113 | .spyproject
114 |
115 | # Rope project settings
116 | .ropeproject
117 |
118 | # mkdocs documentation
119 | /site
120 |
121 | # mypy
122 | .mypy_cache/
123 | .dmypy.json
124 | dmypy.json
125 |
126 | # Pyre type checker
127 | .pyre/
128 |
--------------------------------------------------------------------------------
/website/base.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Hackerman Quote
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
60 |
61 |
62 |
63 |
64 |
65 | ";
68 | }
69 | ?>
70 |
71 |
--------------------------------------------------------------------------------
/website/www/js/generator.js:
--------------------------------------------------------------------------------
1 | let quotes = [];
2 | let bad_quotes = [];
3 | let good_quotes = [];
4 |
5 | function render_main_quote() {
6 | $("#quote").text(quotes[0]);
7 | }
8 |
9 | function render_good_quotes() {
10 | $("#good-list").empty();
11 | for (let i = 0; i < good_quotes.length; i++) {
12 | $("#good-list").append("" + good_quotes[i] + " ");
13 | }
14 | }
15 |
16 | function render_bad_quotes() {
17 | $("#bad-list").empty();
18 | for (let i = 0; i < bad_quotes.length; i++) {
19 | $("#bad-list").append("" + bad_quotes[i] + " ");
20 | }
21 | }
22 |
23 | function render_quotes() {
24 | render_main_quote();
25 | render_good_quotes();
26 | render_bad_quotes();
27 | }
28 |
29 | function add_quote(q) {
30 | quotes.unshift(q);
31 | }
32 |
33 | function add_quotes(q) {
34 | for (let i = 0; i < q.length; i++) add_quote(q[i]);
35 | }
36 |
37 | function move_good_quote(i) {
38 | add_quotes(good_quotes.splice(i, 1));
39 | render_quotes();
40 | }
41 |
42 | function move_bad_quote(i) {
43 | add_quotes(bad_quotes.splice(i, 1));
44 | render_quotes();
45 | }
46 |
47 | function load_new_quotes() {
48 | if (quotes.length <= 1) {
49 | $.ajax({
50 | url: "api?n=10&f=json&s=" + (Math.floor(Math.random() * 1000000) + 1),
51 | success: function(result) {
52 | add_quotes(result.quotes);
53 | render_quotes();
54 | }
55 | });
56 | } else {
57 | render_quotes();
58 | }
59 | }
60 |
61 | function add_default_quote() {
62 | if (quotes.length == 0) add_quote($("#quote").text());
63 | }
64 |
65 | $("#good-button").click(function() {
66 | add_default_quote();
67 |
68 | // Move first quote from quotes to good_quotes
69 | good_quotes.unshift(quotes.shift());
70 |
71 | load_new_quotes();
72 | });
73 |
74 | $("#bad-button").click(function() {
75 | add_default_quote();
76 |
77 | // Move first from quotes to bad_quotes
78 | bad_quotes.unshift(quotes.shift());
79 |
80 | load_new_quotes();
81 | });
82 |
83 | $("#copy").click(function() {
84 | let $temp = $(" ");
85 | $("body").append($temp);
86 | $temp.val($("#quote").text()).select();
87 | document.execCommand("copy");
88 | $temp.remove();
89 | });
90 |
91 | $("#download").click(function() {
92 | let content = "data:text/csv;charset=utf-8,";
93 |
94 | for (let i = 0; i < good_quotes.length; i++) {
95 | content += good_quotes[i] + "\r\n";
96 | }
97 |
98 | var uri = encodeURI(content);
99 | var link = document.createElement("a");
100 | link.setAttribute("href", uri);
101 | link.setAttribute("download", "hackerquotes.txt");
102 | document.body.appendChild(link);
103 |
104 | link.click();
105 | });
--------------------------------------------------------------------------------
/generator/verb_list.py:
--------------------------------------------------------------------------------
1 | # V -> verb
2 |
3 | # r -> regular (add s at the end to make it multiple)
4 | # i -> irregular (needs a lists of conjugations)
5 |
6 | verb_list = [
7 | ["r", "init"],
8 | ["r", "pull"],
9 | ["r", "push"],
10 | ["r", "clone"],
11 | ["r", "fetch"],
12 | ["r", "commit"],
13 | ["r", "rebase"],
14 | ["r", "merge"],
15 | ["r", "fork"],
16 | ["r", "stash"],
17 | ["r", "tag"],
18 | ["r", "cherry-pick"],
19 | ["r", "checkout"],
20 | ["r", "wrap"],
21 | ["r", "iterate"],
22 | ["r", "loop"],
23 | ["r", "port"],
24 | ["r", "infect"],
25 | ["r", "append"],
26 | ["r", "change"],
27 | ["r", "normalize"],
28 | ["r", "average"],
29 | ["r", "decrypt"],
30 | ["r", "encrypt"],
31 | ["r", "convert"],
32 | ["r", "access"],
33 | ["r", "coordinate"],
34 | ["r", "power"],
35 | ["r", "monitor"],
36 | ["r", "regulate"],
37 | ["r", "detect"],
38 | ["r", "block"],
39 | ["r", "debug"],
40 | ["r", "observe"],
41 | ["r", "bypass"],
42 | ["r", "input"],
43 | ["r", "synthesize"],
44 | ["r", "connect"],
45 | ["r", "parse"],
46 | ["r", "generate"],
47 | ["r", "copy"],
48 | ["r", "analyze"],
49 | ["r", "control"],
50 | ["r", "benchmark"],
51 | ["r", "request"],
52 | ["r", "enter"],
53 | ["r", "call"],
54 | ["r", "detect"],
55 | ["r", "print"],
56 | ["r", "simulate"],
57 | ["r", "emulate"],
58 | ["r", "intercept"],
59 | ["r", "sequence"],
60 | ["r", "synchronize"],
61 | ["r", "test"],
62 | ["r", "tokenize"],
63 | ["r", "format"],
64 | ["r", "constrain"],
65 | ["r", "import"],
66 | ["r", "export"],
67 | ["r", "develop"],
68 | ["r", "invert"],
69 | ["r", "slice"],
70 | ["r", "index"],
71 | ["r", "join"],
72 | ["r", "shorten"],
73 | ["r", "partition"],
74 | ["r", "decompile"],
75 | ["r", "split"],
76 | ["r", "swap"],
77 | ["r", "cast"],
78 | ["r", "clear"],
79 | ["r", "stream"],
80 | ["r", "remove"],
81 | ["r", "add"],
82 | ["r", "signal"],
83 | ["r", "process"],
84 | ["r", "disconnect"],
85 | ["r", "start"],
86 | ["r", "interpret"],
87 | ["r", "yield"],
88 | ["r", "match"],
89 | ["r", "inspect"],
90 | ["r", "collect"],
91 | ["r", "restrict"],
92 | ["r", "display"],
93 | ["r", "address"],
94 | ["r", "identify"],
95 | ["i", "build", {"simple_present" : {"i": "build", "you": "build", "it": "builds", "we": "build", "they": "build"}, "simple_past" : {"i": "built", "you": "built", "it": "built", "we": "built", "they": "built"}, "simple_future" : {"i": "will build", "you": "will build", "it": "will build", "we": "will build", "they": "will build"}}],
96 | ["r", "load"],
97 | ["r", "define"],
98 | ["r", "decentralize"],
99 | ["r", "update"],
100 | ["r", "encode"],
101 | ["r", "virtualize"],
102 | ["r", "transmit"],
103 | ["r", "compile"],
104 | ["r", "randomize"],
105 | ["r", "deauth"],
106 | ["r", "alter"],
107 | ["r", "mute"],
108 | ["r", "hash"]
109 | ]
110 |
111 |
112 | """
113 | - read
114 | - write
115 | - send
116 | - override
117 |
118 | - swap out
119 | """
120 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hackerman Quote Generator
2 |
3 | ---
4 |
5 | ## Update November 2020
6 |
7 | Because of the server costs we decided to take hackerman.wtf offline, which also runs the @hackermanwtf twitter account. 😢
8 |
9 | ---
10 |
11 |
12 |
13 |
14 | 🐦 @hackermanwtf
15 | | 🌍 hackerman.wtf
16 |
17 | Generate your own hackerman quotes
18 |
19 | ## Idea
20 |
21 | Hollywood and the media in general loves to portrait hackers as these beings that
22 | make computers do anything! They just have to type fast enough,
23 | or at least faster than the hacker on the other side.
24 |
25 | In countless shows and movies, characters say a lot of nonsense
26 | to sound like a real badass hacker.
27 |
28 | If you also want to sound like a badass hacker but struggle to learn the basics
29 | of computer engineering, don't worry, we got you covered!
30 |
31 | We created this sentence generator to make nonsense hacker quotes.
32 | Grammatically (more or less) correct English sentences mixed with
33 | buzzwords to sound very technical, but don't make any sense.
34 |
35 | **Why?** Because we can! But also because it's fun and these quotes make great
36 | jokes and can be used as placeholder text and descriptions.
37 |
38 | **One more thing...** just a generator alone would be boring, so we are hosting
39 | a website where anyone can easily get their daily dose of hacker quotes.
40 | Oh and we are creating an API for anyone to use.
41 | (Who needs Lorem-Ipsum when you can fill your website with hacker quotes!)
42 |
43 | ## Website
44 |
45 | Visit [hackerman.wtf](https://hackerman.wtf).
46 |
47 | ## Twitter Account
48 |
49 | Follow [@hackermanwtf](http://twitter.com/hackermanwtf) to get your daily dose
50 | of hackerman quotes!
51 |
52 | ## API
53 |
54 | ## Online API
55 |
56 | Visit [hackerman.wtf/api-doc](https://hackerman.wtf/api-doc) to learn about the
57 | online API.
58 |
59 | ## Local Generator Script
60 |
61 | The magic happens in [generator/hackergenerator.py](https://github.com/GlOwl/hackerman/blob/master/generator/hackergenerator.py).
62 |
63 | You can just run the script using `python3 hackergenerator.py`.
64 |
65 | That's not enough for you? Try `python3 hackergenerator.py 1000`!
66 |
67 | You are a robot? Try `python3 hackergenerator.py 10 json`!
68 |
69 | The script expects 3 arguments: `python3 hackergenerator.py [number_of_quotes] [format] [seed]`.
70 | `[number_of_quotes]` is self expandatory (default = 1), `[format]` can be `csv` or `json` (default = csv), `[seed]` is a random seed string.
71 |
72 | ## Credits & Resources
73 |
74 | **Authors:**
75 | - Stefan Kremser [@spacehuhn](https://github.com/spacehuhn)
76 | - Anatol Pomplun [@GlOwl](https://github.com/GlOwl)
77 |
78 | **Tools:**
79 | - [Python 3](https://www.python.org) Programming Language
80 | - [Bootstrap](https://getbootstrap.com/) Web Library
81 | - [Layoutit](https://www.layoutit.com/) Bootstrap Builder
82 | - [Lumen](https://bootswatch.com/lumen/) Bootstrap Theme
83 | - [jQuery](https://jquery.com/) JavaScript Framework
84 | - [Tweepy](https://www.tweepy.org/) Python Module to interface the Twitter API
85 |
86 | ## License
87 |
88 | This software is licensed under the MIT License. See the [license file](LICENSE) for details.
89 |
--------------------------------------------------------------------------------
/generator/adjective_list.py:
--------------------------------------------------------------------------------
1 |
2 | # t = attrributive adjective (before noun)
3 | # ------- all following currently unused --------
4 | # p = predicative adjective (after verb e.g. is, was, will be...)
5 | # (unused) c = comparative adjective (can be used to compare two nouns)
6 |
7 | # a = absolute no comperative or superlative
8 | # e = appnd -er / -est to get the superlative
9 | # m = append adjective after more / most or less / least
10 |
11 | adjective_list = [
12 | ["tm", "quantum"],
13 | ["tm", "virtual"],
14 | ["ta", "shortened"],
15 | ["tm", "common"],
16 | ["te", "raw"],
17 | ["tm", "random"],
18 | ["ta", "audio"],
19 | ["tm", "industrial"],
20 | ["tm", "3D-printed"],
21 | ["tm", "proprietary"],
22 | ["tm", "forbidden"],
23 | ["ta", "patented"],
24 | ["tm", "neural"],
25 | ["tm", "wireless"],
26 | ["tm", "online"],
27 | ["tm", "offline"],
28 | ["tm", "primary"],
29 | ["ta", "8-bit"],
30 | ["tm", "open"],
31 | ["ta", "live"],
32 | ["tm", "flexible"],
33 | ["tm", "adaptive"],
34 | ["tm", "artificial"],
35 | ["tm", "mobile"],
36 | ["tm", "meta"],
37 | ["tm", "regular"],
38 | ["tm", "variable"],
39 | ["tm", "global"],
40 | ["tm", "automatic"],
41 | ["tm", "geometric"],
42 | ["tm", "inductive"],
43 | ["tm", "default"],
44 | ["tm", "constant"],
45 | ["tm", "asymmetric"],
46 | ["tm", "symmetric"],
47 | ["tm", "robust"],
48 | ["tm", "analog"],
49 | ["tm", "digital"],
50 | ["tm", "micro"],
51 | ["tm", "standardized"],
52 | ["tm", "hidden"],
53 | ["tm", "biometric"],
54 | ["tm", "safety"],
55 | ["tm", "emulated"],
56 | ["ta", "root"],
57 | ["ta", "generic"],
58 | ["ta", "bricked"],
59 | ["ta", "miscellaneous"],
60 | ["ta", "haptic"],
61 | ["tm", "logical"],
62 | ["ta", "physical"],
63 | ["ta", "relative"],
64 | ["ta", "lasered"],
65 | ["ta", "licensed"],
66 | ["ta", "robotic"],
67 | ["tm", "immersive"],
68 | ["ta", "customized"],
69 | ["ta", "malfunctioning"],
70 | ["tm", "granular"],
71 | ["ta", "quality"],
72 | ["ta", "open source"],
73 | ["tm", "sophisticated"],
74 | ["tm", "statistical"],
75 | ["tm", "DIY"],
76 | ["ta", "remote"],
77 | ["ta", "handheld"],
78 | ["tm", "bleeding edge"],
79 | ["tm", "modern"],
80 | ["tm", "outdated"],
81 | ["ta", "legacy"],
82 | ["ta", "visual"],
83 | ["ta", "guidance"],
84 | ["tm", "private"],
85 | ["tm", "public"],
86 | ["tm", "cyber"],
87 | ["ta", "numeric"],
88 | ["ta", "mathematical"],
89 | ["ta", "linguistic"],
90 | ["ta", "platform-specific"],
91 | ["ta", "normalized"],
92 | ["ta", "bitwise"],
93 | ["ta", "hexadecimal"],
94 | ["ta", "octal"],
95 | ["ta", "binary"],
96 | ["ta", "decimal"],
97 | ["te", "large"],
98 | ["te", "small"],
99 | ["tm", "normal"],
100 | ["ta", "infected"],
101 | ["ta", "internal"],
102 | ["tm", "synchron"],
103 | ["tm", "asynchron"],
104 | ["ta", "biometric"],
105 | ["ta", "idle"],
106 | ["ta", "external"],
107 | ["ta", "reserved"],
108 | ["ta", "explicit"],
109 | ["ta", "implicit"],
110 | ["tm", "decentralized"],
111 | ["tm", "interactive"],
112 | ["ta", "lambda"],
113 | ["tm", "recursive"],
114 | ["te", "weak"],
115 | ["ta", "matching"],
116 | ["tm", "similar"],
117 | ["te", "strong"],
118 | ["ta", "partial"],
119 | ["ta", "performance"],
120 | ["ta", "build in"]
121 | ]
122 | """
123 | - speed
124 | - detection
125 | - high
126 | - plasma
127 | - titanium
128 | - usability
129 | - surveillance
130 | - face detection
131 | - floating
132 | - localized
133 | - read only
134 | - write only
135 |
136 | - singleton
137 | """
138 |
--------------------------------------------------------------------------------
/generator/noun_list.json:
--------------------------------------------------------------------------------
1 | {
2 | "ber": [
3 | "logic"
4 | ],
5 | "sar": [
6 | "git",
7 | "github",
8 | "gitlab",
9 | "gitea",
10 | "bitbucket",
11 | "GTFO",
12 | "baremetal"
13 | ],
14 | "sber": [
15 | "status",
16 | "spacehuhn",
17 | "IRC",
18 | "WiFi",
19 | "Bluetooth",
20 | "ethernet",
21 | "LAN",
22 | "WAN",
23 | "NAS",
24 | "VM",
25 | "middleware",
26 | "bottleneck",
27 | "data",
28 | "analysis",
29 | "intelligence",
30 | "indicator",
31 | "IC",
32 | "fax",
33 | "foo",
34 | "bar",
35 | "bandwidth",
36 | "web",
37 | "syntax",
38 | "interpreter",
39 | "OS",
40 | "provider",
41 | "driver",
42 | "encoder",
43 | "internet",
44 | "IoT"
45 | ],
46 | "sbr": [
47 | "SBC",
48 | "ATX",
49 | "ITX",
50 | "USB",
51 | "ASCII",
52 | "null",
53 | "NaN",
54 | "undefined",
55 | "spacetime",
56 | "UTF-8",
57 | "handler"
58 | ],
59 | "ser": [
60 | "SoC",
61 | "HDD",
62 | "SSD",
63 | "SD",
64 | "LED",
65 | "IDE",
66 | "PoC",
67 | "UI",
68 | "GUI"
69 | ],
70 | "smar": [
71 | "pullrequest",
72 | "mergerequest",
73 | "powersupply",
74 | "ifloop",
75 | "garbagecollector"
76 | ],
77 | "smber": [
78 | "log",
79 | "stash",
80 | "tag",
81 | "origin",
82 | "master",
83 | "lemur",
84 | "laser",
85 | "signal",
86 | "network",
87 | "analyzer",
88 | "application",
89 | "firewall",
90 | "cybernuke",
91 | "mainframe",
92 | "server",
93 | "cloud",
94 | "cable",
95 | "antenna",
96 | "grid",
97 | "display",
98 | "monitor",
99 | "microcontroller",
100 | "controller",
101 | "keyboard",
102 | "tree",
103 | "bucket",
104 | "observer",
105 | "singleton",
106 | "array",
107 | "transmitter",
108 | "DVD",
109 | "emulation",
110 | "clock",
111 | "MCU",
112 | "phone",
113 | "space",
114 | "sample",
115 | "sensor",
116 | "camera",
117 | "battery",
118 | "process",
119 | "website",
120 | "homepage",
121 | "app",
122 | "error",
123 | "warning",
124 | "sequence",
125 | "information",
126 | "pattern",
127 | "simulation",
128 | "simulator",
129 | "troll",
130 | "regulator",
131 | "container",
132 | "breadboard",
133 | "controller",
134 | "drone",
135 | "deauther",
136 | "thread",
137 | "model",
138 | "switch",
139 | "dimension",
140 | "key",
141 | "java",
142 | "coffee",
143 | "integer",
144 | "double",
145 | "string",
146 | "adapter",
147 | "framework",
148 | "system",
149 | "algorithm",
150 | "virus",
151 | "exeption",
152 | "path",
153 | "reference",
154 | "template",
155 | "wildcard",
156 | "interface",
157 | "loop",
158 | "demon",
159 | "core",
160 | "string",
161 | "document",
162 | "cookie",
163 | "codec",
164 | "e-mail",
165 | "service",
166 | "cache",
167 | "database",
168 | "object",
169 | "index",
170 | "list",
171 | "tuple",
172 | "range",
173 | "stream",
174 | "component",
175 | "module",
176 | "library",
177 | "limit",
178 | "function",
179 | "code",
180 | "wave",
181 | "blockchain",
182 | "repository",
183 | "northbridge",
184 | "southbridge"
185 | ],
186 | "smbers": [
187 | "dictionary"
188 | ],
189 | "smbr": [
190 | "reality",
191 | "LCD"
192 | ],
193 | "smer": [
194 | "branch",
195 | "commit",
196 | "request",
197 | "transition",
198 | "editor",
199 | "frame",
200 | "identifier",
201 | "reader",
202 | "writer",
203 | "label",
204 | "collector",
205 | "token"
206 | ]
207 | }
--------------------------------------------------------------------------------
/examples.txt:
--------------------------------------------------------------------------------
1 | Connecting the transmitter won't do anything, we need to navigate the mobile XSS transmitter!
2 | If we input the sensor, we can get to the CSS sensor through the auxiliary CSS sensor!
3 | If we navigate the array, we can get to the XSS array through the wireless XSS array!
4 | I'll bypass the cross-platform HDD monitor, that should monitor the HDD monitor!
5 | I'll hack the haptic CSS matrix, that should matrix the CSS matrix!
6 | I'll input the primary SDD bus, that should bus the SDD bus!
7 | I'll parse the primary SMS feed, that should feed the SMS feed!
8 | I'll synthesize the online FTP transmitter, that should transmitter the FTP transmitter!
9 | The ADP hard drive is down, input the bluetooth hard drive so we can input the ADP hard drive!
10 | The AGP bus is down, index the haptic bus so we can index the AGP bus!
11 | The GB feed is down, hack the multi-byte feed so we can hack the GB feed!
12 | The IB circuit is down, input the 1080p circuit so we can input the IB circuit!
13 | The IB microchip is down, transmit the haptic microchip so we can transmit the IB microchip!
14 | The SAS firewall is down, input the 1080p firewall so we can input the SAS firewall!
15 | The SCSI interface is down, hack the optical interface so we can hack the SCSI interface!
16 | The SDD array is down, generate the mobile array so we can generate the SDD array!
17 | The SDD card is down, compress the cross-platform card so we can compress the SDD card!
18 | The USB bandwidth is down, compress the haptic bandwidth so we can compress the USB bandwidth!
19 | The USB circuit is down, override the cross-platform circuit so we can override the USB circuit!
20 | Try to copy the SMS transmitter, maybe it will copy the haptic transmitter!
21 | Try to navigate the PNG firewall, maybe it will navigate the redundant firewall!
22 | Try to parse the RAM alarm, maybe it will parse the wireless alarm!
23 | Try to synthesize the PNG application, maybe it will synthesize the online application!
24 | Try to synthesize the USB microchip, maybe it will synthesize the haptic microchip!
25 | Use the bluetooth JBOD pixel, then you can override the bluetooth pixel!
26 | Use the primary SAS pixel, then you can synthesize the primary pixel!
27 | Use the wireless SAS panel, then you can generate the wireless panel!
28 | We need to bypass the optical RAM circuit!
29 | We need to generate the redundant PNG transmitter!
30 | We need to input the optical AI microchip!
31 | You can't copy the application without copying the wireless SCSI application!
32 | You can't generate the bus without bypassing the primary GB bus!
33 | You can't generate the driver without copying the digital SMS driver!
34 | You can't generate the matrix without transmitting the digital XSS matrix!
35 |
36 | SENTENCE
37 | [INDEPENDENT_CLAUSE]
38 | INDEPENDENT_CLAUSE + CONJUNCTION + INDEPENDENT_CLAUSE
39 | INDEPENDENT_CLAUSE + CONJUNCTION + DEPENDENT_CLAUSE
40 |
41 | INDEPENDENT_CLAUSE
42 | SUBJECT_PHRASE + VERB_PHRASE(case defined by noun(&time))
43 | SUBJECT_PHRASE + VERB_PHRASE(case defined by noun(&time)) + OBJECT_PHRASE
44 |
45 | DEPENDENT_CLAUSE
46 | REFFERNECE + VERB_PHRASE(case defined by refference(&time))
47 |
48 | CONJUNCTION
49 | conjunction
50 |
51 | SUBJECT_PHRASE
52 | NOUN_PHRASE
53 |
54 | OBJECT_PHRASE
55 | NOUN_PHRASE
56 |
57 | NOUN_PHRASE
58 | (PRONOUN [defined by noun, ending dependent on starting letter next]) + (ADJECTIVE_PHRASE) + NOUN
59 |
60 | VERB_PHRASE
61 | VERB
62 |
63 | VERB
64 | verb
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | no - noun
74 | ve - verb
75 | ad - adjective
76 | av - adverb
77 | pn - pronoun
78 | pr - preposition
79 | co - conjunction
80 | in - interjection
81 |
82 | Sentence -> IndependentSentence, (Conjunction, IndependentSentence)
83 | Sentence -> IndependentSentence,
84 | IndependentSentence -> Noun Phrase, Verb Phrase
85 | NounPhrase -> (Determiner), Noun1
86 | Noun1 -> (AdjectivePhrase), Noun1, (PrepositionalPhrase)
87 | Noun1 -> Noun1, Conjunction, Noun1
88 | VerbPhrase -> (Adverb), verb, (Noun1)
89 | VerbPhrase -> VerbPhrase, Conjunction, VerbPhrase
90 | AdjectivePhrase -> (Adverb), Adjective
91 |
92 |
93 | nouns -> Thing, Place, Person
94 | pronouns -> the, a, number
95 | verbs -> action/state of being
96 | Proverbs/Preposition
97 | Time: in, on, at
98 | Location: in, on, at
99 | Means: by
100 | Origin: from
101 | Destination: to
102 | Co-participant: with
103 |
104 | modifiers
105 | adjectives -> modify nouns
106 | adverbs -> modify verbs, adjectives and adverbs
107 | prepositions ->
108 | interjections ->
109 |
110 | conjunctions ->
111 | Coordinationg Conjunctions
112 | yet, or, nor, for, and, so, but
113 | Paired Conjunctions
114 | both . . . and
115 | either . . . or
116 | neither . . . nor
117 | not . . . but
118 | not . . . nor
119 | not only . . . but (also)
120 | whether . . . or
121 |
122 | Subject
123 | Noun
124 |
125 | Object
126 | Noun
127 |
128 | Predicate
129 | verb
130 | verb - object
131 |
132 | Clause
133 | Subject - predicate
134 |
135 | Simple_Sentence ->
136 | Clause
137 |
138 | Coumpund_Sentence
139 | Clause - Coordination - Clause
140 |
141 | Complex_Sentence
142 | Clause - "when"/"after"/"before" - Dependent Clause
143 |
144 | Complex_Compound_Sentence
145 | Clause - "when"/"after"/"before" - Dependent Clause - Coordination - Clause
146 | Clause - Coordination - Clause - "when"/"after"/"before" - Dependent Clause
147 |
--------------------------------------------------------------------------------
/generator/noun_list.py:
--------------------------------------------------------------------------------
1 | # s -> singular
2 | # m -> multiple
3 |
4 | # b -> begin of a compound noun (like "serialized" in "serialized thread")
5 | # e -> end of a compound noun (like "thread" in "serialized thread")
6 | # a -> alone (never part of a compound noun like "garbage collector")
7 |
8 | # r -> regular (add s at the end to make it multiple)
9 | # i -> irregular (needs a lists of conjugations)
10 |
11 | noun_list = [
12 | ["sar", "git"],
13 | ["sar", "github"],
14 | ["sar", "gitlab"],
15 | ["sar", "gitea"],
16 | ["sar", "bitbucket"],
17 | ["smer", "branch"],
18 | ["smer", "commit"],
19 | ["smber", "log"],
20 | ["smar", "pull request"],
21 | ["smar", "merge request"],
22 | ["smber", "stash"],
23 | ["sber", "status"],
24 | ["smber", "tag"],
25 | ["smber", "origin"],
26 | ["smber", "master"],
27 | ["smber", "lemur"],
28 | ["sber", "spacehuhn"],
29 | ["smber", "laser"],
30 | ["smber", "signal"],
31 | ["smber", "network"],
32 | ["smber", "analyzer"],
33 | ["smber", "application"],
34 | ["smber", "firewall"],
35 | ["smber", "cybernuke"],
36 | ["sber", "IRC"],
37 | ["smber", "mainframe"],
38 | ["smber", "server"],
39 | ["smber", "cloud"],
40 | ["smbr", "reality"],
41 | ["smer", "request"],
42 | ["sber", "WiFi"],
43 | ["sber", "Bluetooth"],
44 | ["smber", "cable"],
45 | ["sber", "ethernet"],
46 | ["sber", "LAN"],
47 | ["sber", "WAN"],
48 | ["smber", "antenna"],
49 | ["sber", "NAS"],
50 | ["smar", "power supply"],
51 | ["smber", "grid"],
52 | ["smber", "display"],
53 | ["smber", "monitor"],
54 | ["smber", "microcontroller"],
55 | ["smber", "controller"],
56 | ["ser", "SoC"],
57 | ["sbr", "SBC"],
58 | ["sbr", "ATX"],
59 | ["sbr", "ITX"],
60 | ["sbr", "USB"],
61 | ["ser", "HDD"],
62 | ["ser", "SSD"],
63 | ["smber", "keyboard"],
64 | ["smer", "transition"],
65 | ["smber", "tree"],
66 | ["ser", "SD"],
67 | ["ser", "LED"],
68 | ["ser", "IDE"],
69 | ["smer", "editor"],
70 | ["smer", "frame"],
71 | ["ser", "PoC"],
72 | ["smber", "bucket"],
73 | ["sber", "VM"],
74 | ["smer", "identifier"],
75 | ["sber", "middleware"],
76 | ["sber", "bottleneck"],
77 | ["ser", "UI"],
78 | ["ser", "GUI"],
79 | ["smber", "observer"],
80 | ["smber", "singleton"],
81 | ["smber", "array"],
82 | ["smber", "transmitter"],
83 | ["smber", "DVD"],
84 | ["ber", "logic"],
85 | ["smber", "emulation"],
86 | ["smer", "reader"],
87 | ["smer", "writer"],
88 | ["smer", "label"],
89 | ["smber", "clock"],
90 | ["smber", "MCU"],
91 | ["smber", "phone"],
92 | ["smber", "space"],
93 | ["sber", "data"],
94 | ["sber", "analysis"],
95 | ["smber", "sample"],
96 | ["sber", "intelligence"],
97 | ["smber", "sensor"],
98 | ["smber", "camera"],
99 | ["smber", "battery"],
100 | ["smber", "process"],
101 | ["smber", "website"],
102 | ["smber", "homepage"],
103 | ["smber", "app"],
104 | ["smber", "error"],
105 | ["smber", "warning"],
106 | ["smber", "sequence"],
107 | ["smber", "information"],
108 | ["sbr", "ASCII"],
109 | ["smber", "pattern"],
110 | ["smber", "simulation"],
111 | ["smber", "simulator"],
112 | ["sber", "indicator"],
113 | ["smber", "troll"],
114 | ["smber", "regulator"],
115 | ["smber", "container"],
116 | ["smber", "breadboard"],
117 | ["sber", "IC"],
118 | ["smber", "controller"],
119 | ["smber", "drone"],
120 | ["smber", "deauther"],
121 | ["smar", "if loop"],
122 | ["sar", "GTFO"],
123 | ["sber", "fax"],
124 | ["smar", "garbage collector"],
125 | ["smer", "collector"],
126 | ["smber", "thread"],
127 | ["smber", "model"],
128 | ["smber", "switch"],
129 | ["smber", "dimension"],
130 | ["sber", "foo"],
131 | ["sber", "bar"],
132 | ["smber", "key"],
133 | ["smber", "java"],
134 | ["smber", "coffee"],
135 | ["sbr", "null"],
136 | ["sbr", "NaN"],
137 | ["sbr", "undefined"],
138 | ["smber", "integer"],
139 | ["smber", "double"],
140 | ["smber", "string"],
141 | ["sar", "bare metal"],
142 | ["smber", "adapter"],
143 | ["smber", "framework"],
144 | ["smber", "system"],
145 | ["smber", "algorithm"],
146 | ["sbr", "spacetime"],
147 | ["smbr", "LCD"],
148 | ["sber", "bandwidth"],
149 | ["smber", "virus"],
150 | ["sbr", "UTF-8"],
151 | ["sber", "web"],
152 | ["sbr", "handler"],
153 | ["smber", "exeption"],
154 | ["smber", "path"],
155 | ["smber", "reference"],
156 | ["smber", "template"],
157 | ["smber", "wildcard"],
158 | ["smber", "interface"],
159 | ["sber", "syntax"],
160 | ["smber", "loop"],
161 | ["smber", "demon"],
162 | ["smber", "core"],
163 | ["sber", "interpreter"],
164 | ["smber", "string"],
165 | ["smber", "document"],
166 | ["smber", "cookie"],
167 | ["smber", "codec"],
168 | ["smber", "e-mail"],
169 | ["sber", "OS"],
170 | ["smber", "service"],
171 | ["sber", "provider"],
172 | ["smber", "cache"],
173 | ["smber", "database"],
174 | ["smber", "object"],
175 | ["smbers", "dictionary"],
176 | ["sber", "driver"],
177 | ["smber", "index"],
178 | ["sber", "encoder"],
179 | ["smber", "list"],
180 | ["smber", "tuple"],
181 | ["smber", "range"],
182 | ["smber", "stream"],
183 | ["sber", "internet"],
184 | ["smber", "component"],
185 | ["smber", "module"],
186 | ["smber", "library"],
187 | ["smber", "limit"],
188 | ["smber", "function"],
189 | ["smer", "token"],
190 | ["smber", "code"],
191 | ["smber", "wave"],
192 | ["sber", "IoT"],
193 | ["smber", "blockchain"],
194 | ["smber", "repository"],
195 | ["smber", "northbridge"],
196 | ["smber", "southbridge"]
197 | ]
198 |
--------------------------------------------------------------------------------
/generator/hackergenerator.py:
--------------------------------------------------------------------------------
1 | import sys
2 | import json
3 | import random
4 |
5 | import noun_list
6 | import adjective_list
7 | import verb_list
8 |
9 | def get_json(n):
10 | """Generates and returns n sentences in Json format."""
11 | response = {
12 | 'quotes': generate(n)
13 | }
14 |
15 | return json.dumps(response)
16 |
17 | def get_csv(n):
18 | """Generates and returns n sentences in CSV format."""
19 | return '\n'.join(generate(n))
20 |
21 | def generate(n):
22 | """Generates and returns n sentences and retruns them as an array."""
23 | return [sentence() for _ in range(0, n)]
24 |
25 | def sentence():
26 | """Generates one random sentence."""
27 | x = random.randint(0, 6)
28 | #x = 5 #uncoment for testing a specific sentence type
29 | if(x is 0):
30 | a = random.choice(['s', 'm'])
31 | if(a is 's'):
32 | b = 'it'
33 | else:
34 | b = 'they'
35 |
36 | r = noun_phrase(definite = random.choice([True, False]), hasAdjective = random.choice([True, False, False]), singularity = a, compound = random.choice([True, False])) + " " + verb(conjugation = b, time = random.choice(['simple_present', 'simple_past', 'simple_future'])) + " " + random_noun_phrase() + ". With " + noun_phrase(definite = False, hasAdjective = False, singularity = random.choice(['s', 's', 'm']), compound = True) + "!"
37 | elif(x is 1):
38 | r = verb(conjugation = 'you', time = 'simple_present') + " " + noun_phrase(definite = True, hasAdjective = random.choice([True, False, False]), singularity = random.choice(['s', 'm']), compound = random.choice([True, False])) + ", then you can " + verb(conjugation = 'you', time = 'simple_present') + " " + noun_phrase(definite = True, hasAdjective = random.choice([True, False, False]), singularity = random.choice(['s', 'm']), compound = random.choice([True, False])) + "!"
39 | elif(x is 2):
40 | p1 = 'you'
41 | r = p1 + " can't " + verb(conjugation = 'i', time = 'simple_present') + " " + random_noun_phrase() + ", it " + verb(conjugation = 'it', time = 'simple_future', ) + " " + noun_phrase(definite = True, hasAdjective = random.choice([True, False, False]), singularity = random.choice(['s', 'm']), compound = random.choice([True, False]), n = noun_list.noun_list, a = adjective_list.adjective_list) + "!"
42 | elif(x is 3):
43 | p1 = pronoun()
44 | need = [["r", "need"]]
45 | r = p1 + " " + verb(conjugation = ('it' if p1 in ['he', 'she'] else p1), time = 'simple_present', v = need) + " to " + verb(conjugation = 'i', time = 'simple_present') + " " + noun_phrase(definite = True, hasAdjective = random.choice([True, True, False]), singularity = random.choice(['s', 'm']), compound = random.choice([True, True, False])) + "!"
46 | elif(x is 4):
47 | p1 = pronoun(singular = 's');
48 | i1 = random.choice([" with " + noun_phrase(definite = random.choice([True, False]), hasAdjective = random.choice([True, False]), singularity = "s", compound = random.choice([True, False])), " with " + noun_phrase(definite = random.choice([True, False]), hasAdjective = random.choice([True, False]), singularity = "s", compound = random.choice([True, False])), ''])
49 | r = p1 + random.choice([" can ", " may "]) + verb(conjugation = 'i', time = 'simple_present') + " " + random_noun_phrase() + i1 + ", it " + verb(conjugation = 'it', time = 'simple_future', ) + " " + noun_phrase(definite = True, hasAdjective = random.choice([True, False, False]), singularity = random.choice(['s', 'm']), compound = random.choice([True, False]), n = noun_list.noun_list, a = adjective_list.adjective_list) + "."
50 | elif(x is 5):
51 | r = noun_phrase() + " " + verb(conjugation = 'it', time = 'simple_present') + '. Let it ' + random.choice(verb_list.verb_list)[1] + random.choice([' by itself.', " before using it."])
52 | elif(x is 6):
53 | p = pronoun(singular = 's');
54 | r = p + " " + verb(conjugation = p, time = 'simple_past') + " " + noun_phrase(definite = True, hasAdjective = False, singularity = "s", compound = True) + ' and ' + verb(conjugation = 'it', time = 'simple_past') + " " + random_noun_phrase() + "."
55 | return r[0].upper() + r[1:]
56 |
57 |
58 |
59 | """Pronoun1 verb(simple_future, pronoun1) noun_phrase(definite), that should verb(simple_present, it) noun_phrase(definite)!
60 |
61 | noun_phrase is adjective, verb(simple_present, you) noun_phrase so Pronoun can verb(simple_present, pronoun) noun_phrase(definite)!
62 |
63 | Pronoun verbify(need) to verb(simple_present, pronoun) noun_phrase(definite)!
64 |
65 | If pronoun1 verb(simple_present, pronoun1) noun_phrase(), pronoun1 can verb(simple_present) noun_phrase(definite) through/arround noun_phrase(definite)!"""
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | def verb(conjugation = 'it', time = 'simple_present', inverted = "no", v = verb_list.verb_list):
74 | """Generates one random verb in correct conjugation."""
75 | a = random.choice(v)
76 | if("r" in a[0]):
77 | if(time == "simple_present"):
78 | if(conjugation in ["i", "you", "we", "they"]):
79 | return a[1]
80 | elif(conjugation in ["it"]):
81 | if((a[1][-1] in ["s", "x"]) or (a[1][-2:-1] in ["sh", "ch", "ss"])):
82 | return a[1]+"es"
83 | elif(a[1][-1] in ["y"] and a[1][-2] not in ["a", "e", "i", "o", "u"]):
84 | return a[1][:-1]+"ies"
85 | else:
86 | return a[1]+"s"
87 |
88 | if(time == "simple_past"):
89 | if(a[1][-1] in "e"):
90 | return a[1]+"d"
91 | elif(a[1][-1] in ["y"] and a[1][-2] not in ["a", "e", "i", "o", "u"]):
92 | return a[1][:-1]+"ied"
93 | else:
94 | return a[1]+"ed"
95 |
96 | if(time == "simple_future"):
97 | return "will " + a[1]
98 |
99 | else:
100 | return a[2][time][conjugation]
101 |
102 | def random_noun_phrase():
103 | """Helping function for one completely random noun phrase from the default word list"""
104 | return noun_phrase(
105 | definite = random.choice([True, False]),
106 | hasAdjective = random.choice([True, False]),
107 | singularity = random.choice(["s", "m"]),
108 | compound = random.choice([True, False])
109 | )
110 |
111 | def noun_phrase(definite = True, hasAdjective = False, singularity = "s", compound = False, n = noun_list.noun_list, a = adjective_list.adjective_list):
112 | """gnerate a noun phrase ("determiner", "adjective", "noun")"""
113 | adj = ""
114 | if(hasAdjective is True):
115 | adj = adjective(a = a) + " "
116 | md = adj + noun(singularity = singularity, compound = compound, n = n)
117 | if(definite is True):
118 | return ("the " if singularity is "s" else "") + md
119 | else:
120 | #We know that this is not entirely correct but we didn't bother to do a speach analysis for every word ;p
121 | return (("a" + ("n " if (md[0] in ["a", "e", "i", "o", "u"]) else " ")) if singularity is "s" else "") + md
122 |
123 | def noun(singularity = "s", compound = False, n = noun_list.noun_list):
124 | """generate a radom noun or comound noun."""
125 | nb = [w for w in n if "b" in w[0]]
126 | ne = [w for w in n if "e" in w[0]]
127 | na = [w for w in n if "a" in w[0]]
128 |
129 | if(compound):
130 | if(singularity in "s"):
131 | #first word in compund has to be singular?
132 | return random.choice(nb)[1] + " " + random.choice([w[1] for w in ne if "s" in w[0]])
133 | if(singularity in "m"):
134 | x = random.choice(nb)[1] + " " + random.choice([w[1] for w in ne if "m" in w[0]])
135 | if((x[-1] in ["s", "x"]) or (x[-2:] in ["sh", "ch", "ss"])):
136 | return x + "es"
137 | elif(x[-1] in ["y"] and x[-2] not in ["a", "e", "i", "o", "u"]):
138 | return x[:-1] + "ies"
139 | else:
140 | return x + "s"
141 | else:
142 | if(singularity in "s"):
143 | return random.choice([w[1] for w in nb+ne+na if "s" in w[0]])
144 | if(singularity in "m"):
145 | x = random.choice([w[1] for w in nb+ne+na if "m" in w[0]])
146 | if((x[-1] in ["s", "x"]) or (x[-2:] in ["sh", "ch", "ss"])):
147 | return (x + "es")
148 | elif(x[-1] in ["y"] and x[-2] not in ["a", "e", "i", "o", "u"]):
149 | return (x[:-1] + "ies")
150 | else:
151 | return (x + "s")
152 |
153 | def pronoun(singular = True):
154 | """Genrate a random pronoun."""
155 | return(random.choice(["i", "you", "he", "she", "it"] if singular else ["we", "you", "they"]))
156 |
157 | def adjective(a = adjective_list.adjective_list):
158 | """Pick a random adjective."""
159 | return random.choice(a)[1]
160 |
161 | def main():
162 | n = 1
163 | format = "csv"
164 |
165 | if(len(sys.argv) >= 2):
166 | n = int(sys.argv[1])
167 |
168 | if(len(sys.argv) >= 3):
169 | format = sys.argv[2]
170 |
171 | if(len(sys.argv) >= 4):
172 | random.seed(sys.argv[3])
173 |
174 | if(format == "json"):
175 | print(get_json(n));
176 | elif(format == "csv"):
177 | print(get_csv(n))
178 |
179 | if __name__ == "__main__":
180 | main()
181 |
--------------------------------------------------------------------------------
/website/www/js/popper.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) Federico Zivolo 2019
3 | Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
4 | */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?pe:10===e?se:pe||se}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),y&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,D(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=C(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=H('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return j(e.instance.popper,e.styles),V(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&j(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),j(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue});
5 | //# sourceMappingURL=popper.min.js.map
6 |
--------------------------------------------------------------------------------
/website/www/js/bootstrap.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 | */
6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t li > .active",Wn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',qn=".dropdown-toggle",Mn="> .dropdown-menu .active",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(Pn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn="toast",Bn="bs.toast",Vn="."+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:"click.dismiss"+Vn,HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn},Xn="fade",$n="hide",Gn="show",Jn="showing",Zn={animation:"boolean",autohide:"boolean",delay:"number"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss="toast"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Zn}},{key:"Default",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,Object.defineProperty(t,"__esModule",{value:!0})});
7 | //# sourceMappingURL=bootstrap.min.js.map
--------------------------------------------------------------------------------
/website/www/js/jquery-3.4.1.min.js:
--------------------------------------------------------------------------------
1 | /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/