CINXE.COM

Paperpal

<!doctype html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Paperpal</title> <meta name="apple-mobile-web-app-title" content="Paperpal" /> <meta name="application-name" content="Paperpal" /> <meta name="msapplication-TileColor" content="#f3643c" /> <meta name="msapplication-config" content="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/browserconfig.xml" /> <meta name="theme-color" content="#334563" /> <link rel="apple-touch-icon" sizes="180x180" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/static/apple-touch-icon.png" /> <link rel="icon" type="image/png" sizes="32x32" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/static/favicon-32x32.png" /> <link rel="icon" type="image/png" sizes="16x16" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/static/favicon-16x16.png" /> <link rel="manifest" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/site.webmanifest" /> <link rel="mask-icon" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/static/safari-pinned-tab.svg" color="#f3643c" /> <link rel="icon" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/static/favicon.ico" /> <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,700;1,400&family=IBM+Plex+Serif:wght@500;700&display=swap" rel="stylesheet"> <link rel="preload" as="script" href="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/preflight.js" /> </head> <body> <div id="app"></div> <script src="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/vendor/react.js"></script> <script src="//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/vendor/react-dom.js"></script> <script> window.unsilo = window.unsilo || {} window.unsilo.webpackPath = '//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/' </script> <script> (function() { if (isModernBrowser()) { const config = getConfig() loadScript('//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/preflight.js', function() { config.then(bootstrap) }) } else { loadScript('//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/polyfill.js', function() { const config = getConfig() loadScript('//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/preflight.legacy.js', function() { config.then(bootstrap) }) }) } function loadScript(src, done) { const script = document.createElement('script') script.src = src script.onload = done document.body.appendChild(script) } function isModernBrowser() { // https://gist.github.com/DaBs/89ccc2ffd1d435efdacff05248514f38 const es2015 = 'class ಠ_ಠ extends Array{constructor(j=`a`,...c){const q=(({u: e})=>{return {[`${c}`]:Symbol(j)};})({});super(j,q,...c)}}new Promise(f=>{const a=function*(){return "\\u{20BB7}".match(/./u)[0].length===2||!0};for (let z of a()){const [x,y,w,k]=[new Set(),new WeakSet(),new Map(), new WeakMap()];break}f(new Proxy({},{get:(h,i) =>i in h ?h[i]:"j".repeat(0o2)}))}).then(t => new ಠ_ಠ(t.d))' const es2016 = '[].includes(42**2);' const es2017 = 'async function foo() { await true }; Object.entries({})' const es2018 = 'new Promise(r => { r() }).finally(() => {})' const es2019 = 'try {} catch {}; [].flat()' function tryEval(s) { try { eval(s); return true } catch (err) { return false } } return ( tryEval(es2015) && tryEval(es2016) && tryEval(es2017) && tryEval(es2018) && tryEval(es2019) && typeof globalThis !== undefined && typeof fetch !== 'undefined' && typeof IntersectionObserver !== 'undefined' ) } function getConfig() { return fetch('//dzwn30rdg2o6a.cloudfront.net/preflight/default/2023.35.0/preflight.json') .then(function(response) { return response.ok ? response : Promise.reject(response) }) .then(function(response) { return response.json() }) } function bootstrap(config) { const app = new unsilo.App() app.bootstrap(config) .then(function() { app.mountSiteContainer(document.getElementById('app')) }) .catch(function(e) { if (console && console.error) console.error(e) const element = document.getElementById('app') element.className = 'site-content' element.innerHTML = '<div class="site-error">Sorry, an error occurred while loading the page.</div>' }) } })() </script> </body> </html>