diff --git a/index.js b/index.js index 77ebeaf..584353e 100644 --- a/index.js +++ b/index.js @@ -131,6 +131,16 @@ app.post("/setup", async function (req, res) { } res.redirect("/"); }); + +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} + app.get("/", async function (req, res) { if (!process.env.SETUP) { res.render("setup"); @@ -155,6 +165,7 @@ app.get("/", async function (req, res) { admin: req.session.admin, alive: alive, marketplace: process.env.MARKETPLACE, + random: papy(), }); } }); @@ -209,7 +220,6 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { } console.log("query finished " + Date.now()); logsent = logsent.body.value; - console.log(logsent); if (logsent == 1 || logsent == -1 || logsent == null) { logsent = undefined; @@ -240,6 +250,7 @@ app.get("/BankF", ensureAuthenticated, async function (req, res) { admin: req.session.admin, sucesses: successes, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); @@ -335,6 +346,7 @@ app.post("/sendfunds", async function (req, res) { user: req.session.user, admin: req.session.admin, marketplace: process.env.MARKETPLACE, + random: papy(), }); } }); @@ -368,6 +380,7 @@ app.post("/register", async function (req, res) { errors: errors, successes: successes, marketplace: process.env.MARKETPLACE, + random: papy(), }); } } @@ -376,6 +389,7 @@ app.post("/register", async function (req, res) { res.render("register", { errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); } }); @@ -421,6 +435,7 @@ app.post("/login", async function (req, res) { res.render("login", { errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); } else if (verified.body.value == 1) { req.session.user = name; @@ -431,6 +446,7 @@ app.post("/login", async function (req, res) { res.render("login", { errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); } } @@ -452,6 +468,8 @@ app.get("/logout", function (req, res) { req.session.regenerate(function (err) { res.render("login", { marketplace: process.env.MARKETPLACE, + random: papy(), + }); }); }); @@ -461,6 +479,7 @@ app.get("/login", function (req, res) { res.render("login", { user: req.session.user, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); }); @@ -470,6 +489,7 @@ app.get("/register", function (req, res) { user: req.session.user, admin: req.session.admin, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); diff --git a/package-lock.json b/package-lock.json index 3301176..aea3cbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -152,6 +152,12 @@ "node": ">=0.4.0" } }, + "node_modules/after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -281,6 +287,21 @@ "mimic-response": "^1.0.0" } }, + "node_modules/component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, "node_modules/connect-flash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", @@ -431,6 +452,82 @@ "once": "^1.4.0" } }, + "node_modules/engine.io": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", + "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/engine.io-client": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", + "dependencies": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dependencies": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "node_modules/engine.io/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/engine.io/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/engine.io/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/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1632,6 +1729,34 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "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/xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -1740,6 +1865,11 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1848,6 +1978,21 @@ "mimic-response": "^1.0.0" } }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, "connect-flash": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", @@ -1961,6 +2106,79 @@ "once": "^1.4.0" } }, + "engine.io": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", + "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "~7.4.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "engine.io-client": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2914,6 +3132,17 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "ws": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", + "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", diff --git a/public/css/papy.css b/public/css/papy.css new file mode 100644 index 0000000..076e987 --- /dev/null +++ b/public/css/papy.css @@ -0,0 +1,129 @@ +@font-face { + font-family: "PapyrusW01"; + src: url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.eot"); + src: url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.eot?#iefix") + format("embedded-opentype"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.woff2") + format("woff2"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.woff") + format("woff"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.ttf") + format("truetype"), + url("//db.onlinewebfonts.com/t/a0e1b1883c0cf520e9c50d0cd91cd0d0.svg#PapyrusW01") + format("svg"); +} + +.main { + display: flex; + flex-direction: column; + justify-content: space-around; + height: 100vh; +} +body { + background: #f4da46; + height: 100vh; + background-attachment: fixed; +} +.navbarrr { + background: #bc5b0b; +} +.blue { + background: #46cff2; +} +.container-large { + padding-left: 10%; + padding-right: 10%; +} +.col { + padding: 0px; + padding-left: 0px; + padding-right: 0px; +} +.card { + padding: 10px; +} +.row { + margin-left: 0px; + margin-right: 0px; +} +.logo { + width: 250px; + background-color: white; +} +.logs { + height: 350px; + overflow: auto; +} + +.content { + flex-grow: 1; +} + +.gallery { + background-color: white; + margin-bottom: 50px; + box-shadow: 10px 10px 5px black; +} + +.bg-custom { + background-color: #130f40; +} +.button-fixed { + bottom: 0; + position: fixed; + right: 0; + border-radius: 4px; +} +.fas { + cursor: pointer; + font-size: 24px; +} +p { + font-size: 14px; +} + +.text-black { + color: black; +} +.text-white { + color: white; +} +.form-check-input { + margin-left: 0; + padding: inherit; +} + +input[type="radio"]:checked ~ .reveal-if-active, +input[type="checkbox"]:checked ~ .reveal-if-active { + opacity: 1; + max-height: 100px; /* little bit of a magic number :( */ + overflow: visible; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +label { + font-family: "PapyrusW01"; +} + +h1 { + color: white; +} +.shadow { + box-shadow: 5px 10px #888888; +} +$w: Min(10em, 100%); + +.grid--masonry { + display: grid; + grid-template-columns: repeat(auto-fit, $w); + + > * { + width: $w; + } +} diff --git a/public/css/style.css b/public/css/style.css index aff02d9..5cecb32 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,3 +1,4 @@ + .main { display: flex; flex-direction: column; diff --git a/routes/admin.js b/routes/admin.js index 16902c8..7033bc3 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -40,6 +40,7 @@ router.get("/", checkAdmin, function (req, res) { user: req.session.user, admin: req.session.admin, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); @@ -91,6 +92,7 @@ router.post("/user", checkAdmin, async function (req, res) { admin: req.session.admin, successes: successes, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); @@ -118,6 +120,7 @@ router.post("/baluser", checkAdmin, async function (req, res) { successes: successes, errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); @@ -148,6 +151,7 @@ router.post("/bal", checkAdmin, async function (req, res) { admin: req.session.admin, successes: successes, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); router.post("/userdelete", checkAdmin, async function (req, res) { @@ -180,6 +184,7 @@ router.post("/userdelete", checkAdmin, async function (req, res) { successes: successes, errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); router.post("/destroyallsessions", checkAdmin, async function (req, res) { @@ -209,6 +214,7 @@ router.post("/destroyallsessions", checkAdmin, async function (req, res) { admin: req.session.admin, errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); } }); @@ -281,5 +287,12 @@ router.post("/close", checkAdmin, async function (req, res) { }); res.redirect("../"); }); - +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} module.exports = router; diff --git a/routes/marketplace.js b/routes/marketplace.js index b1eb76a..ebc4ea9 100644 --- a/routes/marketplace.js +++ b/routes/marketplace.js @@ -52,6 +52,7 @@ router.get("/", function (req, res) { user: req.session.user, admin: req.session.admin, marketplace: process.env.MARKETPLACE, + random: papy(), }); } }); @@ -80,6 +81,7 @@ router.get("/marketdash", ensureAuthenticated, function (req, res) { admin: req.session.admin, inventory: inventory, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); }); @@ -95,6 +97,7 @@ router.get("/:id", function (req, res) { admin: req.session.admin, item: item, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); }); @@ -231,4 +234,13 @@ router.post("/:id/buy", async function (req, res) { } })*/ +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} + module.exports = router; diff --git a/routes/settings.js b/routes/settings.js index f8256ab..f01e270 100644 --- a/routes/settings.js +++ b/routes/settings.js @@ -40,6 +40,7 @@ router.post("/pass", ensureAuthenticated, async function (req, res) { user: req.session.user, admin: req.session.admin, marketplace: process.env.MARKETPLACE, + random: papy(), }); } try { @@ -63,8 +64,17 @@ router.post("/pass", ensureAuthenticated, async function (req, res) { successes: successes, errors: errors, marketplace: process.env.MARKETPLACE, + random: papy(), }); }); }); +function papy() { + const rndInt = Math.floor(Math.random() * 1337); + let random = false; + if (rndInt == 420) { + random = true; + } + return random; +} module.exports = router; diff --git a/views/layout.pug b/views/layout.pug index 5dd3f29..e5bde85 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -5,7 +5,10 @@ html link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css", integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z", crossorigin="anonymous") link(rel="preconnect" href="https://fonts.gstatic.com") link(href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&display=swap" rel="stylesheet") - link(rel='stylesheet' href='/css/style.css') + if random == true + link(rel='stylesheet' href='/css/papy.css') + if random == false || random == null + link(rel='stylesheet' href='/css/style.css') meta(name='viewport', content='width=device-width, initial-scale=1.0') body nav.navbar.navbar-expand-lg.navbar-dark.navbarrr.shadow-lg