site

Website's source files.
git clone git://git.ryanmj.xyz/site.git
Log | Files | Refs | LICENSE

commit 7e6fd113e6de689abbff7cb70f24cc392f7bfdf8
parent 8dafde144361eba6873f5fc8a3996b1472e33a94
Author: Ryan Jeffrey <ryan@ryanmj.xyz>
Date:   Thu, 17 Feb 2022 00:07:25 -0800

Move to rails

Diffstat:
A.gitattributes | 7+++++++
M.gitignore | 132+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
D.gitmodules | 3---
A.ruby-version | 1+
AGemfile | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AGemfile.lock | 242+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DLICENSE | 674-------------------------------------------------------------------------------
AREADME.md | 24++++++++++++++++++++++++
ARakefile | 6++++++
DTODO.org | 3---
Aapp/assets/config/manifest.js | 4++++
Rpublic/files.html -> app/assets/images/.keep | 0
Aapp/assets/stylesheets/application.css | 15+++++++++++++++
Aapp/channels/application_cable/channel.rb | 4++++
Aapp/channels/application_cable/connection.rb | 4++++
Aapp/controllers/application_controller.rb | 2++
Rpublic/main.html -> app/controllers/concerns/.keep | 0
Aapp/helpers/application_helper.rb | 2++
Aapp/javascript/application.js | 3+++
Aapp/javascript/controllers/application.js | 9+++++++++
Aapp/javascript/controllers/hello_controller.js | 7+++++++
Aapp/javascript/controllers/index.js | 11+++++++++++
Aapp/jobs/application_job.rb | 7+++++++
Aapp/mailers/application_mailer.rb | 4++++
Aapp/models/application_record.rb | 3+++
Rpublic/files.html -> app/models/concerns/.keep | 0
Aapp/views/layouts/application.html.erb | 16++++++++++++++++
Aapp/views/layouts/mailer.html.erb | 13+++++++++++++
Aapp/views/layouts/mailer.text.erb | 1+
Aconfig.ru | 6++++++
Aconfig/application.rb | 22++++++++++++++++++++++
Aconfig/boot.rb | 4++++
Aconfig/cable.yml | 10++++++++++
Aconfig/credentials.yml.enc | 2++
Aconfig/database.yml | 25+++++++++++++++++++++++++
Aconfig/environment.rb | 5+++++
Aconfig/environments/development.rb | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/environments/production.rb | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/environments/test.rb | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/importmap.rb | 7+++++++
Aconfig/initializers/assets.rb | 12++++++++++++
Aconfig/initializers/content_security_policy.rb | 26++++++++++++++++++++++++++
Aconfig/initializers/filter_parameter_logging.rb | 8++++++++
Aconfig/initializers/inflections.rb | 16++++++++++++++++
Aconfig/initializers/permissions_policy.rb | 11+++++++++++
Aconfig/locales/en.yml | 33+++++++++++++++++++++++++++++++++
Aconfig/puma.rb | 43+++++++++++++++++++++++++++++++++++++++++++
Aconfig/routes.rb | 6++++++
Aconfig/storage.yml | 34++++++++++++++++++++++++++++++++++
Adb/seeds.rb | 7+++++++
Ddeps.edn | 1-
Dexternal/site-bkgs | 1-
Rpublic/files.html -> lib/assets/.keep | 0
Rpublic/files.html -> lib/tasks/.keep | 0
Rpublic/files.html -> log/.keep | 0
Dpackage-lock.json | 3094-------------------------------------------------------------------------------
Dpackage.json | 14--------------
Apublic/404.html | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apublic/422.html | 67+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apublic/500.html | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rpublic/files.html -> public/apple-touch-icon-precomposed.png | 0
Rpublic/files.html -> public/apple-touch-icon.png | 0
Dpublic/bkgs/index.html | 3---
Dpublic/css/emacs.css | 252-------------------------------------------------------------------------------
Dpublic/css/rgb.css | 663-------------------------------------------------------------------------------
Dpublic/css/terminal.css | 259-------------------------------------------------------------------------------
Rpublic/files.html -> public/favicon.ico | 0
Apublic/robots.txt | 1+
Dpublic/sneed.html | 114-------------------------------------------------------------------------------
Dshadow-cljs.edn | 22----------------------
Dsrc/main/rmjxyz/app.cljs | 253-------------------------------------------------------------------------------
Rpublic/files.html -> storage/.keep | 0
Atest/application_system_test_case.rb | 5+++++
Atest/channels/application_cable/connection_test.rb | 11+++++++++++
Rpublic/files.html -> test/controllers/.keep | 0
Rpublic/files.html -> test/helpers/.keep | 0
Rpublic/files.html -> test/integration/.keep | 0
Rpublic/files.html -> test/mailers/.keep | 0
Rpublic/files.html -> test/models/.keep | 0
Rpublic/files.html -> test/system/.keep | 0
Atest/test_helper.rb | 13+++++++++++++
Rpublic/files.html -> vendor/.keep | 0
Rpublic/files.html -> vendor/javascript/.keep | 0
Dviews/404.handlebars | 1-
Dviews/index.handlebars | 6------
Dviews/layouts/main.handlebars | 78------------------------------------------------------------------------------
Dviews/partials/comments/anime.handlebars | 42------------------------------------------
Dviews/partials/comments/choppa.handlebars | 6------
Dviews/partials/comments/france.handlebars | 7-------
Dviews/partials/comments/gigachad.handlebars | 17-----------------
Dviews/partials/comments/industrial_society.handlebars | 37-------------------------------------
Dviews/partials/comments/peter.handlebars | 10----------
Dviews/partials/comments/shrek.handlebars | 15---------------
Dviews/partials/comments/sneed.handlebars | 114-------------------------------------------------------------------------------
Dviews/partials/comments/tanku.handlebars | 24------------------------
Dviews/partials/comments/toem.handlebars | 38--------------------------------------
Dviews/partials/comments/troll.handlebars | 31-------------------------------
Dviews/partials/comments/virusexe.handlebars | 20--------------------
Dviews/partials/comments/windows.handlebars | 11-----------
Dviews/partials/lsTemplate.handlebars | 1-
Dviews/partials/terminalTemplate.handlebars | 23-----------------------
Dviews/post.handlebars | 2--
102 files changed, 1318 insertions(+), 5841 deletions(-)

diff --git a/.gitattributes b/.gitattributes @@ -0,0 +1,7 @@ +# See https://git-scm.com/docs/gitattributes for more about git attribute files. + +# Mark the database schema as having been generated. +db/schema.rb linguist-generated + +# Mark any vendored files as having been vendored. +vendor/* linguist-vendored diff --git a/.gitignore b/.gitignore @@ -208,4 +208,132 @@ dist # End of https://www.toptal.com/developers/gitignore/api/node # Typescript output directory. bin/ -views/partials/content- \ No newline at end of file +views/partials/content + + +# Created by https://www.toptal.com/developers/gitignore/api/rails,ruby +# Edit at https://www.toptal.com/developers/gitignore?templates=rails,ruby + +### Rails ### +*.rbc +capybara-*.html +.rspec +/db/*.sqlite3 +/db/*.sqlite3-journal +/db/*.sqlite3-[0-9]* +/public/system +/coverage/ +/spec/tmp +*.orig +rerun.txt +pickle-email-*.html + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# TODO Comment out this rule if you are OK with secrets being uploaded to the repo +config/initializers/secret_token.rb +config/master.key + +# Only include if you have production secrets in this file, which is no longer a Rails default +# config/secrets.yml + +# dotenv, dotenv-rails +# TODO Comment out these rules if environment variables can be committed +.env +.env*.local + +## Environment normalization: +/.bundle +/vendor/bundle + +# these should all be checked in to normalize the environment: +# Gemfile.lock, .ruby-version, .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +# if using bower-rails ignore default bower_components path bower.json files +/vendor/assets/bower_components +*.bowerrc +bower.json + +# Ignore pow environment settings +.powenv + +# Ignore Byebug command history file. +.byebug_history + +# Ignore node_modules +node_modules/ + +# Ignore precompiled javascript packs +/public/packs +/public/packs-test +/public/assets + +# Ignore yarn files +/yarn-error.log +yarn-debug.log* +.yarn-integrity + +# Ignore uploaded files in development +/storage/* +!/storage/.keep +/public/uploads + +### Ruby ### +*.gem +/.config +/InstalledFiles +/pkg/ +/spec/reports/ +/spec/examples.txt +/test/tmp/ +/test/version_tmp/ +/tmp/ + +# Used by dotenv library to load environment variables. +# .env + +# Ignore Byebug command history file. + +## Specific to RubyMotion: +.dat* +.repl_history +build/ +*.bridgesupport +build-iPhoneOS/ +build-iPhoneSimulator/ + +## Specific to RubyMotion (use of CocoaPods): +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# vendor/Pods/ + +## Documentation cache and generated files: +/.yardoc/ +/_yardoc/ +/doc/ +/rdoc/ + +/.bundle/ +/lib/bundler/man/ + +# for a library or gem, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# Gemfile.lock +# .ruby-version +# .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: + +# Used by RuboCop. Remote config files pulled in from inherit_from directive. +# .rubocop-https?--* + +# End of https://www.toptal.com/developers/gitignore/api/rails,ruby+ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "external/site-bkgs"] - path = external/site-bkgs - url = git@ryanmj.xyz:/var/www/git/site-bkgs.git diff --git a/.ruby-version b/.ruby-version @@ -0,0 +1 @@ +ruby-3.0.3 diff --git a/Gemfile b/Gemfile @@ -0,0 +1,73 @@ +source "https://rubygems.org" +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby "3.0.3" + +# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" +gem "rails", "~> 7.0.2", ">= 7.0.2.2" + +# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] +gem "sprockets-rails" + +# Use sqlite3 as the database for Active Record +gem "sqlite3", "~> 1.4" + +# Use the Puma web server [https://github.com/puma/puma] +gem "puma", "~> 5.0" + +# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] +gem "importmap-rails" + +# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] +gem "turbo-rails" + +# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] +gem "stimulus-rails" + +# Build JSON APIs with ease [https://github.com/rails/jbuilder] +gem "jbuilder" + +gem "rdoc" +# Use Redis adapter to run Action Cable in production +# gem "redis", "~> 4.0" + +# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] +# gem "kredis" + +# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] +# gem "bcrypt", "~> 3.1.7" + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] + +# Reduces boot times through caching; required in config/boot.rb +gem "bootsnap", require: false + +# Use Sass to process CSS +# gem "sassc-rails" + +# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] +# gem "image_processing", "~> 1.2" + +group :development, :test do + # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem + gem "debug", platforms: %i[ mri mingw x64_mingw ] +end + +group :development do + # Use console on exceptions pages [https://github.com/rails/web-console] + gem "web-console" + + # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler] + # gem "rack-mini-profiler" + + # Speed up commands on slow machines / big apps [https://github.com/rails/spring] + # gem "spring" +end + +group :test do + # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] + gem "capybara" + gem "selenium-webdriver" + gem "webdrivers" +end diff --git a/Gemfile.lock b/Gemfile.lock @@ -0,0 +1,242 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (7.0.2.2) + actionpack (= 7.0.2.2) + activesupport (= 7.0.2.2) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (7.0.2.2) + actionpack (= 7.0.2.2) + activejob (= 7.0.2.2) + activerecord (= 7.0.2.2) + activestorage (= 7.0.2.2) + activesupport (= 7.0.2.2) + mail (>= 2.7.1) + net-imap + net-pop + net-smtp + actionmailer (7.0.2.2) + actionpack (= 7.0.2.2) + actionview (= 7.0.2.2) + activejob (= 7.0.2.2) + activesupport (= 7.0.2.2) + mail (~> 2.5, >= 2.5.4) + net-imap + net-pop + net-smtp + rails-dom-testing (~> 2.0) + actionpack (7.0.2.2) + actionview (= 7.0.2.2) + activesupport (= 7.0.2.2) + rack (~> 2.0, >= 2.2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (7.0.2.2) + actionpack (= 7.0.2.2) + activerecord (= 7.0.2.2) + activestorage (= 7.0.2.2) + activesupport (= 7.0.2.2) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.0.2.2) + activesupport (= 7.0.2.2) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (7.0.2.2) + activesupport (= 7.0.2.2) + globalid (>= 0.3.6) + activemodel (7.0.2.2) + activesupport (= 7.0.2.2) + activerecord (7.0.2.2) + activemodel (= 7.0.2.2) + activesupport (= 7.0.2.2) + activestorage (7.0.2.2) + actionpack (= 7.0.2.2) + activejob (= 7.0.2.2) + activerecord (= 7.0.2.2) + activesupport (= 7.0.2.2) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (7.0.2.2) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.0) + public_suffix (>= 2.0.2, < 5.0) + bindex (0.8.1) + bootsnap (1.10.3) + msgpack (~> 1.2) + builder (3.2.4) + capybara (3.36.0) + addressable + matrix + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (>= 1.5, < 3.0) + xpath (~> 3.2) + childprocess (4.1.0) + concurrent-ruby (1.1.9) + crass (1.0.6) + debug (1.4.0) + irb (>= 1.3.6) + reline (>= 0.2.7) + digest (3.1.0) + erubi (1.10.0) + globalid (1.0.0) + activesupport (>= 5.0) + i18n (1.10.0) + concurrent-ruby (~> 1.0) + importmap-rails (1.0.2) + actionpack (>= 6.0.0) + railties (>= 6.0.0) + io-console (0.5.11) + io-wait (0.2.1) + irb (1.4.1) + reline (>= 0.3.0) + jbuilder (2.11.5) + actionview (>= 5.0.0) + activesupport (>= 5.0.0) + loofah (2.14.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (1.0.2) + matrix (0.4.2) + method_source (1.0.0) + mini_mime (1.1.2) + minitest (5.15.0) + msgpack (1.4.5) + net-imap (0.2.3) + digest + net-protocol + strscan + net-pop (0.1.1) + digest + net-protocol + timeout + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.1) + digest + net-protocol + timeout + nio4r (2.5.8) + nokogiri (1.13.1-x86_64-linux) + racc (~> 1.4) + psych (4.0.3) + stringio + public_suffix (4.0.6) + puma (5.6.2) + nio4r (~> 2.0) + racc (1.6.0) + rack (2.2.3) + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (7.0.2.2) + actioncable (= 7.0.2.2) + actionmailbox (= 7.0.2.2) + actionmailer (= 7.0.2.2) + actionpack (= 7.0.2.2) + actiontext (= 7.0.2.2) + actionview (= 7.0.2.2) + activejob (= 7.0.2.2) + activemodel (= 7.0.2.2) + activerecord (= 7.0.2.2) + activestorage (= 7.0.2.2) + activesupport (= 7.0.2.2) + bundler (>= 1.15.0) + railties (= 7.0.2.2) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.4.2) + loofah (~> 2.3) + railties (7.0.2.2) + actionpack (= 7.0.2.2) + activesupport (= 7.0.2.2) + method_source + rake (>= 12.2) + thor (~> 1.0) + zeitwerk (~> 2.5) + rake (13.0.6) + rdoc (6.4.0) + psych (>= 4.0.0) + regexp_parser (2.2.1) + reline (0.3.1) + io-console (~> 0.5) + rexml (3.2.5) + rubyzip (2.3.2) + selenium-webdriver (4.1.0) + childprocess (>= 0.5, < 5.0) + rexml (~> 3.2, >= 3.2.5) + rubyzip (>= 1.2.2) + sprockets (4.0.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + sqlite3 (1.4.2) + stimulus-rails (1.0.2) + railties (>= 6.0.0) + stringio (3.0.1) + strscan (3.0.1) + thor (1.2.1) + timeout (0.2.0) + turbo-rails (1.0.1) + actionpack (>= 6.0.0) + railties (>= 6.0.0) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) + web-console (4.2.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + webdrivers (5.0.0) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (~> 4.0) + websocket-driver (0.7.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.5.4) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + bootsnap + capybara + debug + importmap-rails + jbuilder + puma (~> 5.0) + rails (~> 7.0.2, >= 7.0.2.2) + rdoc + selenium-webdriver + sprockets-rails + sqlite3 (~> 1.4) + stimulus-rails + turbo-rails + tzinfo-data + web-console + webdrivers + +RUBY VERSION + ruby 3.0.3p157 + +BUNDLED WITH + 2.3.7 diff --git a/LICENSE b/LICENSE @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - <program> Copyright (C) <year> <name of author> - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -<https://www.gnu.org/licenses/>. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/README.md b/README.md @@ -0,0 +1,24 @@ +# README + +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... diff --git a/Rakefile b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative "config/application" + +Rails.application.load_tasks diff --git a/TODO.org b/TODO.org @@ -1,3 +0,0 @@ -* Recent git push part -* Several windows for different parts of the site. -* Move server to typescript diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js @@ -0,0 +1,4 @@ +//= link_tree ../images +//= link_directory ../stylesheets .css +//= link_tree ../../javascript .js +//= link_tree ../../../vendor/javascript .js diff --git a/public/files.html b/app/assets/images/.keep diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb @@ -0,0 +1,2 @@ +class ApplicationController < ActionController::Base +end diff --git a/public/main.html b/app/controllers/concerns/.keep diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/javascript/application.js b/app/javascript/application.js @@ -0,0 +1,3 @@ +// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails +import "@hotwired/turbo-rails" +import "controllers" diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js @@ -0,0 +1,9 @@ +import { Application } from "@hotwired/stimulus" + +const application = Application.start() + +// Configure Stimulus development experience +application.debug = false +window.Stimulus = application + +export { application } diff --git a/app/javascript/controllers/hello_controller.js b/app/javascript/controllers/hello_controller.js @@ -0,0 +1,7 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + connect() { + this.element.textContent = "Hello World!" + } +} diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js @@ -0,0 +1,11 @@ +// Import and register all your controllers from the importmap under controllers/* + +import { application } from "controllers/application" + +// Eager load all controllers defined in the import map under controllers/**/*_controller +import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading" +eagerLoadControllersFrom("controllers", application) + +// Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!) +// import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading" +// lazyLoadControllersFrom("controllers", application) diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb @@ -0,0 +1,7 @@ +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: "from@example.com" + layout "mailer" +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + primary_abstract_class +end diff --git a/public/files.html b/app/models/concerns/.keep diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<html> + <head> + <title>Site</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + <%= javascript_importmap_tags %> + </head> + + <body> + <%= yield %> + </body> +</html> diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <style> + /* Email styles need to be inline */ + </style> + </head> + + <body> + <%= yield %> + </body> +</html> diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/config.ru b/config.ru @@ -0,0 +1,6 @@ +# This file is used by Rack-based servers to start the application. + +require_relative "config/environment" + +run Rails.application +Rails.application.load_server diff --git a/config/application.rb b/config/application.rb @@ -0,0 +1,22 @@ +require_relative "boot" + +require "rails/all" + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Site + class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 7.0 + + # Configuration for the application, engines, and railties goes here. + # + # These settings can be overridden in specific environments using the files + # in config/environments, which are processed later. + # + # config.time_zone = "Central Time (US & Canada)" + # config.eager_load_paths << Rails.root.join("extras") + end +end diff --git a/config/boot.rb b/config/boot.rb @@ -0,0 +1,4 @@ +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "bundler/setup" # Set up gems listed in the Gemfile. +require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: test + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: site_production diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc @@ -0,0 +1 @@ +pBAyj0g+QiKwaL3oxNA/2vxKcU9SRG29A13tvXoIKKXanCqU/kTz8jqzEtSm2aJw6sBmGihIGWa+8ZI2C33Ohm4BBYQE6tOkvu5WZVY6zQD1hpA4WRaQVBjDzRRLu8VpXWMDsX312gqfNCAr/WEunsO0m/HPveHS1E/EjwTm96mY2qyaQhO3eU1MkcZRpLMGv7ISY+3LAM7MNnJwPpeJnXHGpRWLyJZAxUzdRotPulvi82IY1deQArzntMiUasM9/BcqHaLuJF2q+u2h7Ihp/7s5uhr6cBhhwMRwUT5I4dVekcy7omnsWCv+N8uC8J1F7KvddyuyOGksCjPd4p7UMVhPy9qRMEOYdwFeC8iY3kxEFu24A6tXHNE0hwC5SsMvTgLfG2JjPzVmhgrmcP8s5jUTGUvDC0205zo+--U3zovYDHpfB/W6iV--kcZ0ib2YC2KqsWDTu0mj6Q==+ \ No newline at end of file diff --git a/config/database.yml b/config/database.yml @@ -0,0 +1,25 @@ +# SQLite. Versions 3.8.0 and up are supported. +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem "sqlite3" +# +default: &default + adapter: sqlite3 + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/config/environment.rb b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative "application" + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb @@ -0,0 +1,70 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded any time + # it changes. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable server timing + config.server_timing = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join("tmp/caching-dev.txt").exist? + config.action_controller.perform_caching = true + config.action_controller.enable_fragment_cache_logging = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true + + # Uncomment if you wish to allow Action Cable access from any origin. + # config.action_cable.disable_request_forgery_protection = true +end diff --git a/config/environments/production.rb b/config/environments/production.rb @@ -0,0 +1,93 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? + + # Compress CSS using a preprocessor. + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.asset_host = "http://assets.example.com" + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache + # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain. + # config.action_cable.mount_path = nil + # config.action_cable.url = "wss://example.com/cable" + # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Include generic and useful information about system operation, but avoid logging too much + # information to avoid inadvertent exposure of personally identifiable information (PII). + config.log_level = :info + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment). + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "site_production" + + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Don't log any deprecations. + config.active_support.report_deprecations = false + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require "syslog/logger" + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name") + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb @@ -0,0 +1,60 @@ +require "active_support/core_ext/integer/time" + +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Turn false under Spring and add config.action_view.cache_template_loading = true. + config.cache_classes = true + + # Eager loading loads your whole application. When running a single test locally, + # this probably isn't necessary. It's a good idea to do in a continuous integration + # system, or in some way before deploying your code. + config.eager_load = ENV["CI"].present? + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + "Cache-Control" => "public, max-age=#{1.hour.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + config.cache_store = :null_store + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory. + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raise exceptions for disallowed deprecations. + config.active_support.disallowed_deprecation = :raise + + # Tell Active Support which deprecation messages to disallow. + config.active_support.disallowed_deprecation_warnings = [] + + # Raises error for missing translations. + # config.i18n.raise_on_missing_translations = true + + # Annotate rendered view with file names. + # config.action_view.annotate_rendered_view_with_filenames = true +end diff --git a/config/importmap.rb b/config/importmap.rb @@ -0,0 +1,7 @@ +# Pin npm packages by running ./bin/importmap + +pin "application", preload: true +pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true +pin "@hotwired/stimulus", to: "stimulus.min.js", preload: true +pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true +pin_all_from "app/javascript/controllers", under: "controllers" diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb @@ -0,0 +1,12 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = "1.0" + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb @@ -0,0 +1,26 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.configure do +# config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end +# +# # Generate session nonces for permitted importmap and inline scripts +# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s } +# config.content_security_policy_nonce_directives = %w(script-src) +# +# # Report CSP violations to a specified URI. See: +# # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# # config.content_security_policy_report_only = true +# end diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# Configure parameters to be filtered from the log file. Use this to limit dissemination of +# sensitive information. See the ActiveSupport::ParameterFilter documentation for supported +# notations and behaviors. +Rails.application.config.filter_parameters += [ + :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn +] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, "\\1en" +# inflect.singular /^(ox)en/i, "\\1" +# inflect.irregular "person", "people" +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym "RESTful" +# end diff --git a/config/initializers/permissions_policy.rb b/config/initializers/permissions_policy.rb @@ -0,0 +1,11 @@ +# Define an application-wide HTTP permissions policy. For further +# information see https://developers.google.com/web/updates/2018/06/feature-policy +# +# Rails.application.config.permissions_policy do |f| +# f.camera :none +# f.gyroscope :none +# f.microphone :none +# f.usb :none +# f.fullscreen :self +# f.payment :self, "https://secure.example.com" +# end diff --git a/config/locales/en.yml b/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t "hello" +# +# In views, this is aliased to just `t`: +# +# <%= t("hello") %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# "true": "foo" +# +# To learn more, please read the Rails Internationalization guide +# available at https://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb @@ -0,0 +1,43 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies the `worker_timeout` threshold that Puma will use to wait before +# terminating a worker in development environments. +# +worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development" + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked web server processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +# preload_app! + +# Allow puma to be restarted by `bin/rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb @@ -0,0 +1,6 @@ +Rails.application.routes.draw do + # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html + + # Defines the root path route ("/") + # root "articles#index" +end diff --git a/config/storage.yml b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket-<%= Rails.env %> + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket-<%= Rails.env %> + +# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name-<%= Rails.env %> + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/db/seeds.rb b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }]) +# Character.create(name: "Luke", movie: movies.first) diff --git a/deps.edn b/deps.edn @@ -1 +0,0 @@ -{:deps {org.clojure/clojurescript {:mvn/version "1.10.758"}}} diff --git a/external/site-bkgs b/external/site-bkgs @@ -1 +0,0 @@ -Subproject commit f69cbd5fa41e155cff421787a3b6370e89406eb3 diff --git a/public/files.html b/lib/assets/.keep diff --git a/public/files.html b/lib/tasks/.keep diff --git a/public/files.html b/log/.keep diff --git a/package-lock.json b/package-lock.json @@ -1,3094 +0,0 @@ -{ - "name": "site", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "express": "^4.17.2", - "express-handlebars": "^6.0.2", - "handlebars": "^4.7.7" - }, - "devDependencies": { - "@types/express": "^4.17.13", - "@types/express-handlebars": "^6.0.0", - "@types/node": "^17.0.10", - "shadow-cljs": "^2.16.12", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-handlebars": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/express-handlebars/-/express-handlebars-6.0.0.tgz", - "integrity": "sha512-L0G9j7xc9k6FavI9CCUueJf7YHGE5b+gXV4NGGcObTbLqvZ2TwebEsrFb1b8NEc2kDf22Mu+jCDPjvWzfCS0Gw==", - "deprecated": "This is a stub types definition. express-handlebars provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "express-handlebars": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", - "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-handlebars": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.2.tgz", - "integrity": "sha512-PXNT4oDHIDbg0/QBXPwf2laTi+eqErEJ3Ldc7Ky6WHpr7xJMoltsnPM7lScjN6sWZWaIPNdDYJvV+6P9cnv1pg==", - "dependencies": { - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "handlebars": "^4.7.7" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shadow-cljs": { - "version": "2.16.12", - "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.16.12.tgz", - "integrity": "sha512-6JqOhN5X3n0IkxA/gSUcZ1lImwcW1LmpgzlaBDOC/u/pIysdNm0tiOxpOTEnExl9nKZBS/EYS7bXIIInywPJUA==", - "dev": true, - "dependencies": { - "node-libs-browser": "^2.2.1", - "readline-sync": "^1.4.7", - "shadow-cljs-jar": "1.3.2", - "source-map-support": "^0.4.15", - "which": "^1.3.1", - "ws": "^7.4.6" - }, - "bin": { - "shadow-cljs": "cli/runner.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/shadow-cljs-jar": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", - "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", - "dev": true - }, - "node_modules/shadow-cljs/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shadow-cljs/node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/uglify-js": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", - "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - } - }, - "dependencies": { - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-handlebars": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/express-handlebars/-/express-handlebars-6.0.0.tgz", - "integrity": "sha512-L0G9j7xc9k6FavI9CCUueJf7YHGE5b+gXV4NGGcObTbLqvZ2TwebEsrFb1b8NEc2kDf22Mu+jCDPjvWzfCS0Gw==", - "dev": true, - "requires": { - "express-handlebars": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", - "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "requires": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "express-handlebars": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-6.0.2.tgz", - "integrity": "sha512-PXNT4oDHIDbg0/QBXPwf2laTi+eqErEJ3Ldc7Ky6WHpr7xJMoltsnPM7lScjN6sWZWaIPNdDYJvV+6P9cnv1pg==", - "requires": { - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "handlebars": "^4.7.7" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - }, - "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "requires": { - "mime-db": "1.51.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "readline-sync": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", - "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", - "dev": true - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shadow-cljs": { - "version": "2.16.12", - "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.16.12.tgz", - "integrity": "sha512-6JqOhN5X3n0IkxA/gSUcZ1lImwcW1LmpgzlaBDOC/u/pIysdNm0tiOxpOTEnExl9nKZBS/EYS7bXIIInywPJUA==", - "dev": true, - "requires": { - "node-libs-browser": "^2.2.1", - "readline-sync": "^1.4.7", - "shadow-cljs-jar": "1.3.2", - "source-map-support": "^0.4.15", - "which": "^1.3.1", - "ws": "^7.4.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - } - } - }, - "shadow-cljs-jar": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz", - "integrity": "sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uglify-js": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", - "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", - "optional": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true, - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - } - } -} diff --git a/package.json b/package.json @@ -1,14 +0,0 @@ -{ - "dependencies": { - "express": "^4.17.2", - "express-handlebars": "^6.0.2", - "handlebars": "^4.7.7" - }, - "devDependencies": { - "@types/express": "^4.17.13", - "@types/express-handlebars": "^6.0.0", - "@types/node": "^17.0.10", - "shadow-cljs": "^2.16.12", - "source-map-support": "^0.5.21" - } -} diff --git a/public/404.html b/public/404.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<head> + <title>The page you were looking for doesn't exist (404)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/404.html --> + <div class="dialog"> + <div> + <h1>The page you were looking for doesn't exist.</h1> + <p>You may have mistyped the address or the page may have moved.</p> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/public/422.html b/public/422.html @@ -0,0 +1,67 @@ +<!DOCTYPE html> +<html> +<head> + <title>The change you wanted was rejected (422)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/422.html --> + <div class="dialog"> + <div> + <h1>The change you wanted was rejected.</h1> + <p>Maybe you tried to change something you didn't have access to.</p> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/public/500.html b/public/500.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> +<head> + <title>We're sorry, but something went wrong (500)</title> + <meta name="viewport" content="width=device-width,initial-scale=1"> + <style> + .rails-default-error-page { + background-color: #EFEFEF; + color: #2E2F30; + text-align: center; + font-family: arial, sans-serif; + margin: 0; + } + + .rails-default-error-page div.dialog { + width: 95%; + max-width: 33em; + margin: 4em auto 0; + } + + .rails-default-error-page div.dialog > div { + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #BBB; + border-top: #B00100 solid 4px; + border-top-left-radius: 9px; + border-top-right-radius: 9px; + background-color: white; + padding: 7px 12% 0; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + + .rails-default-error-page h1 { + font-size: 100%; + color: #730E15; + line-height: 1.5em; + } + + .rails-default-error-page div.dialog > p { + margin: 0 0 1em; + padding: 1em; + background-color: #F7F7F7; + border: 1px solid #CCC; + border-right-color: #999; + border-left-color: #999; + border-bottom-color: #999; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-top-color: #DADADA; + color: #666; + box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17); + } + </style> +</head> + +<body class="rails-default-error-page"> + <!-- This file lives in public/500.html --> + <div class="dialog"> + <div> + <h1>We're sorry, but something went wrong.</h1> + </div> + <p>If you are the application owner check the logs for more information.</p> + </div> +</body> +</html> diff --git a/public/files.html b/public/apple-touch-icon-precomposed.png diff --git a/public/files.html b/public/apple-touch-icon.png diff --git a/public/bkgs/index.html b/public/bkgs/index.html @@ -1,3 +0,0 @@ -<ul> - <li><a href="/bkgs/movementInSquares">Movement in Squares by Bridget Riley</a></li> -</ul> diff --git a/public/css/emacs.css b/public/css/emacs.css @@ -1,252 +0,0 @@ -@import './rgb.css'; - -table { - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - width: 100%; - justify-content: left; -} - -h5 { - color: #fff; - font-size: 1.1em; -} - -code { - font-size: 1em; -} - -.src { - color: #00FF7F; -} - -.org-ol { - color: #FFFFFF; - font-size: 1.2em; -} - -pre { - color: #00FFFF; -} - - -.termout { - white-space: pre-wrap; -} - -table p { - padding: 0; - margin: 0; -} - -h4 { - color: #00FF88; -} - -td { - color: #00FF88; - padding: 0; -} - -th { - color: #00FFFF; - padding: 0; -} - -tr td:nth-of-type(1) { - width: 20%; -} - -tr td:nth-of-type(2) { - text-align: left; - justify-content: left; - margin-left: 0.2em; - float:left; - width: 80% -} - - -.emacs { - background-image:url(../res/bg.png); - border: 0.2em solid #285577; - /* positioning */ - margin: 0 auto; - margin-top: 75px; - width: 75%; -} - -#gnu-emacs { - width: 2%; -} - -.ebar { - height: 1.3em; - background-color: #CCCCCC; - padding: 0; - margin : 0; - width: 100%; -} - -.ebar-top { - border: 0.15em solid #F5F5F5; -} - -.ebar-bot { - border: 0.15em solid #7A7A7A; -} - -.ebar p { - padding: 0; - margin: 0; - font-size: 1.2em; - display: inline; - color: #00008B; -} - - -.ebar .title-red { - padding: 0; - margin: 0; - font-size: 0.8em; - color: #B22; -} - - -body { - font-family: Inconsolata, "Courier New", monospace; - -webkit-font-smoothing : none; - background-color: #C8C8C8; - background-image: url("../res/ui-back.png"); - -moz-font-smoothing: never; -} - -h1 { - font-size: 4em; - color: #b0c4de; - text-align: center; -} - -title { - color: #00FFFF; -} - -h2 { - color: #00FF7F; - font-size: 26pt; -} - -h3 { font-size: 16pt; color: #B0C4DE; text-decoration: underline; } - - -p { - color: #fff; - font-size: 16pt; - -moz-font-smoothing: never; -} - -.headpar { - color:#00FFFF; -} - -.headital { - color: #FFFF00; -} - -a { - font-weight: bold; - text-decoration: none; - font-size: 16pt; -} - - /* unvisited link */ -a:link { - color: #00FFFF; -} - -/* visited link */ -a:visited { - color: #e916d5; -} - - -/* selected link */ -a:active { - color: blue; -} - -a:hover { - text-decoration: underline; -} - -hr.vertical { - height:100%; /* you might need some positioning for this to work, see other questions about 100% height */ - width:0; - border:1px solid black; -} - -.seperator { - height: 100%; - width: 1px; - background: black; - top: 0; - bottom: 0; - position: absolute; - left: 50%; -} - -.hddr { - width: 50%; - display: table-cell; - border:1px solid grey; -} - -.fttr { - margin-top: auto; - margin: auto; - margin-top: 75px; - width: 75%; -} - -ul { -} - -ul li { - color: white; - font-size: 1.2em; - margin-left: 2em; -} - -.code { - display: inline; -} - -#links { - font-size: large; - text-align: center; - margin: auto; - max-width: 700px; - padding: 5px; - border-radius: 10px; -} - -#links img { - height: 1.25em; -} - -a:hover img { - background: rgba(0, 0, 0, 0); - transition: .5s; - transform: scale(2, 2); -} - -.ebar .last { - margin-right: 0%; - margin-left: 30%; - display: inline; -} - - -h6 { - font-size: 16pt; -} diff --git a/public/css/rgb.css b/public/css/rgb.css @@ -1,663 +0,0 @@ -/* X11 colors (snake_case version) with some additions at the end */ - -:root { - --black:#000000; - --gray0:#000000; - --grey0:#000000; - --gray1:#030303; - --grey1:#030303; - --gray2:#050505; - --grey2:#050505; - --gray3:#080808; - --grey3:#080808; - --navy_blue:#000080; - --navy:#000080; - --gray4:#0a0a0a; - --grey4:#0a0a0a; - --dark_blue:#00008b; - --blue4:#00008b; - --gray5:#0d0d0d; - --grey5:#0d0d0d; - --medium_blue:#0000cd; - --blue3:#0000cd; - --gray6:#0f0f0f; - --grey6:#0f0f0f; - --blue2:#0000ee; - --gray7:#121212; - --grey7:#121212; - --blue1:#0000ff; - --blue:#0000ff; - --gray8:#141414; - --grey8:#141414; - --gray9:#171717; - --grey9:#171717; - --gray10:#1a1a1a; - --grey10:#1a1a1a; - --gray11:#1c1c1c; - --grey11:#1c1c1c; - --dark_red:#8b0000; - --red4:#8b0000; - --gray12:#1f1f1f; - --grey12:#1f1f1f; - --midnight_blue:#191970; - --gray13:#212121; - --grey13:#212121; - --gray14:#242424; - --grey14:#242424; - --gray15:#262626; - --grey15:#262626; - --dark_magenta:#8b008b; - --magenta4:#8b008b; - --gray16:#292929; - --grey16:#292929; - --deep_pink4:#8b0a50; - --gray17:#2b2b2b; - --grey17:#2b2b2b; - --red3:#cd0000; - --gray18:#2e2e2e; - --grey18:#2e2e2e; - --dark_violet:#9400d3; - --purple4:#551a8b; - --gray19:#303030; - --grey19:#303030; - --firebrick4:#8b1a1a; - --red2:#ee0000; - --gray20:#333333; - --grey20:#333333; - --gray21:#363636; - --grey21:#363636; - --red1:#ff0000; - --red:#ff0000; - --gray22:#383838; - --grey22:#383838; - --orange_red4:#8b2500; - --dark_orchid4:#68228b; - --maroon4:#8b1c62; - --brown4:#8b2323; - --magenta3:#cd00cd; - --gray23:#3b3b3b; - --grey23:#3b3b3b; - --violet_red4:#8b2252; - --gray24:#3d3d3d; - --grey24:#3d3d3d; - --deep_pink3:#cd1076; - --gray25:#404040; - --grey25:#404040; - --royal_blue4:#27408b; - --firebrick:#b22222; - --gray26:#424242; - --grey26:#424242; - --medium_violet_red:#c71585; - --magenta2:#ee00ee; - --slate_blue4:#473c8b; - --brown:#a52a2a; - --purple3:#7d26cd; - --dark_slate_blue:#483d8b; - --gray27:#454545; - --grey27:#454545; - --dodger_blue4:#104e8b; - --tomato4:#8b3626; - --gray28:#474747; - --grey28:#474747; - --dark_green:#006400; - --dark_slate_gray:#2f4f4f; - --dark_slate_grey:#2f4f4f; - --magenta1:#ff00ff; - --magenta:#ff00ff; - --deep_pink2:#ee1289; - --firebrick3:#cd2626; - --gray29:#4a4a4a; - --grey29:#4a4a4a; - --purple:#a020f0; - --indian_red4:#8b3a3a; - --medium_orchid4:#7a378b; - --blue_violet:#8a2be2; - --gray30:#4d4d4d; - --grey30:#4d4d4d; - --coral4:#8b3e2f; - --violet_red:#d02090; - --hot_pink4:#8b3a62; - --maroon:#b03060; - --dark_orange4:#8b4500; - --gray31:#4f4f4f; - --grey31:#4f4f4f; - --deep_pink1:#ff1493; - --deep_pink:#ff1493; - --purple2:#912cee; - --saddle_brown:#8b4513; - --chocolate4:#8b4513; - --medium_purple4:#5d478b; - --gray32:#525252; - --grey32:#525252; - --orange_red3:#cd3700; - --dark_orchid:#9932cc; - --sienna4:#8b4726; - --dark_orchid3:#9a32cd; - --maroon3:#cd2990; - --brown3:#cd3333; - --gray33:#545454; - --grey33:#545454; - --deep_sky_blue4:#00688b; - --firebrick2:#ee2c2c; - --purple1:#9b30ff; - --gray34:#575757; - --grey34:#575757; - --pale_violet_red4:#8b475d; - --violet_red3:#cd3278; - --salmon4:#8b4c39; - --gray35:#595959; - --grey35:#595959; - --orchid4:#8b4789; - --gray36:#5c5c5c; - --grey36:#5c5c5c; - --firebrick1:#ff3030; - --steel_blue4:#36648b; - --orange4:#8b5a00; - --gray37:#5e5e5e; - --grey37:#5e5e5e; - --royal_blue3:#3a5fcd; - --sienna:#a0522d; - --orange_red2:#ee4000; - --dark_orchid2:#b23aee; - --light_salmon4:#8b5742; - --maroon2:#ee30a7; - --gray38:#616161; - --grey38:#616161; - --tan4:#8b5a2b; - --brown2:#ee3b3b; - --dark_olive_green:#556b2f; - --gray39:#636363; - --grey39:#636363; - --green4:#008b00; - --slate_blue3:#6959cd; - --slate_blue:#6a5acd; - --gray40:#666666; - --grey40:#666666; - --violet_red2:#ee3a8c; - --dark_goldenrod4:#8b6508; - --dodger_blue3:#1874cd; - --dark_orchid1:#bf3eff; - --orange_red1:#ff4500; - --orange_red:#ff4500; - --tomato3:#cd4f39; - --maroon1:#ff34b3; - --spring_green4:#008b45; - --brown1:#ff4040; - --light_pink4:#8b5f65; - --dim_gray:#696969; - --dim_grey:#696969; - --gray41:#696969; - --grey41:#696969; - --royal_blue:#4169e1; - --sky_blue4:#4a708b; - --turquoise4:#00868b; - --goldenrod4:#8b6914; - --gray42:#6b6b6b; - --grey42:#6b6b6b; - --pink4:#8b636c; - --forest_green:#228b22; - --violet_red1:#ff3e96; - --dark_cyan:#008b8b; - --cyan4:#008b8b; - --gray43:#6e6e6e; - --grey43:#6e6e6e; - --royal_blue2:#436eee; - --indian_red3:#cd5555; - --medium_orchid3:#b452cd; - --gray44:#707070; - --grey44:#707070; - --rosy_brown4:#8b6969; - --plum4:#8b668b; - --gold4:#8b7500; - --coral3:#cd5b45; - --chartreuse4:#458b00; - --gray45:#737373; - --grey45:#737373; - --sea_green4:#2e8b57; - --sea_green:#2e8b57; - --medium_orchid:#ba55d3; - --indian_red:#cd5c5c; - --dark_orange3:#cd6600; - --slate_blue2:#7a67ee; - --gray46:#757575; - --grey46:#757575; - --medium_slate_blue:#7b68ee; - --burlywood4:#8b7355; - --royal_blue1:#4876ff; - --medium_purple3:#8968cd; - --light_sky_blue4:#607b8b; - --chocolate3:#cd661d; - --dodger_blue2:#1c86ee; - --gray47:#787878; - --grey47:#787878; - --steel_blue:#4682b4; - --slate_gray4:#6c7b8b; - --tomato2:#ee5c42; - --light_steel_blue4:#6e7b8b; - --chocolate:#d2691e; - --peach_puff4:#8b7765; - --gray48:#7a7a7a; - --grey48:#7a7a7a; - --sienna3:#cd6839; - --aquamarine4:#458b74; - --hot_pink3:#cd6090; - --navajo_white4:#8b795e; - --pale_green4:#548b54; - --cadet_blue4:#53868b; - --olive_drab4:#698b22; - --deep_sky_blue3:#009acd; - --gray49:#7d7d7d; - --grey49:#7d7d7d; - --slate_blue1:#836fff; - --slate_gray:#708090; - --slate_grey:#708090; - --light_blue4:#68838b; - --light_slate_blue:#8470ff; - --bisque4:#8b7d6b; - --olive_drab:#6b8e23; - --dark_slate_gray4:#528b8b; - --gray50:#7f7f7f; - --grey50:#7f7f7f; - --wheat4:#8b7e66; - --medium_purple:#9370db; - --dark_olive_green4:#6e8b3d; - --light_goldenrod4:#8b814c; - --thistle4:#8b7b8b; - --dodger_blue1:#1e90ff; - --dodger_blue:#1e90ff; - --misty_rose4:#8b7d7b; - --pale_violet_red3:#cd6889; - --indian_red2:#ee6363; - --yellow4:#8b8b00; - --dark_sea_green4:#698b69; - --medium_orchid2:#d15fee; - --salmon3:#cd7054; - --gray51:#828282; - --grey51:#828282; - --tomato1:#ff6347; - --tomato:#ff6347; - --khaki4:#8b864e; - --pale_turquoise4:#668b8b; - --antique_white4:#8b8378; - --coral2:#ee6a50; - --lavender_blush4:#8b8386; - --gray52:#858585; - --grey52:#858585; - --orchid3:#cd69c9; - --light_slate_gray:#778899; - --light_slate_grey:#778899; - --seashell4:#8b8682; - --dark_orange2:#ee7600; - --gray53:#878787; - --grey53:#878787; - --light_cyan4:#7a8b8b; - --cornsilk4:#8b8878; - --lemon_chiffon4:#8b8970; - --dark_goldenrod:#b8860b; - --honeydew4:#838b83; - --pale_violet_red:#db7093; - --azure4:#838b8b; - --chocolate2:#ee7621; - --snow4:#8b8989; - --steel_blue3:#4f94cd; - --medium_purple2:#9f79ee; - --indian_red1:#ff6a6a; - --light_yellow4:#8b8b7a; - --gray54:#8a8a8a; - --grey54:#8a8a8a; - --ivory4:#8b8b83; - --hot_pink2:#ee6aa7; - --orange3:#cd8500; - --medium_orchid1:#e066ff; - --gray55:#8c8c8c; - --grey55:#8c8c8c; - --orchid:#da70d6; - --sienna2:#ee7942; - --coral1:#ff7256; - --hot_pink:#ff69b4; - --light_salmon3:#cd8162; - --gray56:#8f8f8f; - --grey56:#8f8f8f; - --peru:#cd853f; - --tan3:#cd853f; - --deep_sky_blue2:#00b2ee; - --cadet_blue:#5f9ea0; - --cornflower_blue:#6495ed; - --gray57:#919191; - --grey57:#919191; - --dark_orange1:#ff7f00; - --hot_pink1:#ff6eb4; - --light_sea_green:#20b2aa; - --green3:#00cd00; - --chocolate1:#ff7f24; - --medium_purple1:#ab82ff; - --gray58:#949494; - --grey58:#949494; - --pale_violet_red2:#ee799f; - --medium_sea_green:#3cb371; - --gray59:#969696; - --grey59:#969696; - --salmon2:#ee8262; - --coral:#ff7f50; - --dark_goldenrod3:#cd950c; - --light_coral:#f08080; - --sienna1:#ff8247; - --rosy_brown:#bc8f8f; - --salmon:#fa8072; - --gray60:#999999; - --grey60:#999999; - --spring_green3:#00cd66; - --dark_orange:#ff8c00; - --light_pink3:#cd8c95; - --orchid2:#ee7ae9; - --deep_sky_blue1:#00bfff; - --deep_sky_blue:#00bfff; - --turquoise3:#00c5cd; - --gray61:#9c9c9c; - --grey61:#9c9c9c; - --sky_blue3:#6ca6cd; - --goldenrod3:#cd9b1d; - --gray62:#9e9e9e; - --grey62:#9e9e9e; - --pink3:#cd919e; - --pale_violet_red1:#ff82ab; - --steel_blue2:#5cacee; - --orange2:#ee9a00; - --violet:#ee82ee; - --lime_green:#32cd32; - --gray63:#a1a1a1; - --grey63:#a1a1a1; - --cyan3:#00cdcd; - --salmon1:#ff8c69; - --dark_turquoise:#00ced1; - --gray64:#a3a3a3; - --grey64:#a3a3a3; - --light_salmon2:#ee9572; - --dark_salmon:#e9967a; - --rosy_brown3:#cd9b9b; - --plum3:#cd96cd; - --orchid1:#ff83fa; - --gray65:#a6a6a6; - --grey65:#a6a6a6; - --tan2:#ee9a49; - --goldenrod:#daa520; - --gold3:#cdad00; - --gray66:#a8a8a8; - --grey66:#a8a8a8; - --chartreuse3:#66cd00; - --dark_gray:#a9a9a9; - --dark_grey:#a9a9a9; - --sea_green3:#43cd80; - --green2:#00ee00; - --gray67:#ababab; - --grey67:#ababab; - --steel_blue1:#63b8ff; - --orange1:#ffa500; - --orange:#ffa500; - --gray68:#adadad; - --grey68:#adadad; - --burlywood3:#cdaa7d; - --light_sky_blue3:#8db6cd; - --dark_sea_green:#8fbc8f; - --dark_goldenrod2:#eead0e; - --gray69:#b0b0b0; - --grey69:#b0b0b0; - --sandy_brown:#f4a460; - --plum:#dda0dd; - --light_salmon1:#ffa07a; - --light_salmon:#ffa07a; - --tan1:#ffa54f; - --light_steel_blue3:#a2b5cd; - --spring_green2:#00ee76; - --slate_gray3:#9fb6cd; - --dark_khaki:#bdb76b; - --light_pink2:#eea2ad; - --gray70:#b3b3b3; - --grey70:#b3b3b3; - --peach_puff3:#cdaf95; - --medium_turquoise:#48d1cc; - --medium_aquamarine:#66cdaa; - --aquamarine3:#66cdaa; - --turquoise2:#00e5ee; - --gray71:#b5b5b5; - --grey71:#b5b5b5; - --sky_blue2:#7ec0ee; - --cadet_blue3:#7ac5cd; - --navajo_white3:#cdb38b; - --goldenrod2:#eeb422; - --pale_green3:#7ccd7c; - --green1:#00ff00; - --green:#00ff00; - --olive_drab3:#9acd32; - --yellow_green:#9acd32; - --tan:#d2b48c; - --gray72:#b8b8b8; - --grey72:#b8b8b8; - --pink2:#eea9b8; - --light_blue3:#9ac0cd; - --bisque3:#cdb79e; - --gray73:#bababa; - --grey73:#bababa; - --dark_slate_gray3:#79cdcd; - --cyan2:#00eeee; - --wheat3:#cdba96; - --misty_rose3:#cdb7b5; - --dark_olive_green3:#a2cd5a; - --light_goldenrod3:#cdbe70; - --dark_goldenrod1:#ffb90f; - --thistle3:#cdb5cd; - --burlywood:#deb887; - --turquoise:#40e0d0; - --gray74:#bdbdbd; - --grey74:#bdbdbd; - --medium_spring_green:#00fa9a; - --gray:#bebebe; - --grey:#bebebe; - --yellow3:#cdcd00; - --dark_sea_green3:#9bcd9b; - --gray75:#bfbfbf; - --grey75:#bfbfbf; - --spring_green1:#00ff7f; - --spring_green:#00ff7f; - --light_pink1:#ffaeb9; - --plum2:#eeaeee; - --rosy_brown2:#eeb4b4; - --sky_blue:#87ceeb; - --pale_turquoise3:#96cdcd; - --khaki3:#cdc673; - --antique_white3:#cdc0b0; - --light_steel_blue:#b0c4de; - --turquoise1:#00f5ff; - --gray76:#c2c2c2; - --grey76:#c2c2c2; - --light_sky_blue:#87cefa; - --gold2:#eec900; - --sky_blue1:#87ceff; - --goldenrod1:#ffc125; - --chartreuse2:#76ee00; - --lavender_blush3:#cdc1c5; - --gray77:#c4c4c4; - --grey77:#c4c4c4; - --sea_green2:#4eee94; - --pink1:#ffb5c5; - --thistle:#d8bfd8; - --seashell3:#cdc5bf; - --light_pink:#ffb6c1; - --gray78:#c7c7c7; - --grey78:#c7c7c7; - --lemon_chiffon3:#cdc9a5; - --cornsilk3:#cdc8b1; - --light_cyan3:#b4cdcd; - --cyan1:#00ffff; - --cyan:#00ffff; - --gray79:#c9c9c9; - --grey79:#c9c9c9; - --honeydew3:#c1cdc1; - --snow3:#cdc9c9; - --burlywood2:#eec591; - --azure3:#c1cdcd; - --light_sky_blue2:#a4d3ee; - --light_yellow3:#cdcdb4; - --gray80:#cccccc; - --grey80:#cccccc; - --ivory3:#cdcdc1; - --rosy_brown1:#ffc1c1; - --pink:#ffc0cb; - --plum1:#ffbbff; - --lawn_green:#7cfc00; - --gray81:#cfcfcf; - --grey81:#cfcfcf; - --light_steel_blue2:#bcd2ee; - --slate_gray2:#b9d3ee; - --light_blue:#add8e6; - --gold1:#ffd700; - --gold:#ffd700; - --peach_puff2:#eecbad; - --gray82:#d1d1d1; - --grey82:#d1d1d1; - --chartreuse1:#7fff00; - --chartreuse:#7fff00; - --aquamarine2:#76eec6; - --navajo_white2:#eecfa1; - --light_gray:#d3d3d3; - --light_grey:#d3d3d3; - --cadet_blue2:#8ee5ee; - --light_green:#90ee90; - --pale_green2:#90ee90; - --sea_green1:#54ff9f; - --gray83:#d4d4d4; - --grey83:#d4d4d4; - --olive_drab2:#b3ee3a; - --gray84:#d6d6d6; - --grey84:#d6d6d6; - --powder_blue:#b0e0e6; - --light_blue2:#b2dfee; - --bisque2:#eed5b7; - --burlywood1:#ffd39b; - --gray85:#d9d9d9; - --grey85:#d9d9d9; - --light_goldenrod2:#eedc82; - --dark_slate_gray2:#8deeee; - --light_sky_blue1:#b0e2ff; - --wheat2:#eed8ae; - --dark_olive_green2:#bcee68; - --thistle2:#eed2ee; - --light_goldenrod:#eedd82; - --misty_rose2:#eed5d2; - --gray86:#dbdbdb; - --grey86:#dbdbdb; - --gainsboro:#dcdcdc; - --yellow2:#eeee00; - --dark_sea_green2:#b4eeb4; - --gray87:#dedede; - --grey87:#dedede; - --slate_gray1:#c6e2ff; - --light_steel_blue1:#cae1ff; - --green_yellow:#adff2f; - --pale_green:#98fb98; - --peach_puff1:#ffdab9; - --peach_puff:#ffdab9; - --wheat:#f5deb3; - --gray88:#e0e0e0; - --grey88:#e0e0e0; - --pale_turquoise2:#aeeeee; - --pale_turquoise:#afeeee; - --aquamarine1:#7fffd4; - --aquamarine:#7fffd4; - --khaki2:#eee685; - --antique_white2:#eedfcc; - --navajo_white1:#ffdead; - --navajo_white:#ffdead; - --khaki:#f0e68c; - --cadet_blue1:#98f5ff; - --pale_green1:#9aff9a; - --gray89:#e3e3e3; - --grey89:#e3e3e3; - --lavender_blush2:#eee0e5; - --olive_drab1:#c0ff3e; - --pale_goldenrod:#eee8aa; - --gray90:#e5e5e5; - --grey90:#e5e5e5; - --light_blue1:#bfefff; - --moccasin:#ffe4b5; - --seashell2:#eee5de; - --lemon_chiffon2:#eee9bf; - --cornsilk2:#eee8cd; - --bisque1:#ffe4c4; - --bisque:#ffe4c4; - --lavender:#e6e6fa; - --light_cyan2:#d1eeee; - --gray91:#e8e8e8; - --grey91:#e8e8e8; - --wheat1:#ffe7ba; - --dark_slate_gray1:#97ffff; - --light_goldenrod1:#ffec8b; - --dark_olive_green1:#caff70; - --misty_rose1:#ffe4e1; - --misty_rose:#ffe4e1; - --thistle1:#ffe1ff; - --honeydew2:#e0eee0; - --snow2:#eee9e9; - --gray92:#ebebeb; - --grey92:#ebebeb; - --azure2:#e0eeee; - --light_yellow2:#eeeed1; - --yellow1:#ffff00; - --yellow:#ffff00; - --antique_white:#faebd7; - --ivory2:#eeeee0; - --gray93:#ededed; - --grey93:#ededed; - --blanched_almond:#ffebcd; - --dark_sea_green1:#c1ffc1; - --gray94:#f0f0f0; - --grey94:#f0f0f0; - --khaki1:#fff68f; - --papaya_whip:#ffefd5; - --pale_turquoise1:#bbffff; - --antique_white1:#ffefdb; - --linen:#faf0e6; - --gray95:#f2f2f2; - --grey95:#f2f2f2; - --beige:#f5f5dc; - --lavender_blush1:#fff0f5; - --lavender_blush:#fff0f5; - --white_smoke:#f5f5f5; - --gray96:#f5f5f5; - --grey96:#f5f5f5; - --old_lace:#fdf5e6; - --seashell1:#fff5ee; - --seashell:#fff5ee; - --alice_blue:#f0f8ff; - --gray97:#f7f7f7; - --grey97:#f7f7f7; - --light_goldenrod_yellow:#fafad2; - --cornsilk1:#fff8dc; - --cornsilk:#fff8dc; - --lemon_chiffon1:#fffacd; - --lemon_chiffon:#fffacd; - --light_cyan1:#e0ffff; - --light_cyan:#e0ffff; - --ghost_white:#f8f8ff; - --gray98:#fafafa; - --grey98:#fafafa; - --floral_white:#fffaf0; - --honeydew1:#f0fff0; - --honeydew:#f0fff0; - --snow1:#fffafa; - --snow:#fffafa; - --azure1:#f0ffff; - --azure:#f0ffff; - --gray99:#fcfcfc; - --grey99:#fcfcfc; - --mint_cream:#f5fffa; - --light_yellow1:#ffffe0; - --light_yellow:#ffffe0; - --ivory1:#fffff0; - --ivory:#fffff0; - --gray100:#ffffff; - --grey100:#ffffff; - --white:#ffffff; - - --kde_bg:#4377a2; -} diff --git a/public/css/terminal.css b/public/css/terminal.css @@ -1,259 +0,0 @@ - -:root { - --dodger_blue4:#104e8b; - --dark_orchid2:#b23aee; - --green2:#00ee00; - --white:#ffffff; - --bisque4:#8b7d6b; - --blue:#0000ff; - --spring_green:#00ff7f; - --gray:#bebebe; - --yellow:#ffff00; - --genwidth: 800px; -} - -/* TODO fix nav bar width not jiving with window width. */ -main { - margin: auto; - width: 75%; -} - -/* unvisited link */ -a:link { - color: var(--dodger_blue4); - text-shadow: 0 0 4px var(--dodger_blue4); -} - -/* visited link */ -a:visited { - color: var(--dark_orchid2); - text-shadow: 0 0 4px var(--dark_orchid2); -} - -/* mouse over link */ -a:hover { - color: var(--green2); - text-shadow: 0 0 4px var(--green2); -} - -/* selected link */ -a:active { - color: var(--dodger_blue4); - text-shadow: 0 0 4px var(--dodger_blue4); -} - -#main-page-title { - margin: 0 auto; - padding: 0; - white-space: pre-wrap; - color: var(--white); - text-shadow: 0 0 4px var(--white); -} - - -h4 { - padding: 0; - margin: 0; - margin-top: 0; - color: white; - font-color: white; - font-family: Sans-Serif; - font-size: 0.8em; -} - -h3 { - margin: 0 auto; - padding: 0; - color: var(--white); - text-shadow: 0 0 4px var(--white); - font-family: monospace; -} - -nav { - text-align: center; - clear: both; - margin: auto; - max-width: 75%; - background-color: rgba(41,44,45,0.9); - border: 0.1em solid white; -} - -nav:hover { - box-shadow: 0 0 0.2em 0.2em #0ff; -} - -nav li { - display: inline-block; - list-style: none; - max-width: 7em; - padding: 0.5em; - transition: transform 0.3s; -} - -nav li:hover { - transform: scale(1.5); -} - -nav ul { - padding: 0; - margin: 0.5em; -} - -nav img { - max-width: 4em; -} - - -@media (min-width: 1200px) { - nav { - float: left; - width: 10%; - position: fixed; - text-align: left; - font-size: large; - } - nav::before { - content: "Links"; - text-align: center; - display: block; - font-size: large; - color: violet; - text-decoration: underline; - margin: 0.5em; - } - nav li { - display: block; - text-align: center; - margin: 0.5em auto; - } - nav img { - max-width: 60%; - } -} - - -.twin { - border: 1.5em solid transparent; - border-image: url(../res/2008.png) 19 12 round; - padding: 0; - /* positioning */ - margin: 0 auto; - width: 100%; - background-color: rgba(0, 0, 0, 0.85); - -} - -.tcontent { - margin: 0 auto; - padding: 0; -} - - -.twin p, span { - margin: 0 auto; - padding: 0; - color: var(--white); - text-shadow: 0 0 4px var(--white); -} - -p.ls { - white-space: pre-wrap; -} - -.cat p { - white-space: normal; - margin-bottom: 1.5em; -} - -.prompt1 { - color: var(--bisque4); - text-shadow: 0 0 4px var(--bisque4); -} - -.prompt-break { - content: '-'; - background-position: center; - background-color: transparent; - background-repeat: repeat-x; - border: none; - border-top: 3px double #333; - color: #333; - overflow: visible; - text-align: center; - height: 0.2em; -} - -.prompt2 { - color: var(--blue); - text-shadow: 0 0 4px var(--blue); -} - -.prompt3 { - color: var(--yellow); - text-shadow: 0 0 4px var(--yellow); -} - -.prompt4 { - font-weight: bold; - text-shadow: 0 0 4px var(--white); -} - -h2 { - color: var(--spring_green); - font-size: 26pt; -} - -body { - background-color: #2d6189; - /*background-image: url('../res/back.jpg');*/ - background-repeat: no-repeat; /* Do not repeat the image */ - background-size: cover; /* Resize the background image to cover the entire container */ - background-size: cover; - background-repeat: no-repeat; - font-family: monospace; - font-size: 1.1em; - -webkit-font-smoothing : none; - -moz-font-smoothing: never; -} - -.fttr { - margin-top: auto; - margin: auto; - margin-top: 75px; - width: 75%; -} - -/* Table stuff. */ - -table { - width: 100%; -} - -table, th, td { - border: 0.1em solid var(--gray); - -} - -td { - text-align: left; -} - -tr:first-child td { - vertical-align: center; -} - -li { - color: var(--white); - text-shadow: 0 0 4px var(--white); -} - -th, td { - margin: 0 auto; - padding: 0; - color: var(--white); - text-shadow: 0 0 4px var(--white); -} - -th { - color: var(--spring_green); -} diff --git a/public/files.html b/public/favicon.ico diff --git a/public/robots.txt b/public/robots.txt @@ -0,0 +1 @@ +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/public/sneed.html b/public/sneed.html @@ -1,114 +0,0 @@ -<-- -#x*********++++***++++++++++++++**+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++*****************+@ -#x*****************+****++***************************++++*+++*****++++++***********+++++++++++***++++++++++*****************************************+@ -#x*******************************************************+*************+**ii;;;i****++++++*******++++***********************************************+@ -#x************************************************++************ii******i:,,,,,,:i***+*+********+***************************************************+@ -#x************************************************++******i;;::,,,,;i:,:,,,,,,,,,,:i********+*******************************************************+@ -#x*************************************************+*ii;::,,,,,,,,,,,,,,,,,,,,,,,,,,;***;i**********************************************************+@ -#x**************************************************i:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,:;;i******************************************************+@ -#x*************************************************************iiiiii;;iii;;;;;;;;;;;;;;;;;;;;;*****************************************************+@ -#x*********************************************************************************************++*++************************************************+@ -#x****************************************************************+*++++++++++++++++++++++++++*+****************************************************+@ -#x***********************************************++++**********+++++****+++*****++******************************************************************+@ -#x************************************************************+++**+++++++++++++++++++++++*****i;:,::;***++****++++++++*+++*************************+@ -#x************************************************************++***+++++++++++++++++++++++****i,,,,,,,,i********************************************+@ -#x+*****************++****************************************++++*++++++++++++++++*****+*i:,,,,,,,,,,,,;***ii*************ii***********************+@ -#@Mxnz+++**********+zz#***********+*********************+*****++++*+++++++++++++**********:,,,,,,,,,,,,,,;;,,,,;**::,,::i:,,,,:i;:::;i**************+@ -#@MMMMMxnz#++*****+nnnn+********+##+++*****++++*************++++*****++****++*+****i;:;*;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;*************+@ -#@MMMMWWMMMMxnz#+*#nnnn#********+nni*++++***+**++***********++++*****++****++**iii:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::ii********+@ -#@MWMMMMMMMMMMMMMxnnzz#+********+nni**ii**+++*************++++++*********++++*;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:i*****+@ -#@MMMMMMMMMWWWWWWWWMzzxn#++******xn*i**+*iii++#++**++**++++*+********++**+++++*i;;;iiiiiiiiiiiii;;;;;;iiiiiiii*iiiii;;;;;;;;;;;::,,:::;;;;::::;*****+@ -#WxMMMMMMMMMMWWWWWWMznMWMMMxn#+++xx*i+ziiiiiiii*+++*++*****+++*+*****++++**++++****+********+++++++**+++*++****++**+********************************+@ -#MznnnxxMMMMMMWWWWWMznMMMMMMWWMMnxniinziiiiiiiiiiiii*+#+++**+***++++*++++**++++**++++*++++++++*+++++++++++++++++++++++++++++++++++++*++*************+@ -#WnzzzzznnxxxMMWWWWMznMWWMWWWWWWWMniin**+iiiiii*+iiiiii*+##+++*****++++++**++++*++++**++++++++++++++++++++++++++++++***+***************++***********+@ -#@MnzzzzzzzzznxMWWWMMMWWWWMMWWWWWMnii#z#M#z+*ii#n+ii++iiiii**+#+++**+*++++*++++**++++++*++++++++++++++++++++++++++++++++++++++++++++++++************+@ -#@WMnzzzzzzzzzzxMWWMMMWWWWWWWWWWWWniiixznnxnxn#xn+iinxiiiiiiiiii**+#++***++**++++++*****+++++++++++++++++++++++++++++++++++++++++++++**++***********+@ -#@WMMxnzzzzzzzzzxMWWWWWWWWWWWWWW@Wnii+xnzxxxxxxn#+xin+*+iii*#ii*iiiii*++++++++*+++******++++++++++++++++++++++++++++++++++++++++++++***++***********+@ -#@WWMMMnzzzzzzznznMMWWWWWWWWWWW@@Wniinzz#nn#xzxz+#ninxnnzni+ninnii*iiiiiii*+++++++******+++++++++++++++++++++++*+++++++++++++++++++****++***********+@ -#WMWWWMMxxnnnzzzzznMMMMWWWWWWW@@WMniiiiii*##nzxn+*x*x+xnxz#xninni#x+iiiiiiii#++***********++**+++****++++****++*++++****++++***++++*****************+@ -#WxMWWWMMMMMMMxxnnzzxMMWWMMWW@@@Mxxiiiiiiiiii*#x+#x+xix#xnnznixz*##i#*iii#*i#++***********++**+++****++++****+***+++****++++***++++*****************+@ -#WnxMW@WWMMMMMMMMMMMxMMMMMMW@@@WMMxiii;;;;iiiiiiii*i#izxz#znn+xx#+x#nzn#+n+i#+***+************++++*****++****+++++++++++++++***+++++****************+@ -#WxxxxW@WWMMMMMMMMWMMMMMMMMWW@@WWMx*iii;;ii*iiiiiiiiiii**#+nz+xMi*nnxxxnxx*i#++***************++++***++++****+++**++++++++++***+********************+@ -#WxxxxMW@WWWMMMMMMMWWMMMMMMMWW@@WMx++iii;;*x*iiiiiiiiiiiiiiiii#z*zxzz+xznn*+#++******+****+++++++++++++++***********++**+++++***********************+@ -#WxxxxxxMWWWWMMMMMMMWWMMMMMMWWW@@Mxii++i;;+z#n***iiii*iiiiiiiiiiii*i##zznx**#+************++++*++++++++*****************++**************************+@ -#WnnnxxxxMW@WWWMMMMMMWWMMMMMMWWW@Mniiiii;;+nnnnzMxz#+z+ii**+iiiiiiiiiiii+zii#+************++++*+++++*++**+******************************************+@ -#WnnnnnxxxxW@WWMMMMMMMMWMMMMMMWW@Wxi;;;;;;++nnn+xnMxxnnz*n+niiii+i*iiiii*iii#+*************++++++++*************************************************+@ -#WnnxxxxxxxxW@WWMMMMMMMMWWMMMMMWWMxi;;;;;;ii+zz+xnM#nznM*nix###+z+ziii***iii#+*************+++++++**************************************************+@ -#WxxxxxxxxxxxMWWWMMMMMMMMWWMMMMMWMxiiiiiiiiii;iiii*###+xix*xznxnnx*x*iiiiiiin+**************+++++***************************************************+@ -#WxxxxxxxxxxxxM@@WWMMMMMMMWWMMMMWWx#+**+**++*iiiiii;;i+#i#+n#xxnzniziiiiiii*nn#+********************************************************************+@ -#WxxxxxxxxxxxxxxWWWWWMMMMMMWWWMMMWWMMMMMxz#*+*iiiiiiiii;ii;i;ii++#in*i;;;ii*nnn#+****************+++************************************************+@ -#WxxxxxnnnxxxxxnzMWWWMWWWWMMWWWWWMMMMWMMMWWWMMxnnnz#+*iiiiiiiiii;;;i;i;;iiiinnnnz+***************+++************************************************+@ -#WxnxxxxxxxxxxxnzzxWWWWWWWWWWWWWWWMWWWWWWWWMMWxnnnnxxxxxxnz#+**iiiiiiiiii***xnnnnz+*+***************************************************************+@ -#Wxxxxxxxxxxxxxnz##nW@WWWWWWWWWWWWWWWWWWWWWWWWWMnnnnnnnnnnnnxxxnnnz#+**iiii*nnnnnnz+****************************************************************+@ -#Wxxxxxxxxxxxxxnz#zzznxMMWW@@WW@WWWWWWWWWWWWWWWWMxnnnnnnnnnnnnnnnnnxxxxxxnnnnnnnnnnn#***************************************************************+@ -#WxxxxxxxxxxxxxxnzzzzzzzzzznnxxMWWWWW@@WWWWWWWWWWWMnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn#**************************************************************+@ -#WxxxxxxxxxxxxxxzzzzzzzzzznnnnnzznnnnxxMMWWW@@@@@@WWWMMxxnnnnnnnnnnnnnnnxnxnnnnnnnnnnnz+************************************************************+@ -#Wxnxxxxxxxxxxxxz#zzzzzzz#zzzzzzzzzznnnnnnnnnxxxMMWWW@@@WWWWWMMMMxxxxxxnnnnnnnnnnnnnnnnn+***********************************************************+@ -#Wnnxxxxxxxxxxxxz####zzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnnxxxMMMMMWWWWW@W@WWWWWWWWWWWMMMMMxxn+**********************************************************+@ -#Wxxxxxxxxxxxxxxzz#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnxxxxxxxxxxxxxxMMMMMMMx+**********************************************************+@ -#WxxxxxxxxxxxxxxnzzzznMxxxxxnnnnnzzzzzzzzzzzzzzzzzzzzzzzMMMMMxxxxxznnnnznnnnnnnnnnnnn#+++***********************************************************+@ -#WxxxxxxxxxxxxxnzzzzzxWMMMMMMMMMMMMMMMxxxxxxxnnnnxnzzzzzMMMMMMMMMMMMMMMzzzzzzzzzzzzzn+**************************************************************+@ -#WxxxxxxxxxxxxxnzzzzzzxWWMMMWWWWMMMMMMMMMMMMMMMMMMMMMzzzxMMxxxxMMMMMMMMxxxxxxxxxxzzzz+**************************************************************+@ -#Wxnnnxxxxxxxxxnz####zzWMz+++####zznnnxxxxxMMMMMMMWMMzzzxMxxxxxxnnnnxMMMMMMMMMMMMnzzz+**************************************************************+@ -#Wxxxxxxxxxxxxxnz###zzzWMz+++++++++++++++++++++###WMnzzzxMMxxxxxxxxxMMMMxMxxxMMMMnzzn+******++++****************************************************+@ -#WxxxxxxxxxxxxxnzzzzzzzWMz+++++++++++##++++++++++#WMnzzzxMMnxxxxxMxxMMMMxxxnxxxMMnzzn#++####zzzzz#++*******++++++++++#########+++*******************+@ -#WxxxxxxxxxxxxxnzzzzzznWMz++++++++++++##+++##++++#@MzzzzxMM*xxxznWWWMMMxxxxnxxxMMnzznzzzzzzzzzzzzzzzz#zzzzzzzzzzzzzzzzzzzzzzzzzzzz##+++*************+@ -#WxxxxxxxxxxxxxnzzzzznnWMz++++++++++++++#+++##+++#@MnzzzxMMnxMMxxWWWMMMMxxxxxxxMMnzznzznnzzzznnxxxxxxxxxxxxnnnnzzzzzzzzzznnnzzzzzzzzzzzz#++++*******+@ -#WnnnnnxxxxxxxxnzzzzznnWMz++++++++++++++++++++#++#@MzzzznMMMMWMWMMWWWMMxxxxxxxxMMnzzxxxxxxnnxxxxxxxxxxxxxxxxxxxxnnzzzzzzxxxxzzzzzzzzzzxxzzzznznz#+##n@ -#WnnxxxxxxxxxxxnzzzzzznWMz+++#+++++++++++++++++++#@MzzzznMMxxxxxxxxxMMMxxxxnxxxMMzzznxxxxMMMxz**+xznxn#zzMMxxxxxxMnnnxxxxxxxxxxxxzzznxxMnnMMxxxMnznnM# -#WxxxxxxxxxxxxxnzzzzzznWMz##+++++++++++++++++++++#@MzzzzxMnxnxnnxxxxMMMxnnnnxxxMMzzznxMMMMMMxi;;;z**x+i;;xMi;;+#+xxxxMMMMMMMMMMMMMxxxMMMMMMMMMMMMMMxM# -#WxxxxxxxxxxxxxnzzzzzznWM#+##++++++++++++++++++++z@MnzzzxMnnxxnnxxxnMMMxxnxxnxxMMnzznxxxxxxMn;;;;z*ix*ii;xx;:;*#*xxxxxxxxxxxxxxxxxxxxxxxMxxxxxxnnnnnn# -#WnxxxxxxxxxxxxnzzzzzzxWM#++##+++++++++++++#znz#+z@MnzzzxMMMMxxxxxxxMMMMxxxxxnxMMzzznxxxxxxMz;;;;n*ix*;*;xx;;;#z+xxxxxxxxxxxxxxxxxxxxnzzzz####z#####z# -#WnxxxnxxxxxxxxzzzzzzzxWM#+++zz++##++++++++nxMMM#z@MzzzzxMWMWMMMMMMMWMMxxxxxxxxMMnzzxxxxxxxMz;;;iz#*x*i*iMxinxx@zxxzxxxxxxxMMxxxxxzz############znnzz# -#Wxxxxxxxxxxxxxz#zzzzzxWM#+#xMMz++##++++++#nn#zz+z@MnzzzxMx#+++#znnnMMMMxxnxxxxMMnzzxxxxxxMxn##zzzznxnnxxMMWWxM@MWMzxxxxxxMMMMxxMMn#z########znnxxMMx# -#WxxxxxxxxxxxxxzzzzzzzxWM##xMxnx#+++++++++#n+##z+z@MnzzzxMz++++*++**nMMMxxxxxxxMMnzzxxxxxxxxxnxxxznxxxMMMMxxxxxxxxxxxxxxMMxMMMMMMMMnxnxz####zxxMxxxxM# -#WxxxxxxxxxxxxxzzzzzzzxWM#+x#++n+++++++++++z**+z+z@Mnzzzxx++++##++++nMMMMMMMMMzMMnzzMWWWWMxxxxxxxxxxxxxxMMMMMMxxxxxxxxxxMMMMMMMxMMMMMMxMzzzznnxnxxxxM# -#WxxxxxxxxxxxxxzzzzzzzxWM#+n#**n+++++++###z#*+#xnx@MnzzzxMMxnnnxnzzznMMxxxxxxxxMMzzzzznnnxnnnnnnnnxnxxxMMMMMMMMMMMMMMMxxxxxxMxxxMMMMMMMMxMMxxxz##zzzz# -#Wxxxxxxxxxxxxxzz#zzzzxWMxnMz**nMMMMMMMMWWxxzznMMMMMxzzzxMMMMMMMWMMMMMMMxxxxxxxMMnzzznnnnnz###+++++**#xMMMMMMMMMMMMMMMMMMMMMMMxMMMMMMMMMMMMMxMMxz###z# -#Wnnnnnnxxxnnxxz##z#znWMMMMMM#zMnMMMMMMMMx+nz##xxxnnzzzzxxiii**zzzznxMMxMxxxxxxMMzzzn##++++**++##zzz#xxMMMMMMMMMMMMMMMMMMMMMMWWMMxxxxxMMMMMMMxxxxz##z# -#Wxxxxxxxxxxxxxz#z#zzzxxxxxnxnzxnznznxxMMx#znzzxxnnzzzzzxx##+###+*+nMMMMxxxxxxMn#*++###zznz+*xxxxnnn#xxMMMMMMMMMxxxxMMMMMMMMMWWWMzznznnnnxnnnnnzzz##z# -#Wxxxxxxxxxxxxxz#zzzzzzzzzzznznznnnnxxxxMx#nnnnznzzzzzzzxxnnz#+++##nMMMMxxxxnxxx+#nnMxxMxxn+*nnxnnxn#xMMMMMMMMMMMMMxxxxxxMMMWWWxMz##################z# -#@xxMMMxxxxxxxx+**+++#zzzzzn##nznnznMx#zxn#z###++++***iiiiiii*++inxxMMMMxxxxxxMx*#zzxxxMxxn**nnxnnxn+xMMMMWMMMMMMMMMMMMWWWWWWWW*zzzz##########z#####z# -#@xxMMMxMxxxxxx+++******ii*******+++++***iiiiiiii**i*++#nxMMMMMzinMMMMMMxxxxxxxM*#zznxxxxxn**nnnnxxn+MMWWWWWWWWMMMMM#zMWWWWWWWW+x###################z# -#@xxxMMxMnnnxxnzzzzzz####*+zz#**+++++ii*+#++++zz#zx+*nzzMWWWWWWnixWWWMMMMMMMMMMM++zzzzzzznz*+nnnnxxx#MMW@@WMWW@WMMMx;iMMWWWWWWWMMzz#################n# -#@xxxxMxxnnnxxnzzzz#zzzzzi+znnnznnnnzi#nnx###zzz+#z**nzzMWWWWWWnixWWMMMMMMMMMMMM++###z##zzz*#zzzznxxxMW@@WMxMMW@WMMM*#MMWWWMMxnz#+##################z# -#@xxxxxxxxxnxxnzzzzzzzzzz*+nnnx#nxnxni#nnz#+++*+z++**nzzMWWWMMxzinzz#zzzzzznnnnx++#zzzzzzzz#zznnxxMMMWM@@MxxxxM@WMMMMxxnnzzz#+***+##################z# -#Wxxxxxxxxxxxxxnzzzzzzzzz*+zznxxxMnnxi+nxn++##+*#*+*+nzzxMnzz###;#####zzzzzzz####+z#zznnxnxxxxMMMMMMMMMMMMxnzxM@Wx#z++++***++#######z###zz##z#z#zzzzz# -#@MMMxxxxnxxxxxxxnnzzzzzz*+zzzMMMxxnxi#xxxnnz+#*n*+*+nzzzzzz##z#izzzzzzz#znxxnnnnznxxxxMMMMMMMxMxMMMMn#+xMxnnxM@Wn++**+#nnxWWxzz####+#####z####z####z# -#@WWMMWMxxxxMMMxxMMxnzzzzi+znznnnnnnni+xxnxxx+#*n++*+zzzzzzz#znz*nnnxxxxMMMMxMxxMMMxMMMMMMMMMMxMxMMMMz+*xxxnzxM@@z+++++#znnn#************+*+++******+# -#@WWMWWMxxMMxMWWWWMxMMznz*+nnnznnnnnxi+znnnnn#z+###*#z######znxn*xMMxMMxxxxxxMxMMMMxMxMMMMMMMMMMxMMMx#**nxxxxxM@M*++********************************+# -#@WWxWWMxMMMWWMzznMWxMMnn*+z#z#znzzzn*+zn##znnn#xMx*+#####zznnxxxxMMxxxxxxxxxMMMMMMxMMMMMMMMMMMMMMMMxz+*+xxxxM@W#***********************************+# -#@WWxWWWMMMWMMWnxnxWMxMxz*+zzzz#zz##z*+z#zzznnMMnzn+#znxnxxxxxMMMMxMxxnz#+*+#nxMMMMMMMMMMMMMMMMMMMxMxz***+zxxMn#***++*******************************+# -#@WMMWWWMMWMxMWxxxWMxxMWxnnzzz######z*+#######zznxxxxxxxMMMMMMMxMxz#++*+#znxxxMMMxMMMMMMMMMMMMMMxMxMn#*****++***************************************+# -#@WxMWWMxWWxxMWnnWMnxxMWMxxnnnnnnnzzz#znnnxxxxxxxMMMMMMMMMxMMMxxMx#zznnxxxxxxxMxMxMMMMMxMMMMMxxxnz#++***********************************************+# -#@WxWWWMMWWWxxWnWWxnnxMWMnnxxxxnnnnnnxxxxxMMMMMMMMMMMxMxMMMMMMMMMMxxxxxxxxxxxnnznxMMMMMxxMMxnz#+****************************************************+# -#@WxWWWxWMxMWMWWWxxnnxxWMnnxnnxnnnxnnxMMMMMMMMMxMMxMMxMxMMMMMMMMMMxxxxxxnz#++++#nxxxMxMxnz#++**+++******************************************+++*****+# -#@MxWWMMWxxMWWWWWMMMMWMMMnnxnnxnnnnnnxxMMxxMMMMxMMxMMMMxMMMMMMMMMMxnnz#+++#znxxxxxxxxn#++++**************************+*********************++#++****+# -#@xMWWMMWMMWWWWWWWMMMMMWMnnxnnnnnnnnxxxMMxMMMMMMMMxMMxMMMMMMMMxMMMz#+#znxxxxxxxxxxn+++******************************************************+++**++++# -#@xWWWMMWMxxWWWWWxnnnxMWMnnxnnnnnnnnxMxMMxMMMMMMMMxMMMMMMMxMMMxMMMxxxxxxxxxxxxxnz++****************************************************************+## -#@xWWWMMMxxxWWWWWMxnnMMWxnnxnnnnnnxnxMxMMxMMMMMMMMxMMMMMMMMMMMxMMMxxxxxxxxxn#+#++*******************************************************************+# -#WxWWWMMMxxWMxWMxWMnxxMWnnnxnnnnnnxnxMxMMMMMMMMMMMMMMMMMMxxMxMxMxMxxxxnz#+++**********+*************************************************************+# -#MMWWWMMWxMWxxWMnnWWMMWMxxnxnnnxnnnnxMMMMMMMxMMMMxMMMxMxMxxMxxnz#++++++*****************************************************************************+# -#MMMxxMMWWWnxxWMnnxMMMWxxxxxnnnxnnnnxMMMMMMMxMMxMxxMxxxxxnz#++*++***************************************************************+++**+++++**********+# -#Mz###nMMWz###MxnxxMMWxnxnnxxnnxnxnnxMMMMMMMxMMxMxxxxzzz+*******+*********************************************************++****+++*++++++**********+# -#M#####xxWnn#zMx#zxMWxnnnxxxxnxxxxxnxxxxMxxMxMxxnz###+************++****+********************************************+****+++**++++*+++#++**********+# -#x######znz##zMxnxMWM####zzzznnnxxxxxxxxMxxxn#++*****************+####+*+********************************************+***++++**++++*++++++**********+# -#x#############znnxz###########zzzzxnxnnn++++********************+####+*******************************+++********+*++++++++++*+++++***+++***********+# -#x#zz##################zz#zzzzzzz#++++++***************************++******************************++++++**********++++++++++++++++*****************+# -#x###################zzz+#++###+++************************++************************************+++++++++**********++++++++++++++++*****************+# -#x################z####+++***++*************************++##+*******************************+++++++++++++++*********+++++++++++++++++++*************+# -#x#####n#z########n#****+***********+*********************+++*****************************+++++++++++++++++*********+++++++++++++++++++*************+# -#Mz############z###z++**************+*********************++*************************++++++++++++++++++**++****+***++++++++++++++++++++++***********+# -#M#zzzzz#zz#zz#z##z+*****************************************************************++++++++++++++++++**++****+***++++++++++++++++++++++***********+# -#x++##++##+##+++++*****************************************+**+********************++++++++++++++++++**++++****+**+++++++++++++********++++*********## -#x**++*****+***********************************************+*********************++++++++++++++++++++**++++****+**++++++++++++++******+++++*********## -#x*******************************************++************+*******++++++++++++**++++++++++++++++++++++++++++**+***++++++++++++++*****++++++++++****## -#x+******************************************++***********++*******++++++++++++++++++++++++++++++++**+++++++********+++++**+***********++++++++++***## -#x+***************************************++++++***++++++++++++++++++++++++++++++++++++++++++++++++**+++++++*********++++*********+****+++++##+++***## -#x*********************************+******+++++++*++++++++++++++++++++++++++++++++++++++**+++++++++**++++++++****++*+++++**+*****++****++++++++++***## -#x+*****************++++++++++****+++***+++++++++++++++++++++++++++++++++++++++***++++++**++++++++*******++++++++++++***+**+****+++*****************## -#x+*****************++++++++++***+++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++*+**************## -#x+**************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*+************## -#x+************++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+## -#x++++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++## ---> diff --git a/shadow-cljs.edn b/shadow-cljs.edn @@ -1,22 +0,0 @@ -;; shadow-cljs configuration -{:source-paths - ["src/dev" - "src/main" - "src/test"] - - :dependencies - [[cider/cider-nrepl "0.28.2"]] - - :builds - {:app {:target :node-script - :output-to "bin/main.js" - :main rmjxyz.app/main! - :devtools {:after-load rmjxyz.app/reload! - :repl-pprint true} - :release {:optimizations :advanced - :source-map true - :source-map-detail-level :all} - :compiler-options {:output-feature-set :es8} - } - } - } diff --git a/src/main/rmjxyz/app.cljs b/src/main/rmjxyz/app.cljs @@ -1,253 +0,0 @@ -(ns rmjxyz.app - (:require [cljs.nodejs :as nodejs] - ["express" :as express] - ["express-handlebars" :refer [engine]] - [goog.string :as gstring] - [goog.string.format] - [cljs.core.async :refer-macros [go]] - [cljs.pprint :refer [pprint]] - [cljs.core.async.interop :refer-macros [<p!]])) - -(println "Initializing server...") -(defonce app (atom nil)) -(defonce index-windows (atom nil)) -(defonce fs (js/require "fs")) -(defonce path (js/require "path")) -(defonce process (js/require "process")) -(defonce permStrings ["---" "--x" "-w-" "-wx" "r--" "r-x" "rw-" "rwx"]) -(defonce mons [ "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" - "Aug" "Sep" "Oct" "Nov" "Dec" ]) -(defonce post-items (atom nil)) -(defonce post-windows (atom nil)) -(defonce index-windows (atom nil)) -(defonce index-items (atom nil)) -(defonce all-bkg-scripts (atom nil)) -(defonce item-update-time (* 1000 60 5)) -(defonce comments-list '("industrial_society" "sneed" "france" - "anime" "choppa" "gigachad" "peter" - "shrek" "tanku" "toem" "troll" "virusexe" - "windows")) - -(defn mon-by-index - "Get a month (abbreviation) by its index. Returns nil if i is out of range." - [i] - (nth mons i nil)) - -(defn permissions-to-string - "Convert Unix file permission mode to string. Return nil on invalid mode." - [mode] - (nth permStrings mode nil)) - -(defn get-file-name - "Get just the name of a file (no directory, no extension)." - [file-path] - (.-name (. path parse file-path))) - -(defn ls-time - "Convert time stamp in milliseconds to LS time format." - [timeMS] - (let [file-date (js/Date. timeMS)] - (str (mon-by-index (.getMonth file-date)) " " (gstring/format "%02d" (.getDate file-date)) " " - ;; If the file was updated this year then set the last column to the - ;; hour and minute. Else, the last column should be the year. - (if (= (.getFullYear file-date) (.getFullYear (js/Date.))) - (str (gstring/format "%02d" (.getHours file-date)) ":" (gstring/format "%02d" (.getMinutes file-date))) - (str (.getFullYear file-date)))))) - -(defn get-basename - "Get the basename of a file." - [file-path] - (.-name (.parse path (.basename path file-path)))) - -(defn create-lstat - "Create an LSStat object for use in rendering." - [file-path] - (let [stats (.statSync fs file-path) - unixFilePerms (when stats (.toString (bit-and (.-mode stats) (js/parseInt "777" 8)) 8))] - (if stats - {:perms (str (if (.isDirectory stats) "d" "-") - (permissions-to-string (js/parseInt (first unixFilePerms))) - (permissions-to-string (js/parseInt (second unixFilePerms))) - (permissions-to-string (js/parseInt (nth unixFilePerms 2)))) - :numLinks (.-nlink stats) - :fileSize (gstring/format "%4d" (.-size stats)) - :mtime (ls-time (.-mtimeMs stats)) - :basename (get-file-name (.basename path file-path)) - :realpath file-path - } - ;; TODO actually deal with error. - (js/console.error "Could not stat" file-path)))) - -(defn ls-list - "Create a list of ls-stats from a list of file paths. Looks into public." - ([paths] - (for [file paths] - (create-lstat file))) - ([basedir ext paths] - (for [file paths] - (create-lstat (.join path basedir (str file ext)))))) - -(defn ls-dir - "Create a list of ls-stats from a directory." - [dir-path ext] - (when (and (.existsSync fs dir-path) (.isDirectory (.lstatSync fs dir-path))) - (vec (for [file (.readdirSync fs dir-path) - :when (= (.extname path file) ext)] - (create-lstat (.join path dir-path file)))))) - -(defn create-command - "Create a command object for rendering in the website." - ;; LS list. - ([dir ext paths display-path] {:args (if display-path display-path dir) - :lsList (ls-list dir ext paths)}) - ;; Cat. - ([the-path trim-path] {:args (if trim-path (get-file-name the-path) the-path) - :markup the-path})) - -(defn create-ls - "Create a ls-listing from a pre-existing set of files." - [dir ls-list site-path] - {:args dir :lsList - (for [new-stat ls-list] - (assoc new-stat :basename (.join path site-path (get new-stat :basename))))}) - -(defn create-windows - "Create the window data for the site." - [commands-list] - {:windows (for [cmds commands-list] - {:commands cmds})}) - -(defn serve-404 - "Serve the 404 page from path to res." - [file ^js res] (.. res (status 404) (render "404"))) - -(defn serve-200 - "Serve a page with result 200." - ([template ^js res] (.. res (status 200) (render template))) - ([template ^js res obj] - (.. res (status 200) (render template obj)))) - - - -(defn index-information - "Make a JS object for use in index.handlebars." - [window-list] - (clj->js (merge window-list - {:bkgScript (.join path "/site-bkgs/bin/" (rand-nth @all-bkg-scripts)) - :comment (.join path "comments/" (rand-nth comments-list))}))) - -(defn json-create-items - "Create an items list from a JSON file." - [json-path] - (let [^js obj (.parse js/JSON (.readFileSync fs json-path "utf8"))] - (vec - (flatten - (for [^js win (.-wins obj)] - (for [^js cmd (.-cmds win) - :when (.-what cmd)] - (for [^js path (.-what cmd)] - path))))))) - -(defn json-create-windows - "Create a windows vector from JSON file." - [json-path] - (let [^js obj (.parse js/JSON (.readFileSync fs json-path "utf8"))] - (create-windows - (vec - (for [^js win (.-wins obj)] - (vec - (for [^js cmd (.-cmds win)] - (cond - (= (.-type cmd) "cat") (create-command (.-where cmd) - (when (.-trim cmd) true)) - (= (.-type cmd) "ls") (create-command (.dirname path json-path) - (if (.-ext cmd) (.-ext cmd) "") - (.-what cmd) - (when (.-where cmd) (.-where cmd))))))))))) -(defn get-mtime - "Get time (ms) when the file at file-path was updated." - [file-path] - (.-mtimeMs (.statSync fs file-path))) - -(defn update-files! - "If a list of files has changed on disk and it's been five minutes then re-read them." - [file-list collection-path update-func window-list window-update-func] - (let [time-ms (.getTime (get @file-list :when))] - (when (and (>= (- time-ms (.getTime (js/Date.))) item-update-time) - (> (get-mtime collection-path) time-ms)) - (reset! file-list - {:content - ;; Update the entire list, new post added, post removed, name change, etc.. - (update-func collection-path) - :when (js/Date.)}) - (reset! window-list (window-update-func))))) - -(defn update-post-items [dir-path] {:when (js/Date.) :content (ls-dir dir-path ".handlebars")}) -(defn update-index-items [json-path] {:when (js/Date.) :content (json-create-items json-path)}) - -(defn init-server - "Set the server's routes." - [] - (println "Starting server...") - (let [server (express)] - ;; Server settings. - (.use server (.static express (.join path (.cwd process) "public"))) - (.use server (.static express (.join path (.cwd process) "external"))) - (.use server (.json express)) - (.engine server "handlebars" (engine (clj->js {:defaultLayout "main"}))) - (.set server "view engine" "handlebars") - (.set server "views" (.join path (.cwd process) "views")) - - - ;; Server paths. - (.get server "/posts/:post" (fn [^js req res next] - (let [post (.toLowerCase (.-post (.-params req)))] - (if (some #(= post (get % :basename)) (get @post-items :content)) - (serve-200 "index" res (index-information - (create-windows [[(create-command (.join path "content/posts" post) true)]]))) - (serve-404 post res))))) - - (.get server "/posts" (fn [^js req res next] - (update-files! post-items "./views/partials/content/posts" update-post-items post-windows - (fn [] (create-windows [[(create-ls "posts" (get @post-items :content) "posts")]]))) - (serve-200 "index" res (index-information @post-windows)))) - (.get server "/:item" (fn [^js req res next] - (let [item (.toLowerCase (.-item (.-params req)))] - (if (some #(= item %) (for [file-path (get @index-items :content)] - (get-basename file-path))) - (serve-200 "index" res (index-information (create-windows [[(create-command (.join path "content/" item) true)]]))) - (serve-404 item res))))) - (.get server "/" (fn [^js req res next] - (update-files! index-items "./views/partials/content/index.json" update-index-items - index-windows (fn [] (json-create-windows "./views/partials/content/index.json"))) - (serve-200 "index" res (index-information @index-windows)))) - (.get server "*" (fn [^js req res next] (serve-404 "Sneed" res))) - (.listen server 3000 (fn [] (println "Starting server on port 3000"))))) - -(defn start! - "Start the server." - [] - (reset! app (init-server)) - (reset! post-items (update-post-items "./views/partials/content/posts")) - (reset! post-windows (create-windows [[(create-ls "posts" (get @post-items :content) "posts")]])) - ;; TODO put these in a json object. - (reset! index-items (update-index-items "./views/partials/content/index.json")) - (reset! index-windows (json-create-windows "./views/partials/content/index.json")) - - (reset! all-bkg-scripts (let [files (.readdirSync fs "./external/site-bkgs/bin/")] - (for [file files - :when (and (= (.extname path file) ".js") (not= file "backs.js"))] - file)))) - -(defn main! - "Main function" - [] - (start!)) - -(defn reload! - "Stop the server." - [] - (.close @app) - (reset! app nil) - (start!)) - diff --git a/public/files.html b/storage/.keep diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb @@ -0,0 +1,5 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/test/channels/application_cable/connection_test.rb b/test/channels/application_cable/connection_test.rb @@ -0,0 +1,11 @@ +require "test_helper" + +class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase + # test "connects with cookies" do + # cookies.signed[:user_id] = 42 + # + # connect + # + # assert_equal connection.user_id, "42" + # end +end diff --git a/public/files.html b/test/controllers/.keep diff --git a/public/files.html b/test/helpers/.keep diff --git a/public/files.html b/test/integration/.keep diff --git a/public/files.html b/test/mailers/.keep diff --git a/public/files.html b/test/models/.keep diff --git a/public/files.html b/test/system/.keep diff --git a/test/test_helper.rb b/test/test_helper.rb @@ -0,0 +1,13 @@ +ENV["RAILS_ENV"] ||= "test" +require_relative "../config/environment" +require "rails/test_help" + +class ActiveSupport::TestCase + # Run tests in parallel with specified workers + parallelize(workers: :number_of_processors) + + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/public/files.html b/vendor/.keep diff --git a/public/files.html b/vendor/javascript/.keep diff --git a/views/404.handlebars b/views/404.handlebars @@ -1 +0,0 @@ -404 diff --git a/views/index.handlebars b/views/index.handlebars @@ -1,6 +0,0 @@ -{{> (lookup . 'comment')}} - -{{#each windows}} - {{> terminalTemplate}} -{{/each}} -<script type="module" defer src={{bkgScript}}></script> diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> - <head> - <!-- 2021-04-22 Thu 02:37 --> - <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Ryan's Homepage</title> - <meta name="generator" content="Org mode" /> - <meta name="author" content="Ryan Jeffrey" /> - <link rel="stylesheet" type="text/css" href="/css/terminal.css" /> - <script defer src="/scripts/main.js"></script> - <link rel="shortcut icon" type="image/x-icon" href="/res/favicon32x32.ico"> - </head> - <body> - <nav> - <ul> - <li> - <a href="/"><img src="/res/user-home.webp" alt="Homepage"></a> - <h4>Home</h4> - </li> - - <li> - <a href="/posts/"><img src="/res/folder-documents.webp" alt="Blog"></a> - <h4>Blog</h4> - </li> - - <li> - <a href="/files/"><img src="/res/ktorrent.webp" alt="Files"></a> - <h4>Files</h4> - </li> - - <li> - <a href="https://git.ryanmj.xyz"><img src="/res/folder-git.webp" alt="git"></a> - <h4>Git Server</h4> - </li> - - <li> - <a href="mailto:ryan@ryanmj.xyz"><img alt="Email me" src="/res/kopete.webp"></a> - <h4>Contact Me</h4> - </li> - </ul> - </nav> - <main> - {{{body}}} - </main> - <div class="fttr"> - <a href="https://www.gnu.org/software/emacs/"> - <img alt="POWERED BY EMACS" src="/res/stickies/emacs.webp" /> - </a> - <a href="https://www.gnu.org/licenses/gpl-3.0.en.html"> - <img alt="GPLv3" src="/res/stickies/gplv3.webp" /> - </a> - <a href="https://www.sxemacs.org/"> - <img alt="POWERED BY SXEMACS" src="/res/stickies/sxe.webp" /> - </a> - <a href="https://www.xemacs.org/"> - <img alt="POWERED BY XEMACS" src="/res/stickies/xe.webp" /> - </a> - - <a href='https://ipv6-test.com/validate.php?url=referer'> - <img src='/res/stickies/button-ipv6-big.webp' alt='ipv6 ready' title='ipv6 ready'> - </a> - - <a href="https://jigsaw.w3.org/css-validator/check/referer"> - <img src="/res/stickies/vcss.gif" alt="Valid CSS!"> - </a> - - <a href="https://www.gimp.org/"> - <img src="/res/stickies/gimp.webp" alt="Valid CSS!"> - </a> - - <img src="/res/stickies/chrmevil.webp" alt="Valid CSS!"> - </div> - - </body> -</html> diff --git a/views/partials/comments/anime.handlebars b/views/partials/comments/anime.handlebars @@ -1,42 +0,0 @@ -<!-- -⢕⢕⢕⢕⢕⠅⢗⢕⠕⣠⠄⣗⢕⢕⠕⢕⢕⢕⠕⢠⣿⠐⢕⢕⢕⠑⢕⢕⠵⢕ -⢕⢕⢕⢕⠁⢜⠕⢁⣴⣿⡇⢓⢕⢵⢐⢕⢕⠕⢁⣾⢿⣧⠑⢕⢕⠄⢑⢕⠅⢕ -⢕⢕⠵⢁⠔⢁⣤⣤⣶⣶⣶⡐⣕⢽⠐⢕⠕⣡⣾⣶⣶⣶⣤⡁⢓⢕⠄⢑⢅⢑ -⠍⣧⠄⣶⣾⣿⣿⣿⣿⣿⣿⣷⣔⢕⢄⢡⣾⣿⣿⣿⣿⣿⣿⣿⣦⡑⢕⢤⠱⢐ -⢠⢕⠅⣾⣿⠋⢿⣿⣿⣿⠉⣿⣿⣷⣦⣶⣽⣿⣿⠈⣿⣿⣿⣿⠏⢹⣷⣷⡅⢐ -⣔⢕⢥⢻⣿⡀⠈⠛⠛⠁⢠⣿⣿⣿⣿⣿⣿⣿⣿⡀⠈⠛⠛⠁⠄⣼⣿⣿⡇⢔ -⢕⢕⢽⢸⢟⢟⢖⢖⢤⣶⡟⢻⣿⡿⠻⣿⣿⡟⢀⣿⣦⢤⢤⢔⢞⢿⢿⣿⠁⢕ -⢕⢕⠅⣐⢕⢕⢕⢕⢕⣿⣿⡄⠛⢀⣦⠈⠛⢁⣼⣿⢗⢕⢕⢕⢕⢕⢕⡏⣘⢕ -⢕⢕⠅⢓⣕⣕⣕⣕⣵⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣕⢕⢕⢕⢕⡵⢀⢕⢕ -⢑⢕⠃⡈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢃⢕⢕⢕ - -    く__,.ヘヽ.    / ,ー、 〉 -       \ ', !-─‐-i / /´ -       /`ー'    L//`ヽ、 -      /  /,  /|  ,  ,    ', -    イ  / /-‐/ i L_ ハ ヽ!  i -     レ ヘ 7イ`ト  レ'ァ-ト、!ハ|  | -     !,/7 'ゞ'   ´i__rハiソ|   |    -     |.从"  _   ,,,, / |./   | -     レ'| i>.、,,__ _,.イ /  .i  | -       レ'| | / k_7_/レ'ヽ, ハ. | -       | |/i 〈|/  i ,.ヘ | i | -      .|/ /n o t e ヘ!  \ | -        kヽ>、ハ   _,.ヘ、   /、! -       !'〈//`T´', \ `'7'ーr' -       レ'ヽL__|___i,___,ンレ|ノ -         ト-,/ |___./ -         'ー'  !_,. - - -░░░████▌█████▌█░████████▐▀██▀ -░▄█████░█████▌░█░▀██████▌█▄▄▀▄ -░▌███▌█░▐███▌▌░░▄▄░▌█▌███▐███░▀ -▐░▐██░░▄▄▐▀█░░░▐▄█▀▌█▐███▐█ -░░███░▌▄█▌░░▀░░▀██░░▀██████▌ -░░░▀█▌▀██▀░▄░░░░░░░░░███▐███ -░░░░██▌░░░░░░░░░░░░░▐███████▌ -░░░░███░░░░░▀█▀░░░░░▐██▐███▀▌ -░░░░▌█▌█▄░░░░░░░░░▄▄████▀░▀ -░░░░░░█▀██▄▄▄░▄▄▀▀▒█▀█░ ---> diff --git a/views/partials/comments/choppa.handlebars b/views/partials/comments/choppa.handlebars @@ -1,6 +0,0 @@ -<!-- -▬▬▬.◙.▬▬▬ -═▂▄▄▓▄▄▂ -◢◤ █▀▀████▄▄▄▄◢◤ -█▄ █ーJ ███▀▀▀▀▀▀▀╬ ☻/︻╦╤─ GET TO THE CHOPPER ---> diff --git a/views/partials/comments/france.handlebars b/views/partials/comments/france.handlebars @@ -1,7 +0,0 @@ -<!-- -──────▄▌▐▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀​▀▀▀▀▀▀▌ -───▄▄██▌█ beep beep -▄▄▄▌▐██▌█ nice france -███████▌█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄​▄▄▄▄▄▄▌ -▀(@)▀▀▀▀▀▀▀(@)(@)▀▀▀▀▀▀▀▀▀▀▀▀▀​▀▀▀▀(@)▀ ---> diff --git a/views/partials/comments/gigachad.handlebars b/views/partials/comments/gigachad.handlebars @@ -1,17 +0,0 @@ -<!-- -⠄⠄⠠⠂⠁⢂⠨⠡⡑⢀⠈⠄⠄⠄⠄⠄⠄⠄ -⠄⠑⠁⠂⠪⢈⢆⢧⡺⡜⡜⡌⡆⢆⠆⡆⣣⡣⡀ -⠄⡡⠨⠐⡐⡰⡑⡧⣫⡺⡱⡱⢘⠔⡑⢌⠎⣞⣵⠄ -⠁⠄⢂⠅⢬⡸⡮⣫⢧⠫⢊⠊⡂⠣⠊⢜⢪⢪⢺⣷ -⢁⠌⠄⢪⣺⢽⡹⣜⢔⠜⠔⠐⠄⢀⢈⠈⢔⢸⠱⠿⡀ -⣣⡮⢂⡳⡽⡵⡝⡎⡆⡊⠊⠄⢀⠄⠰⡽⡌⡇⠄⠄⣆ -⣕⢽⢈⢸⢹⡪⡯⡺⣪⠪⠌⡂⠄⢂⢽⣺⢪⢢⠂⢦⠌ -⡹⣽⢐⠘⢜⢎⠮⡫⢸⢘⠌⠄⠂⡢⡳⠭⢧⠣⡮⣪⡆ -⣮⠣⢂⡳⡑⠜⢈⠄⡳⠁⠄⡀⠡⢀⠐⢈⢘⡎⠅⡺⡇ -⣟⠈⡆⡅⠅⡃⠠⠄⢌⠂⠄⡈⠮⡢⢕⣐⣠⢳⠡⡻ -⣫⢊⢸⢱⠁⡂⢀⠄⠠⠁⠄⠈⠡⠒⠅⢕⣻⣦⢀⠅ -⢾⡤⡈⠂⢁⠐⠄⠄⠰⠄⠄⠈⠄⢈⠠⠠⢨⢆⢢⠁ -⡽⣞⣗⢧⡢⡀⡁⠄⢈⠂⠅⢀⠠⠄⠄⠄⡁⠂⣝ -⣯⣗⢗⢇⢯⢺⢨⢢⠄⠂⠅⠅⢀⠄⠂⠄⠔⢱⢹ -⡯⣞⡝⣎⢧⢳⡹⡼⡸⡐⠠⠐⢀⠈⠄⠁⢄⠣⠁ ---> diff --git a/views/partials/comments/industrial_society.handlebars b/views/partials/comments/industrial_society.handlebars @@ -1,37 +0,0 @@ -<!-- - _____ _ ___ _ _ _ _ -|_ _| |__ ___ |_ _|_ __ __| |_ _ ___| |_ _ __(_) __ _| | - | | | '_ \ / _ \ | || '_ \ / _` | | | / __| __| '__| |/ _` | | - | | | | | | __/ | || | | | (_| | |_| \__ \ |_| | | | (_| | | - |_| |_| |_|\___| |___|_| |_|\__,_|\__,_|___/\__|_| |_|\__,_|_| - - ____ _ _ _ _ -| _ \ _____ _____ | |_ _| |_(_) ___ _ __ __ _ _ __ __| | -| |_) / _ \ \ / / _ \| | | | | __| |/ _ \| '_ \ / _` | '_ \ / _` | -| _ < __/\ V / (_) | | |_| | |_| | (_) | | | | | (_| | | | | (_| | -|_| \_\___| \_/ \___/|_|\__,_|\__|_|\___/|_| |_| \__,_|_| |_|\__,_| - - _ _ -(_) |_ ___ ___ ___ _ __ ___ ___ __ _ _ _ ___ _ __ ___ ___ ___ -| | __/ __| / __/ _ \| '_ \/ __|/ _ \/ _` | | | |/ _ \ '_ \ / __/ _ \/ __| -| | |_\__ \ | (_| (_) | | | \__ \ __/ (_| | |_| | __/ | | | (_| __/\__ \ -|_|\__|___/ \___\___/|_| |_|___/\___|\__, |\__,_|\___|_| |_|\___\___||___/ - |_| - _ _ -| |__ __ ___ _____ | |__ ___ ___ _ __ __ _ -| '_ \ / _` \ \ / / _ \ | '_ \ / _ \/ _ \ '_ \ / _` | -| | | | (_| |\ V / __/ | |_) | __/ __/ | | | | (_| | -|_| |_|\__,_| \_/ \___| |_.__/ \___|\___|_| |_| \__,_| - - _ _ _ __ _ _ - __| (_)___ __ _ ___| |_ ___ _ __ / _| ___ _ __ | |_| |__ ___ - / _` | / __|/ _` / __| __/ _ \ '__| | |_ / _ \| '__| | __| '_ \ / _ \ -| (_| | \__ \ (_| \__ \ || __/ | | _| (_) | | | |_| | | | __/ - \__,_|_|___/\__,_|___/\__\___|_| |_| \___/|_| \__|_| |_|\___| - - _ -| |__ _ _ _ __ ___ __ _ _ __ _ __ __ _ ___ ___ -| '_ \| | | | '_ ` _ \ / _` | '_ \ | '__/ _` |/ __/ _ \ -| | | | |_| | | | | | | (_| | | | | | | | (_| | (_| __/ -|_| |_|\__,_|_| |_| |_|\__,_|_| |_| |_| \__,_|\___\___| ---> diff --git a/views/partials/comments/peter.handlebars b/views/partials/comments/peter.handlebars @@ -1,10 +0,0 @@ -<!-- -.....................,-'´ . . . _,,,,,';:-,................... -....................,-(c\ \`;-=´,_,-~-, \`............... -..................,/ . . .¯'\, º ,/.'-~°,' .¯`'-,........... -................../ . . . . . .¯,_ ~--~',, . . .'\.......... -.................| . . . . . . . . ¯¨¨¨¨¯,/ . . | ........... -.................| . . . . . . . , . . . .`'-, . . . |.......... -................/\ . . . . . . ."-,,,-'~-~' . . . '|.......... -.............,/'`\,`'-, . . . . . . . . . . . . . . /\.......... ---> diff --git a/views/partials/comments/shrek.handlebars b/views/partials/comments/shrek.handlebars @@ -1,15 +0,0 @@ -<!-- -⡴⠑⡄⠀⠀⠀⠀⠀⠀⠀ ⣀⣀⣤⣤⣤⣀⡀ -⠸⡇⠀⠿⡀⠀⠀⠀⣀⡴⢿⣿⣿⣿⣿⣿⣿⣿⣷⣦⡀ -⠀⠀⠀⠀⠑⢄⣠⠾⠁⣀⣄⡈⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆ -⠀⠀⠀⠀⢀⡀⠁⠀⠀⠈⠙⠛⠂⠈⣿⣿⣿⣿⣿⠿⡿⢿⣆ -⠀⠀⠀⢀⡾⣁⣀⠀⠴⠂⠙⣗⡀⠀⢻⣿⣿⠭⢤⣴⣦⣤⣹⠀⠀⠀⢀⢴⣶⣆ -⠀⠀⢀⣾⣿⣿⣿⣷⣮⣽⣾⣿⣥⣴⣿⣿⡿⢂⠔⢚⡿⢿⣿⣦⣴⣾⠸⣼⡿ -⠀⢀⡞⠁⠙⠻⠿⠟⠉⠀⠛⢹⣿⣿⣿⣿⣿⣌⢤⣼⣿⣾⣿⡟⠉ -⠀⣾⣷⣶⠇⠀⠀⣤⣄⣀⡀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇ -⠀⠉⠈⠉⠀⠀⢦⡈⢻⣿⣿⣿⣶⣶⣶⣶⣤⣽⡹⣿⣿⣿⣿⡇ -⠀⠀⠀⠀⠀⠀⠀⠉⠲⣽⡻⢿⣿⣿⣿⣿⣿⣿⣷⣜⣿⣿⣿⡇ -⠀⠀ ⠀⠀⠀⠀⠀⢸⣿⣿⣷⣶⣮⣭⣽⣿⣿⣿⣿⣿⣿⣿⠇ -⠀⠀⠀⠀⠀⠀⣀⣀⣈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇ -⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ---> diff --git a/views/partials/comments/sneed.handlebars b/views/partials/comments/sneed.handlebars @@ -1,114 +0,0 @@ -<!-- -#x*********++++***++++++++++++++**+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++*****************+@ -#x*****************+****++***************************++++*+++*****++++++***********+++++++++++***++++++++++*****************************************+@ -#x*******************************************************+*************+**ii;;;i****++++++*******++++***********************************************+@ -#x************************************************++************ii******i:,,,,,,:i***+*+********+***************************************************+@ -#x************************************************++******i;;::,,,,;i:,:,,,,,,,,,,:i********+*******************************************************+@ -#x*************************************************+*ii;::,,,,,,,,,,,,,,,,,,,,,,,,,,;***;i**********************************************************+@ -#x**************************************************i:::::,,,,,,,,,,,,,,,,,,,,,,,,,,,:::,,:;;i******************************************************+@ -#x*************************************************************iiiiii;;iii;;;;;;;;;;;;;;;;;;;;;*****************************************************+@ -#x*********************************************************************************************++*++************************************************+@ -#x****************************************************************+*++++++++++++++++++++++++++*+****************************************************+@ -#x***********************************************++++**********+++++****+++*****++******************************************************************+@ -#x************************************************************+++**+++++++++++++++++++++++*****i;:,::;***++****++++++++*+++*************************+@ -#x************************************************************++***+++++++++++++++++++++++****i,,,,,,,,i********************************************+@ -#x+*****************++****************************************++++*++++++++++++++++*****+*i:,,,,,,,,,,,,;***ii*************ii***********************+@ -#@Mxnz+++**********+zz#***********+*********************+*****++++*+++++++++++++**********:,,,,,,,,,,,,,,;;,,,,;**::,,::i:,,,,:i;:::;i**************+@ -#@MMMMMxnz#++*****+nnnn+********+##+++*****++++*************++++*****++****++*+****i;:;*;:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;*************+@ -#@MMMMWWMMMMxnz#+*#nnnn#********+nni*++++***+**++***********++++*****++****++**iii:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:::ii********+@ -#@MWMMMMMMMMMMMMMxnnzz#+********+nni**ii**+++*************++++++*********++++*;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:i*****+@ -#@MMMMMMMMMWWWWWWWWMzzxn#++******xn*i**+*iii++#++**++**++++*+********++**+++++*i;;;iiiiiiiiiiiii;;;;;;iiiiiiii*iiiii;;;;;;;;;;;::,,:::;;;;::::;*****+@ -#WxMMMMMMMMMMWWWWWWMznMWMMMxn#+++xx*i+ziiiiiiii*+++*++*****+++*+*****++++**++++****+********+++++++**+++*++****++**+********************************+@ -#MznnnxxMMMMMMWWWWWMznMMMMMMWWMMnxniinziiiiiiiiiiiii*+#+++**+***++++*++++**++++**++++*++++++++*+++++++++++++++++++++++++++++++++++++*++*************+@ -#WnzzzzznnxxxMMWWWWMznMWWMWWWWWWWMniin**+iiiiii*+iiiiii*+##+++*****++++++**++++*++++**++++++++++++++++++++++++++++++***+***************++***********+@ -#@MnzzzzzzzzznxMWWWMMMWWWWMMWWWWWMnii#z#M#z+*ii#n+ii++iiiii**+#+++**+*++++*++++**++++++*++++++++++++++++++++++++++++++++++++++++++++++++************+@ -#@WMnzzzzzzzzzzxMWWMMMWWWWWWWWWWWWniiixznnxnxn#xn+iinxiiiiiiiiii**+#++***++**++++++*****+++++++++++++++++++++++++++++++++++++++++++++**++***********+@ -#@WMMxnzzzzzzzzzxMWWWWWWWWWWWWWW@Wnii+xnzxxxxxxn#+xin+*+iii*#ii*iiiii*++++++++*+++******++++++++++++++++++++++++++++++++++++++++++++***++***********+@ -#@WWMMMnzzzzzzznznMMWWWWWWWWWWW@@Wniinzz#nn#xzxz+#ninxnnzni+ninnii*iiiiiii*+++++++******+++++++++++++++++++++++*+++++++++++++++++++****++***********+@ -#WMWWWMMxxnnnzzzzznMMMMWWWWWWW@@WMniiiiii*##nzxn+*x*x+xnxz#xninni#x+iiiiiiii#++***********++**+++****++++****++*++++****++++***++++*****************+@ -#WxMWWWMMMMMMMxxnnzzxMMWWMMWW@@@Mxxiiiiiiiiii*#x+#x+xix#xnnznixz*##i#*iii#*i#++***********++**+++****++++****+***+++****++++***++++*****************+@ -#WnxMW@WWMMMMMMMMMMMxMMMMMMW@@@WMMxiii;;;;iiiiiiii*i#izxz#znn+xx#+x#nzn#+n+i#+***+************++++*****++****+++++++++++++++***+++++****************+@ -#WxxxxW@WWMMMMMMMMWMMMMMMMMWW@@WWMx*iii;;ii*iiiiiiiiiii**#+nz+xMi*nnxxxnxx*i#++***************++++***++++****+++**++++++++++***+********************+@ -#WxxxxMW@WWWMMMMMMMWWMMMMMMMWW@@WMx++iii;;*x*iiiiiiiiiiiiiiiii#z*zxzz+xznn*+#++******+****+++++++++++++++***********++**+++++***********************+@ -#WxxxxxxMWWWWMMMMMMMWWMMMMMMWWW@@Mxii++i;;+z#n***iiii*iiiiiiiiiiii*i##zznx**#+************++++*++++++++*****************++**************************+@ -#WnnnxxxxMW@WWWMMMMMMWWMMMMMMWWW@Mniiiii;;+nnnnzMxz#+z+ii**+iiiiiiiiiiii+zii#+************++++*+++++*++**+******************************************+@ -#WnnnnnxxxxW@WWMMMMMMMMWMMMMMMWW@Wxi;;;;;;++nnn+xnMxxnnz*n+niiii+i*iiiii*iii#+*************++++++++*************************************************+@ -#WnnxxxxxxxxW@WWMMMMMMMMWWMMMMMWWMxi;;;;;;ii+zz+xnM#nznM*nix###+z+ziii***iii#+*************+++++++**************************************************+@ -#WxxxxxxxxxxxMWWWMMMMMMMMWWMMMMMWMxiiiiiiiiii;iiii*###+xix*xznxnnx*x*iiiiiiin+**************+++++***************************************************+@ -#WxxxxxxxxxxxxM@@WWMMMMMMMWWMMMMWWx#+**+**++*iiiiii;;i+#i#+n#xxnzniziiiiiii*nn#+********************************************************************+@ -#WxxxxxxxxxxxxxxWWWWWMMMMMMWWWMMMWWMMMMMxz#*+*iiiiiiiii;ii;i;ii++#in*i;;;ii*nnn#+****************+++************************************************+@ -#WxxxxxnnnxxxxxnzMWWWMWWWWMMWWWWWMMMMWMMMWWWMMxnnnz#+*iiiiiiiiii;;;i;i;;iiiinnnnz+***************+++************************************************+@ -#WxnxxxxxxxxxxxnzzxWWWWWWWWWWWWWWWMWWWWWWWWMMWxnnnnxxxxxxnz#+**iiiiiiiiii***xnnnnz+*+***************************************************************+@ -#Wxxxxxxxxxxxxxnz##nW@WWWWWWWWWWWWWWWWWWWWWWWWWMnnnnnnnnnnnnxxxnnnz#+**iiii*nnnnnnz+****************************************************************+@ -#Wxxxxxxxxxxxxxnz#zzznxMMWW@@WW@WWWWWWWWWWWWWWWWMxnnnnnnnnnnnnnnnnnxxxxxxnnnnnnnnnnn#***************************************************************+@ -#WxxxxxxxxxxxxxxnzzzzzzzzzznnxxMWWWWW@@WWWWWWWWWWWMnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn#**************************************************************+@ -#WxxxxxxxxxxxxxxzzzzzzzzzznnnnnzznnnnxxMMWWW@@@@@@WWWMMxxnnnnnnnnnnnnnnnxnxnnnnnnnnnnnz+************************************************************+@ -#Wxnxxxxxxxxxxxxz#zzzzzzz#zzzzzzzzzznnnnnnnnnxxxMMWWW@@@WWWWWMMMMxxxxxxnnnnnnnnnnnnnnnnn+***********************************************************+@ -#Wnnxxxxxxxxxxxxz####zzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnnxxxMMMMMWWWWW@W@WWWWWWWWWWWMMMMMxxn+**********************************************************+@ -#Wxxxxxxxxxxxxxxzz#zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznnnnnnnnnxxxxxxxxxxxxxxMMMMMMMx+**********************************************************+@ -#WxxxxxxxxxxxxxxnzzzznMxxxxxnnnnnzzzzzzzzzzzzzzzzzzzzzzzMMMMMxxxxxznnnnznnnnnnnnnnnnn#+++***********************************************************+@ -#WxxxxxxxxxxxxxnzzzzzxWMMMMMMMMMMMMMMMxxxxxxxnnnnxnzzzzzMMMMMMMMMMMMMMMzzzzzzzzzzzzzn+**************************************************************+@ -#WxxxxxxxxxxxxxnzzzzzzxWWMMMWWWWMMMMMMMMMMMMMMMMMMMMMzzzxMMxxxxMMMMMMMMxxxxxxxxxxzzzz+**************************************************************+@ -#Wxnnnxxxxxxxxxnz####zzWMz+++####zznnnxxxxxMMMMMMMWMMzzzxMxxxxxxnnnnxMMMMMMMMMMMMnzzz+**************************************************************+@ -#Wxxxxxxxxxxxxxnz###zzzWMz+++++++++++++++++++++###WMnzzzxMMxxxxxxxxxMMMMxMxxxMMMMnzzn+******++++****************************************************+@ -#WxxxxxxxxxxxxxnzzzzzzzWMz+++++++++++##++++++++++#WMnzzzxMMnxxxxxMxxMMMMxxxnxxxMMnzzn#++####zzzzz#++*******++++++++++#########+++*******************+@ -#WxxxxxxxxxxxxxnzzzzzznWMz++++++++++++##+++##++++#@MzzzzxMM*xxxznWWWMMMxxxxnxxxMMnzznzzzzzzzzzzzzzzzz#zzzzzzzzzzzzzzzzzzzzzzzzzzzz##+++*************+@ -#WxxxxxxxxxxxxxnzzzzznnWMz++++++++++++++#+++##+++#@MnzzzxMMnxMMxxWWWMMMMxxxxxxxMMnzznzznnzzzznnxxxxxxxxxxxxnnnnzzzzzzzzzznnnzzzzzzzzzzzz#++++*******+@ -#WnnnnnxxxxxxxxnzzzzznnWMz++++++++++++++++++++#++#@MzzzznMMMMWMWMMWWWMMxxxxxxxxMMnzzxxxxxxnnxxxxxxxxxxxxxxxxxxxxnnzzzzzzxxxxzzzzzzzzzzxxzzzznznz#+##n@ -#WnnxxxxxxxxxxxnzzzzzznWMz+++#+++++++++++++++++++#@MzzzznMMxxxxxxxxxMMMxxxxnxxxMMzzznxxxxMMMxz**+xznxn#zzMMxxxxxxMnnnxxxxxxxxxxxxzzznxxMnnMMxxxMnznnM# -#WxxxxxxxxxxxxxnzzzzzznWMz##+++++++++++++++++++++#@MzzzzxMnxnxnnxxxxMMMxnnnnxxxMMzzznxMMMMMMxi;;;z**x+i;;xMi;;+#+xxxxMMMMMMMMMMMMMxxxMMMMMMMMMMMMMMxM# -#WxxxxxxxxxxxxxnzzzzzznWM#+##++++++++++++++++++++z@MnzzzxMnnxxnnxxxnMMMxxnxxnxxMMnzznxxxxxxMn;;;;z*ix*ii;xx;:;*#*xxxxxxxxxxxxxxxxxxxxxxxMxxxxxxnnnnnn# -#WnxxxxxxxxxxxxnzzzzzzxWM#++##+++++++++++++#znz#+z@MnzzzxMMMMxxxxxxxMMMMxxxxxnxMMzzznxxxxxxMz;;;;n*ix*;*;xx;;;#z+xxxxxxxxxxxxxxxxxxxxnzzzz####z#####z# -#WnxxxnxxxxxxxxzzzzzzzxWM#+++zz++##++++++++nxMMM#z@MzzzzxMWMWMMMMMMMWMMxxxxxxxxMMnzzxxxxxxxMz;;;iz#*x*i*iMxinxx@zxxzxxxxxxxMMxxxxxzz############znnzz# -#Wxxxxxxxxxxxxxz#zzzzzxWM#+#xMMz++##++++++#nn#zz+z@MnzzzxMx#+++#znnnMMMMxxnxxxxMMnzzxxxxxxMxn##zzzznxnnxxMMWWxM@MWMzxxxxxxMMMMxxMMn#z########znnxxMMx# -#WxxxxxxxxxxxxxzzzzzzzxWM##xMxnx#+++++++++#n+##z+z@MnzzzxMz++++*++**nMMMxxxxxxxMMnzzxxxxxxxxxnxxxznxxxMMMMxxxxxxxxxxxxxxMMxMMMMMMMMnxnxz####zxxMxxxxM# -#WxxxxxxxxxxxxxzzzzzzzxWM#+x#++n+++++++++++z**+z+z@Mnzzzxx++++##++++nMMMMMMMMMzMMnzzMWWWWMxxxxxxxxxxxxxxMMMMMMxxxxxxxxxxMMMMMMMxMMMMMMxMzzzznnxnxxxxM# -#WxxxxxxxxxxxxxzzzzzzzxWM#+n#**n+++++++###z#*+#xnx@MnzzzxMMxnnnxnzzznMMxxxxxxxxMMzzzzznnnxnnnnnnnnxnxxxMMMMMMMMMMMMMMMxxxxxxMxxxMMMMMMMMxMMxxxz##zzzz# -#Wxxxxxxxxxxxxxzz#zzzzxWMxnMz**nMMMMMMMMWWxxzznMMMMMxzzzxMMMMMMMWMMMMMMMxxxxxxxMMnzzznnnnnz###+++++**#xMMMMMMMMMMMMMMMMMMMMMMMxMMMMMMMMMMMMMxMMxz###z# -#Wnnnnnnxxxnnxxz##z#znWMMMMMM#zMnMMMMMMMMx+nz##xxxnnzzzzxxiii**zzzznxMMxMxxxxxxMMzzzn##++++**++##zzz#xxMMMMMMMMMMMMMMMMMMMMMMWWMMxxxxxMMMMMMMxxxxz##z# -#Wxxxxxxxxxxxxxz#z#zzzxxxxxnxnzxnznznxxMMx#znzzxxnnzzzzzxx##+###+*+nMMMMxxxxxxMn#*++###zznz+*xxxxnnn#xxMMMMMMMMMxxxxMMMMMMMMMWWWMzznznnnnxnnnnnzzz##z# -#Wxxxxxxxxxxxxxz#zzzzzzzzzzznznznnnnxxxxMx#nnnnznzzzzzzzxxnnz#+++##nMMMMxxxxnxxx+#nnMxxMxxn+*nnxnnxn#xMMMMMMMMMMMMMxxxxxxMMMWWWxMz##################z# -#@xxMMMxxxxxxxx+**+++#zzzzzn##nznnznMx#zxn#z###++++***iiiiiii*++inxxMMMMxxxxxxMx*#zzxxxMxxn**nnxnnxn+xMMMMWMMMMMMMMMMMMWWWWWWWW*zzzz##########z#####z# -#@xxMMMxMxxxxxx+++******ii*******+++++***iiiiiiii**i*++#nxMMMMMzinMMMMMMxxxxxxxM*#zznxxxxxn**nnnnxxn+MMWWWWWWWWMMMMM#zMWWWWWWWW+x###################z# -#@xxxMMxMnnnxxnzzzzzz####*+zz#**+++++ii*+#++++zz#zx+*nzzMWWWWWWnixWWWMMMMMMMMMMM++zzzzzzznz*+nnnnxxx#MMW@@WMWW@WMMMx;iMMWWWWWWWMMzz#################n# -#@xxxxMxxnnnxxnzzzz#zzzzzi+znnnznnnnzi#nnx###zzz+#z**nzzMWWWWWWnixWWMMMMMMMMMMMM++###z##zzz*#zzzznxxxMW@@WMxMMW@WMMM*#MMWWWMMxnz#+##################z# -#@xxxxxxxxxnxxnzzzzzzzzzz*+nnnx#nxnxni#nnz#+++*+z++**nzzMWWWMMxzinzz#zzzzzznnnnx++#zzzzzzzz#zznnxxMMMWM@@MxxxxM@WMMMMxxnnzzz#+***+##################z# -#Wxxxxxxxxxxxxxnzzzzzzzzz*+zznxxxMnnxi+nxn++##+*#*+*+nzzxMnzz###;#####zzzzzzz####+z#zznnxnxxxxMMMMMMMMMMMMxnzxM@Wx#z++++***++#######z###zz##z#z#zzzzz# -#@MMMxxxxnxxxxxxxnnzzzzzz*+zzzMMMxxnxi#xxxnnz+#*n*+*+nzzzzzz##z#izzzzzzz#znxxnnnnznxxxxMMMMMMMxMxMMMMn#+xMxnnxM@Wn++**+#nnxWWxzz####+#####z####z####z# -#@WWMMWMxxxxMMMxxMMxnzzzzi+znznnnnnnni+xxnxxx+#*n++*+zzzzzzz#znz*nnnxxxxMMMMxMxxMMMxMMMMMMMMMMxMxMMMMz+*xxxnzxM@@z+++++#znnn#************+*+++******+# -#@WWMWWMxxMMxMWWWWMxMMznz*+nnnznnnnnxi+znnnnn#z+###*#z######znxn*xMMxMMxxxxxxMxMMMMxMxMMMMMMMMMMxMMMx#**nxxxxxM@M*++********************************+# -#@WWxWWMxMMMWWMzznMWxMMnn*+z#z#znzzzn*+zn##znnn#xMx*+#####zznnxxxxMMxxxxxxxxxMMMMMMxMMMMMMMMMMMMMMMMxz+*+xxxxM@W#***********************************+# -#@WWxWWWMMMWMMWnxnxWMxMxz*+zzzz#zz##z*+z#zzznnMMnzn+#znxnxxxxxMMMMxMxxnz#+*+#nxMMMMMMMMMMMMMMMMMMMxMxz***+zxxMn#***++*******************************+# -#@WMMWWWMMWMxMWxxxWMxxMWxnnzzz######z*+#######zznxxxxxxxMMMMMMMxMxz#++*+#znxxxMMMxMMMMMMMMMMMMMMxMxMn#*****++***************************************+# -#@WxMWWMxWWxxMWnnWMnxxMWMxxnnnnnnnzzz#znnnxxxxxxxMMMMMMMMMxMMMxxMx#zznnxxxxxxxMxMxMMMMMxMMMMMxxxnz#++***********************************************+# -#@WxWWWMMWWWxxWnWWxnnxMWMnnxxxxnnnnnnxxxxxMMMMMMMMMMMxMxMMMMMMMMMMxxxxxxxxxxxnnznxMMMMMxxMMxnz#+****************************************************+# -#@WxWWWxWMxMWMWWWxxnnxxWMnnxnnxnnnxnnxMMMMMMMMMxMMxMMxMxMMMMMMMMMMxxxxxxnz#++++#nxxxMxMxnz#++**+++******************************************+++*****+# -#@MxWWMMWxxMWWWWWMMMMWMMMnnxnnxnnnnnnxxMMxxMMMMxMMxMMMMxMMMMMMMMMMxnnz#+++#znxxxxxxxxn#++++**************************+*********************++#++****+# -#@xMWWMMWMMWWWWWWWMMMMMWMnnxnnnnnnnnxxxMMxMMMMMMMMxMMxMMMMMMMMxMMMz#+#znxxxxxxxxxxn+++******************************************************+++**++++# -#@xWWWMMWMxxWWWWWxnnnxMWMnnxnnnnnnnnxMxMMxMMMMMMMMxMMMMMMMxMMMxMMMxxxxxxxxxxxxxnz++****************************************************************+## -#@xWWWMMMxxxWWWWWMxnnMMWxnnxnnnnnnxnxMxMMxMMMMMMMMxMMMMMMMMMMMxMMMxxxxxxxxxn#+#++*******************************************************************+# -#WxWWWMMMxxWMxWMxWMnxxMWnnnxnnnnnnxnxMxMMMMMMMMMMMMMMMMMMxxMxMxMxMxxxxnz#+++**********+*************************************************************+# -#MMWWWMMWxMWxxWMnnWWMMWMxxnxnnnxnnnnxMMMMMMMxMMMMxMMMxMxMxxMxxnz#++++++*****************************************************************************+# -#MMMxxMMWWWnxxWMnnxMMMWxxxxxnnnxnnnnxMMMMMMMxMMxMxxMxxxxxnz#++*++***************************************************************+++**+++++**********+# -#Mz###nMMWz###MxnxxMMWxnxnnxxnnxnxnnxMMMMMMMxMMxMxxxxzzz+*******+*********************************************************++****+++*++++++**********+# -#M#####xxWnn#zMx#zxMWxnnnxxxxnxxxxxnxxxxMxxMxMxxnz###+************++****+********************************************+****+++**++++*+++#++**********+# -#x######znz##zMxnxMWM####zzzznnnxxxxxxxxMxxxn#++*****************+####+*+********************************************+***++++**++++*++++++**********+# -#x#############znnxz###########zzzzxnxnnn++++********************+####+*******************************+++********+*++++++++++*+++++***+++***********+# -#x#zz##################zz#zzzzzzz#++++++***************************++******************************++++++**********++++++++++++++++*****************+# -#x###################zzz+#++###+++************************++************************************+++++++++**********++++++++++++++++*****************+# -#x################z####+++***++*************************++##+*******************************+++++++++++++++*********+++++++++++++++++++*************+# -#x#####n#z########n#****+***********+*********************+++*****************************+++++++++++++++++*********+++++++++++++++++++*************+# -#Mz############z###z++**************+*********************++*************************++++++++++++++++++**++****+***++++++++++++++++++++++***********+# -#M#zzzzz#zz#zz#z##z+*****************************************************************++++++++++++++++++**++****+***++++++++++++++++++++++***********+# -#x++##++##+##+++++*****************************************+**+********************++++++++++++++++++**++++****+**+++++++++++++********++++*********## -#x**++*****+***********************************************+*********************++++++++++++++++++++**++++****+**++++++++++++++******+++++*********## -#x*******************************************++************+*******++++++++++++**++++++++++++++++++++++++++++**+***++++++++++++++*****++++++++++****## -#x+******************************************++***********++*******++++++++++++++++++++++++++++++++**+++++++********+++++**+***********++++++++++***## -#x+***************************************++++++***++++++++++++++++++++++++++++++++++++++++++++++++**+++++++*********++++*********+****+++++##+++***## -#x*********************************+******+++++++*++++++++++++++++++++++++++++++++++++++**+++++++++**++++++++****++*+++++**+*****++****++++++++++***## -#x+*****************++++++++++****+++***+++++++++++++++++++++++++++++++++++++++***++++++**++++++++*******++++++++++++***+**+****+++*****************## -#x+*****************++++++++++***+++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++*+**************## -#x+**************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*+************## -#x+************++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+## -#x++++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++## ---> diff --git a/views/partials/comments/tanku.handlebars b/views/partials/comments/tanku.handlebars @@ -1,24 +0,0 @@ -<!-- -░░░░░░███████ ]▄▄▄▄▄▄▄▄▃ -▂▄▅█████████▅▄▃▂ -I███████████████████]. -◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲⊙◤ - -……(\_/) -……( ‘_’) -…./”"”"”"”"”"”"\======░ -/”"”"”"”"”"”"”"”"”"”\ -\_@_@_@_@_@_/ - -│ _______ -[█۞███████]▄▄▄▄▄▄▄▄▄▄▄▄▃▂ -▄▅█████████▅▄▃▂ -I███████████████████] -...◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲⊙◤ -⌠ __ ┬── -º■▄¥█████████▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅lll█ -╚▄██████████████████► -██████████████████▅▄▃▂ -◄█████████████████████► -((◥☼▲⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲☼)) ---> diff --git a/views/partials/comments/toem.handlebars b/views/partials/comments/toem.handlebars @@ -1,38 +0,0 @@ -<!-- -⠀⠀⠀⣠⣦⣤⣀ -⠀⠀⠀⠀⢡⣤⣿⣿ -⠀⠀⠀⠀⠠⠜⢾⡟ -⠀⠀⠀⠀⠀⠹⠿⠃⠄ -⠀⠀⠈⠀⠉⠉⠑⠀⠀⠠⢈⣆ -⠀⠀⣄ ⢶⣷⠃⢵ -⠐⠰⣷⠀⠀⠀⠀⢀⢟⣽⣆⠀⢃ -⠰⣾⣶⣤⡼⢳⣦⣤⣴⣾⣿⣿⠞ -⠀⠈⠉⠉⠛⠛⠉⠉⠉⠙⠁ -⠀⠀⡐⠘⣿⣿⣯⠿⠛⣿⡄ -⠀⠀⠁⢀⣄⣄⣠⡥⠔⣻⡇ -⠀⠀⠀⠘⣛⣿⣟⣖⢭⣿⡇ -⠀⠀⢀⣿⣿⣿⣿⣷⣿⣽⡇ -⠀⠀⢸⣿⣿⣿⡇⣿⣿⣿⣇ -⠀⠀⠀⢹⣿⣿⡀⠸⣿⣿⡏ -⠀⠀⠀⢸⣿⣿⠇⠀⣿⣿⣿ -⠀⠀⠀⠈⣿⣿⠀⠀⢸⣿⡿ -⠀⠀⠀⠀⣿⣿⠀⠀⢀⣿⡇ -⠀⣠⣴⣿⡿⠟⠀⠀⢸⣿⣷ -⠀⠉⠉⠁⠀⠀⠀⠀⢸⣿⣿⠁ - - -⠄⡓⠄⢐⠔⠉⣐⡤⠃⣁⡁⡍⣌⡯⣮⠳⢕⢄⡠⠄⠄ -⣥⣤⡬⠒⢅⡻⡔⡅⡁⢃⠭⠵⢪⣤⢨⡹⢈⠈⡅⣵⣠ -⢩⡫⠄⠐⢔⢼⡥⠄⡀⠞⠈⠓⢀⡬⠢⣉⠐⣹⢬⠲⢦ -⠪⡂⠄⡈⡂⡧⠺⣨⢔⢕⠐⣨⣤⣠⣿⣿⣧⠈⢠⠡⡎ -⠕⢔⠄⠨⣂⠃⡱⠰⢞⢦⣿⣻⣿⣿⣿⣿⣿⠈⠸⡁⢍ -⠑⡢⠁⠈⡆⡅⠌⠊⢶⣔⡶⣷⣿⣾⣿⣿⣿⣄⠐⣁⢃ -⡪⢢⢅⡱⣕⠔⠠⠠⠍⠁⢟⠋⠡⠄⢀⣭⣿⠇⠠⣁⢁ -⠜⣆⢕⠁⠇⡑⣪⣢⡔⠄⣿⣯⢖⣾⣿⣿⢻⢀⢂⠂⢈ -⡆⣆⢇⠆⣳⠠⠐⢝⡢⡈⠿⠟⣿⠯⠏⣫⠞⡰⠄⠂⠐ -⡰⠊⢀⠊⢰⠡⠁⡑⠑⢉⡈⡪⢄⢀⠼⣱⣆⢺⡠⣨⠂ -⠄⠄⠈⢀⢠⡩⠠⠄⠃⢗⣶⣾⠟⠨⣾⣞⣯⢝⣻⣺⡹ -⢀⠁⠈⢀⢕⠍⠂⠄⠄⠐⠈⠠⠄⠄⠈⠹⣿⣧⠋⣺⣞ -⠐⢄⢀⢐⠅⠁⠄⠄⡁⠄⡔⡄⣊⢄⠄⡀⠈⢻⡆⣗⣿ -⢔⠐⡐⢄⢂⠨⡀⢅⠄⡂⢣⢐⢸⢁⡎⣶⣒⡢⡱⡸⡎ ---> diff --git a/views/partials/comments/troll.handlebars b/views/partials/comments/troll.handlebars @@ -1,31 +0,0 @@ -<!-- -░░░░█░░░▒▒▒▒▒▒░░░░░░░░▒▒▒░░█ -░░░█░░░░░░▄██▀▄▄░░░░░▄▄▄░░░░█ -░▄▀▒▄▄▄▒░█▀▀▀▀▄▄█░░░██▄▄█░░░░█ -█░▒█▒▄░▀▄▄▄▀░░░░░░░░█░░░▒▒▒▒▒░█ -█░▒█░█▀▄▄░░░░░█▀░░░░▀▄░░▄▀▀▀▄▒█ -░█░▀▄░█▄░█▀▄▄░▀░▀▀░▄▄▀░░░░█░░█ -░░█░░░▀▄▀█▄▄░█▀▀▀▄▄▄▄▀▀█▀██░█ -░░░█░░░░██░░▀█▄▄▄█▄▄█▄████░█ -░░░░█░░░░▀▀▄░█░░░█░█▀██████░█ -░░░░░▀▄░░░░░▀▀▄▄▄█▄█▄█▄█▄▀░░█ -░░░░░░░▀▄▄░▒▒▒▒░░░░░░░░░░▒░░░█ - -░░░░░░░▐█▀█▄░░░░░░░░░░▄█▀█▌ -░░░░░░░█▐▓░█▄░░░░░░░▄█▀▄▓▐█ -░░░░░░░█▐▓▓░████▄▄▄█▀▄▓▓▓▌█ -░░░░░▄█▌▀▄▓▓▄▄▄▄▀▀▀▄▓▓▓▓▓▌█ -░░░▄█▀▀▄▓█▓▓▓▓▓▓▓▓▓▓▓▓▀░▓▌█ -░░█▀▄▓▓▓███▓▓▓███▓▓▓▄░░▄▓▐█▌ -░█▌▓▓▓▀▀▓▓▓▓███▓▓▓▓▓▓▓▄▀▓▓▐█ -▐█▐██▐░▄▓▓▓▓▓▀▄░▀▓▓▓▓▓▓▓▓▓▌█▌ -█▌███▓▓▓▓▓▓▓▓▐░░▄▓▓███▓▓▓▄▀▐█ -█▐█▓▀░░▀▓▓▓▓▓▓▓▓▓██████▓▓▓▓▐█ -▌▓▄▌▀░▀░▐▀█▄▓▓██████████▓▓▓▌█▌ - - -_/﹋\_ -(҂`_´) -<,︻╦╤─ +rep +rep +rep +rep -_/﹋\_ ---> diff --git a/views/partials/comments/virusexe.handlebars b/views/partials/comments/virusexe.handlebars @@ -1,20 +0,0 @@ -<!-- -Loading... 0% -▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ -4% -█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ -8% -██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ -20% -█████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ -36% -█████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ -52% -█████████████▒▒▒▒▒▒▒▒▒▒▒▒ -84% -█████████████████████▒▒▒▒ -100% -█████████████████████████ - -Virus.exe is done downloading! ---> diff --git a/views/partials/comments/windows.handlebars b/views/partials/comments/windows.handlebars @@ -1,11 +0,0 @@ -<!-- - _______________________________ __ - | Windows                      [-][口][×]| | - | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ | - | Windows has detected Fortnite on your browser.          | - |   Terminate Cancer?                      | - |    ______    ______    ______   | - |    |  Yes   |   |  Yes    |     |  Yes     | - |     ̄ ̄ ̄ ̄ ̄ ̄     ̄ ̄ ̄ ̄ ̄ ̄     ̄ ̄ ̄ ̄ ̄ ̄   | -   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ---> diff --git a/views/partials/lsTemplate.handlebars b/views/partials/lsTemplate.handlebars @@ -1 +0,0 @@ -<p class="ls">{{perms}} {{numLinks}} ryan ryan {{fileSize}} {{mtime}} <a href="/{{basename}}">{{basename}}</a></p> diff --git a/views/partials/terminalTemplate.handlebars b/views/partials/terminalTemplate.handlebars @@ -1,23 +0,0 @@ -<div class="twin"> - <div style="tcontent"> - </div> - <div id="content"> - {{#each commands}} - {{#if markup}} - <hr class="prompt-break"> - <span class="prompt1">ryan</span><span class="prompt2">@</span><span class="prompt3">themainframe</span><span class="prompt4"></span> <span>cat {{args}}</span> - <div class="cat"> - {{> (lookup . 'markup')}} - </div> - {{else}} - <hr class="prompt-break"> - <span class="prompt1">ryan</span><span class="prompt2">@</span><span class="prompt3">themainframe</span><span class="prompt4"></span> <span>ls {{args}}</span> - {{#each lsList}} - {{> lsTemplate}} - {{/each}} - {{/if}} - {{/each}} - - </div> -</div> - diff --git a/views/post.handlebars b/views/post.handlebars @@ -1,2 +0,0 @@ -Post -<script type="module" defer src="/site-bkgs/bin/{{bkgScript}}"></script>