diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/config.toml b/config.toml index ffd2f9d..3c42779 100755 --- a/config.toml +++ b/config.toml @@ -64,7 +64,6 @@ DefaultContentLanguage = "ru" # weight = 2 languageCode= 'en' languageName = 'EN' - languageFlag = "🇺🇸" title = "Sadium" # subtitle = "A simple, retro theme for Hugo" [languages.en.params] @@ -118,7 +117,6 @@ DefaultContentLanguage = "ru" # weight = 1 languageCode = 'ru' languageName = 'RU' - languageFlag = "🇷🇺" title = "Sadium" [languages.ru.params] # subtitle = "A simple, retro theme for Hugo" diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..310063e --- /dev/null +++ b/public/404.html @@ -0,0 +1,236 @@ + + + + + 404 Page not found :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

404 — Страница не найдена...

+ +
+ Вернуться на домашнюю страницу → +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/about/about/index.html b/public/about/about/index.html new file mode 100644 index 0000000..dd017de --- /dev/null +++ b/public/about/about/index.html @@ -0,0 +1,254 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

+
+ + + +

Приветствую!

+

Меня звать Сисадмин Линк, парень, 23 годика, я создатель данного сайта и хостер некоторых сервисов с открытым исходным кодом.

+

Работаю сисадмином в подразделении одного колледжа.

+

Это всё… пока что. + +

+ + + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/about/index.html b/public/about/index.html new file mode 100644 index 0000000..3f14285 --- /dev/null +++ b/public/about/index.html @@ -0,0 +1,273 @@ + + + + + Обо мне :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ +

+ + + + + + + +
+ + + + +

Приветствую!

+

Меня звать Сисадмин Линк, парень, 23 годика, я создатель данного сайта и хостер некоторых сервисов с открытым исходным кодом.

+

Работаю сисадмином в подразделении одного колледжа.

+

Это всё… пока что. + +

+ + + + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/about/index.xml b/public/about/index.xml new file mode 100644 index 0000000..07866f2 --- /dev/null +++ b/public/about/index.xml @@ -0,0 +1,33 @@ + + + + Обо мне on Sadium + /about/ + Recent content in Обо мне on Sadium + Hugo -- gohugo.io + ru + + + /about/about/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /about/about/ + Приветствую! Меня звать Сисадмин Линк, парень, 23 годика, я создатель данного сайта и хостер некоторых сервисов с открытым исходным кодом. +Работаю сисадмином в подразделении одного колледжа. +Это всё&hellip; пока что. + <img class="center" src="/img/avatar.jpg" width="300" style="border:3px; border-style:dashed; border-color:#ffffff; padding: 0px;"> + + +<h1 id="приветствую">Приветствую!</h1> +<p>Меня звать <strong>Сисадмин Линк</strong>, парень, 23 годика, я создатель данного сайта и хостер некоторых <a href="/services">сервисов</a> с <strong>открытым исходным кодом</strong>.</p> +<p>Работаю сисадмином в подразделении одного колледжа.</p> +<p>Это всё&hellip; пока что. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> +<!-- raw HTML omitted --> +<!-- raw HTML omitted --> + + + + + diff --git a/public/about/page/1/index.html b/public/about/page/1/index.html new file mode 100644 index 0000000..c87950f --- /dev/null +++ b/public/about/page/1/index.html @@ -0,0 +1,10 @@ + + + + /about/ + + + + + + diff --git a/public/bundle.min.js b/public/bundle.min.js new file mode 100644 index 0000000..c276868 --- /dev/null +++ b/public/bundle.min.js @@ -0,0 +1,45 @@ +(()=>{var t=document.querySelector(".container"),e=document.querySelectorAll(".menu");document.body.addEventListener("click",()=>{e.forEach(e=>{e.classList.contains("open")&&e.classList.remove("open")})}),window.addEventListener("resize",()=>{e.forEach(e=>{e.classList.remove("open")})}),e.forEach(n=>{const o=n.querySelector(".menu__trigger"),s=n.querySelector(".menu__dropdown");o.addEventListener("click",o=>{o.stopPropagation(),n.classList.contains("open")?n.classList.remove("open"):(e.forEach(e=>e.classList.remove("open")),n.classList.add("open")),s.getBoundingClientRect().right>t.getBoundingClientRect().right&&(s.style.left="auto",s.style.right=0)}),s.addEventListener("click",e=>e.stopPropagation())})})(),(()=>{var e=Object.getOwnPropertyNames,t=(t,n)=>function(){return n||(0,t[e(t)[0]])((n={exports:{}}).exports,n),n.exports},n=t({""(e,t){var s="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},n=function(e){var s,c,o=/\blang(?:uage)?-([\w-]+)\b/i,d=0,i={},t={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(t){return t instanceof n?new n(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);f+=u.value.length,u=u.next){if(b=u.value,o.length>s.length)return;if(!(b instanceof n)){if(O=1,z){if(!(g=l(N,f,s,S)))break;var E=g.index,L=g.index+g[0].length,p=f;for(p+=u.value.length;p<=E;)u=u.next,p+=u.value.length;if(p-=u.value.length,f=p,u.value instanceof n)continue;for(j=u;j!==o.tail&&(pd.reach&&(d.reach=k),w=u.prev,A&&(w=a(o,w,A),f+=A.length),h(o,w,O),D=new n(_,M?t.tokenize(C,M):C,R,C),(u=a(o,w,D),T&&a(o,u,T),1d.reach&&(d.reach=x.reach))}}}}(e,o,s,o.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(o)},hooks:{all:{},add:function(e,n){var s=t.hooks.all;s[e]=s[e]||[],s[e].push(n)},run:function(e,n){var o,i,s=t.hooks.all[e];if(s&&s.length)for(i=0;o=s[i++];)o(n)}},Token:n};function n(e,t,n,s){this.type=e,this.content=t,this.alias=n,this.length=0|(s||"").length}function l(e,t,n,s){e.lastIndex=t;var i,o=e.exec(n);return o&&s&&o[1]&&(i=o[1].length,o.index+=i,o[0]=o[0].slice(i)),o}function u(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function a(e,t,n){var o=t.next,s={value:n,prev:t,next:o};return t.next=s,o.prev=s,e.length++,s}function h(e,t,n){for(var s=t.next,o=0;o"+o.content+""},!e.document)return e.addEventListener&&(t.disableWorkerMessageHandler||e.addEventListener("message",function(n){var s=JSON.parse(n.data),o=s.language,i=s.code,a=s.immediateClose;e.postMessage(t.highlight(i,t.languages[o],o)),a&&e.close()},!1)),t;s=t.util.currentScript();function r(){t.manual||t.highlightAll()}return(s&&(t.filename=s.src,s.hasAttribute("data-manual")&&(t.manual=!0)),!t.manual)&&(c=document.readyState,"loading"===c||"interactive"===c&&s&&s.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)),t}(s);"undefined"!=typeof t&&t.exports&&(t.exports=n),"undefined"!=typeof global&&(global.Prism=n),n.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>/=$<%]+(?:\s(?:\s*[^\s>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>/]+/,inside:{namespace:/^[^\s>/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(e,t){var o,i,s={};s["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[t]},s.cdata=/^$/i,o={"included-cdata":{pattern://i,inside:s}},o["language-"+t]={pattern:/[\s\S]+/,inside:n.languages[t]},i={},i[e]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:o},n.languages.insertBefore("markup","cdata",i)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(e,t){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\s*=\\s*(?:"[^"]*"|'[^']*'|[^\\s'">=]+(?=[\\s>]))`,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:n.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,!function(e){var n,t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+`|(?:[^\\\\ +()"']|\\\\[^])*)\\)`,"i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,n=e.languages.markup,n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),n.languages.js=n.languages.javascript,n.languages.actionscript=n.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|override|set|static)\b/,operator:/\+\+|--|(?:[+\-*/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),n.languages.actionscript["class-name"].alias="function",n.languages.markup&&n.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:n.languages.markup}}),n.languages.apacheconf={comment:/#.*/,"directive-inline":{pattern:/(^[\t ]*)\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|Type|UserFile|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferSize|BufferedLogs|CGIDScriptTimeout|CGIMapExtension|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DTracePrivileges|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtFilterDefine|ExtFilterOptions|ExtendedStatus|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|KeepAlive|KeepAliveTimeout|KeptBodySize|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|LanguagePriority|Limit(?:InternalRecursion|Request(?:Body|FieldSize|Fields|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|MMapFile|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|ModMimeUsePathInfo|ModemStandard|MultiviewsMatch|Mutex|NWSSLTrustedCerts|NWSSLUpgradeable|NameVirtualHost|NoProxy|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|RLimitCPU|RLimitMEM|RLimitNPROC|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|SSIETag|SSIEndTag|SSIErrorMsg|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|SRPUnknownUserSeed|SRPVerifierFile|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UseStapling|UserName|VerifyClient|VerifyDepth)|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadStackSize|ThreadsPerChild|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\b/im,lookbehind:!0,alias:"property"},"directive-block":{pattern:/<\/?\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\b.*>/i,inside:{"directive-block":{pattern:/^<\/?\w+/,inside:{punctuation:/^<\/?/},alias:"tag"},"directive-block-parameter":{pattern:/.*[^>]/,inside:{punctuation:/:/,string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}}},alias:"attr-value"},punctuation:/>/},alias:"tag"},"directive-flags":{pattern:/\[(?:[\w=],?)+\]/,alias:"keyword"},string:{pattern:/("|').*\1/,inside:{variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/}},variable:/[$%]\{?(?:\w\.?[-+:]?)+\}?/,regex:/\^?.*\$|\^.*\$?/},n.languages.applescript={comment:[/\(\*(?:\(\*(?:[^*]|\*(?!\)))*\*\)|(?!\(\*)[\s\S])*?\*\)/,/--.+/,/#.+/],string:/"(?:\\.|[^"\\\r\n])*"/,number:/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e-?\d+)?\b/i,operator:[/[&=≠≤≥*+\-/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,class:{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},punctuation:/[{}():,¬«»《》]/},!function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",o={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},t={bash:o,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!/]|##?|%%?|\^\^?|,,?/,punctuation:/[[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:o}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:t.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:t.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},o.inside=e.languages.bash;for(var i=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=t.variable[1].inside,s=0;s>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),n.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},n.languages.c.string],comment:n.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:n.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete n.languages.c.boolean,!function(e){function n(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function t(e,t,s){return RegExp(n(e,t),s||"")}function r(e,t){for(var n=0;n>/g,function(){return"(?:"+e+")"});return e.replace(/<>/g,"[^\\s\\S]")}var S="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",c="class enum interface record struct",_="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",f="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var v=l(c),d=RegExp(l(S+" "+c+" "+_+" "+f)),z=l(c+" "+_+" "+f),T=l(S+" "+c+" "+f),u=r("<(?:[^<>;=+\\-*/%&|^]|<>)*>",2),h=r("\\((?:[^()]|<>)*\\)",2),o="@?\\b[A-Za-z_]\\w*\\b",m=n("<<0>>(?:\\s*<<1>>)?",[o,u]),i=n("(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*",[z,m]),p="\\[\\s*(?:,\\s*)*\\]",D=n("<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?",[i,p]),a=n("(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?",[n("\\(<<0>>+(?:,<<0>>+)+\\)",[n("[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>",[u,h,p])]),i,p]),s={keyword:d,punctuation:/[<>()?,.:[\]]/},w=`'(?:[^ +'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'`,O=`"(?:\\\\.|[^\\\\" +])*"`;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:t("(^|[^$\\\\])<<0>>",['@"(?:""|\\\\[^]|[^\\\\"])*"(?!")']),lookbehind:!0,greedy:!0},{pattern:t("(^|[^@$\\\\])<<0>>",[O]),lookbehind:!0,greedy:!0},{pattern:RegExp(w),greedy:!0,alias:"character"}],"class-name":[{pattern:t("(\\busing\\s+static\\s+)<<0>>(?=\\s*;)",[i]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)",[o,a]),lookbehind:!0,inside:s},{pattern:t("(\\busing\\s+)<<0>>(?=\\s*=)",[o]),lookbehind:!0},{pattern:t("(\\b<<0>>\\s+)<<1>>",[v,m]),lookbehind:!0,inside:s},{pattern:t("(\\bcatch\\s*\\(\\s*)<<0>>",[i]),lookbehind:!0,inside:s},{pattern:t("(\\bwhere\\s+)<<0>>",[o]),lookbehind:!0},{pattern:t("(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>",[D]),lookbehind:!0,inside:s},{pattern:t("\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))",[a,T,o]),inside:s}],keyword:d,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:t("([(,]\\s*)<<0>>(?=\\s*:)",[o]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:t("(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])",[o]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:t("(\\b(?:default|typeof|sizeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))",[h]),lookbehind:!0,alias:"class-name",inside:s},"return-type":{pattern:t("<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))",[a,i]),inside:s,alias:"class-name"},"constructor-invocation":{pattern:t("(\\bnew\\s+)<<0>>(?=\\s*[[({])",[a]),lookbehind:!0,inside:s,alias:"class-name"},"generic-method":{pattern:t("<<0>>\\s*<<1>>(?=\\s*\\()",[o,u]),inside:{function:t("^<<0>>",[o]),generic:{pattern:RegExp(u),alias:"class-name",inside:s}}},"type-list":{pattern:t("\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))",[v,m,o,a,d.source,h,"\\bnew\\s*\\(\\s*\\)"]),lookbehind:!0,inside:{"record-arguments":{pattern:t("(^(?!new\\s*\\()<<0>>\\s*)<<1>>",[m,h]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:d,"class-name":{pattern:RegExp(a),greedy:!0,inside:s},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var x=O+"|"+w,C=n(`/(?![*/])|//[^ +]*[ +]|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>`,[x]),b=r(n(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),k="\\b(?:assembly|event|field|method|module|param|property|return|type)\\b",F=n("<<0>>(?:\\s*\\(<<1>>*\\))?",[i,b]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:t("((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])",[k,F]),lookbehind:!0,greedy:!0,inside:{target:{pattern:t("^<<0>>(?=\\s*:)",[k]),alias:"keyword"},"attribute-arguments":{pattern:t("\\(<<0>>*\\)",[b]),inside:e.languages.csharp},"class-name":{pattern:RegExp(i),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var g=`:[^} +]+`,M=r(n(`[^"'/()]|<<0>>|\\(<>*\\)`,[C]),2),A=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[M,g]),E=r(n(`[^"'/()]|/(?!\\*)|/\\*(?:[^*]|\\*(?!/))*\\*/|<<0>>|\\(<>*\\)`,[x]),2),y=n("\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}",[E,g]);function j(n,s){return{interpolation:{pattern:t("((?:^|[^{])(?:\\{\\{)*)<<0>>",[n]),lookbehind:!0,inside:{"format-string":{pattern:t("(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)",[s,g]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:t('(^|[^\\\\])(?:\\$@|@\\$)"(?:""|\\\\[^]|\\{\\{|<<0>>|[^\\\\{"])*"',[A]),lookbehind:!0,greedy:!0,inside:j(A,M)},{pattern:t('(^|[^@\\\\])\\$"(?:\\\\.|\\{\\{|<<0>>|[^\\\\"{])*"',[y]),lookbehind:!0,greedy:!0,inside:j(y,E)}]})}(n),n.languages.dotnet=n.languages.cs=n.languages.csharp,!function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n="\\b(?!)\\w+(?:\\s*\\.\\s*\\w+)*\\b".replace(//g,function(){return t.source});e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp("(\\b(?:class|concept|enum|struct|typename)\\s+)(?!)\\w+".replace(//g,function(){return t.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(`(\\b(?:module|import)\\s+)(?:"(?:\\\\(?: +|[^])|[^"\\\\ +])*"|<[^<> +]*>|`+"(?:\\s*:\\s*)?|:\\s*".replace(//g,function(){return n})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b[a-z_]\w*\s*<(?:[^<>]|<(?:[^<>])*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(n),n.languages.cmake={comment:/#.*/,string:{pattern:/"(?:[^\\"]|\\.)*"/,greedy:!0,inside:{interpolation:{pattern:/\$\{(?:[^{}$]|\$\{[^{}$]*\})*\}/,inside:{punctuation:/\$\{|\}/,variable:/\w+/}}}},variable:/\b(?:CMAKE_\w+|\w+_(?:VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?|(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_(?:BINARY_DIR|DESCRIPTION|HOMEPAGE_URL|NAME|SOURCE_DIR|VERSION|VERSION_(?:MAJOR|MINOR|PATCH|TWEAK))|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE|XCODE_VERSION))\b/,property:/\b(?:cxx_\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\w+|\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|GLOBAL_KEYWORD|GLOBAL_PROJECT_TYPES|GLOBAL_ROOTNAMESPACE|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\b/,keyword:/\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\s*\()\b/,boolean:/\b(?:ON|OFF|TRUE|FALSE)\b/,namespace:/\b(?:PROPERTIES|SHARED|PRIVATE|STATIC|PUBLIC|INTERFACE|TARGET_OBJECTS)\b/,operator:/\b(?:NOT|AND|OR|MATCHES|LESS|GREATER|EQUAL|STRLESS|STRGREATER|STREQUAL|VERSION_LESS|VERSION_EQUAL|VERSION_GREATER|DEFINED)\b/,inserted:{pattern:/\b\w+::\w+\b/,alias:"class-name"},number:/\b\d+(?:\.\d+)*\b/,function:/\b[a-z_]\w*(?=\s*\()\b/i,punctuation:/[()>}]|\$[<{]/},!function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:t}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(n),n.languages.csp={directive:{pattern:/(^|[^-\da-z])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[^-\da-z]|$)/i,lookbehind:!0,alias:"keyword"},safe:{pattern:/'(?:deny|none|report-sample|self|strict-dynamic|top-only|(?:nonce|sha(?:256|384|512))-[-+/\w=]+)'/i,alias:"selector"},unsafe:{pattern:/(?:'unsafe-(?:allow-redirects|dynamic|eval|hash-attributes|hashed-attributes|hashes|inline)'|\*)/i,alias:"function"}},!function(e){t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp(`\\[(?:[^[\\]"']|`+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=n,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var t,n,s={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:s,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:s,number:o})}(n),!function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach(function(n){var o=t[n],s=[];/^\w+$/.test(n)||s.push(/\w+/.exec(n)[0]),"diff"===n&&s.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+o+`].*(?: +?| +|(?![\\s\\S])))+`,"m"),alias:s,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}}),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(n),!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,s,o,i){if(n.language===s){var a=n.tokenStack=[];n.code=n.code.replace(o,function(e){if("function"==typeof i&&!i(e))return e;for(var r,o=a.length;-1!==n.code.indexOf(r=t(s,o));)++o;return a[o]=e,r}),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,s){if(n.language===s&&n.tokenStack){n.grammar=e.languages[s];var o=0,i=Object.keys(n.tokenStack);!function a(r){for(d=0;d=i.length);d++)if(c=r[d],"string"==typeof c||c.content&&"string"==typeof c.content){{var c,d,m=i[o],f=n.tokenStack[m],u="string"==typeof c?c:c.content,p=t(s,m),h=u.indexOf(p);if(-1]?|>[=>]?|[&|^~]/,number:/\b\d+(?:\.\d+)?\b/,boolean:/[Tt]rue|[Ff]alse|[Nn]one/,variable:/\b\w+?\b/,punctuation:/[{}[\](),.:;]/};var n=/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}|\{#[\s\S]*?#\}/g,t=e.languages["markup-templating"];e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"django",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"django")}),e.languages.jinja2=e.languages.django,e.hooks.add("before-tokenize",function(e){t.buildPlaceholders(e,"jinja2",n)}),e.hooks.add("after-tokenize",function(e){t.tokenizePlaceholders(e,"jinja2")})}(n),!function(e){var i="(?:[ ]+(?![ ])(?:)?|)".replace(//g,function(){return`\\\\[ +](?:\\s|\\\\[ +]|#.*(?!.))*(?![\\s#]|\\\\[ +])`}),n=`"(?:[^"\\\\ +]|\\\\(?: +|[^]))*"|'(?:[^'\\\\ +]|\\\\(?: +|[^]))*'`,a=`--[\\w-]+=(?:|(?!["'])(?:[^\\s\\\\]|\\\\.)+)`.replace(//g,function(){return n}),s={pattern:RegExp(n),greedy:!0},o={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function t(e,t){return e=e.replace(//g,function(){return a}).replace(//g,function(){return i}),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:t("(^(?:ONBUILD)?\\w+)(?:)*","i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[s,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:t("(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\\b","i"),lookbehind:!0,greedy:!0},{pattern:t("(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \\\\]+)AS","i"),lookbehind:!0,greedy:!0},{pattern:t("(^ONBUILD)\\w+","i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:o,string:s,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:o},e.languages.dockerfile=e.languages.docker}(n),n.languages.elixir={doc:{pattern:/@(?:doc|moduledoc)\s+(?:("""|''')[\s\S]*?\1|("|')(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2)/,inside:{attribute:/^@\w+/,string:/['"][\s\S]+/}},comment:{pattern:/#.*/m,greedy:!0},regex:{pattern:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,greedy:!0},string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|#(?!\{)|[^#\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},module:{pattern:/\b[A-Z]\w*\b/,alias:"class-name"},"attr-name":/\b\w+\??:(?!:)/,argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@\w+/,alias:"variable"},function:/\b[_a-zA-Z]\w*[?!]?(?:(?=\s*(?:\.\s*)?\()|(?=\/\d))/,number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\b/,boolean:/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%[\]{}()]/},n.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:n.languages.elixir}}}}),n.languages.elm={comment:/--.*|\{-[\s\S]*?-\}/,char:{pattern:/'(?:[^\\'\r\n]|\\(?:[abfnrtv\\']|\d+|x[0-9a-fA-F]+))'/,greedy:!0},string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/"(?:[^\\"\r\n]|\\.)*"/,greedy:!0}],"import-statement":{pattern:/(^[\t ]*)import\s+[A-Z]\w*(?:\.[A-Z]\w*)*(?:\s+as\s+(?:[A-Z]\w*)(?:\.[A-Z]\w*)*)?(?:\s+exposing\s+)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|as|exposing)\b/}},keyword:/\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\b/,builtin:/\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[+\-/*=.$<>:&|^?%#@~!]{2,}|[+\-/*=$<>:&|^?%#@~!]/,hvariable:/\b(?:[A-Z]\w*\.)*[a-z]\w*\b/,constant:/\b(?:[A-Z]\w*\.)*[A-Z]\w*\b/,punctuation:/[{}[\]|(),.:]/},n.languages.erlang={comment:/%.+/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},"quoted-function":{pattern:/'(?:\\.|[^\\'\r\n])+'(?=\()/,alias:"function"},"quoted-atom":{pattern:/'(?:\\.|[^\\'\r\n])+'/,alias:"atom"},boolean:/\b(?:true|false)\b/,keyword:/\b(?:fun|when|case|of|end|if|receive|after|try|catch)\b/,number:[/\$\\?./,/\b\d+#[a-z0-9]+/i,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i],function:/\b[a-z][\w@]*(?=\()/,variable:{pattern:/(^|[^@])(?:\b|\?)[A-Z_][\w@]*/,lookbehind:!0},operator:[/[=/<>:]=|=[:/]=|\+\+?|--?|[=*/!]|\b(?:bnot|div|rem|band|bor|bxor|bsl|bsr|not|and|or|xor|orelse|andalso)\b/,{pattern:/(^|[^<])<(?!<)/,lookbehind:!0},{pattern:/(^|[^>])>(?!>)/,lookbehind:!0}],atom:/\b[a-z][\w@]*/,punctuation:/[()[\]{}:;,.#|]|<<|>>/},n.languages.fsharp=n.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*(?!\))[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|"(?:\\[\s\S]|[^\\"])*")B?|'(?:[^\\']|\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8}))'B?/,greedy:!0},"class-name":{pattern:/(\b(?:exception|inherit|interface|new|of|type)\s+|\w\s*:\s*|\s:\??>\s*)[.\w]+\b(?:\s*(?:->|\*)\s*[.\w]+\b)*(?!\s*[:.])/,lookbehind:!0,inside:{operator:/->|\*/,punctuation:/\./}},keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(?:abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,number:[/\b0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b0b[01]+(?:y|uy)?\b/,/(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[fm]|e[+-]?\d+)?\b/i,/\b\d+(?:[IlLsy]|u[lsy]?|UL)?\b/],operator:/([<>~&^])\1\1|([*.:<>&])\2|<-|->|[!=:]=|?|\??(?:<=|>=|<>|[-+*/%=<>])\??|[!?^&]|~[+~-]|:>|:\?>?/}),n.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(^#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}}),n.languages.insertBefore("fsharp","punctuation",{"computation-expression":{pattern:/\b[_a-z]\w*(?=\s*\{)/i,alias:"keyword"}}),n.languages.insertBefore("fsharp","string",{annotation:{pattern:/\[<.+?>\]/,inside:{punctuation:/^\[<|>\]$/,"class-name":{pattern:/^\w+$|(^|;\s*)[A-Z]\w*(?=\()/,lookbehind:!0},"annotation-content":{pattern:/[\s\S]+/,inside:n.languages.fsharp}}}}),!function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/,alias:"tag"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/,lookbehind:!0})}(n),n.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},n.languages.go=n.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete n.languages.go["class-name"],n.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:n.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/[A-Z]\w*Input(?=!?.*$)/m,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}[\]:=,]/,property:/\w+/},n.hooks.add("after-tokenize",function(e){if("graphql"===e.language)for(var o,i,a,r,c,l,d,n=e.tokens.filter(function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type}),t=0;t\\\\]|\\\\[^])*>"].join("|")+")[egimnosux]{0,6}"),greedy:!0,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:t}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0},"method-definition":{pattern:/(\bdef\s+)[\w.]+/,lookbehind:!0,inside:{function:/\w+$/,rest:e.languages.ruby}}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:RegExp("%[qQiIwWxs]?(?:"+["([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[^])*\\1","\\((?:[^()\\\\]|\\\\[^])*\\)","\\{(?:[^#{}\\\\]|#(?:\\{[^}]+\\})?|\\\\[^])*\\}","\\[(?:[^\\[\\]\\\\]|\\\\[^])*\\]","<(?:[^<>\\\\]|\\\\[^])*>"].join("|")+")"),greedy:!0,inside:{interpolation:t}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:t}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?/}},interpolation:t}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|[a-z_]\w*$/i,alias:"symbol",inside:{punctuation:/^<<[-~]?'|'$/}}}}],e.languages.rb=e.languages.ruby}(n),!function(e){e.languages.haml={"multiline-comment":{pattern:/((?:^|\r?\n|\r)([\t ]*))(?:\/|-#).*(?:(?:\r?\n|\r)\2[\t ].+)*/,lookbehind:!0,alias:"comment"},"multiline-code":[{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(?:(?:\r?\n|\r)\2[\t ].*,[\t ]*)*(?:(?:\r?\n|\r)\2[\t ].+)/,lookbehind:!0,inside:e.languages.ruby},{pattern:/((?:^|\r?\n|\r)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(?:(?:\r?\n|\r)\2[\t ].*\|[\t ]*)*/,lookbehind:!0,inside:e.languages.ruby}],filter:{pattern:/((?:^|\r?\n|\r)([\t ]*)):[\w-]+(?:(?:\r?\n|\r)(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\r?\n|\r)[\t ]*)<.+/,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\r?\n|\r)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\r?\n|\r)[\t ]*)[%.#][\w\-#.]*[\w-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^{}])+\}|\[[^\]]+\])*[/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^{}])+\}/,lookbehind:!0,inside:e.languages.ruby},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\.|[^\\"\r\n])*"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:e.languages.ruby}],punctuation:/[<>]/}},code:{pattern:/((?:^|\r?\n|\r)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:e.languages.ruby},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\r?\n|\r)[\t ]*)[~=\-&!]+/,lookbehind:!0}};for(var t,s=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],o={},n=0,i=s.length;n@[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,/;<=>@[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}),e.languages.hbs=e.languages.handlebars}(n),n.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\/].*|$)|\{-[\s\S]*?-\})/m,lookbehind:!0},char:{pattern:/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,alias:"string"},string:{pattern:/"(?:[^\\"]|\\(?:\S|\s+\\))*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,"import-statement":{pattern:/(^[\t ]*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/,punctuation:/\./}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:[{pattern:/`(?:[A-Z][\w']*\.)*[_a-z][\w']*`/,greedy:!0},{pattern:/(\s)\.(?=\s)/,lookbehind:!0},/[-!#$%*+=?&@|~:<>^\\/][-!#$%*+=?&@|~.:<>^\\/]*|\.[-!#$%*+=?&@|~.:<>^\\/]+/],hvariable:{pattern:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*/,inside:{punctuation:/\./}},constant:{pattern:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*/,inside:{punctuation:/\./}},punctuation:/[{}[\];(),.:]/},n.languages.hs=n.languages.haskell,!function(e){e.languages.http={"request-line":{pattern:/^(?:GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH|PRI|SEARCH)\s(?:https?:\/\/|\/)\S*\sHTTP\/[0-9.]+/m,inside:{method:{pattern:/^[A-Z]+\b/,alias:"property"},"request-target":{pattern:/^(\s)(?:https?:\/\/|\/)\S*(?=\s)/,lookbehind:!0,alias:"url",inside:e.languages.uri},"http-version":{pattern:/^(\s)HTTP\/[0-9.]+/,lookbehind:!0,alias:"property"}}},"response-status":{pattern:/^HTTP\/[0-9.]+ \d+ .+/m,inside:{"http-version":{pattern:/^HTTP\/[0-9.]+/,alias:"property"},"status-code":{pattern:/^(\s)\d+(?=\s)/,lookbehind:!0,alias:"number"},"reason-phrase":{pattern:/^(\s).+/,lookbehind:!0,alias:"string"}}},"header-name":{pattern:/^[\w-]+:(?=.)/m,alias:"keyword"}};var n,s,i,a,r,t=e.languages,o={"application/javascript":t.javascript,"application/json":t.json||t.javascript,"application/xml":t.xml,"text/xml":t.xml,"text/html":t.html,"text/css":t.css},c={"application/json":!0,"application/xml":!0};for(n in o)o[n]&&(s=s||{},r=c[n]?(void 0,a=(i=n).replace(/^[a-z]+\//,""),"(?:"+i+"|\\w+/(?:[\\w.-]+\\+)+"+a+"(?![+\\w.-]))"):n,s[n.replace(/\//g,"-")]={pattern:RegExp("(content-type:\\s*"+r+`(?:(?:\\r\\n?|\\n).+)*)(?:\\r?\\n|\\r){2}[\\s\\S]*`,"i"),lookbehind:!0,inside:o[n]});s&&e.languages.insertBefore("http","header-name",s)}(n),!function(e){var t=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,s="(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*",n={pattern:RegExp(s+"[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b"),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}};e.languages.java=e.languages.extend("clike",{"class-name":[n,{pattern:RegExp(s+"[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])"),lookbehind:!0,inside:n.inside}],keyword:t,function:[e.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0}}),e.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"}}),e.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":n,keyword:t,punctuation:/[<>(),.:]/,operator:/[?&|]/}},namespace:{pattern:RegExp("(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?".replace(//g,function(){return t.source})),lookbehind:!0,inside:{punctuation:/\./}}})}(n),n.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},n.languages.webmanifest=n.languages.json,!function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"],e.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}});var t=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:e.languages.kotlin}},{pattern:/\$\w+/,alias:"variable"}];e.languages.kotlin.string.inside=e.languages.kotlin["raw-string"].inside={interpolation:t},e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(n),!function(e){var t=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:t,alias:"regex"}};e.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$\$(?:\\[\s\S]|[^\\$])+\$\$|\$(?:\\[\s\S]|[^\\$])+\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0,alias:"class-name"},function:{pattern:t,alias:"selector"},punctuation:/[[\]{}&]/},e.languages.tex=e.languages.latex,e.languages.context=e.languages.latex}(n),n.languages.less=n.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*/]/}),n.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),n.languages.llvm={comment:/;.*/,string:{pattern:/"[^"]*"/,greedy:!0},boolean:/\b(?:true|false)\b/,variable:/[%@!#](?:(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+|\d+)/i,label:/(?!\d)(?:[-$.\w]|\\[a-f\d]{2})+:/i,type:{pattern:/\b(?:double|float|fp128|half|i[1-9]\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\b/,alias:"class-name"},keyword:/\b[a-z_][a-z_0-9]*\b/,number:/[+-]?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b|\b0x[\dA-Fa-f]+\b|\b0xK[\dA-Fa-f]{20}\b|\b0x[ML][\dA-Fa-f]{32}\b|\b0xH[\dA-Fa-f]{4}\b/,punctuation:/[{}[\];(),.!*=<>]/},n.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},!function(e){function n(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\ + ]|(?: +| +?)(?![ +]))`}),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+e+")")}var s="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",t=`\\|?__(?:\\|__)+\\|?(?:(?: +| +?)|(?![^]))`.replace(/__/g,function(){return s}),o=`\\|?[ ]*:?-{3,}:?[ ]*(?:\\|[ ]*:?-{3,}:?[ ]*)+\\|?(?: +| +?)`;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+o+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+o+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(s),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(s),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[[\]!:]|[<>]/},alias:"url"},bold:{pattern:n("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[ ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ ]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(t){["url","bold","italic","strike","code-snippet"].forEach(function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])})}),e.hooks.add("after-tokenize",function(e){"markdown"!==e.language&&"md"!==e.language||!function e(t){if(t&&"string"!=typeof t)for(var n,s,o,i,r,a=0,c=t.length;a",quot:'"'},r=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(n),n.languages.nasm={comment:/;.*$/m,string:/(["'`])(?:\\.|(?!\1)[^\\\r\n])*\1/,label:{pattern:/(^\s*)[A-Za-z._?$][\w.?$@~#]*:/m,lookbehind:!0,alias:"function"},keyword:[/\[?BITS (?:16|32|64)\]?/,{pattern:/(^\s*)section\s*[a-z.]+:?/im,lookbehind:!0},/(?:extern|global)[^;\r\n]*/i,/(?:CPU|FLOAT|DEFAULT).*$/m],register:{pattern:/\b(?:st\d|[xyz]mm\d\d?|[cdt]r\d|r\d\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|sp|si|di)|[cdefgs]s)\b/i,alias:"variable"},number:/(?:\b|(?=\$))(?:0[hx](?:\.[\da-f]+|[\da-f]+(?:\.[\da-f]+)?)(?:p[+-]?\d+)?|\d[\da-f]+[hx]|\$\d[\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\d+|(?:\d+(?:\.\d+)?|\.\d+)(?:\.?e[+-]?\d+)?[dt]?)\b/i,operator:/[[\]*+\-/%<>=&|$!]/},n.languages.objectivec=n.languages.extend("c",{string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*/@]/}),delete n.languages.objectivec["class-name"],n.languages.objc=n.languages.objectivec,n.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*/$%!?~][!$%&*+\-./:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}[\]|.,:;]|\b_\b/},n.languages.perl={comment:[{pattern:/(^\s*)=\w[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{([<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{([<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+(?![\w$]))+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},function:{pattern:/sub \w+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/},!function(e){var t,n,s=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,o=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,a=/|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,r=/[{}[\](),:;]/;e.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:s,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:a,punctuation:r},t={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n[\]]+\]|->\w+)?)/,lookbehind:!0,inside:e.languages.php},n=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:t}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:t}}],e.languages.insertBefore("php","variable",{string:n,attribute:{pattern:/#\[(?:[^"'/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:s,string:n,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:o,number:i,operator:a,punctuation:r}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),e.hooks.add("before-tokenize",function(t){/<\?/.test(t.code)&&e.languages["markup-templating"].buildPlaceholders(t,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}),e.hooks.add("after-tokenize",function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"php")})}(n),n.languages.insertBefore("php","variable",{this:/\$this\b/,global:/\$(?:_(?:SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE)|GLOBALS|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)\b/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/static|self|parent/,punctuation:/::|\\/}}}),!function(){var t=n.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^[\]])*\]|[^[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},s=t.string[0].inside;s.boolean=t.boolean,s.variable=t.variable,s.function.inside=t}(),n.languages.processing=n.languages.extend("clike",{keyword:/\b(?:break|catch|case|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\b/,operator:/<[<=]?|>[>=]?|&&?|\|\|?|[%?]|[!=+\-*/]=?/}),n.languages.insertBefore("processing","number",{constant:/\b(?!XML\b)[A-Z][A-Z\d_]+\b/,type:{pattern:/\b(?:boolean|byte|char|color|double|float|int|[A-Z]\w*)\b/,alias:"variable"}}),n.languages.processing.function=/\b\w+(?=\s*\()/,n.languages.processing["class-name"].alias="variable",!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ].+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:e.languages.javascript},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ].+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:e.languages.markup},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,function:/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]).+/m,lookbehind:!0,inside:e.languages.javascript},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:e.languages.javascript},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*(?!\s))(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:e.languages.javascript},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/,"attr-id":/#[\w-]+/,"attr-class":/\.[\w-]+/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:e.languages.javascript}],punctuation:/[.\-!=|]+/};for(var t,s=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","less","livescript","markdown",{filter:"sass",language:"scss"},"stylus"],o={},n=0,i=s.length;n(?:(?:\r?\n|\r(?!\n))(?:\\2[ ].+|\\s*?(?=\r?\n|\r)))+".replace("",function(){return t.filter}),"m"),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[t.language]}});e.languages.insertBefore("pug","filter",o)}(n),n.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},n.languages.python["string-interpolation"].inside.interpolation.inside.rest=n.languages.python,n.languages.py=n.languages.python,n.languages.r={comment:/#.*/,string:{pattern:/(['"])(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"percent-operator":{pattern:/%[^%\s]*%/,alias:"operator"},boolean:/\b(?:TRUE|FALSE)\b/,ellipsis:/\.\.(?:\.|\d+)/,number:[/\b(?:NaN|Inf)\b/,/(?:\b0x[\dA-Fa-f]+(?:\.\d*)?|\b\d+(?:\.\d*)?|\B\.\d+)(?:[EePp][+-]?\d+)?[iL]?/],keyword:/\b(?:if|else|repeat|while|function|for|in|next|break|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_)\b/,operator:/->?>?|<(?:=|=!]=?|::?|&&?|\|\|?|[+*/^$@~]/,punctuation:/[(){}[\],;]/},!function(e){var t,o,i=e.util.clone(e.languages.javascript),s="(?:\\{*\\.{3}(?:[^{}]|)*\\})";function n(e,t){return e=e.replace(//g,function(){return"(?:\\s|//.*(?!.)|/\\*(?:[^*]|\\*(?!/))\\*/)"}).replace(//g,function(){return"(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})"}).replace(//g,function(){return s}),RegExp(e,t)}s=n(s).source,e.languages.jsx=e.languages.extend("markup",i),e.languages.jsx.tag.pattern=n(`+(?:[\\w.:$-]+(?:=(?:"(?:\\\\[^]|[^\\\\"])*"|'(?:\\\\[^]|[^\\\\'])*'|[^\\s{'"/>=]+|))?|))**/?)?>`),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=i.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:n(""),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:n("="),inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag),t=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(t).join(""):""},o=function(n){for(var s,r,c,i=[],a=0;a"===s.content[s.content.length-1].content||i.push({tagName:t(s.content[0].content[1]),openedBraces:0}):0]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|as|declare|implements|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[{*]|$))/),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(n),!function(e){var t,n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),t=e.languages.tsx.tag,t.pattern=RegExp("(^|[^\\w$]|(?=|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),n.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete n.languages.reason.function,!function(e){for(var t="/\\*(?:[^*/]|\\*(?!/)|/(?!\\*)|)*\\*/",n=0;n<2;n++)t=t.replace(//g,function(){return t});t=t.replace(//g,function(){return"[^\\s\\S]"}),e.languages.rust={comment:[{pattern:RegExp("(^|[^\\\\])"+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0,alias:"string"},attribute:{pattern:/#!?\[(?:[^[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|Self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:[ui](?:8|16|32|64|128|size)|f(?:32|64)|bool|char|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64|size)?|f32|f64))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(n),!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(n),n.languages.scss=n.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),n.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),n.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),n.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),n.languages.scss.atrule.inside.rest=n.languages.scss,n.languages.scala=n.languages.extend("java",{"triple-quoted-string":{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,number:/\b0x(?:[\da-f]*\.)?[\da-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e\d+)?[dfl]?/i,builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,symbol:/'[^\d\s\\]\w*/}),delete n.languages.scala["class-name"],delete n.languages.scala.function,n.languages.scheme={comment:/;.*|#;\s*(?:\((?:[^()]|\([^()]*\))*\)|\[(?:[^[\]]|\[[^[\]]*\])*\])|#\|(?:[^#|]|#(?!\|)|\|(?!#)|#\|(?:[^#|]|#(?!\|)|\|(?!#))*\|#)*\|#/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0},symbol:{pattern:/'[^()[\]#'\s]+/,greedy:!0},character:{pattern:/#\\(?:[ux][a-fA-F\d]+\b|[-a-zA-Z]+\b|[\uD800-\uDBFF][\uDC00-\uDFFF]|\S)/,greedy:!0,alias:"string"},"lambda-parameter":[{pattern:/((?:^|[^'`#])[([]lambda\s+)(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)/,lookbehind:!0},{pattern:/((?:^|[^'`#])[([]lambda\s+[([])[^()[\]']+/,lookbehind:!0}],keyword:{pattern:/((?:^|[^'`#])[([])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|export|except|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\*)?|let\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()[\]\s]|$)/,lookbehind:!0},builtin:{pattern:/((?:^|[^'`#])[([])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\?|boolean=?\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\?|\?|<\?|<=\?|=\?|>\?|>=\?)|close-(?:input-port|output-port|port)|complex\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\??|eq\?|equal\?|eqv\?|error|error-object(?:-irritants|-message|\?)|eval|even\?|exact(?:-integer-sqrt|-integer\?|\?)?|expt|features|file-error\?|floor(?:-quotient|-remainder|\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\??|input-port(?:-open\?|\?)|integer(?:->char|\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\?|newline|not|null\?|number(?:->string|\?)|numerator|odd\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\?|\?)|pair\?|peek-char|peek-u8|port\?|positive\?|procedure\?|quotient|raise|raise-continuable|rational\?|rationalize|read-(?:bytevector|bytevector!|char|error\?|line|string|u8)|real\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?|<\?|<=\?|=\?|>\?|>=\?)?|substring|symbol(?:->string|\?|=\?)|syntax-error|textual-port\?|truncate(?:-quotient|-remainder|\/)?|u8-ready\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\?)(?=[()[\]\s]|$)/,lookbehind:!0},operator:{pattern:/((?:^|[^'`#])[([])(?:[-+*%/]|[<>]=?|=>?)(?=[()\[\]\s]|$)/,lookbehind:!0},number:{pattern:RegExp(function(e){for(var t in e)e[t]=e[t].replace(/<[\w\s]+>/g,function(t){return"(?:"+e[t].trim()+")"});return e[t]}({"":"\\d+(?:/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?","":"[+-]?|[+-](?:inf|nan)\\.0","":"[+-](?:|(?:inf|nan)\\.0)?i","":"(?:@|)?|","":"(?:#d(?:#[ei])?|#[ei](?:#d)?)?","":"[0-9a-f]+(?:/[0-9a-f]+)?","":"[+-]?|[+-](?:inf|nan)\\.0","":"[+-](?:|(?:inf|nan)\\.0)?i","":"(?:@|)?|","":"#[box](?:#[ei])?|(?:#[ei])?#[box]","":"(^|[()\\[\\]\\s])(?:|)(?=[()\\[\\]\\s]|$)"}),"i"),lookbehind:!0},boolean:{pattern:/(^|[()[\]\s])#(?:[ft]|false|true)(?=[()[\]\s]|$)/,lookbehind:!0},function:{pattern:/((?:^|[^'`#])[([])(?:[^|()[\]'\s]+|\|(?:[^\\|]|\\.)*\|)(?=[()[\]\s]|$)/,lookbehind:!0},identifier:{pattern:/(^|[()[\]\s])\|(?:[^\\|]|\\.)*\|(?=[()[\]\s]|$)/,lookbehind:!0,greedy:!0},punctuation:/[()[\]']/},n.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},!function(e){var n={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},s={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},t={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:n,number:s,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:n,boolean:/\b(?:true|false)\b/,operator:[/~|[+!/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:s,punctuation:/[{}()[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:t}},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:t}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:t.interpolation,comment:t.comment,punctuation:/[{},]/}},func:t.func,string:t.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:t.interpolation,punctuation:/[{}()[\];:.]/}}(n),n.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(`(^|[^"#])(?:"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)| +|[^(])|[^\\\\ +"])*"|"""(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\"]|"(?!""))*""")(?!["#])`),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp('(^|[^"#])(#+)(?:"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\r\n|[^#])|[^\\\\\r\n])*?"|"""(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?""")\\2'),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp("#(?:(?:elseif|if)\\b(?:[ ]*(?:![ ]*)?(?:\\b\\w+\\b(?:[ ]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ ]*(?:&&|\\|\\|))?)+|(?:else|endif)\\b)"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:true|false)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:true|false)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},n.languages.swift["string-literal"].forEach(function(e){e.inside.interpolation.inside=n.languages.swift}),!function(e){function t(e,t){return RegExp(e.replace(//g,function(){return`(?:\\([^|() +]+\\)|\\[[^\\] +]+\\]|\\{[^} +]+\\})`}).replace(//g,function(){return`(?:\\)|\\((?![^|() +]+\\)))`}),t||"")}var o,a,i={css:{pattern:/\{[^{}]+\}/,inside:{rest:e.languages.css}},"class-id":{pattern:/(\()[^()]+(?=\))/,lookbehind:!0,alias:"attr-value"},lang:{pattern:/(\[)[^[\]]+(?=\])/,lookbehind:!0,alias:"attr-value"},punctuation:/[\\/]\d+|\S/},r=e.languages.textile=e.languages.extend("markup",{phrase:{pattern:/(^|\r|\n)\S[\s\S]*?(?=$|\r?\n\r?\n|\r\r)/,lookbehind:!0,inside:{"block-tag":{pattern:t("^[a-z]\\w*(?:||[<>=])*\\."),inside:{modifier:{pattern:t("(^[a-z]\\w*)(?:||[<>=])+(?=\\.)"),lookbehind:!0,inside:i},tag:/^[a-z]\w*/,punctuation:/\.$/}},list:{pattern:t("^[*#]+*\\s+\\S.*","m"),inside:{modifier:{pattern:t("(^[*#]+)+"),lookbehind:!0,inside:i},punctuation:/^[*#]+/}},table:{pattern:t("^(?:(?:||[<>=^~])+\\.\\s*)?(?:\\|(?:(?:||[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:||[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|","m"),inside:{modifier:{pattern:t(`(^|\\|(?: ? +| )?)(?:||[<>=^~_]|[\\\\/]\\d+)+(?=\\.)`),lookbehind:!0,inside:i},punctuation:/\||^\./}},inline:{pattern:t("(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])*.+?\\2(?![a-zA-Z\\d])"),lookbehind:!0,inside:{bold:{pattern:t("(^(\\*\\*?)*).+?(?=\\2)"),lookbehind:!0},italic:{pattern:t("(^(__?)*).+?(?=\\2)"),lookbehind:!0},cite:{pattern:t("(^\\?\\?*).+?(?=\\?\\?)"),lookbehind:!0,alias:"string"},code:{pattern:t("(^@*).+?(?=@)"),lookbehind:!0,alias:"keyword"},inserted:{pattern:t("(^\\+*).+?(?=\\+)"),lookbehind:!0},deleted:{pattern:t("(^-*).+?(?=-)"),lookbehind:!0},span:{pattern:t("(^%*).+?(?=%)"),lookbehind:!0},modifier:{pattern:t("(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])+"),lookbehind:!0,inside:i},punctuation:/[*_%?@+\-^~]+/}},"link-ref":{pattern:/^\[[^\]]+\]\S+$/m,inside:{string:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0},url:{pattern:/(^\])\S+$/,lookbehind:!0},punctuation:/[[\]]/}},link:{pattern:t('"*[^"]+":.+?(?=[^\\w/]?(?:\\s|$))'),inside:{text:{pattern:t('(^"*)[^"]+(?=")'),lookbehind:!0},modifier:{pattern:t('(^")+'),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[":]/}},image:{pattern:t("!(?:||[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?"),inside:{source:{pattern:t("(^!(?:||[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)"),lookbehind:!0,alias:"url"},modifier:{pattern:t("(^!)(?:||[<>=])+"),lookbehind:!0,inside:i},url:{pattern:/(:).+/,lookbehind:!0},punctuation:/[!:]/}},footnote:{pattern:/\b\[\d+\]/,alias:"comment",inside:{punctuation:/\[|\]/}},acronym:{pattern:/\b[A-Z\d]+\([^)]+\)/,inside:{comment:{pattern:/(\()[^()]+(?=\))/,lookbehind:!0},punctuation:/[()]/}},mark:{pattern:/\b\((?:TM|R|C)\)/,alias:"comment",inside:{punctuation:/[()]/}}}}}),s=r.phrase.inside,n={inline:s.inline,link:s.link,image:s.image,footnote:s.footnote,acronym:s.acronym,mark:s.mark};r.tag.pattern=/<\/?(?!\d)[a-z0-9]+(?:\s+[^\s>/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,a=s.inline.inside,a.bold.inside=n,a.italic.inside=n,a.inserted.inside=n,a.deleted.inside=n,a.span.inside=n,o=s.table.inside,o.inline=n.inline,o.link=n.link,o.image=n.image,o.footnote=n.footnote,o.acronym=n.acronym,o.mark=n.mark}(n),!function(e){function t(e){return e.replace(/__/g,function(){return`(?:[\\w-]+|'[^' + ]*'|"(?:\\\\.|[^\\\\" +])*")`})}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(t("(^[ ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])"),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(t("(^[ ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)"),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:true|false)\b/,punctuation:/[.,=[\]{}]/}}(n),n.languages.twig={comment:/\{#[\s\S]*?#\}/,tag:{pattern:/\{\{[\s\S]*?\}\}|\{%[\s\S]*?%\}/,inside:{ld:{pattern:/^(?:\{\{-?|\{%-?\s*\w+)/,inside:{punctuation:/^(?:\{\{|\{%)-?/,keyword:/\w+/}},rd:{pattern:/-?(?:%\}|\}\})$/,inside:{punctuation:/.+/}},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:true|false|null)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-xor|b-or|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],property:/\b[a-zA-Z_]\w*\b/,punctuation:/[()[\]{}:.,]/}},other:{pattern:/\S(?:[\s\S]*\S)?/,inside:n.languages.markup}},n.languages.vim={string:/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\r\n]|'')*'/,comment:/".*/,function:/\b\w+(?=\()/,keyword:/\b(?:ab|abbreviate|abc|abclear|abo|aboveleft|al|all|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|ar|args|argu|argument|as|ascii|bad|badd|ba|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bN|bNext|bo|botright|bp|bprevious|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|br|brewind|bro|browse|bufdo|b|buffer|buffers|bun|bunload|bw|bwipeout|ca|cabbrev|cabc|cabclear|caddb|caddbuffer|cad|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cgetb|cgetbuffer|cgete|cgetexpr|cg|cgetfile|c|change|changes|chd|chdir|che|checkpath|checkt|checktime|cla|clast|cl|clist|clo|close|cmapc|cmapclear|cnew|cnewer|cn|cnext|cN|cNext|cnf|cnfile|cNfcNfile|cnorea|cnoreabbrev|col|colder|colo|colorscheme|comc|comclear|comp|compiler|conf|confirm|con|continue|cope|copen|co|copy|cpf|cpfile|cp|cprevious|cq|cquit|cr|crewind|cuna|cunabbrev|cu|cunmap|cw|cwindow|debugg|debuggreedy|delc|delcommand|d|delete|delf|delfunction|delm|delmarks|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|di|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|earlier|echoe|echoerr|echom|echomsg|echon|e|edit|el|else|elsei|elseif|em|emenu|endfo|endfor|endf|endfunction|endfun|en|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fina|finally|fin|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|folddoc|folddoclosed|foldd|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|ha|hardcopy|h|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iuna|iunabbrev|iu|iunmap|j|join|ju|jumps|k|keepalt|keepj|keepjumps|kee|keepmarks|laddb|laddbuffer|lad|laddexpr|laddf|laddfile|lan|language|la|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|let|left|lefta|leftabove|lex|lexpr|lf|lfile|lfir|lfirst|lgetb|lgetbuffer|lgete|lgetexpr|lg|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|l|list|ll|lla|llast|lli|llist|lmak|lmake|lm|lmap|lmapc|lmapclear|lnew|lnewer|lne|lnext|lN|lNext|lnf|lnfile|lNf|lNfile|ln|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lpf|lpfile|lp|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|mak|make|ma|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkvie|mkview|mkv|mkvimrc|mod|mode|m|move|mzf|mzfile|mz|mzscheme|nbkey|new|n|next|N|Next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|omapc|omapclear|on|only|o|open|opt|options|ou|ounmap|pc|pclose|ped|pedit|pe|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|p|print|P|Print|profd|profdel|prof|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptN|ptNext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|pyf|pyfile|py|python|qa|qall|q|quit|quita|quitall|r|read|rec|recover|redi|redir|red|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|rub|ruby|rubyd|rubydo|rubyf|rubyfile|ru|runtime|rv|rviminfo|sal|sall|san|sandbox|sa|sargument|sav|saveas|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbN|sbNext|sbp|sbprevious|sbr|sbrewind|sb|sbuffer|scripte|scriptencoding|scrip|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sla|slast|sl|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sN|sNext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|sor|sort|so|source|spelld|spelldump|spe|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|sp|split|spr|sprevious|sre|srewind|sta|stag|startg|startgreplace|star|startinsert|startr|startreplace|stj|stjump|st|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tab|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabnew|tabn|tabnext|tabN|tabNext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|ta|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|tN|tNext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|una|unabbreviate|u|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|verb|verbose|ve|version|vert|vertical|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|vi|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|wa|wall|wh|while|winc|wincmd|windo|winp|winpos|win|winsize|wn|wnext|wN|wNext|wp|wprevious|wq|wqa|wqall|w|write|ws|wsverb|wv|wviminfo|X|xa|xall|x|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|XMLent|XMLns|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\b/,builtin:/\b(?:autocmd|acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|t_AB|t_AF|t_al|t_AL|t_bc|t_cd|t_ce|t_Ce|t_cl|t_cm|t_Co|t_cs|t_Cs|t_CS|t_CV|t_da|t_db|t_dl|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_fs|t_IE|t_IS|t_k1|t_K1|t_k2|t_k3|t_K3|t_k4|t_K4|t_k5|t_K5|t_k6|t_K6|t_k7|t_K7|t_k8|t_K8|t_k9|t_K9|t_KA|t_kb|t_kB|t_KB|t_KC|t_kd|t_kD|t_KD|t_ke|t_KE|t_KF|t_KG|t_kh|t_KH|t_kI|t_KI|t_KJ|t_KK|t_kl|t_KL|t_kN|t_kP|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_RI|t_RV|t_Sb|t_se|t_Sf|t_SI|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_WP|t_WS|t_xs|t_ZH|t_ZR)\b/,number:/\b(?:0x[\da-f]+|\d+(?:\.\d+)?)\b/i,operator:/\|\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*/%?]|\b(?:is(?:not)?)\b/,punctuation:/[{}[\](),;:]/},n.languages["visual-basic"]={comment:{pattern:/(?:['‘’]|REM\b)(?:[^\r\n_]|_(?:\r\n?|\n)?)*/i,inside:{keyword:/^REM/i}},directive:{pattern:/#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:[^\S\r\n]_[^\S\r\n]*(?:\r\n?|\n)|.)+/i,alias:"comment",greedy:!0},string:{pattern:/\$?["“”](?:["“”]{2}|[^"“”])*["“”]C?/i,greedy:!0},date:{pattern:/#[^\S\r\n]*(?:\d+([/-])\d+\1\d+(?:[^\S\r\n]+(?:\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?))?|\d+[^\S\r\n]*(?:AM|PM)|\d+:\d+(?::\d+)?(?:[^\S\r\n]*(?:AM|PM))?)[^\S\r\n]*#/i,alias:"builtin"},number:/(?:(?:\b\d+(?:\.\d+)?|\.\d+)(?:E[+-]?\d+)?|&[HO][\dA-F]+)(?:U?[ILS]|[FRD])?/i,boolean:/\b(?:True|False|Nothing)\b/i,keyword:/\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Until|Xor)\b/i,operator:[/[+\-*/\\^<=>&#@$%!]/,{pattern:/([^\S\r\n])_(?=[^\S\r\n]*[\r\n])/,lookbehind:!0}],punctuation:/[{}().,:?]/},n.languages.vb=n.languages["visual-basic"],n.languages.vba=n.languages["visual-basic"],n.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},!function(e){var n=/[*&][^\s[\]{},]+/,s=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,o="(?:"+s.source+"(?:[ ]+"+n.source+")?|"+n.source+"(?:[ ]+"+s.source+")?)",a="(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-])(?:[ ]*(?:(?![#:])|:))*".replace(//g,function(){return"[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]"}),i=`"(?:[^"\\\\ +]|\\\\.)*"|'(?:[^'\\\\ +]|\\\\.)*'`;function t(e,t){t=(t||"").replace(/m/g,"")+"m";var n=`([:\\-,[{]\\s*(?:\\s<>[ ]+)?)(?:<>)(?=[ ]*(?:$|,|\\]|\\}|(?:[ +]\\s*)?#))`.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return e});return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp("([\\-:]\\s*(?:\\s<>[ ]+)?[|>])[ ]*(?:((?:\r?\n|\r)[ ]+)\\S[^\r\n]*(?:\\2[^\r\n]+)*)".replace(/<>/g,function(){return o})),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(`((?:^|[:\\-,[{ +?])[ ]*(?:<>[ ]+)?)<>(?=\\s*:\\s)`.replace(/<>/g,function(){return o}).replace(/<>/g,function(){return"(?:"+a+"|"+i+")"})),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:t("\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ ]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ ]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?"),lookbehind:!0,alias:"number"},boolean:{pattern:t("true|false","i"),lookbehind:!0,alias:"important"},null:{pattern:t("null|~","i"),lookbehind:!0,alias:"important"},string:{pattern:t(i),lookbehind:!0,greedy:!0},number:{pattern:t("[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)","i"),lookbehind:!0},tag:s,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(n),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document&&document.querySelector){var s,r="line-numbers",e="linkable-line-numbers",h=function(){if(void 0===s){var e=document.createElement("div");e.style.fontSize="13px",e.style.lineHeight="1.5",e.style.padding="0",e.style.border="0",e.innerHTML=" 
 ",document.body.appendChild(e),s=38===e.offsetHeight,document.body.removeChild(e)}return s},o=!0,c=0;n.hooks.add("before-sanity-check",function(e){var n,s=e.element.parentElement;i(s)&&(n=0,t(".line-highlight",s).forEach(function(e){n+=e.textContent.length,e.parentNode.removeChild(e)}),n&&/^(?: \n)+$/.test(e.code.slice(-n))&&(e.code=e.code.slice(0,-n)))}),n.hooks.add("complete",function e(t){if(s=t.element.parentElement,i(s)){clearTimeout(c);var s,o=n.plugins.lineNumbers,d=t.plugins&&t.plugins.lineNumbers;l(s,r)&&o&&!d?n.hooks.add("line-numbers",e):(a(s)(),c=setTimeout(u,1))}}),window.addEventListener("hashchange",u),window.addEventListener("resize",function(){t("pre").filter(i).map(function(e){return a(e)}).forEach(d)})}function t(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function l(e,t){return e.classList.contains(t)}function d(e){e()}function i(t){return!!t&&!!/pre/i.test(t.nodeName)&&(!!t.hasAttribute("data-line")||!!t.id&&!!n.util.isActive(t,e))}function a(s,i,a){var f,v,b=(i="string"==typeof i?i:s.getAttribute("data-line")||"").replace(/\s+/g,"").split(",").filter(Boolean),j=+s.getAttribute("data-line-offset")||0,y=(h()?parseInt:parseFloat)(getComputedStyle(s).lineHeight),m=n.util.isActive(s,r),u=s.querySelector("code"),p=m?s:u||s,c=[],g=u&&p!=u?function(e,t){var o=getComputedStyle(e),s=getComputedStyle(t);function n(e){return+e.substr(0,e.length-2)}return t.offsetTop+n(s.borderTopWidth)+n(s.paddingTop)-n(o.paddingTop)}(s,u):0;return b.forEach(function(e){var r,l,u,h,d=e.split("-"),o=+d[0],i=+d[1]||o,t=s.querySelector('.line-highlight[data-range="'+e+'"]')||document.createElement("div");c.push(function(){t.setAttribute("aria-hidden","true"),t.setAttribute("data-range",e),t.className=(a||"")+" line-highlight"}),m&&n.plugins.lineNumbers?(r=n.plugins.lineNumbers.getLine(s,o),l=n.plugins.lineNumbers.getLine(s,i),r&&(u=r.offsetTop+g+"px",c.push(function(){t.style.top=u})),l&&(h=l.offsetTop-r.offsetTop+l.offsetHeight+"px",c.push(function(){t.style.height=h}))):c.push(function(){t.setAttribute("data-start",String(o)),o span",s).forEach(function(e,t){var n=t+v;e.onclick=function(){var e=f+"."+n;o=!1,location.hash=e,setTimeout(function(){o=!0},1)}})),function(){c.forEach(d)}}function u(){if(e=location.hash.slice(1),t(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)}),s=(e.match(/\.([\d,-]+)$/)||[,""])[1],s&&!document.getElementById(e)){var e,s,i=e.slice(0,e.lastIndexOf(".")),n=document.getElementById(i);n&&(n.hasAttribute("data-line")||n.setAttribute("data-line",""),a(n,s,"temporary ")(),o&&document.querySelector(".temporary.line-highlight").scrollIntoView())}}}(),!function(){if("undefined"!=typeof n&&"undefined"!=typeof document){var e="line-numbers",s=/\n(?!$)/g,i=n.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)&&(s=t.querySelector(".line-numbers-rows"),s)){var s,a,o=parseInt(t.getAttribute("data-start"),10)||1,i=o+(s.children.length-1);return n");(r=document.createElement("span")).setAttribute("aria-hidden","true"),r.className="line-numbers-rows",r.innerHTML=d,i.hasAttribute("data-start")&&(i.style.counterReset="linenumber "+(parseInt(i.getAttribute("data-start"),10)-1)),o.element.appendChild(r),t([i]),n.hooks.run("line-numbers",o)}}}),n.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0})}function t(e){if(0!=(e=e.filter(function(e){var t=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null}(e)["white-space"];return"pre-wrap"===t||"pre-line"===t})).length){var t=e.map(function(e){var t,o,i,n=e.querySelector("code"),a=e.querySelector(".line-numbers-rows");if(n&&a)return t=e.querySelector(".line-numbers-sizer"),o=n.textContent.split(s),t||((t=document.createElement("span")).className="line-numbers-sizer",n.appendChild(t)),t.innerHTML="0",t.style.display="block",i=t.getBoundingClientRect().height,t.innerHTML="",{element:e,lines:o,lineHeights:[],oneLinerHeight:i,sizer:t}}).filter(Boolean);t.forEach(function(e){var s=e.sizer,t=e.lines,n=e.lineHeights,o=e.oneLinerHeight;n[t.length-1]=void 0,t.forEach(function(e,t){if(e&&1o.length&&(s=o.length),s--;for(t=--n;t<=s;t++)u[t]=o[t],o[t]=""}});else if(d)for(a=0;a',h):d=o('',h),a=document.createElement("span"),a.className=s,a.innerHTML=d;for(var f=i.outputLines||[],c=0,p=f.length;c + + + + Categories :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

Categories

+ +
    + + +
+
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/categories/index.xml b/public/categories/index.xml new file mode 100644 index 0000000..f0cfe24 --- /dev/null +++ b/public/categories/index.xml @@ -0,0 +1,10 @@ + + + + Categories on Sadium + /categories/ + Recent content in Categories on Sadium + Hugo -- gohugo.io + ru + + diff --git a/public/contacts/contacts/index.html b/public/contacts/contacts/index.html new file mode 100644 index 0000000..f389a89 --- /dev/null +++ b/public/contacts/contacts/index.html @@ -0,0 +1,258 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/contacts/index.html b/public/contacts/index.html new file mode 100644 index 0000000..fb94233 --- /dev/null +++ b/public/contacts/index.html @@ -0,0 +1,269 @@ + + + + + Контакты :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/contacts/index.xml b/public/contacts/index.xml new file mode 100644 index 0000000..f1ade58 --- /dev/null +++ b/public/contacts/index.xml @@ -0,0 +1,33 @@ + + + + Контакты on Sadium + /contacts/ + Recent content in Контакты on Sadium + Hugo -- gohugo.io + ru + + + /contacts/contacts/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /contacts/contacts/ + Email +sadml[at]disroot.org +sadml[at]sadium.cyou +Fediverse +@sl@social.exo.icu +Matrix +@sl:sadium.cyou + <p><strong><code>Email</code></strong><br> +<a href="mailto:sadml@disroot.org">sadml[at]disroot.org</a><br> +<a href="mailto:sadml@sadium.cyou">sadml[at]sadium.cyou</a></p> +<p><strong><code>Fediverse</code></strong><br> +<a href="https://social.exo.icu/@sl">@sl@social.exo.icu</a></p> +<p><strong><code>Matrix</code></strong><br> +<a href="https://matrix.to/#/@sl:sadium.cyou">@sl:sadium.cyou</a></p> + + + + + diff --git a/public/contacts/page/1/index.html b/public/contacts/page/1/index.html new file mode 100644 index 0000000..f78d2a5 --- /dev/null +++ b/public/contacts/page/1/index.html @@ -0,0 +1,10 @@ + + + + /contacts/ + + + + + + diff --git a/public/donate/index.html b/public/donate/index.html new file mode 100644 index 0000000..5ea23d9 --- /dev/null +++ b/public/donate/index.html @@ -0,0 +1,261 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

+
+ + + + + + + + + + + + + + + + + + + + + +
Никого не принуждаю, но если можете, отсыпьте копеечку:Свобода добра
5536 9139 9438 8268Тинькофф
Пожалуйста, напишите в сообщении к переводу, что вы осознанно отправили его, а не сделали это по ошибке, чтобы никто не переживал потом 😅
OVERXWISEQiwi
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/404.html b/public/en/404.html new file mode 100644 index 0000000..613c7a9 --- /dev/null +++ b/public/en/404.html @@ -0,0 +1,228 @@ + + + + + 404 Page not found :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

404 — Page not found...

+ +
+ Back to home page → +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/about/about/index.html b/public/en/about/about/index.html new file mode 100644 index 0000000..8fe7037 --- /dev/null +++ b/public/en/about/about/index.html @@ -0,0 +1,245 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

+
+ + + +

Sup!

+

Name is Sysadmin Link, man, 23 y.o., I am the creator of this site and hoster of some open source services.

+

I work as sysadmin in some college unit.

+

Thats all… for now + +

+ + +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/about/index.html b/public/en/about/index.html new file mode 100644 index 0000000..c02ec1d --- /dev/null +++ b/public/en/about/index.html @@ -0,0 +1,264 @@ + + + + + About :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ +

+ + + + + + + +
+ + + + +

Sup!

+

Name is Sysadmin Link, man, 23 y.o., I am the creator of this site and hoster of some open source services.

+

I work as sysadmin in some college unit.

+

Thats all… for now + +

+ + + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/about/index.xml b/public/en/about/index.xml new file mode 100644 index 0000000..285731c --- /dev/null +++ b/public/en/about/index.xml @@ -0,0 +1,32 @@ + + + + About on Sadium + /en/about/ + Recent content in About on Sadium + Hugo -- gohugo.io + en + + + /en/about/about/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/about/about/ + Sup! Name is Sysadmin Link, man, 23 y.o., I am the creator of this site and hoster of some open source services. +I work as sysadmin in some college unit. +Thats all&hellip; for now + <img class="center" src="/img/avatar.jpg" width="300" style="border:3px; border-style:dashed; border-color:#ffffff; padding: 0px;"> + + +<h1 id="sup">Sup!</h1> +<p>Name is <strong>Sysadmin Link</strong>, man, 23 y.o., I am the creator of this site and hoster of some <strong>open source</strong> <a href="/en/services">services</a>.</p> +<p>I work as sysadmin in some college unit.</p> +<p>Thats all&hellip; for now +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> +<!-- raw HTML omitted --> + + + + + diff --git a/public/en/about/page/1/index.html b/public/en/about/page/1/index.html new file mode 100644 index 0000000..f746346 --- /dev/null +++ b/public/en/about/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/about/ + + + + + + diff --git a/public/en/categories/index.html b/public/en/categories/index.html new file mode 100644 index 0000000..d2f8cbc --- /dev/null +++ b/public/en/categories/index.html @@ -0,0 +1,230 @@ + + + + + Categories :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

Categories

+ +
    + + +
+
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/categories/index.xml b/public/en/categories/index.xml new file mode 100644 index 0000000..56ce995 --- /dev/null +++ b/public/en/categories/index.xml @@ -0,0 +1,10 @@ + + + + Categories on Sadium + /en/categories/ + Recent content in Categories on Sadium + Hugo -- gohugo.io + en + + diff --git a/public/en/contacts/contacts/index.html b/public/en/contacts/contacts/index.html new file mode 100644 index 0000000..ee6ef4c --- /dev/null +++ b/public/en/contacts/contacts/index.html @@ -0,0 +1,250 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/contacts/index.html b/public/en/contacts/index.html new file mode 100644 index 0000000..50e7ee8 --- /dev/null +++ b/public/en/contacts/index.html @@ -0,0 +1,261 @@ + + + + + Contacts :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/contacts/index.xml b/public/en/contacts/index.xml new file mode 100644 index 0000000..1a5bb97 --- /dev/null +++ b/public/en/contacts/index.xml @@ -0,0 +1,33 @@ + + + + Contacts on Sadium + /en/contacts/ + Recent content in Contacts on Sadium + Hugo -- gohugo.io + en + + + /en/contacts/contacts/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/contacts/contacts/ + Email +sadml[at]disroot.org +sadml[at]sadium.cyou +Fediverse +@sl@social.exo.icu +Matrix +@sl:sadium.cyou + <p><strong><code>Email</code></strong><br> +<a href="mailto:sadml@disroot.org">sadml[at]disroot.org</a><br> +<a href="mailto:sadml@sadium.cyou">sadml[at]sadium.cyou</a></p> +<p><strong><code>Fediverse</code></strong><br> +<a href="https://social.exo.icu/@sl">@sl@social.exo.icu</a></p> +<p><strong><code>Matrix</code></strong><br> +<a href="https://matrix.to/#/@sl:sadium.cyou">@sl:sadium.cyou</a></p> + + + + + diff --git a/public/en/contacts/page/1/index.html b/public/en/contacts/page/1/index.html new file mode 100644 index 0000000..81fe925 --- /dev/null +++ b/public/en/contacts/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/contacts/ + + + + + + diff --git a/public/en/index.html b/public/en/index.html new file mode 100644 index 0000000..cd748ec --- /dev/null +++ b/public/en/index.html @@ -0,0 +1,275 @@ + + + + + + Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + + + + + +
+

+ +

+ + + + + + + + +
+ + + + +

Sup!

+

Name is Sysadmin Link, man, 23 y.o., I am the creator of this site and hoster of some open source services.

+

I work as sysadmin in some college unit.

+

Thats all… for now + +

+ + + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/index.xml b/public/en/index.xml new file mode 100644 index 0000000..d6135ee --- /dev/null +++ b/public/en/index.xml @@ -0,0 +1,240 @@ + + + + Sadium + /en/ + Recent content on Sadium + Hugo -- gohugo.io + en + Sun, 10 Dec 2023 00:00:00 +0000 + + Setup Codeberg as custom Oauth2 provider in Nexcloud + /en/posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/posts/codeberg_x_nextcloud/ + I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. What is helped - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Create app in Codeberg and copy Client ID and Client secret somewhere. 2. Go to your Nextcloud Admin settings,Social Login section, and create Custom Oauth2 provider. +Section What to enter Local/inner name Codeberg Name Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg. + <p>I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. <br> +What is helped - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Create app in Codeberg</a> and copy Client ID and Client secret somewhere. <br> +<code>2.</code> Go to your Nextcloud Admin settings,<code>Social Login</code> section, and create Custom Oauth2 provider.</p> +<table> +<thead> +<tr> +<th>Section</th> +<th>What to enter</th> +</tr> +</thead> +<tbody> +<tr> +<td>Local/inner name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>leave empty</td> +</tr> +<tr> +<td>Client ID and Client secret</td> +<td>paste from step 1</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Other after</td> +<td>leave empty if not sure</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Tick <code>Allow users to attach/connect their social logins</code> box and click <code>Save</code> in the bottom of page. <br> +<code>4.</code> Go in Incognito/Private window of your browser, go to your Nextcloud login page and copy path of Codeberg provider - Right click, copy link, save somewhere. <br> +Must look like this - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Go back to your created earlier <a href="https://codeberg.org/user/settings/applications">Codeberg application</a>, click <code>Edit</code> button and paste link from step 4 into <code>Redirection URI</code> section, click <code>Save</code>.</p> +<p>And you done! Try connect your Codeberg account to Nextcloud account from user settings <code>Social Login</code> section, it must work. In theory, it&rsquo;s also appliable to <code>Gitea</code>, because <a href="https://forgejo.org">Forgejo</a> is <a href="https://gitea.com">Gitea&rsquo;s</a> fork.</p> +<p>I&rsquo;ve created related Github issue: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + Wallpapers Collection + /en/posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /en/posts/walls/ + I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers. +You can view them and pick it up here. +About collection: +Most of the wallpapers are taken from wallhaven.cc Have some NSFW (~3-10%) Expanded and supplemented at least weekly. Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link + <p>I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers.</p> +<p>You can view them and pick it up <a href="https://cloud.sadium.cyou/s/walls">here</a>.</p> +<p>About collection:</p> +<ul> +<li>Most of the wallpapers are taken from <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Have some NSFW (~3-10%)</li> +<li>Expanded and supplemented at least weekly.</li> +</ul> +<p>Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + + /en/about/about/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/about/about/ + Sup! Name is Sysadmin Link, man, 23 y.o., I am the creator of this site and hoster of some open source services. +I work as sysadmin in some college unit. +Thats all&hellip; for now + <img class="center" src="/img/avatar.jpg" width="300" style="border:3px; border-style:dashed; border-color:#ffffff; padding: 0px;"> + + +<h1 id="sup">Sup!</h1> +<p>Name is <strong>Sysadmin Link</strong>, man, 23 y.o., I am the creator of this site and hoster of some <strong>open source</strong> <a href="/en/services">services</a>.</p> +<p>I work as sysadmin in some college unit.</p> +<p>Thats all&hellip; for now +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> +<!-- raw HTML omitted --> + + + + + + /en/contacts/contacts/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/contacts/contacts/ + Email +sadml[at]disroot.org +sadml[at]sadium.cyou +Fediverse +@sl@social.exo.icu +Matrix +@sl:sadium.cyou + <p><strong><code>Email</code></strong><br> +<a href="mailto:sadml@disroot.org">sadml[at]disroot.org</a><br> +<a href="mailto:sadml@sadium.cyou">sadml[at]sadium.cyou</a></p> +<p><strong><code>Fediverse</code></strong><br> +<a href="https://social.exo.icu/@sl">@sl@social.exo.icu</a></p> +<p><strong><code>Matrix</code></strong><br> +<a href="https://matrix.to/#/@sl:sadium.cyou">@sl:sadium.cyou</a></p> + + + + + + /en/services/services/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/services/services/ + Public Forgejo My instance | Website | Source code | Registration open | Nextcloud OIDC +Forgejo, Gitea fork - Self-hosted lightweight software forge. +Matrix Admin UI My instance | Source code +Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯ +Matrix Web-client UI My instance | Website | Source code +Element-web - A glossy Matrix collaboration client for the web. +Matrix Synapse sadium.cyou | Website | Source code | Registration closed | Nextcloud OIDC + <h1 id="public">Public</h1> +<hr> +<h3 id="forgejo">Forgejo</h3> +<p><a href="https://git.sadium.cyou/">My instance</a> | <a href="https://forgejo.org">Website</a> | <a href="https://codeberg.org/forgejo/forgejo">Source code</a> | <code>Registration open</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Forgejo</strong>, <strong><a href="https://gitea.io">Gitea</a></strong> fork - Self-hosted lightweight software forge.</p> +</blockquote> +<h3 id="matrix-admin-ui">Matrix Admin UI</h3> +<p><a href="https://ma.sadium.cyou/">My instance</a> | <a href="https://github.com/Awesome-Technologies/synapse-admin">Source code</a></p> +<blockquote> +<p><strong>Matrix Admin UI</strong> - Matrix Admin UI. <code>¯\_(ツ)_/¯</code></p> +</blockquote> +<h3 id="matrix-web-client-ui">Matrix Web-client UI</h3> +<p><a href="https://mw.sadium.cyou/">My instance</a> | <a href="https://element.io/">Website</a> | <a href="https://github.com/vector-im/element-web/">Source code</a></p> +<blockquote> +<p><strong>Element-web</strong> - A glossy Matrix collaboration client for the web.</p> +</blockquote> +<h3 id="matrix-synapse">Matrix Synapse</h3> +<p><code>sadium.cyou</code> | <a href="https://matrix.org">Website</a> | <a href="https://github.com/matrix-org/synapse">Source code</a> | <code>Registration closed</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Synapse</strong> - open-source Matrix homeserver written and maintained by the Matrix.org Foundation. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP.</p> +</blockquote> +<h3 id="nextcloud">Nextcloud</h3> +<p><a href="https://cloud.sadium.cyou">My instance</a> | <a href="https://nextcloud.com">Website</a> | <a href="https://github.com/nextcloud/server">Source code</a> | <code>Registration by premoderation</code> | <code>OIDC</code></p> +<blockquote> +<p><strong>Nextcloud</strong> - suite of client-server software for creating and using file hosting services. +Alternative for Google Suite, Dropbox, OneDrive, etc.</p> +</blockquote> +<h3 id="owncast">Owncast</h3> +<p><a href="https://live.sadium.cyou/">My instance</a> | <a href="https://owncast.online">Website</a> | <a href="https://github.com/owncast/owncast">Source code</a></p> +<blockquote> +<p><strong>Owncast</strong> - self-hosted live video and web chat server for use with existing popular broadcasting software.</p> +</blockquote> +<h3 id="rss-bridge">RSS-Bridge</h3> +<p><a href="https://rss.sadium.cyou/">My instance</a> | <a href="https://rss-bridge.github.io/rss-bridge">Website</a> | <a href="https://github.com/rss-bridge/rss-bridge">Source code</a></p> +<blockquote> +<p><strong>RSS-Bridge</strong> - free and open source software for generating Atom or RSS feeds from websites which don&rsquo;t have one.</p> +</blockquote> +<h3 id="shlink">Shlink</h3> +<p><a href="https://shlink.sadium.cyou/">My webUI instance</a> | <a href="https://shlink.io">Website</a> | <a href="https://github.com/shlinkio/shlink">Server source code</a> | <a href="https://github.com/shlinkio/shlink-web-client">WebUI source code</a></p> +<blockquote> +<p><strong>Shlink</strong> - PHP-based self-hosted URL shortener that can be used to serve shortened URLs under your own domain.</p> +</blockquote> +<h3 id="vaultwarden">Vaultwarden</h3> +<p><a href="https://vault.sadium.cyou/">My instance</a> | <a href="https://github.com/dani-garcia/vaultwarden">Source code сервера</a> | <a href="https://github.com/dani-garcia/bw_web_builds">WebUI source code</a> | <code>Registration open</code></p> +<blockquote> +<p><strong>Vaultwarden</strong>, <strong><a href="https://bitwarden.com">Bitwarden</a></strong> fork - free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault.</p> +</blockquote> +<h3 id="uptime-kuma">Uptime Kuma</h3> +<p><a href="https://up.sadium.cyou">My instance</a> | <a href="https://github.com/louislam/uptime-kuma">Source code</a></p> +<blockquote> +<p><strong>Uptime Kuma</strong> - A fancy self-hosted monitoring tool.</p> +</blockquote> +<hr> +<h1 id="personalprivate">Personal/Private</h1> +<h3 id="adguard-home">Adguard Home</h3> +<p><a href="https://github.com/AdguardTeam/AdGuardHome/">Source code</a></p> +<blockquote> +<p><strong>Adguard Home</strong> - Network-wide ads &amp; trackers blocking DNS server.</p> +</blockquote> +<h3 id="maddy-email">Maddy Email</h3> +<p><a href="https://maddy.email">Website</a> | <a href="https://github.com/foxcpp/maddy">Source code</a></p> +<blockquote> +<p><strong>Maddy</strong> - Composable all-in-one mail server.</p> +</blockquote> +<h3 id="qbittorrent">qBittorrent</h3> +<p><a href="https://github.com/qbittorrent/qBittorrent">Source code</a></p> +<blockquote> +<p><strong>qBittorrent</strong> - Open source torrent client.</p> +</blockquote> +<hr> +<p>The source code of the services listed in this article (and not only them) is stored on my <a href="https://git.sadium.cyou/mirrors">Forgejo</a> instance.</p> + + + + + diff --git a/public/en/page/1/index.html b/public/en/page/1/index.html new file mode 100644 index 0000000..010a77e --- /dev/null +++ b/public/en/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/ + + + + + + diff --git a/public/en/posts/codeberg_x_nextcloud/index.html b/public/en/posts/codeberg_x_nextcloud/index.html new file mode 100644 index 0000000..d3be5d2 --- /dev/null +++ b/public/en/posts/codeberg_x_nextcloud/index.html @@ -0,0 +1,293 @@ + + + + + Setup Codeberg as custom Oauth2 provider in Nexcloud :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Setup Codeberg as custom Oauth2 provider in Nexcloud

+
+

I couldn’t find any info about it via search engines, so I decided to put information here.
+What is helped - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/

+

1. Create app in Codeberg and copy Client ID and Client secret somewhere.
+2. Go to your Nextcloud Admin settings,Social Login section, and create Custom Oauth2 provider.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SectionWhat to enter
Local/inner nameCodeberg
NameCodeberg
API Base URLhttps://codeberg.org
Authorize urlhttps://codeberg.org/login/oauth/authorize
Token urlhttps://codeberg.org/login/oauth/access_token
Profile urlhttps://codeberg.org/login/oauth/userinfo
Logout urlleave empty
Client ID and Client secretpaste from step 1
Scoperead:user
Other afterleave empty if not sure
+

3. Tick Allow users to attach/connect their social logins box and click Save in the bottom of page.
+4. Go in Incognito/Private window of your browser, go to your Nextcloud login page and copy path of Codeberg provider - Right click, copy link, save somewhere.
+Must look like this - https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg
+5. Go back to your created earlier Codeberg application, click Edit button and paste link from step 4 into Redirection URI section, click Save.

+

And you done! Try connect your Codeberg account to Nextcloud account from user settings Social Login section, it must work. In theory, it’s also appliable to Gitea, because Forgejo is Gitea’s fork.

+

I’ve created related Github issue: https://github.com/zorn-v/nextcloud-social-login/issues/440

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/posts/index.html b/public/en/posts/index.html new file mode 100644 index 0000000..4d222bd --- /dev/null +++ b/public/en/posts/index.html @@ -0,0 +1,300 @@ + + + + + Posts :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/posts/index.xml b/public/en/posts/index.xml new file mode 100644 index 0000000..cf577ed --- /dev/null +++ b/public/en/posts/index.xml @@ -0,0 +1,107 @@ + + + + Posts on Sadium + /en/posts/ + Recent content in Posts on Sadium + Hugo -- gohugo.io + en + Sun, 10 Dec 2023 00:00:00 +0000 + + Setup Codeberg as custom Oauth2 provider in Nexcloud + /en/posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/posts/codeberg_x_nextcloud/ + I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. What is helped - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Create app in Codeberg and copy Client ID and Client secret somewhere. 2. Go to your Nextcloud Admin settings,Social Login section, and create Custom Oauth2 provider. +Section What to enter Local/inner name Codeberg Name Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg. + <p>I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. <br> +What is helped - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Create app in Codeberg</a> and copy Client ID and Client secret somewhere. <br> +<code>2.</code> Go to your Nextcloud Admin settings,<code>Social Login</code> section, and create Custom Oauth2 provider.</p> +<table> +<thead> +<tr> +<th>Section</th> +<th>What to enter</th> +</tr> +</thead> +<tbody> +<tr> +<td>Local/inner name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>leave empty</td> +</tr> +<tr> +<td>Client ID and Client secret</td> +<td>paste from step 1</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Other after</td> +<td>leave empty if not sure</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Tick <code>Allow users to attach/connect their social logins</code> box and click <code>Save</code> in the bottom of page. <br> +<code>4.</code> Go in Incognito/Private window of your browser, go to your Nextcloud login page and copy path of Codeberg provider - Right click, copy link, save somewhere. <br> +Must look like this - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Go back to your created earlier <a href="https://codeberg.org/user/settings/applications">Codeberg application</a>, click <code>Edit</code> button and paste link from step 4 into <code>Redirection URI</code> section, click <code>Save</code>.</p> +<p>And you done! Try connect your Codeberg account to Nextcloud account from user settings <code>Social Login</code> section, it must work. In theory, it&rsquo;s also appliable to <code>Gitea</code>, because <a href="https://forgejo.org">Forgejo</a> is <a href="https://gitea.com">Gitea&rsquo;s</a> fork.</p> +<p>I&rsquo;ve created related Github issue: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + Wallpapers Collection + /en/posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /en/posts/walls/ + I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers. +You can view them and pick it up here. +About collection: +Most of the wallpapers are taken from wallhaven.cc Have some NSFW (~3-10%) Expanded and supplemented at least weekly. Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link + <p>I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers.</p> +<p>You can view them and pick it up <a href="https://cloud.sadium.cyou/s/walls">here</a>.</p> +<p>About collection:</p> +<ul> +<li>Most of the wallpapers are taken from <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Have some NSFW (~3-10%)</li> +<li>Expanded and supplemented at least weekly.</li> +</ul> +<p>Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/en/posts/page/1/index.html b/public/en/posts/page/1/index.html new file mode 100644 index 0000000..3cf3f3d --- /dev/null +++ b/public/en/posts/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/posts/ + + + + + + diff --git a/public/en/posts/walls/index.html b/public/en/posts/walls/index.html new file mode 100644 index 0000000..bbfc8be --- /dev/null +++ b/public/en/posts/walls/index.html @@ -0,0 +1,244 @@ + + + + + Wallpapers Collection :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Wallpapers Collection

+
+

I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers.

+

You can view them and pick it up here.

+

About collection:

+
    +
  • Most of the wallpapers are taken from wallhaven.cc
  • +
  • Have some NSFW (~3-10%)
  • +
  • Expanded and supplemented at least weekly.
  • +
+

Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn’t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link + +

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/services/index.html b/public/en/services/index.html new file mode 100644 index 0000000..8a2524c --- /dev/null +++ b/public/en/services/index.html @@ -0,0 +1,326 @@ + + + + + Services :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ +

+ + + + + + + +
+ +

Public

+
+

Forgejo

+

My instance | Website | Source code | Registration open | Nextcloud OIDC

+
+

Forgejo, Gitea fork - Self-hosted lightweight software forge.

+
+

Matrix Admin UI

+

My instance | Source code

+
+

Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯

+
+

Matrix Web-client UI

+

My instance | Website | Source code

+
+

Element-web - A glossy Matrix collaboration client for the web.

+
+

Matrix Synapse

+

sadium.cyou | Website | Source code | Registration closed | Nextcloud OIDC

+
+

Synapse - open-source Matrix homeserver written and maintained by the Matrix.org Foundation. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP.

+
+

Nextcloud

+

My instance | Website | Source code | Registration by premoderation | OIDC

+
+

Nextcloud - suite of client-server software for creating and using file hosting services. +Alternative for Google Suite, Dropbox, OneDrive, etc.

+
+

Owncast

+

My instance | Website | Source code

+
+

Owncast - self-hosted live video and web chat server for use with existing popular broadcasting software.

+
+

RSS-Bridge

+

My instance | Website | Source code

+
+

RSS-Bridge - free and open source software for generating Atom or RSS feeds from websites which don’t have one.

+
+ +

My webUI instance | Website | Server source code | WebUI source code

+
+

Shlink - PHP-based self-hosted URL shortener that can be used to serve shortened URLs under your own domain.

+
+

Vaultwarden

+

My instance | Source code сервера | WebUI source code | Registration open

+
+

Vaultwarden, Bitwarden fork - free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault.

+
+

Uptime Kuma

+

My instance | Source code

+
+

Uptime Kuma - A fancy self-hosted monitoring tool.

+
+
+

Personal/Private

+

Adguard Home

+

Source code

+
+

Adguard Home - Network-wide ads & trackers blocking DNS server.

+
+

Maddy Email

+

Website | Source code

+
+

Maddy - Composable all-in-one mail server.

+
+

qBittorrent

+

Source code

+
+

qBittorrent - Open source torrent client.

+
+
+

The source code of the services listed in this article (and not only them) is stored on my Forgejo instance.

+ + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/services/index.xml b/public/en/services/index.xml new file mode 100644 index 0000000..8d0edab --- /dev/null +++ b/public/en/services/index.xml @@ -0,0 +1,98 @@ + + + + Services on Sadium + /en/services/ + Recent content in Services on Sadium + Hugo -- gohugo.io + en + + + /en/services/services/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /en/services/services/ + Public Forgejo My instance | Website | Source code | Registration open | Nextcloud OIDC +Forgejo, Gitea fork - Self-hosted lightweight software forge. +Matrix Admin UI My instance | Source code +Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯ +Matrix Web-client UI My instance | Website | Source code +Element-web - A glossy Matrix collaboration client for the web. +Matrix Synapse sadium.cyou | Website | Source code | Registration closed | Nextcloud OIDC + <h1 id="public">Public</h1> +<hr> +<h3 id="forgejo">Forgejo</h3> +<p><a href="https://git.sadium.cyou/">My instance</a> | <a href="https://forgejo.org">Website</a> | <a href="https://codeberg.org/forgejo/forgejo">Source code</a> | <code>Registration open</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Forgejo</strong>, <strong><a href="https://gitea.io">Gitea</a></strong> fork - Self-hosted lightweight software forge.</p> +</blockquote> +<h3 id="matrix-admin-ui">Matrix Admin UI</h3> +<p><a href="https://ma.sadium.cyou/">My instance</a> | <a href="https://github.com/Awesome-Technologies/synapse-admin">Source code</a></p> +<blockquote> +<p><strong>Matrix Admin UI</strong> - Matrix Admin UI. <code>¯\_(ツ)_/¯</code></p> +</blockquote> +<h3 id="matrix-web-client-ui">Matrix Web-client UI</h3> +<p><a href="https://mw.sadium.cyou/">My instance</a> | <a href="https://element.io/">Website</a> | <a href="https://github.com/vector-im/element-web/">Source code</a></p> +<blockquote> +<p><strong>Element-web</strong> - A glossy Matrix collaboration client for the web.</p> +</blockquote> +<h3 id="matrix-synapse">Matrix Synapse</h3> +<p><code>sadium.cyou</code> | <a href="https://matrix.org">Website</a> | <a href="https://github.com/matrix-org/synapse">Source code</a> | <code>Registration closed</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Synapse</strong> - open-source Matrix homeserver written and maintained by the Matrix.org Foundation. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP.</p> +</blockquote> +<h3 id="nextcloud">Nextcloud</h3> +<p><a href="https://cloud.sadium.cyou">My instance</a> | <a href="https://nextcloud.com">Website</a> | <a href="https://github.com/nextcloud/server">Source code</a> | <code>Registration by premoderation</code> | <code>OIDC</code></p> +<blockquote> +<p><strong>Nextcloud</strong> - suite of client-server software for creating and using file hosting services. +Alternative for Google Suite, Dropbox, OneDrive, etc.</p> +</blockquote> +<h3 id="owncast">Owncast</h3> +<p><a href="https://live.sadium.cyou/">My instance</a> | <a href="https://owncast.online">Website</a> | <a href="https://github.com/owncast/owncast">Source code</a></p> +<blockquote> +<p><strong>Owncast</strong> - self-hosted live video and web chat server for use with existing popular broadcasting software.</p> +</blockquote> +<h3 id="rss-bridge">RSS-Bridge</h3> +<p><a href="https://rss.sadium.cyou/">My instance</a> | <a href="https://rss-bridge.github.io/rss-bridge">Website</a> | <a href="https://github.com/rss-bridge/rss-bridge">Source code</a></p> +<blockquote> +<p><strong>RSS-Bridge</strong> - free and open source software for generating Atom or RSS feeds from websites which don&rsquo;t have one.</p> +</blockquote> +<h3 id="shlink">Shlink</h3> +<p><a href="https://shlink.sadium.cyou/">My webUI instance</a> | <a href="https://shlink.io">Website</a> | <a href="https://github.com/shlinkio/shlink">Server source code</a> | <a href="https://github.com/shlinkio/shlink-web-client">WebUI source code</a></p> +<blockquote> +<p><strong>Shlink</strong> - PHP-based self-hosted URL shortener that can be used to serve shortened URLs under your own domain.</p> +</blockquote> +<h3 id="vaultwarden">Vaultwarden</h3> +<p><a href="https://vault.sadium.cyou/">My instance</a> | <a href="https://github.com/dani-garcia/vaultwarden">Source code сервера</a> | <a href="https://github.com/dani-garcia/bw_web_builds">WebUI source code</a> | <code>Registration open</code></p> +<blockquote> +<p><strong>Vaultwarden</strong>, <strong><a href="https://bitwarden.com">Bitwarden</a></strong> fork - free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault.</p> +</blockquote> +<h3 id="uptime-kuma">Uptime Kuma</h3> +<p><a href="https://up.sadium.cyou">My instance</a> | <a href="https://github.com/louislam/uptime-kuma">Source code</a></p> +<blockquote> +<p><strong>Uptime Kuma</strong> - A fancy self-hosted monitoring tool.</p> +</blockquote> +<hr> +<h1 id="personalprivate">Personal/Private</h1> +<h3 id="adguard-home">Adguard Home</h3> +<p><a href="https://github.com/AdguardTeam/AdGuardHome/">Source code</a></p> +<blockquote> +<p><strong>Adguard Home</strong> - Network-wide ads &amp; trackers blocking DNS server.</p> +</blockquote> +<h3 id="maddy-email">Maddy Email</h3> +<p><a href="https://maddy.email">Website</a> | <a href="https://github.com/foxcpp/maddy">Source code</a></p> +<blockquote> +<p><strong>Maddy</strong> - Composable all-in-one mail server.</p> +</blockquote> +<h3 id="qbittorrent">qBittorrent</h3> +<p><a href="https://github.com/qbittorrent/qBittorrent">Source code</a></p> +<blockquote> +<p><strong>qBittorrent</strong> - Open source torrent client.</p> +</blockquote> +<hr> +<p>The source code of the services listed in this article (and not only them) is stored on my <a href="https://git.sadium.cyou/mirrors">Forgejo</a> instance.</p> + + + + + diff --git a/public/en/services/page/1/index.html b/public/en/services/page/1/index.html new file mode 100644 index 0000000..ac23fc1 --- /dev/null +++ b/public/en/services/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/services/ + + + + + + diff --git a/public/en/services/services/index.html b/public/en/services/services/index.html new file mode 100644 index 0000000..4c6fbd9 --- /dev/null +++ b/public/en/services/services/index.html @@ -0,0 +1,342 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

+
+

Public

+
+

Forgejo

+

My instance | Website | Source code | Registration open | Nextcloud OIDC

+
+

Forgejo, Gitea fork - Self-hosted lightweight software forge.

+
+

Matrix Admin UI

+

My instance | Source code

+
+

Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯

+
+

Matrix Web-client UI

+

My instance | Website | Source code

+
+

Element-web - A glossy Matrix collaboration client for the web.

+
+

Matrix Synapse

+

sadium.cyou | Website | Source code | Registration closed | Nextcloud OIDC

+
+

Synapse - open-source Matrix homeserver written and maintained by the Matrix.org Foundation. Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP.

+
+

Nextcloud

+

My instance | Website | Source code | Registration by premoderation | OIDC

+
+

Nextcloud - suite of client-server software for creating and using file hosting services. +Alternative for Google Suite, Dropbox, OneDrive, etc.

+
+

Owncast

+

My instance | Website | Source code

+
+

Owncast - self-hosted live video and web chat server for use with existing popular broadcasting software.

+
+

RSS-Bridge

+

My instance | Website | Source code

+
+

RSS-Bridge - free and open source software for generating Atom or RSS feeds from websites which don’t have one.

+
+ +

My webUI instance | Website | Server source code | WebUI source code

+
+

Shlink - PHP-based self-hosted URL shortener that can be used to serve shortened URLs under your own domain.

+
+

Vaultwarden

+

My instance | Source code сервера | WebUI source code | Registration open

+
+

Vaultwarden, Bitwarden fork - free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault.

+
+

Uptime Kuma

+

My instance | Source code

+
+

Uptime Kuma - A fancy self-hosted monitoring tool.

+
+
+

Personal/Private

+

Adguard Home

+

Source code

+
+

Adguard Home - Network-wide ads & trackers blocking DNS server.

+
+

Maddy Email

+

Website | Source code

+
+

Maddy - Composable all-in-one mail server.

+
+

qBittorrent

+

Source code

+
+

qBittorrent - Open source torrent client.

+
+
+

The source code of the services listed in this article (and not only them) is stored on my Forgejo instance.

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/sitemap.xml b/public/en/sitemap.xml new file mode 100644 index 0000000..02aee2e --- /dev/null +++ b/public/en/sitemap.xml @@ -0,0 +1,193 @@ + + + + /en/tags/codeberg/ + 2023-12-10T00:00:00+00:00 + + + + /en/tags/nextcloud/ + 2023-12-10T00:00:00+00:00 + + + + /en/posts/ + 2023-12-10T00:00:00+00:00 + + + + /en/ + 2023-12-10T00:00:00+00:00 + + + + /en/posts/codeberg_x_nextcloud/ + 2023-12-10T00:00:00+00:00 + + + + /en/tags/ + 2023-12-10T00:00:00+00:00 + + + + /en/tags/wallpapers/ + 2023-07-01T00:00:00+00:00 + + + + /en/posts/walls/ + 2023-07-01T00:00:00+00:00 + + + + /en/about/about/ + + + + /en/contacts/contacts/ + + + + /en/services/services/ + + + + /en/about/ + + + + /en/categories/ + + + + /en/contacts/ + + + + /en/services/ + + + + diff --git a/public/en/tags/codeberg/index.html b/public/en/tags/codeberg/index.html new file mode 100644 index 0000000..d5c2010 --- /dev/null +++ b/public/en/tags/codeberg/index.html @@ -0,0 +1,267 @@ + + + + + codeberg :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #codeberg

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/tags/codeberg/index.xml b/public/en/tags/codeberg/index.xml new file mode 100644 index 0000000..3ecb873 --- /dev/null +++ b/public/en/tags/codeberg/index.xml @@ -0,0 +1,83 @@ + + + + codeberg on Sadium + /en/tags/codeberg/ + Recent content in codeberg on Sadium + Hugo -- gohugo.io + en + Sun, 10 Dec 2023 00:00:00 +0000 + + Setup Codeberg as custom Oauth2 provider in Nexcloud + /en/posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/posts/codeberg_x_nextcloud/ + I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. What is helped - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Create app in Codeberg and copy Client ID and Client secret somewhere. 2. Go to your Nextcloud Admin settings,Social Login section, and create Custom Oauth2 provider. +Section What to enter Local/inner name Codeberg Name Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg. + <p>I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. <br> +What is helped - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Create app in Codeberg</a> and copy Client ID and Client secret somewhere. <br> +<code>2.</code> Go to your Nextcloud Admin settings,<code>Social Login</code> section, and create Custom Oauth2 provider.</p> +<table> +<thead> +<tr> +<th>Section</th> +<th>What to enter</th> +</tr> +</thead> +<tbody> +<tr> +<td>Local/inner name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>leave empty</td> +</tr> +<tr> +<td>Client ID and Client secret</td> +<td>paste from step 1</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Other after</td> +<td>leave empty if not sure</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Tick <code>Allow users to attach/connect their social logins</code> box and click <code>Save</code> in the bottom of page. <br> +<code>4.</code> Go in Incognito/Private window of your browser, go to your Nextcloud login page and copy path of Codeberg provider - Right click, copy link, save somewhere. <br> +Must look like this - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Go back to your created earlier <a href="https://codeberg.org/user/settings/applications">Codeberg application</a>, click <code>Edit</code> button and paste link from step 4 into <code>Redirection URI</code> section, click <code>Save</code>.</p> +<p>And you done! Try connect your Codeberg account to Nextcloud account from user settings <code>Social Login</code> section, it must work. In theory, it&rsquo;s also appliable to <code>Gitea</code>, because <a href="https://forgejo.org">Forgejo</a> is <a href="https://gitea.com">Gitea&rsquo;s</a> fork.</p> +<p>I&rsquo;ve created related Github issue: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + diff --git a/public/en/tags/codeberg/page/1/index.html b/public/en/tags/codeberg/page/1/index.html new file mode 100644 index 0000000..376639a --- /dev/null +++ b/public/en/tags/codeberg/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/tags/codeberg/ + + + + + + diff --git a/public/en/tags/index.html b/public/en/tags/index.html new file mode 100644 index 0000000..d64e2b0 --- /dev/null +++ b/public/en/tags/index.html @@ -0,0 +1,254 @@ + + + + + Tags :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

Tags

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/tags/index.xml b/public/en/tags/index.xml new file mode 100644 index 0000000..5dec423 --- /dev/null +++ b/public/en/tags/index.xml @@ -0,0 +1,41 @@ + + + + Tags on Sadium + /en/tags/ + Recent content in Tags on Sadium + Hugo -- gohugo.io + en + Sun, 10 Dec 2023 00:00:00 +0000 + + codeberg + /en/tags/codeberg/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/tags/codeberg/ + + + + + + nextcloud + /en/tags/nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/tags/nextcloud/ + + + + + + wallpapers + /en/tags/wallpapers/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /en/tags/wallpapers/ + + + + + + diff --git a/public/en/tags/nextcloud/index.html b/public/en/tags/nextcloud/index.html new file mode 100644 index 0000000..6c3de6b --- /dev/null +++ b/public/en/tags/nextcloud/index.html @@ -0,0 +1,267 @@ + + + + + nextcloud :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #nextcloud

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/tags/nextcloud/index.xml b/public/en/tags/nextcloud/index.xml new file mode 100644 index 0000000..f9efc69 --- /dev/null +++ b/public/en/tags/nextcloud/index.xml @@ -0,0 +1,83 @@ + + + + nextcloud on Sadium + /en/tags/nextcloud/ + Recent content in nextcloud on Sadium + Hugo -- gohugo.io + en + Sun, 10 Dec 2023 00:00:00 +0000 + + Setup Codeberg as custom Oauth2 provider in Nexcloud + /en/posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /en/posts/codeberg_x_nextcloud/ + I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. What is helped - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Create app in Codeberg and copy Client ID and Client secret somewhere. 2. Go to your Nextcloud Admin settings,Social Login section, and create Custom Oauth2 provider. +Section What to enter Local/inner name Codeberg Name Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg. + <p>I couldn&rsquo;t find any info about it via search engines, so I decided to put information here. <br> +What is helped - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Create app in Codeberg</a> and copy Client ID and Client secret somewhere. <br> +<code>2.</code> Go to your Nextcloud Admin settings,<code>Social Login</code> section, and create Custom Oauth2 provider.</p> +<table> +<thead> +<tr> +<th>Section</th> +<th>What to enter</th> +</tr> +</thead> +<tbody> +<tr> +<td>Local/inner name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Name</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>leave empty</td> +</tr> +<tr> +<td>Client ID and Client secret</td> +<td>paste from step 1</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Other after</td> +<td>leave empty if not sure</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Tick <code>Allow users to attach/connect their social logins</code> box and click <code>Save</code> in the bottom of page. <br> +<code>4.</code> Go in Incognito/Private window of your browser, go to your Nextcloud login page and copy path of Codeberg provider - Right click, copy link, save somewhere. <br> +Must look like this - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Go back to your created earlier <a href="https://codeberg.org/user/settings/applications">Codeberg application</a>, click <code>Edit</code> button and paste link from step 4 into <code>Redirection URI</code> section, click <code>Save</code>.</p> +<p>And you done! Try connect your Codeberg account to Nextcloud account from user settings <code>Social Login</code> section, it must work. In theory, it&rsquo;s also appliable to <code>Gitea</code>, because <a href="https://forgejo.org">Forgejo</a> is <a href="https://gitea.com">Gitea&rsquo;s</a> fork.</p> +<p>I&rsquo;ve created related Github issue: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + diff --git a/public/en/tags/nextcloud/page/1/index.html b/public/en/tags/nextcloud/page/1/index.html new file mode 100644 index 0000000..7307a77 --- /dev/null +++ b/public/en/tags/nextcloud/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/tags/nextcloud/ + + + + + + diff --git a/public/en/tags/wallpapers/index.html b/public/en/tags/wallpapers/index.html new file mode 100644 index 0000000..394d4f5 --- /dev/null +++ b/public/en/tags/wallpapers/index.html @@ -0,0 +1,265 @@ + + + + + wallpapers :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #wallpapers

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/en/tags/wallpapers/index.xml b/public/en/tags/wallpapers/index.xml new file mode 100644 index 0000000..dcd9bb9 --- /dev/null +++ b/public/en/tags/wallpapers/index.xml @@ -0,0 +1,35 @@ + + + + wallpapers on Sadium + /en/tags/wallpapers/ + Recent content in wallpapers on Sadium + Hugo -- gohugo.io + en + Sat, 01 Jul 2023 00:00:00 +0000 + + Wallpapers Collection + /en/posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /en/posts/walls/ + I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers. +You can view them and pick it up here. +About collection: +Most of the wallpapers are taken from wallhaven.cc Have some NSFW (~3-10%) Expanded and supplemented at least weekly. Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link + <p>I bring to your attention my collection of wallpapers, which has already reached more than 1500 wallpapers.</p> +<p>You can view them and pick it up <a href="https://cloud.sadium.cyou/s/walls">here</a>.</p> +<p>About collection:</p> +<ul> +<li>Most of the wallpapers are taken from <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Have some NSFW (~3-10%)</li> +<li>Expanded and supplemented at least weekly.</li> +</ul> +<p>Some wallpapers may have a quality lower than FullHD (1920x1080), coz I couldn&rsquo;t find them in a better quality. If anyone can find it, I would appreciate it if you send me a link +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/en/tags/wallpapers/page/1/index.html b/public/en/tags/wallpapers/page/1/index.html new file mode 100644 index 0000000..cda31a3 --- /dev/null +++ b/public/en/tags/wallpapers/page/1/index.html @@ -0,0 +1,10 @@ + + + + /en/tags/wallpapers/ + + + + + + diff --git a/public/fonts/FiraCode-Bold.woff b/public/fonts/FiraCode-Bold.woff new file mode 100644 index 0000000..61d5e64 Binary files /dev/null and b/public/fonts/FiraCode-Bold.woff differ diff --git a/public/fonts/FiraCode-Regular.woff b/public/fonts/FiraCode-Regular.woff new file mode 100644 index 0000000..8a2e453 Binary files /dev/null and b/public/fonts/FiraCode-Regular.woff differ diff --git a/public/img/avatar.jpg b/public/img/avatar.jpg new file mode 100644 index 0000000..03cf518 Binary files /dev/null and b/public/img/avatar.jpg differ diff --git a/public/img/favicon.svg b/public/img/favicon.svg new file mode 100644 index 0000000..3c34d30 --- /dev/null +++ b/public/img/favicon.svg @@ -0,0 +1,39 @@ + + + + + + + + + + diff --git a/public/img/theme-colors/blue.png b/public/img/theme-colors/blue.png new file mode 100644 index 0000000..cb5fd99 Binary files /dev/null and b/public/img/theme-colors/blue.png differ diff --git a/public/img/theme-colors/green.png b/public/img/theme-colors/green.png new file mode 100644 index 0000000..4909792 Binary files /dev/null and b/public/img/theme-colors/green.png differ diff --git a/public/img/theme-colors/orange.png b/public/img/theme-colors/orange.png new file mode 100644 index 0000000..0ac2c27 Binary files /dev/null and b/public/img/theme-colors/orange.png differ diff --git a/public/img/theme-colors/pink.png b/public/img/theme-colors/pink.png new file mode 100644 index 0000000..96d49ec Binary files /dev/null and b/public/img/theme-colors/pink.png differ diff --git a/public/img/theme-colors/red.png b/public/img/theme-colors/red.png new file mode 100644 index 0000000..a0541a6 Binary files /dev/null and b/public/img/theme-colors/red.png differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..4894b13 --- /dev/null +++ b/public/index.html @@ -0,0 +1,284 @@ + + + + + + Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + + + + + +
+

+ +

+ + + + + + + + +
+ + + + +

Приветствую!

+

Меня звать Сисадмин Линк, парень, 23 годика, я создатель данного сайта и хостер некоторых сервисов с открытым исходным кодом.

+

Работаю сисадмином в подразделении одного колледжа.

+

Это всё… пока что. + +

+ + + + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/index.xml b/public/index.xml new file mode 100644 index 0000000..1875ea5 --- /dev/null +++ b/public/index.xml @@ -0,0 +1,383 @@ + + + + Sadium + / + Recent content on Sadium + Hugo -- gohugo.io + ru + Sun, 10 Dec 2023 00:00:00 +0000 + + Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud + /posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /posts/codeberg_x_nextcloud/ + Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. Пригодилось - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Создаём приложение в Codeberg и копируем куда-нибудь Client ID и Client secret. 2. Идём в параметры сервера Nextcloud, пункт Social Login, и создаём Custom Oauth2 на +. +Пункт Что вводить Внутреннее имя Codeberg Название Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg.org/login/oauth/userinfo Logout url Оставить пустым Client ID и Client secret вставить из 1 пункта Scope read:user Остальные после Не трогайте, если не уверены 3. + <p>Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. <br> +Пригодилось - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Создаём приложение в Codeberg</a> и копируем куда-нибудь Client ID и Client secret. <br> +<code>2.</code> Идём в параметры сервера Nextcloud, пункт <code>Social Login</code>, и создаём Custom Oauth2 на <code>+</code>.</p> +<table> +<thead> +<tr> +<th>Пункт</th> +<th>Что вводить</th> +</tr> +</thead> +<tbody> +<tr> +<td>Внутреннее имя</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Название</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>Оставить пустым</td> +</tr> +<tr> +<td>Client ID и Client secret</td> +<td>вставить из 1 пункта</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Остальные после</td> +<td>Не трогайте, если не уверены</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Ставим галку напротив пункта <code>Позволять пользователям подключать социальные логины к своим аккаунтам</code> и нажимаем <code>Сохранить</code> внизу страницы. <br> +<code>4.</code> Идём в режим Инкогнито вашего браузера, затем на страничку входа в ваше облако и копируем путь провайдера Codeberg - правая кнопка мыши, копируем ссылку, сохраняем куда-нибудь. <br> +Должно выглядеть примерно так - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Возвращаемся к ранее созданному <a href="https://codeberg.org/user/settings/applications">приложению Codeberg</a>, Нажимаем <code>Изменить</code> и вставляем ссылку из прошлого пункта в поле <code>URI для перенаправления</code>, нажимаем <code>Сохранить</code>.</p> +<p>Теперь попробуйте связать ваш аккаунт Codeberg и Nextcloud из пункта <code>Social Login</code> в настройках пользователя Nextcloud, должно работать. В теории, это также применимо к <code>Gitea</code>, потому что <a href="https://forgejo.org">Forgejo</a> это форк <a href="https://gitea.com">Gitea</a>.</p> +<p>Давеча сделал по этому поводу Issue на Github: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + Не берите дешёвые M2 NMVE + /posts/rpi-rip-nvme/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /posts/rpi-rip-nvme/ + Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад. +Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. + <p>Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад.</p> +<p>Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. Ну и какая-то там планка оперативки на 8ГБ частотой 2133МГц. Диск тоже, по факту, был со старого компа, просто на момент работы сервера на Малинке он у меня был чисто под виртуалки всякие. Это SSD SanDisk на 120Гб.</p> +<p>В ближайшее время я планирую проапгрейдить сервер новым процом, в неближайшее - диском, и хочу докинуть ещё плашку оперативы на 8ГБ, дабы был двухканал. Процессор этот будет Intel Core i5 7600. Брал его <a href="https://aliexpress.ru/item/1005003651636041.html">тут</a>. Хотел взять Xeon-E3 1245 v5, однако без плясок с бубнами и программатора, мне бы его не получилось завести на этой материнке, менять которую мне вообще ни разу не хочется, да и с бубном плясать тоже неохота. После хотелось бы взять SSD Samsung EVO, скорее всего <a href="https://www.dns-shop.ru/product/184d257ee33aed20/500-gb-25-sata-nakopitel-samsung-870-evo-mz-77e500bkr">этот</a>. Ну а плашку оперативы возьму <a href="https://www.citilink.ru/product/modul-pamyati-kingmax-ddr4-8gb-2133-dimm-ret-400808">эту</a>. В идеале бы ещё ИБПшник взять, но я не знаю, какой&hellip;</p> +<p>Может допишу ещё чего&hellip;</p> + + + + + Мучения с принтером + /posts/ricoh_config/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /posts/ricoh_config/ + Я всё думал, как завести свой принтер под Linux. И однажды наткнулся на пакет в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён. +Но недавно в очередных поисках я наткнулся на раздел на форуме Ubuntu. Там добрый человек поделился репозиторием - туть. +Однако я поступил по другому, не так, как написал человек на форуме. Последовательность +git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/ cd ricoh-sp100 sudo cp pstoricohddst-gdi /usr/lib/cups/filter sudo cp *.ppd /usr/share/cups/model + <p>Я всё думал, как завести свой принтер под Linux. <br> +И однажды наткнулся на <a href="https://aur.archlinux.org/packages/ricoh-sp100-git">пакет</a> в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён.</p> +<p>Но недавно в очередных поисках я наткнулся на <a href="https://forum.ubuntu.ru/index.php?PHPSESSID=b541bb569cce4b86e0a21bf1f69ca5ec&amp;topic=203120.msg2481757#msg2481757">раздел на форуме Ubuntu</a>. <br> +Там добрый человек поделился репозиторием - <a href="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/">туть</a>.</p> +<p>Однако я поступил по другому, не так, как написал человек на форуме. <br> +Последовательность</p> +<p><code>git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/</code> <br> +<code>cd ricoh-sp100</code> <br> +<code>sudo cp pstoricohddst-gdi /usr/lib/cups/filter</code> <br> +<code>sudo cp *.ppd /usr/share/cups/model</code></p> +<p>Если есть yay: <br> +<code>yay -S jbigkit inotify-tools</code></p> +<p>Если нет:<br> +<code>sudo pacman -S jbigkit inotify-tools</code></p> +<p>Как то так. Теперь идём и настраиваем наш принтер в своём рабочем окружении и радуемся жизни. <br> +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + Подборка обоев + /posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /posts/walls/ + Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев. +Посмотреть их и забрать её можно тут. +О подборке: +Большая часть обоев взято с wallhaven.cc Содержит NSFW (около ~3-10%) Дополняется и обновляется как минимум еженедельно. У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. + <p>Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев.</p> +<p>Посмотреть их и забрать её можно <a href="https://cloud.sadium.cyou/s/walls">тут</a>.</p> +<p>О подборке:</p> +<ul> +<li>Большая часть обоев взято с <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Содержит NSFW (около ~3-10%)</li> +<li>Дополняется и обновляется как минимум еженедельно.</li> +</ul> +<p>У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + + /about/about/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /about/about/ + Приветствую! Меня звать Сисадмин Линк, парень, 23 годика, я создатель данного сайта и хостер некоторых сервисов с открытым исходным кодом. +Работаю сисадмином в подразделении одного колледжа. +Это всё&hellip; пока что. + <img class="center" src="/img/avatar.jpg" width="300" style="border:3px; border-style:dashed; border-color:#ffffff; padding: 0px;"> + + +<h1 id="приветствую">Приветствую!</h1> +<p>Меня звать <strong>Сисадмин Линк</strong>, парень, 23 годика, я создатель данного сайта и хостер некоторых <a href="/services">сервисов</a> с <strong>открытым исходным кодом</strong>.</p> +<p>Работаю сисадмином в подразделении одного колледжа.</p> +<p>Это всё&hellip; пока что. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> +<!-- raw HTML omitted --> +<!-- raw HTML omitted --> + + + + + + /contacts/contacts/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /contacts/contacts/ + Email +sadml[at]disroot.org +sadml[at]sadium.cyou +Fediverse +@sl@social.exo.icu +Matrix +@sl:sadium.cyou + <p><strong><code>Email</code></strong><br> +<a href="mailto:sadml@disroot.org">sadml[at]disroot.org</a><br> +<a href="mailto:sadml@sadium.cyou">sadml[at]sadium.cyou</a></p> +<p><strong><code>Fediverse</code></strong><br> +<a href="https://social.exo.icu/@sl">@sl@social.exo.icu</a></p> +<p><strong><code>Matrix</code></strong><br> +<a href="https://matrix.to/#/@sl:sadium.cyou">@sl:sadium.cyou</a></p> + + + + + + /donate/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /donate/ + Никого не принуждаю, но если можете, отсыпьте копеечку: Свобода добра 5536 9139 9438 8268 Тинькофф Пожалуйста, напишите в сообщении к переводу, что вы осознанно отправили его, а не сделали это по ошибке, чтобы никто не переживал потом 😅 OVERXWISE Qiwi + <table> +<thead> +<tr> +<th>Никого не принуждаю, но если можете, отсыпьте копеечку:</th> +<th><a href="https://habr.com/ru/articles/648857">Свобода добра</a></th> +</tr> +</thead> +<tbody> +<tr> +<td>5536 9139 9438 8268</td> +<td>Тинькофф</td> +</tr> +<tr> +<td>Пожалуйста, напишите в сообщении к переводу, что вы осознанно отправили его, а не сделали это по ошибке, чтобы никто не переживал потом 😅</td> +<td></td> +</tr> +<tr> +<td><a href="https://qiwi.com/n/OVERXWISE">OVERXWISE</a></td> +<td><a href="https://qiwi.com/n/OVERXWISE">Qiwi</a></td> +</tr> +</tbody> +</table> + + + + + + /services/services/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /services/services/ + Публичные Forgejo Мой инстанс | Сайт | Исходный код | Регистрация открыта | Nextcloud OIDC +Forgejo, форк Gitea - Открытая легковесная &ldquo;кузница&rdquo; для создания ПО. +Однажды я сделаю PoW капчу&hellip; +Matrix Admin UI Мой инстанс | Исходный код +Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯ +Matrix Element WebUI Мой инстанс | Сайт | Исходный код +Element-web - Глянцевый клиент Matrix для совместной работы в Интернете. +Matrix Synapse sadium.cyou | Сайт | Исходный код | Регистрация закрыта | Nextcloud OIDC + <h1 id="публичные">Публичные</h1> +<hr> +<h3 id="forgejo">Forgejo</h3> +<p><a href="https://git.sadium.cyou/">Мой инстанс</a> | <a href="https://forgejo.org">Сайт</a> | <a href="https://codeberg.org/forgejo/forgejo">Исходный код</a> | <code>Регистрация открыта</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Forgejo</strong>, форк <strong><a href="https://gitea.io">Gitea</a></strong> - Открытая легковесная &ldquo;кузница&rdquo; для создания ПО.</p> +</blockquote> +<p>Однажды я сделаю PoW капчу&hellip;</p> +<h3 id="matrix-admin-ui">Matrix Admin UI</h3> +<p><a href="https://ma.sadium.cyou/">Мой инстанс</a> | <a href="https://github.com/Awesome-Technologies/synapse-admin">Исходный код</a></p> +<blockquote> +<p><strong>Matrix Admin UI</strong> - Matrix Admin UI. <code>¯\_(ツ)_/¯</code></p> +</blockquote> +<h3 id="matrix-element-webui">Matrix Element WebUI</h3> +<p><a href="https://mw.sadium.cyou/">Мой инстанс</a> | <a href="https://element.io/">Сайт</a> | <a href="https://github.com/vector-im/element-web/">Исходный код</a></p> +<blockquote> +<p><strong>Element-web</strong> - Глянцевый клиент Matrix для совместной работы в Интернете.</p> +</blockquote> +<h3 id="matrix-synapse">Matrix Synapse</h3> +<p><code>sadium.cyou</code> | <a href="https://matrix.org">Сайт</a> | <a href="https://github.com/matrix-org/synapse">Исходный код</a> | <code>Регистрация закрыта</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Synapse</strong> — домашний сервер Matrix с открытым исходным кодом, написанный и поддерживаемый Matrix.org Foundation. Вкратце, Matrix — это открытый стандарт связи в Интернете, поддерживающий федерацию, шифрование и VoIP.</p> +</blockquote> +<h3 id="nextcloud">Nextcloud</h3> +<p><a href="https://cloud.sadium.cyou">Мой инстанс</a> | <a href="https://nextcloud.com">Сайт</a> | <a href="https://github.com/nextcloud/server">Исходный код</a> | <code>Регистрация по премодерации</code> | <code>OIDC</code></p> +<blockquote> +<p><strong>Nextcloud</strong> - набор клиент-серверных программ для создания и использования хранилища данных. <br> +Является свободным аналогом облаков от Google, Яндекс, Mail.ru (нынешний VK Group), и т.д.</p> +</blockquote> +<h3 id="owncast">Owncast</h3> +<p><a href="https://live.sadium.cyou/">Мой инстанс</a> | <a href="https://owncast.online">Сайт</a> | <a href="https://github.com/owncast/owncast">Исходный код</a></p> +<blockquote> +<p><strong>Owncast</strong> - автономный сервер видеотрансляций и веб-чатов для использования с существующим популярным программным обеспечением для вещания.</p> +</blockquote> +<h3 id="rss-bridge">RSS-Bridge</h3> +<p><a href="https://rss.sadium.cyou/">Мой инстанс</a> | <a href="https://rss-bridge.github.io/rss-bridge">Сайт</a> | <a href="https://github.com/rss-bridge/rss-bridge">Исходный код</a></p> +<blockquote> +<p><strong>RSS-Bridge</strong> - программное обеспечение для создания Atom или RSS-каналов с веб-сайтов, у которых их нет.</p> +</blockquote> +<p>Мостов <a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/bridges">куча</a>, могу по просьбе добавить в список активных ещё какие-нибудь.</p> +<h3 id="shlink">Shlink</h3> +<p><a href="https://shlink.sadium.cyou/">Мой инстанс веб-интерфейса</a> | <a href="https://shlink.io">Сайт</a> | <a href="https://github.com/shlinkio/shlink">Исходный код сервера</a> | <a href="https://github.com/shlinkio/shlink-web-client">Исходный код WebUI</a></p> +<blockquote> +<p><strong>Shlink</strong> - Автономный сокращатель URL-адресов на основе PHP, который можно использовать для обслуживания сокращенных URL-адресов в вашем собственном домене.</p> +</blockquote> +<h3 id="vaultwarden">Vaultwarden</h3> +<p><a href="https://vault.sadium.cyou/">Мой инстанс</a> | <a href="https://github.com/dani-garcia/vaultwarden">Исходный код сервера</a> | <a href="https://github.com/dani-garcia/bw_web_builds">Исходный код WebUI</a> | <code>Регистрация открыта</code></p> +<blockquote> +<p><strong>Vaultwarden</strong>, форк <strong><a href="https://bitwarden.com">Bitwarden</a></strong> - менеджера паролей с открытым кодом. Имеет приложения нескольких форматов, включая веб-интерфейс, настольные приложения, расширение браузера, мобильные приложения и CLI</p> +</blockquote> +<h3 id="uptime-kuma">Uptime Kuma</h3> +<p><a href="https://up.sadium.cyou">Мой инстанс</a> | <a href="https://github.com/louislam/uptime-kuma">Исходный код</a></p> +<blockquote> +<p><strong>Uptime Kuma</strong> - Инструмент для мониторинга с возможностью самохостинга.</p> +</blockquote> +<hr> +<h1 id="личныеприватные">Личные/приватные</h1> +<h3 id="adguard-home">Adguard Home</h3> +<p><a href="https://github.com/AdguardTeam/AdGuardHome">Исходный код</a></p> +<blockquote> +<p><strong>Adguard Home</strong> - Межсетевой DNS сервер блокировщика рекламы и трекеров.</p> +</blockquote> +<h3 id="maddy-email">Maddy Email</h3> +<p><a href="https://maddy.email">Сайт</a> | <a href="https://github.com/foxcpp/maddy">Исходный код</a></p> +<blockquote> +<p><strong>Maddy</strong> - Составной почтовый сервер &ldquo;все в одном&rdquo;.</p> +</blockquote> +<h3 id="qbittorrent">qBittorrent</h3> +<p><a href="https://github.com/qbittorrent/qBittorrent">Исходный код</a></p> +<blockquote> +<p><strong>qBittorrent</strong> - Открытый торрент-клиент.</p> +</blockquote> +<hr> +<p>Исходный код указанных в этой статье сервисов (и не только) отзеркален на моём инстансе <strong><a href="https://git.sadium.cyou/mirrors">Forgejo</a></strong>.</p> + + + + + Условия использования + /tos/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /tos/ + Общее положение Данный документ - свод правил поведения. При использовании любых сервисов, размещённых в рамках проекта Sadium, администрация и, мы надеемся, сообщество, должны соблюдать данный свод правил. +Данный документ относится ко всем сервисам, размещенным в рамках проекта Sadium. Это означает, что данный свод правил нужно соблюдать при использовании сервисов, размещенных на домене и под-доменах *.sadium.cyou. +Сервис предоставляется &ldquo;как есть&rdquo; Сервис - онлайн-ресурсы и ПО, размещенные в рамках проекта Sadium на домене и под-доменах *. + <h2 id="общее-положение">Общее положение</h2> +<p>Данный документ - свод правил поведения. При использовании любых сервисов, размещённых в рамках проекта <code>Sadium</code>, администрация и, мы надеемся, сообщество, должны соблюдать данный свод правил.</p> +<p>Данный документ относится ко всем сервисам, размещенным в рамках проекта <code>Sadium</code>. Это означает, что данный свод правил нужно соблюдать при использовании сервисов, размещенных на домене и под-доменах <code>*.sadium.cyou</code>.</p> +<h2 id="сервис-предоставляется-как-есть">Сервис предоставляется &ldquo;как есть&rdquo;</h2> +<p><strong><code>Сервис</code></strong> - онлайн-ресурсы и ПО, размещенные в рамках проекта <code>Sadium</code> на домене и под-доменах <code>*.sadium.cyou</code>.</p> +<p>Вы понимаете и соглашаетесь с тем, что <strong><code>Сервис</code></strong> предоставляется «как есть» без каких-либо гарантий, что сервис не содержит ошибок или дефектов. Администрация <strong><code>Сервиса</code></strong> не несёт никакой ответственности за какую-либо неверную и/или несвоевременную доставку информации, правильность обработки предоставленных и/или копируемых данных, а равно за прямой или косвенный ущерб, вызванный использованием данного <strong><code>Сервиса</code></strong>.</p> +<h2 id="отказ-от-ответственности">Отказ от ответственности</h2> +<p>Дополнительно сообщаем, что администрация проекта <code>Sadium</code> несёт ответственность только за контент, размещенный на &ldquo;своих&rdquo; сервисах. Администрация <code>Sadium</code> отказывается от ответвенности за размещение контента через &ldquo;проксирующие&rdquo; сервисы, ибо не имеет технической и правовой возможности его контроллировать.</p> +<p>Проект <code>Sadium</code> просит обратить внимание, что администрация не занимается модерированием каждого действия пользователей, в то же время контент может модерироваться/удаляться по обращению правообладателей, но только в том случае, если правообладатель сможет доказать авторство опубликованного на домене <code>*.sadium.cyou</code> контента.</p> +<p>Жалобы на контент принимаются только в письменном виде и в специальной для этого форме: - &lt;ссылка на форму&gt;</p> +<ul> +<li><strong><code>Сервис</code></strong> считается &ldquo;своим&rdquo;, если веб-приложение, находящееся на домене <code>*.sadium.cyou</code>, либо его контент может контролироваться администрацией (изменение, создание, удаление), а так же если администраторы проекта <code>Sadium</code> имеют техническую возможность контролировать пользователей как сущность базы данных (удалять, создавать, изменять).</li> +<li><strong><code>Сервис</code></strong> считается &ldquo;проксирующим&rdquo;, если веб-приложение, находящееся на домене <code>*.sadium.cyou</code>, по сути своей, является лишь альтернативным путём для получения контента, и контент никак не может быть изменен администрацией проекта <code>Sadium</code>.</li> +</ul> +<h2 id="персональные-данные">Персональные данные</h2> +<p>Предоставляя свои персональные данные при использовании <strong><code>Сервиса</code></strong>, вы даёте своё согласие на обработку и использование своих персональных данных для работы <strong><code>Сервиса</code></strong>. Администрация проекта <code>Sadium</code> не принуждает вас указывать свои &ldquo;настоящие&rdquo; персональные данные. +Администрация проекта <code>Sadium</code> не использует персональные данные пользователей в иных целях, если пользователь не изъявил обратного.</p> +<h2 id="воспрещается">Воспрещается</h2> +<ul> +<li>Обсуждать/распространять/хранить порнографические материалы с участием несовершеннолетних.</li> +<li>Назойливо-агрессивное поведение (преследования, необоснованное хамство на постоянной основе и т.п.)</li> +<li>Создавать аккаунт для компании/ИП/самозанятого пользователя, если цель создания аккаунта - извлечение прибыли.</li> +<li>Разглашать личные данные[1] пользователя без его согласия. Если пользователь (в не зависимости от его инстанса) потребует удаления своих личных данных со страницы пользователя, относящегося к проекту <code>*.sadium.cyou</code> - пользователь sadium.cyou обязан это сделать, в ином случае это сделает администрация.</li> +<li>Призывать к травле[2]. Одно дело - высказать своё мнение о пользователе. Совсем другое - мешать пользователю жить.</li> +<li>Рассылать спам.</li> +</ul> +<h2 id="обращаем-ваше-внимание">Обращаем Ваше внимание:</h2> +<ul> +<li>Несовпадение взглядов (политических, сексуальных, религиозных&hellip;) пользователя со взглядами администрации не является основанием для санкций.</li> +</ul> +<hr> +<p>[1] - Персональные данные или личные данные (ЛД) — любая информация, относящаяся прямо или косвенно к определенному пользователю. Любая информация, не опубликованная пользователем в открытый доступ будет считаться как ЛД пользователя.</p> +<p>В независимости от того, опубликованы или нет, ЛД всегда будут считаться:</p> +<ul> +<li>Паспортные данные, а именно совокупность таких данных, как ФИО, дата рождения, семейное положение.</li> +<li>Социальное и имущественное положение.</li> +<li>Информация о банковской карте, включая номер, PIN-код и CVV2/CVC2-коды.</li> +<li>Телефонный номер.</li> +</ul> +<p>[2] - Призывом к травле может являться:</p> +<ul> +<li>Вмешательство в личную жизнь пользователя с целью негативного влияния на его ментальное и физическое состояние</li> +<li>Прямые и непосредственные призывы к насилию.</li> +<li>Призывы к насилию с использованием общих лозунгов.</li> +<li>Прямые и непосредственные призывы к дискриминации.</li> +<li>Призывы к дискриминации в виде общих лозунгов.</li> +</ul> +<hr> +<p>Некоторые фрагменты текста были взяты и адаптированы <a href="https://git.thedroth.rocks/TheDroth/ToS/src/branch/main/README.md">отсюда</a><br> +Данный текст ещё будет дорабатываться.</p> + + + + + diff --git a/public/page/1/index.html b/public/page/1/index.html new file mode 100644 index 0000000..5309041 --- /dev/null +++ b/public/page/1/index.html @@ -0,0 +1,10 @@ + + + + / + + + + + + diff --git a/public/posts/codeberg_x_nextcloud/index.html b/public/posts/codeberg_x_nextcloud/index.html new file mode 100644 index 0000000..c650eae --- /dev/null +++ b/public/posts/codeberg_x_nextcloud/index.html @@ -0,0 +1,301 @@ + + + + + Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud

+
+

Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь.
+Пригодилось - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/

+

1. Создаём приложение в Codeberg и копируем куда-нибудь Client ID и Client secret.
+2. Идём в параметры сервера Nextcloud, пункт Social Login, и создаём Custom Oauth2 на +.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ПунктЧто вводить
Внутреннее имяCodeberg
НазваниеCodeberg
API Base URLhttps://codeberg.org
Authorize urlhttps://codeberg.org/login/oauth/authorize
Token urlhttps://codeberg.org/login/oauth/access_token
Profile urlhttps://codeberg.org/login/oauth/userinfo
Logout urlОставить пустым
Client ID и Client secretвставить из 1 пункта
Scoperead:user
Остальные послеНе трогайте, если не уверены
+

3. Ставим галку напротив пункта Позволять пользователям подключать социальные логины к своим аккаунтам и нажимаем Сохранить внизу страницы.
+4. Идём в режим Инкогнито вашего браузера, затем на страничку входа в ваше облако и копируем путь провайдера Codeberg - правая кнопка мыши, копируем ссылку, сохраняем куда-нибудь.
+Должно выглядеть примерно так - https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg
+5. Возвращаемся к ранее созданному приложению Codeberg, Нажимаем Изменить и вставляем ссылку из прошлого пункта в поле URI для перенаправления, нажимаем Сохранить.

+

Теперь попробуйте связать ваш аккаунт Codeberg и Nextcloud из пункта Social Login в настройках пользователя Nextcloud, должно работать. В теории, это также применимо к Gitea, потому что Forgejo это форк Gitea.

+

Давеча сделал по этому поводу Issue на Github: https://github.com/zorn-v/nextcloud-social-login/issues/440

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/index.html b/public/posts/index.html new file mode 100644 index 0000000..cca944e --- /dev/null +++ b/public/posts/index.html @@ -0,0 +1,378 @@ + + + + + Статьи :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/index.xml b/public/posts/index.xml new file mode 100644 index 0000000..52dd10f --- /dev/null +++ b/public/posts/index.xml @@ -0,0 +1,152 @@ + + + + Статьи on Sadium + /posts/ + Recent content in Статьи on Sadium + Hugo -- gohugo.io + ru + Sun, 10 Dec 2023 00:00:00 +0000 + + Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud + /posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /posts/codeberg_x_nextcloud/ + Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. Пригодилось - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Создаём приложение в Codeberg и копируем куда-нибудь Client ID и Client secret. 2. Идём в параметры сервера Nextcloud, пункт Social Login, и создаём Custom Oauth2 на +. +Пункт Что вводить Внутреннее имя Codeberg Название Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg.org/login/oauth/userinfo Logout url Оставить пустым Client ID и Client secret вставить из 1 пункта Scope read:user Остальные после Не трогайте, если не уверены 3. + <p>Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. <br> +Пригодилось - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Создаём приложение в Codeberg</a> и копируем куда-нибудь Client ID и Client secret. <br> +<code>2.</code> Идём в параметры сервера Nextcloud, пункт <code>Social Login</code>, и создаём Custom Oauth2 на <code>+</code>.</p> +<table> +<thead> +<tr> +<th>Пункт</th> +<th>Что вводить</th> +</tr> +</thead> +<tbody> +<tr> +<td>Внутреннее имя</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Название</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>Оставить пустым</td> +</tr> +<tr> +<td>Client ID и Client secret</td> +<td>вставить из 1 пункта</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Остальные после</td> +<td>Не трогайте, если не уверены</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Ставим галку напротив пункта <code>Позволять пользователям подключать социальные логины к своим аккаунтам</code> и нажимаем <code>Сохранить</code> внизу страницы. <br> +<code>4.</code> Идём в режим Инкогнито вашего браузера, затем на страничку входа в ваше облако и копируем путь провайдера Codeberg - правая кнопка мыши, копируем ссылку, сохраняем куда-нибудь. <br> +Должно выглядеть примерно так - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Возвращаемся к ранее созданному <a href="https://codeberg.org/user/settings/applications">приложению Codeberg</a>, Нажимаем <code>Изменить</code> и вставляем ссылку из прошлого пункта в поле <code>URI для перенаправления</code>, нажимаем <code>Сохранить</code>.</p> +<p>Теперь попробуйте связать ваш аккаунт Codeberg и Nextcloud из пункта <code>Social Login</code> в настройках пользователя Nextcloud, должно работать. В теории, это также применимо к <code>Gitea</code>, потому что <a href="https://forgejo.org">Forgejo</a> это форк <a href="https://gitea.com">Gitea</a>.</p> +<p>Давеча сделал по этому поводу Issue на Github: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + Не берите дешёвые M2 NMVE + /posts/rpi-rip-nvme/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /posts/rpi-rip-nvme/ + Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад. +Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. + <p>Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад.</p> +<p>Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. Ну и какая-то там планка оперативки на 8ГБ частотой 2133МГц. Диск тоже, по факту, был со старого компа, просто на момент работы сервера на Малинке он у меня был чисто под виртуалки всякие. Это SSD SanDisk на 120Гб.</p> +<p>В ближайшее время я планирую проапгрейдить сервер новым процом, в неближайшее - диском, и хочу докинуть ещё плашку оперативы на 8ГБ, дабы был двухканал. Процессор этот будет Intel Core i5 7600. Брал его <a href="https://aliexpress.ru/item/1005003651636041.html">тут</a>. Хотел взять Xeon-E3 1245 v5, однако без плясок с бубнами и программатора, мне бы его не получилось завести на этой материнке, менять которую мне вообще ни разу не хочется, да и с бубном плясать тоже неохота. После хотелось бы взять SSD Samsung EVO, скорее всего <a href="https://www.dns-shop.ru/product/184d257ee33aed20/500-gb-25-sata-nakopitel-samsung-870-evo-mz-77e500bkr">этот</a>. Ну а плашку оперативы возьму <a href="https://www.citilink.ru/product/modul-pamyati-kingmax-ddr4-8gb-2133-dimm-ret-400808">эту</a>. В идеале бы ещё ИБПшник взять, но я не знаю, какой&hellip;</p> +<p>Может допишу ещё чего&hellip;</p> + + + + + Мучения с принтером + /posts/ricoh_config/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /posts/ricoh_config/ + Я всё думал, как завести свой принтер под Linux. И однажды наткнулся на пакет в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён. +Но недавно в очередных поисках я наткнулся на раздел на форуме Ubuntu. Там добрый человек поделился репозиторием - туть. +Однако я поступил по другому, не так, как написал человек на форуме. Последовательность +git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/ cd ricoh-sp100 sudo cp pstoricohddst-gdi /usr/lib/cups/filter sudo cp *.ppd /usr/share/cups/model + <p>Я всё думал, как завести свой принтер под Linux. <br> +И однажды наткнулся на <a href="https://aur.archlinux.org/packages/ricoh-sp100-git">пакет</a> в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён.</p> +<p>Но недавно в очередных поисках я наткнулся на <a href="https://forum.ubuntu.ru/index.php?PHPSESSID=b541bb569cce4b86e0a21bf1f69ca5ec&amp;topic=203120.msg2481757#msg2481757">раздел на форуме Ubuntu</a>. <br> +Там добрый человек поделился репозиторием - <a href="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/">туть</a>.</p> +<p>Однако я поступил по другому, не так, как написал человек на форуме. <br> +Последовательность</p> +<p><code>git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/</code> <br> +<code>cd ricoh-sp100</code> <br> +<code>sudo cp pstoricohddst-gdi /usr/lib/cups/filter</code> <br> +<code>sudo cp *.ppd /usr/share/cups/model</code></p> +<p>Если есть yay: <br> +<code>yay -S jbigkit inotify-tools</code></p> +<p>Если нет:<br> +<code>sudo pacman -S jbigkit inotify-tools</code></p> +<p>Как то так. Теперь идём и настраиваем наш принтер в своём рабочем окружении и радуемся жизни. <br> +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + Подборка обоев + /posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /posts/walls/ + Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев. +Посмотреть их и забрать её можно тут. +О подборке: +Большая часть обоев взято с wallhaven.cc Содержит NSFW (около ~3-10%) Дополняется и обновляется как минимум еженедельно. У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. + <p>Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев.</p> +<p>Посмотреть их и забрать её можно <a href="https://cloud.sadium.cyou/s/walls">тут</a>.</p> +<p>О подборке:</p> +<ul> +<li>Большая часть обоев взято с <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Содержит NSFW (около ~3-10%)</li> +<li>Дополняется и обновляется как минимум еженедельно.</li> +</ul> +<p>У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html new file mode 100644 index 0000000..633a52b --- /dev/null +++ b/public/posts/page/1/index.html @@ -0,0 +1,10 @@ + + + + /posts/ + + + + + + diff --git a/public/posts/ricoh_config/index.html b/public/posts/ricoh_config/index.html new file mode 100644 index 0000000..dabe69d --- /dev/null +++ b/public/posts/ricoh_config/index.html @@ -0,0 +1,258 @@ + + + + + Мучения с принтером :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Мучения с принтером

+
+

Я всё думал, как завести свой принтер под Linux.
+И однажды наткнулся на пакет в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён.

+

Но недавно в очередных поисках я наткнулся на раздел на форуме Ubuntu.
+Там добрый человек поделился репозиторием - туть.

+

Однако я поступил по другому, не так, как написал человек на форуме.
+Последовательность

+

git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/
+cd ricoh-sp100
+sudo cp pstoricohddst-gdi /usr/lib/cups/filter
+sudo cp *.ppd /usr/share/cups/model

+

Если есть yay:
+yay -S jbigkit inotify-tools

+

Если нет:
+sudo pacman -S jbigkit inotify-tools

+

Как то так. Теперь идём и настраиваем наш принтер в своём рабочем окружении и радуемся жизни.
+ +

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/rpi-rip-nvme/index.html b/public/posts/rpi-rip-nvme/index.html new file mode 100644 index 0000000..4d1eed6 --- /dev/null +++ b/public/posts/rpi-rip-nvme/index.html @@ -0,0 +1,245 @@ + + + + + Не берите дешёвые M2 NMVE :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Не берите дешёвые M2 NMVE

+
+

Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад.

+

Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. Ну и какая-то там планка оперативки на 8ГБ частотой 2133МГц. Диск тоже, по факту, был со старого компа, просто на момент работы сервера на Малинке он у меня был чисто под виртуалки всякие. Это SSD SanDisk на 120Гб.

+

В ближайшее время я планирую проапгрейдить сервер новым процом, в неближайшее - диском, и хочу докинуть ещё плашку оперативы на 8ГБ, дабы был двухканал. Процессор этот будет Intel Core i5 7600. Брал его тут. Хотел взять Xeon-E3 1245 v5, однако без плясок с бубнами и программатора, мне бы его не получилось завести на этой материнке, менять которую мне вообще ни разу не хочется, да и с бубном плясать тоже неохота. После хотелось бы взять SSD Samsung EVO, скорее всего этот. Ну а плашку оперативы возьму эту. В идеале бы ещё ИБПшник взять, но я не знаю, какой…

+

Может допишу ещё чего…

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/posts/walls/index.html b/public/posts/walls/index.html new file mode 100644 index 0000000..d656b22 --- /dev/null +++ b/public/posts/walls/index.html @@ -0,0 +1,252 @@ + + + + + Подборка обоев :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Подборка обоев

+
+

Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев.

+

Посмотреть их и забрать её можно тут.

+

О подборке:

+
    +
  • Большая часть обоев взято с wallhaven.cc
  • +
  • Содержит NSFW (около ~3-10%)
  • +
  • Дополняется и обновляется как минимум еженедельно.
  • +
+

У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. + +

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/ru/index.html b/public/ru/index.html new file mode 100644 index 0000000..b782c17 --- /dev/null +++ b/public/ru/index.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/ru/sitemap.xml b/public/ru/sitemap.xml new file mode 100644 index 0000000..b194f05 --- /dev/null +++ b/public/ru/sitemap.xml @@ -0,0 +1,218 @@ + + + + /tags/codeberg/ + 2023-12-10T00:00:00+00:00 + + + + /tags/nextcloud/ + 2023-12-10T00:00:00+00:00 + + + + / + 2023-12-10T00:00:00+00:00 + + + + /tags/ + 2023-12-10T00:00:00+00:00 + + + + /posts/codeberg_x_nextcloud/ + 2023-12-10T00:00:00+00:00 + + + + /posts/ + 2023-12-10T00:00:00+00:00 + + + + /tags/nvme/ + 2023-10-07T00:00:00+00:00 + + /posts/rpi-rip-nvme/ + 2023-10-07T00:00:00+00:00 + + /tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/ + 2023-10-07T00:00:00+00:00 + + /posts/ricoh_config/ + 2023-09-09T00:00:00+00:00 + + /tags/%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80/ + 2023-09-09T00:00:00+00:00 + + /tags/%D1%81%D0%BE%D1%84%D1%82/ + 2023-09-09T00:00:00+00:00 + + /tags/wallpapers/ + 2023-07-01T00:00:00+00:00 + + + + /tags/%D0%BE%D0%B1%D0%BE%D0%B8/ + 2023-07-01T00:00:00+00:00 + + /posts/walls/ + 2023-07-01T00:00:00+00:00 + + + + /about/about/ + + + + /contacts/contacts/ + + + + /donate/ + + /services/services/ + + + + /categories/ + + + + /contacts/ + + + + /about/ + + + + /services/ + + + + /tos/ + + diff --git a/public/services/index.html b/public/services/index.html new file mode 100644 index 0000000..8ca97fe --- /dev/null +++ b/public/services/index.html @@ -0,0 +1,336 @@ + + + + + Сервисы :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ + +
+ +
+

+ +

+ + + + + + + +
+ +

Публичные

+
+

Forgejo

+

Мой инстанс | Сайт | Исходный код | Регистрация открыта | Nextcloud OIDC

+
+

Forgejo, форк Gitea - Открытая легковесная “кузница” для создания ПО.

+
+

Однажды я сделаю PoW капчу…

+

Matrix Admin UI

+

Мой инстанс | Исходный код

+
+

Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯

+
+

Matrix Element WebUI

+

Мой инстанс | Сайт | Исходный код

+
+

Element-web - Глянцевый клиент Matrix для совместной работы в Интернете.

+
+

Matrix Synapse

+

sadium.cyou | Сайт | Исходный код | Регистрация закрыта | Nextcloud OIDC

+
+

Synapse — домашний сервер Matrix с открытым исходным кодом, написанный и поддерживаемый Matrix.org Foundation. Вкратце, Matrix — это открытый стандарт связи в Интернете, поддерживающий федерацию, шифрование и VoIP.

+
+

Nextcloud

+

Мой инстанс | Сайт | Исходный код | Регистрация по премодерации | OIDC

+
+

Nextcloud - набор клиент-серверных программ для создания и использования хранилища данных.
+Является свободным аналогом облаков от Google, Яндекс, Mail.ru (нынешний VK Group), и т.д.

+
+

Owncast

+

Мой инстанс | Сайт | Исходный код

+
+

Owncast - автономный сервер видеотрансляций и веб-чатов для использования с существующим популярным программным обеспечением для вещания.

+
+

RSS-Bridge

+

Мой инстанс | Сайт | Исходный код

+
+

RSS-Bridge - программное обеспечение для создания Atom или RSS-каналов с веб-сайтов, у которых их нет.

+
+

Мостов куча, могу по просьбе добавить в список активных ещё какие-нибудь.

+ +

Мой инстанс веб-интерфейса | Сайт | Исходный код сервера | Исходный код WebUI

+
+

Shlink - Автономный сокращатель URL-адресов на основе PHP, который можно использовать для обслуживания сокращенных URL-адресов в вашем собственном домене.

+
+

Vaultwarden

+

Мой инстанс | Исходный код сервера | Исходный код WebUI | Регистрация открыта

+
+

Vaultwarden, форк Bitwarden - менеджера паролей с открытым кодом. Имеет приложения нескольких форматов, включая веб-интерфейс, настольные приложения, расширение браузера, мобильные приложения и CLI

+
+

Uptime Kuma

+

Мой инстанс | Исходный код

+
+

Uptime Kuma - Инструмент для мониторинга с возможностью самохостинга.

+
+
+

Личные/приватные

+

Adguard Home

+

Исходный код

+
+

Adguard Home - Межсетевой DNS сервер блокировщика рекламы и трекеров.

+
+

Maddy Email

+

Сайт | Исходный код

+
+

Maddy - Составной почтовый сервер “все в одном”.

+
+

qBittorrent

+

Исходный код

+
+

qBittorrent - Открытый торрент-клиент.

+
+
+

Исходный код указанных в этой статье сервисов (и не только) отзеркален на моём инстансе Forgejo.

+ + +
+ + +
+ + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/services/index.xml b/public/services/index.xml new file mode 100644 index 0000000..134f919 --- /dev/null +++ b/public/services/index.xml @@ -0,0 +1,101 @@ + + + + Сервисы on Sadium + /services/ + Recent content in Сервисы on Sadium + Hugo -- gohugo.io + ru + + + /services/services/ + Mon, 01 Jan 0001 00:00:00 +0000 + + /services/services/ + Публичные Forgejo Мой инстанс | Сайт | Исходный код | Регистрация открыта | Nextcloud OIDC +Forgejo, форк Gitea - Открытая легковесная &ldquo;кузница&rdquo; для создания ПО. +Однажды я сделаю PoW капчу&hellip; +Matrix Admin UI Мой инстанс | Исходный код +Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯ +Matrix Element WebUI Мой инстанс | Сайт | Исходный код +Element-web - Глянцевый клиент Matrix для совместной работы в Интернете. +Matrix Synapse sadium.cyou | Сайт | Исходный код | Регистрация закрыта | Nextcloud OIDC + <h1 id="публичные">Публичные</h1> +<hr> +<h3 id="forgejo">Forgejo</h3> +<p><a href="https://git.sadium.cyou/">Мой инстанс</a> | <a href="https://forgejo.org">Сайт</a> | <a href="https://codeberg.org/forgejo/forgejo">Исходный код</a> | <code>Регистрация открыта</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Forgejo</strong>, форк <strong><a href="https://gitea.io">Gitea</a></strong> - Открытая легковесная &ldquo;кузница&rdquo; для создания ПО.</p> +</blockquote> +<p>Однажды я сделаю PoW капчу&hellip;</p> +<h3 id="matrix-admin-ui">Matrix Admin UI</h3> +<p><a href="https://ma.sadium.cyou/">Мой инстанс</a> | <a href="https://github.com/Awesome-Technologies/synapse-admin">Исходный код</a></p> +<blockquote> +<p><strong>Matrix Admin UI</strong> - Matrix Admin UI. <code>¯\_(ツ)_/¯</code></p> +</blockquote> +<h3 id="matrix-element-webui">Matrix Element WebUI</h3> +<p><a href="https://mw.sadium.cyou/">Мой инстанс</a> | <a href="https://element.io/">Сайт</a> | <a href="https://github.com/vector-im/element-web/">Исходный код</a></p> +<blockquote> +<p><strong>Element-web</strong> - Глянцевый клиент Matrix для совместной работы в Интернете.</p> +</blockquote> +<h3 id="matrix-synapse">Matrix Synapse</h3> +<p><code>sadium.cyou</code> | <a href="https://matrix.org">Сайт</a> | <a href="https://github.com/matrix-org/synapse">Исходный код</a> | <code>Регистрация закрыта</code> | <code>Nextcloud OIDC</code></p> +<blockquote> +<p><strong>Synapse</strong> — домашний сервер Matrix с открытым исходным кодом, написанный и поддерживаемый Matrix.org Foundation. Вкратце, Matrix — это открытый стандарт связи в Интернете, поддерживающий федерацию, шифрование и VoIP.</p> +</blockquote> +<h3 id="nextcloud">Nextcloud</h3> +<p><a href="https://cloud.sadium.cyou">Мой инстанс</a> | <a href="https://nextcloud.com">Сайт</a> | <a href="https://github.com/nextcloud/server">Исходный код</a> | <code>Регистрация по премодерации</code> | <code>OIDC</code></p> +<blockquote> +<p><strong>Nextcloud</strong> - набор клиент-серверных программ для создания и использования хранилища данных. <br> +Является свободным аналогом облаков от Google, Яндекс, Mail.ru (нынешний VK Group), и т.д.</p> +</blockquote> +<h3 id="owncast">Owncast</h3> +<p><a href="https://live.sadium.cyou/">Мой инстанс</a> | <a href="https://owncast.online">Сайт</a> | <a href="https://github.com/owncast/owncast">Исходный код</a></p> +<blockquote> +<p><strong>Owncast</strong> - автономный сервер видеотрансляций и веб-чатов для использования с существующим популярным программным обеспечением для вещания.</p> +</blockquote> +<h3 id="rss-bridge">RSS-Bridge</h3> +<p><a href="https://rss.sadium.cyou/">Мой инстанс</a> | <a href="https://rss-bridge.github.io/rss-bridge">Сайт</a> | <a href="https://github.com/rss-bridge/rss-bridge">Исходный код</a></p> +<blockquote> +<p><strong>RSS-Bridge</strong> - программное обеспечение для создания Atom или RSS-каналов с веб-сайтов, у которых их нет.</p> +</blockquote> +<p>Мостов <a href="https://github.com/RSS-Bridge/rss-bridge/tree/master/bridges">куча</a>, могу по просьбе добавить в список активных ещё какие-нибудь.</p> +<h3 id="shlink">Shlink</h3> +<p><a href="https://shlink.sadium.cyou/">Мой инстанс веб-интерфейса</a> | <a href="https://shlink.io">Сайт</a> | <a href="https://github.com/shlinkio/shlink">Исходный код сервера</a> | <a href="https://github.com/shlinkio/shlink-web-client">Исходный код WebUI</a></p> +<blockquote> +<p><strong>Shlink</strong> - Автономный сокращатель URL-адресов на основе PHP, который можно использовать для обслуживания сокращенных URL-адресов в вашем собственном домене.</p> +</blockquote> +<h3 id="vaultwarden">Vaultwarden</h3> +<p><a href="https://vault.sadium.cyou/">Мой инстанс</a> | <a href="https://github.com/dani-garcia/vaultwarden">Исходный код сервера</a> | <a href="https://github.com/dani-garcia/bw_web_builds">Исходный код WebUI</a> | <code>Регистрация открыта</code></p> +<blockquote> +<p><strong>Vaultwarden</strong>, форк <strong><a href="https://bitwarden.com">Bitwarden</a></strong> - менеджера паролей с открытым кодом. Имеет приложения нескольких форматов, включая веб-интерфейс, настольные приложения, расширение браузера, мобильные приложения и CLI</p> +</blockquote> +<h3 id="uptime-kuma">Uptime Kuma</h3> +<p><a href="https://up.sadium.cyou">Мой инстанс</a> | <a href="https://github.com/louislam/uptime-kuma">Исходный код</a></p> +<blockquote> +<p><strong>Uptime Kuma</strong> - Инструмент для мониторинга с возможностью самохостинга.</p> +</blockquote> +<hr> +<h1 id="личныеприватные">Личные/приватные</h1> +<h3 id="adguard-home">Adguard Home</h3> +<p><a href="https://github.com/AdguardTeam/AdGuardHome">Исходный код</a></p> +<blockquote> +<p><strong>Adguard Home</strong> - Межсетевой DNS сервер блокировщика рекламы и трекеров.</p> +</blockquote> +<h3 id="maddy-email">Maddy Email</h3> +<p><a href="https://maddy.email">Сайт</a> | <a href="https://github.com/foxcpp/maddy">Исходный код</a></p> +<blockquote> +<p><strong>Maddy</strong> - Составной почтовый сервер &ldquo;все в одном&rdquo;.</p> +</blockquote> +<h3 id="qbittorrent">qBittorrent</h3> +<p><a href="https://github.com/qbittorrent/qBittorrent">Исходный код</a></p> +<blockquote> +<p><strong>qBittorrent</strong> - Открытый торрент-клиент.</p> +</blockquote> +<hr> +<p>Исходный код указанных в этой статье сервисов (и не только) отзеркален на моём инстансе <strong><a href="https://git.sadium.cyou/mirrors">Forgejo</a></strong>.</p> + + + + + diff --git a/public/services/page/1/index.html b/public/services/page/1/index.html new file mode 100644 index 0000000..ca7fd15 --- /dev/null +++ b/public/services/page/1/index.html @@ -0,0 +1,10 @@ + + + + /services/ + + + + + + diff --git a/public/services/services/index.html b/public/services/services/index.html new file mode 100644 index 0000000..37aa795 --- /dev/null +++ b/public/services/services/index.html @@ -0,0 +1,354 @@ + + + + + :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

+
+

Публичные

+
+

Forgejo

+

Мой инстанс | Сайт | Исходный код | Регистрация открыта | Nextcloud OIDC

+
+

Forgejo, форк Gitea - Открытая легковесная “кузница” для создания ПО.

+
+

Однажды я сделаю PoW капчу…

+

Matrix Admin UI

+

Мой инстанс | Исходный код

+
+

Matrix Admin UI - Matrix Admin UI. ¯\_(ツ)_/¯

+
+

Matrix Element WebUI

+

Мой инстанс | Сайт | Исходный код

+
+

Element-web - Глянцевый клиент Matrix для совместной работы в Интернете.

+
+

Matrix Synapse

+

sadium.cyou | Сайт | Исходный код | Регистрация закрыта | Nextcloud OIDC

+
+

Synapse — домашний сервер Matrix с открытым исходным кодом, написанный и поддерживаемый Matrix.org Foundation. Вкратце, Matrix — это открытый стандарт связи в Интернете, поддерживающий федерацию, шифрование и VoIP.

+
+

Nextcloud

+

Мой инстанс | Сайт | Исходный код | Регистрация по премодерации | OIDC

+
+

Nextcloud - набор клиент-серверных программ для создания и использования хранилища данных.
+Является свободным аналогом облаков от Google, Яндекс, Mail.ru (нынешний VK Group), и т.д.

+
+

Owncast

+

Мой инстанс | Сайт | Исходный код

+
+

Owncast - автономный сервер видеотрансляций и веб-чатов для использования с существующим популярным программным обеспечением для вещания.

+
+

RSS-Bridge

+

Мой инстанс | Сайт | Исходный код

+
+

RSS-Bridge - программное обеспечение для создания Atom или RSS-каналов с веб-сайтов, у которых их нет.

+
+

Мостов куча, могу по просьбе добавить в список активных ещё какие-нибудь.

+ +

Мой инстанс веб-интерфейса | Сайт | Исходный код сервера | Исходный код WebUI

+
+

Shlink - Автономный сокращатель URL-адресов на основе PHP, который можно использовать для обслуживания сокращенных URL-адресов в вашем собственном домене.

+
+

Vaultwarden

+

Мой инстанс | Исходный код сервера | Исходный код WebUI | Регистрация открыта

+
+

Vaultwarden, форк Bitwarden - менеджера паролей с открытым кодом. Имеет приложения нескольких форматов, включая веб-интерфейс, настольные приложения, расширение браузера, мобильные приложения и CLI

+
+

Uptime Kuma

+

Мой инстанс | Исходный код

+
+

Uptime Kuma - Инструмент для мониторинга с возможностью самохостинга.

+
+
+

Личные/приватные

+

Adguard Home

+

Исходный код

+
+

Adguard Home - Межсетевой DNS сервер блокировщика рекламы и трекеров.

+
+

Maddy Email

+

Сайт | Исходный код

+
+

Maddy - Составной почтовый сервер “все в одном”.

+
+

qBittorrent

+

Исходный код

+
+

qBittorrent - Открытый торрент-клиент.

+
+
+

Исходный код указанных в этой статье сервисов (и не только) отзеркален на моём инстансе Forgejo.

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..e91719e --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,18 @@ + + + + + en/sitemap.xml + + 2023-12-10T00:00:00+00:00 + + + + + ru/sitemap.xml + + 2023-12-10T00:00:00+00:00 + + + + diff --git a/public/styles.css b/public/styles.css new file mode 100644 index 0000000..0d63005 --- /dev/null +++ b/public/styles.css @@ -0,0 +1,3 @@ +@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin:5px 0;text-decoration:none;text-align:center;border-radius:8;border:1px solid #FF6266;background:#FF6266;color:#221f29;font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:rgba(255,98,102,0.9)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:#FF6266;background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:#FF6266;border:1px solid #FF6266;border-radius:0;padding:10px;margin:5px 0;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:#fff;outline:1px solid #fff}input:active,textarea:active,select:active{box-shadow:none}select{background:#221f29}select option{background:#221f29}::placeholder{color:rgba(255,98,102,0.5)}input[type="checkbox"]{vertical-align:middle;padding:10px;box-shadow:inset 0 0 0 3px #221f29}input[type="checkbox"]:checked{background:#FF6266}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, #FF6266, #FF6266 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:#FF6266;user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:#221f29;box-shadow:0 10px rgba(34,31,41,0.8),-10px 10px rgba(34,31,41,0.8),10px 10px rgba(34,31,41,0.8);color:white;border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;background:#FF6266;color:black;padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:#221f29;color:#fff;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:#FF6266;color:#221f29}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:rgba(255,98,102,0.2);color:#FF6266;padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid #FF6266;border-bottom:1px solid #FF6266;margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:#FF6266}blockquote.twitter-tweet{position:relative;background:rgba(255,98,102,0.1);font:inherit;color:inherit;border:1px solid #FF6266;padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:#FF6266;font-weight:bold}blockquote.twitter-tweet a{color:#FF6266}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed #FF6266;padding:10px}th{color:#FF6266}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol>li{counter-increment:li}ol>li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:#FF6266;display:inline-block;text-align:right}ol>li>ol{margin-left:38px}ol>li>ol>li{counter-increment:li}ol>li>ol>li:before{content:counters(li, ".") " "}mark{background:#FF6266;color:#221f29}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:rgba(255,255,255,0.1);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid #FF6266;padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid rgba(255,255,255,0.1)}.post-meta{font-size:1rem;margin-bottom:10px;color:rgba(255,98,102,0.7)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{position:relative;color:#FF6266;margin:0 0 15px;padding-bottom:15px;border-bottom:3px dotted #FF6266}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted #FF6266}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-cover{border:20px solid #FF6266;background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:rgba(255,98,102,0.9);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:rgba(255,255,255,0.5)}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:#221f29;color:rgba(255,255,255,0.3);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:#FF6266 !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:rgba(255,98,102,0.7) !important}.token.property,.token.function,.token.function-name,.token.deleted,code.language-javascript,code.language-html,.command-line-prompt>span:before{color:#9a9999 !important}.token.selector,.token.tag,.token.punctuation{color:white}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:rgba(255,255,255,0.3) !important}.token.namespace{opacity:.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:rgba(245,104,107,0.08);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{position:relative;margin:40px 0;padding:20px;border:1px solid rgba(255,255,255,0.1)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * $code-margin)}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:.8em !important;background:rgba(224,224,224,0.2) !important;color:#bbb !important;box-shadow:0 2px 0 0 rgba(0,0,0,0.2) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid #f5686b;cursor:pointer}.collapsable-code__title{flex:1;color:#FF6266;padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:#FF6266;border:1px solid #f5686b;border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:#FF6266;font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:#FF6266}.terms ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}body .gist .blob-num,body .gist .blob-code-inner{border:none} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/public/styles.css.map b/public/styles.css.map new file mode 100644 index 0000000..32d82ca --- /dev/null +++ b/public/styles.css.map @@ -0,0 +1,45 @@ +{ + "version": 3, + "file": "styles.css", + "sourceRoot": "/mnt/2TB/sites/sadium", + "sources": [ + "css/base.scss", + "themes/hugo-theme-terminal/assets/css/variables.scss", + "themes/hugo-theme-terminal/assets/css/font.scss", + "themes/hugo-theme-terminal/assets/css/buttons.scss", + "themes/hugo-theme-terminal/assets/css/form.scss", + "themes/hugo-theme-terminal/assets/css/header.scss", + "themes/hugo-theme-terminal/assets/css/menu.scss", + "themes/hugo-theme-terminal/assets/css/logo.scss", + "themes/hugo-theme-terminal/assets/css/main.scss", + "themes/hugo-theme-terminal/assets/css/post.scss", + "themes/hugo-theme-terminal/assets/css/pagination.scss", + "themes/hugo-theme-terminal/assets/css/footer.scss", + "themes/hugo-theme-terminal/assets/css/prism.scss", + "themes/hugo-theme-terminal/assets/css/syntax.scss", + "themes/hugo-theme-terminal/assets/css/code.scss", + "themes/hugo-theme-terminal/assets/css/terms.scss", + "themes/hugo-theme-terminal/assets/css/gist.scss" + ], + "sourcesContent": [ + "$accent: #FF6266;\n@import \"variables\";\n\n@import \"font\";\n@import \"buttons\";\n@import \"form\";\n\n@import \"header\";\n@import \"menu\";\n@import \"logo\";\n@import \"main\";\n@import \"post\";\n@import \"pagination\";\n@import \"footer\";\n\n@import \"prism\";\n@import \"syntax\";\n@import \"code\";\n@import \"terms\";\n@import \"gist\";\n", + "/* COLOR VARIABLES */\n$background: mix($accent, #1D1E28, 2%);\n$color: white;\n$border-color: rgba(255, 255, 255, .1);\n\n/* MEDIA QUERIES */\n$phone: \"max-width: 684px\";\n$tablet: \"max-width: 900px\";\n", + "@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 400;\n src: url(\"../fonts/FiraCode-Regular.woff\") format(\"woff\");\n}\n\n@font-face {\n font-display: swap;\n font-family: 'Fira Code';\n font-style: normal;\n font-weight: 800;\n src: url(\"../fonts/FiraCode-Bold.woff\") format(\"woff\");\n}\n", + ".button-container {\n display: table;\n margin-left: auto;\n margin-right: auto;\n}\n\nbutton,\n.button,\na.button {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8px 18px;\n margin: 5px 0;\n text-decoration: none;\n text-align: center;\n border-radius: 8;\n border: 1px solid $accent;\n background: $accent;\n color: $background;\n font: inherit;\n font-weight: bold;\n appearance: none;\n cursor: pointer;\n outline: none;\n\n &:hover {\n background: transparentize($accent, .1);\n }\n\n /* variants */\n\n &.outline {\n background: transparent;\n box-shadow: none;\n padding: 8px 18px;\n\n :hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n &.link {\n background: none;\n font-size: 1rem;\n }\n\n /* sizes */\n\n &.small {\n font-size: .8rem;\n }\n\n &.wide {\n min-width: 200px;\n padding: 14px 24px;\n }\n}\n\na.read-more,\na.read-more:hover,\na.read-more:active {\n display: inline-flex;\n border: none;\n color: $accent;\n background: none;\n box-shadow: none;\n padding: 0;\n margin: 20px 0;\n max-width: 100%;\n}\n\n.code-toolbar {\n margin-bottom: 20px;\n\n .toolbar-item a {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 3px 8px;\n margin-bottom: 5px;\n text-decoration: none;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n border-radius: 8px;\n border: 1px solid transparent;\n appearance: none;\n cursor: pointer;\n outline: none;\n }\n}\n", + "input, textarea, select {\n background: transparent;\n color: $accent;\n border: 1px solid $accent;\n border-radius: 0;\n padding: 10px;\n margin: 5px 0;\n font: inherit;\n appearance: none;\n\n &:focus, :active {\n border-color: $color;\n outline: 1px solid $color;\n }\n\n &:active {\n box-shadow: none;\n }\n}\n\nselect {\n background: $background;\n\n option {\n background: $background;\n }\n}\n\n::placeholder {\n color: transparentize($accent, .5);\n}\n\ninput {\n &[type=\"checkbox\"] {\n vertical-align: middle;\n padding: 10px;\n box-shadow: inset 0 0 0 3px $background;\n\n &:checked {\n background: $accent;\n }\n }\n}\n", + ".header {\n display: flex;\n flex-direction: column;\n position: relative;\n\n @media print {\n display: none;\n }\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n &__logo {\n display: flex;\n flex: 1;\n\n &:after {\n content: '';\n background: repeating-linear-gradient(90deg, $accent, $accent 2px, transparent 0, transparent 10px);\n display: block;\n width: 100%;\n right: 10px;\n }\n\n a {\n flex: 0 0 auto;\n max-width: 100%;\n text-decoration: none;\n }\n }\n}\n", + "@mixin menu {\n display: none;\n flex-direction: column;\n $shadow-color: transparentize($background, .2);\n $shadow: 0 10px $shadow-color, -10px 10px $shadow-color, 10px 10px $shadow-color;\n position: absolute;\n background: $background;\n box-shadow: $shadow;\n color: white;\n border: 2px solid;\n margin: 0;\n padding: 10px;\n top: 10px;\n left: 0;\n list-style: none;\n z-index: 99;\n}\n\n@mixin header-menu-trigger {\n color: $accent;\n border: 2px solid;\n margin-left: 10px;\n height: 100%;\n padding: 3px 8px;\n margin-bottom: 0 !important;\n position: relative;\n cursor: pointer;\n}\n\n.navigation-menu {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin: 20px 1px;\n\n @media ($phone) {\n margin: 0;\n }\n\n &__inner {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n list-style: none;\n margin: 0;\n padding: 0;\n\n > li {\n flex: 0 0 auto;\n margin-bottom: 10px;\n white-space: nowrap;\n\n &:not(:last-of-type) {\n margin-right: 20px;\n }\n }\n\n @media ($phone) {\n flex-direction: column;\n align-items: flex-start;\n padding: 0;\n\n li {\n margin: 0;\n padding: 5px;\n }\n }\n }\n\n .spacer {\n flex-grow: 1 !important;\n }\n}\n\n.menu {\n display: flex;\n flex-direction: column;\n position: relative;\n list-style: none;\n padding: 0;\n margin: 0;\n\n &__trigger {\n margin-right: 0 !important;\n color: $accent;\n user-select: none;\n cursor: pointer;\n }\n\n &__dropdown {\n @include menu;\n\n .open & {\n display: flex;\n }\n\n > li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n\n a {\n display: flex;\n padding: 5px;\n }\n }\n }\n\n &--desktop {\n @media ($phone) {\n display: none\n }\n }\n\n &--mobile {\n .menu__trigger {\n @include header-menu-trigger;\n display: none;\n\n @media ($phone) {\n display: block;\n }\n }\n\n .menu__dropdown {\n @media ($phone) {\n left: auto;\n right: 0;\n }\n }\n\n li {\n flex: 0 0 auto;\n\n &:not(:last-of-type) {\n margin-bottom: 10px;\n }\n }\n }\n\n &--language-selector {\n .menu__trigger {\n @include header-menu-trigger;\n\n @media ($phone) {\n display: none;\n }\n }\n\n .menu__dropdown {\n left: auto;\n right: 0;\n }\n }\n}\n", + ".logo {\n display: flex;\n align-items: center;\n text-decoration: none;\n background: $accent;\n color: black;\n padding: 5px 10px;\n}\n", + "html {\n box-sizing: border-box;\n}\n\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n}\n\nbody {\n margin: 0;\n padding: 0;\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;\n font-size: 1rem;\n line-height: 1.54;\n letter-spacing: -0.02em;\n background-color: $background;\n color: $color;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n font-feature-settings: \"liga\", \"tnum\", \"zero\", \"ss01\", \"locl\";\n font-variant-ligatures: contextual;\n -webkit-overflow-scrolling: touch;\n -webkit-text-size-adjust: 100%;\n\n @media ($phone) {\n font-size: 1rem;\n }\n}\n\n.headings--one-size {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n line-height: 1.3;\n\n &:not(first-child) {\n margin-top: 40px;\n }\n }\n\n h1,\n h2,\n h3 {\n font-size: 1.4rem;\n }\n\n h4,\n h5,\n h6 {\n font-size: 1.2rem;\n }\n}\n\na {\n color: inherit;\n\n /* Waiting for a better times... */\n /* &:has(code) {\n text-decoration-color: $accent;\n } */\n}\n\nimg {\n display: block;\n max-width: 100%;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n}\n\np {\n margin-bottom: 20px;\n}\n\nfigure {\n display: table;\n max-width: 100%;\n margin: 25px 0;\n\n &.left {\n margin-right: auto;\n }\n\n &.center {\n margin-left: auto;\n margin-right: auto;\n }\n\n &.right {\n margin-left: auto;\n }\n\n figcaption {\n font-size: 14px;\n padding: 5px 10px;\n margin-top: 5px;\n background: $accent;\n color: $background;\n /* opacity: .8; */\n\n &.left {\n text-align: left;\n }\n\n &.center {\n text-align: center;\n }\n\n &.right {\n text-align: right;\n }\n }\n}\n\ncode, kbd {\n font-family: 'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;\n font-feature-settings: normal;\n background: transparentize($accent, .8);\n color: $accent;\n padding: 1px 6px;\n margin: 0 2px;\n font-size: .95rem;\n\n code, kbd {\n background: transparent;\n padding: 0;\n margin: 0;\n }\n}\n\npre {\n background: transparent !important;\n padding: 20px 10px;\n margin: 40px 0;\n font-size: .95rem !important;\n overflow: auto;\n border-top: 1px solid rgba(255, 255, 255, .1);\n border-bottom: 1px solid rgba(255, 255, 255, .1);\n\n + pre {\n border-top: 0;\n margin-top: -40px;\n }\n\n @media ($phone) {\n white-space: pre-wrap;\n word-wrap: break-word;\n }\n\n code {\n background: none !important;\n margin: 0;\n padding: 0;\n font-size: inherit;\n border: none;\n }\n}\n\nblockquote {\n border-top: 1px solid $accent;\n border-bottom: 1px solid $accent;\n margin: 40px 0;\n padding: 25px;\n\n @media ($phone) {\n padding-right: 0;\n }\n\n p:first-of-type {\n margin-top: 0;\n }\n\n p:last-of-type {\n margin-bottom: 0;\n }\n\n p {\n position: relative;\n }\n\n p:first-of-type:before {\n content: '>';\n display: block;\n position: absolute;\n left: -25px;\n color: $accent;\n }\n\n &.twitter-tweet {\n position: relative;\n background: transparentize($accent, .9);\n font: inherit;\n color: inherit;\n border: 1px solid $accent;\n padding-top: 60px;\n\n p:before {\n content: '';\n }\n\n &:before {\n content: '> From Twitter:';\n position: absolute;\n top: 20px;\n color: $accent;\n font-weight: bold;\n }\n\n a {\n color: $accent;\n }\n }\n}\n\ntable {\n table-layout: auto;\n border-collapse: collapse;\n width: 100%;\n margin: 40px 0;\n}\n\ntable,\nth,\ntd {\n border: 1px dashed $accent;\n padding: 10px;\n}\n\nth {\n color: $accent;\n}\n\nul,\nol {\n margin-left: 22px;\n padding: 0;\n\n li {\n position: relative;\n }\n\n @media ($phone) {\n margin-left: 20px;\n }\n}\n\nol {\n list-style: none;\n counter-reset: li;\n\n > li {\n counter-increment: li;\n\n &:before {\n content: counter(li);\n position: absolute;\n right: calc(100% + 10px);\n color: $accent;\n display: inline-block;\n text-align: right;\n }\n\n > ol {\n margin-left: 38px;\n\n > li {\n counter-increment: li;\n\n &:before {\n content: counters(li, \".\") \" \";\n }\n }\n }\n }\n}\n\nmark {\n background: $accent;\n color: $background;\n}\n\n.container {\n display: flex;\n flex-direction: column;\n padding: 40px;\n max-width: 864px;\n min-height: 100vh;\n border-right: 1px solid rgba(255, 255, 255, 0.1);\n\n &.full,\n &.center {\n border: none;\n margin: 0 auto;\n }\n\n &.full {\n max-width: 100%;\n }\n\n @media ($phone) {\n padding: 20px;\n }\n\n @media print {\n display: initial;\n }\n}\n\n.content {\n display: flex;\n flex-direction: column;\n\n @media print {\n display: initial;\n }\n}\n\nhr {\n width: 100%;\n border: none;\n background: $border-color;\n height: 1px;\n}\n\n.hidden {\n display: none;\n}\n\nsup {\n line-height: 0;\n}\n", + ".index-content {\n margin-top: 20px;\n}\n\n.framed {\n border: 1px solid $accent;\n padding: 20px;\n\n *:first-child {\n margin-top: 0;\n }\n\n *:last-child {\n margin-bottom: 0;\n }\n}\n\n.posts {\n width: 100%;\n}\n\n.post {\n width: 100%;\n text-align: left;\n margin: 20px auto;\n padding: 20px 0;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid $border-color;\n }\n\n &-meta {\n font-size: 1rem;\n margin-bottom: 10px;\n color: transparentize($accent, .3);\n\n & > *:not(:first-child) {\n &::before {\n content: \"::\";\n display: inline-block;\n margin: 0 8px;\n }\n }\n }\n\n &-title {\n $border: 3px dotted $accent;\n position: relative;\n color: $accent;\n margin: 0 0 15px;\n padding-bottom: 15px;\n border-bottom: $border;\n\n &:after {\n content: '';\n position: absolute;\n bottom: 2px;\n display: block;\n width: 100%;\n border-bottom: $border;\n }\n\n a {\n text-decoration: none;\n }\n }\n\n &-tags {\n display: block;\n margin-bottom: 20px;\n font-size: 1rem;\n opacity: .5;\n\n a {\n text-decoration: none;\n }\n }\n\n &-content {\n margin-top: 30px;\n }\n\n &-cover {\n border: 20px solid $accent;\n background: transparent;\n margin: 40px 0;\n padding: 20px;\n\n @media ($phone) {\n padding: 10px;\n border-width: 10px;\n }\n }\n\n ul {\n list-style: none;\n\n li:not(:empty):before {\n content: '-';\n position: absolute;\n left: -20px;\n color: $accent;\n }\n }\n}\n\n.post--regulation {\n h1 {\n justify-content: center;\n }\n\n h2 {\n justify-content: center;\n margin-bottom: 10px;\n\n & + h2 {\n margin-top: -10px;\n margin-bottom: 20px;\n }\n }\n}\n\n.hanchor {\n color: transparentize($accent, .1);\n text-decoration: none;\n margin-left: 10px;\n visibility: hidden;\n}\n\nh1:hover a, h2:hover a, h3:hover a, h4:hover a {\n visibility: visible;\n}\n\n.footnotes {\n color: transparentize($color, .5);\n}\n", + ".pagination {\n margin-top: 50px;\n\n @media print {\n display: none;\n }\n\n &__title {\n display: flex;\n text-align: center;\n position: relative;\n margin: 100px 0 20px;\n\n &-h {\n text-align: center;\n margin: 0 auto;\n padding: 5px 10px;\n background: $background;\n color: transparentize($color, .7);\n font-size: .8rem;\n text-transform: uppercase;\n text-decoration: none;\n letter-spacing: .1em;\n z-index: 1;\n }\n\n hr {\n position: absolute;\n left: 0;\n right: 0;\n width: 100%;\n margin-top: 15px;\n z-index: 0;\n }\n }\n\n &__buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-flow: row wrap;\n gap: 10px;\n\n a {\n text-decoration: none;\n }\n }\n}\n\n.button {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 1rem;\n padding: 0;\n appearance: none;\n\n @media($phone) {\n flex: 1;\n }\n\n a {\n display: flex;\n justify-content: center;\n flex: 1;\n padding: 8px 16px;\n text-decoration: none;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__text {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &.next .button__icon {\n margin-left: 8px;\n }\n\n &.previous .button__icon {\n margin-right: 8px;\n }\n}\n", + ".footer {\n padding: 40px 0;\n flex-grow: 0;\n opacity: .5;\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0;\n width: 760px;\n max-width: 100%;\n\n @media ($tablet) {\n flex-direction: column;\n }\n }\n\n a {\n color: inherit;\n }\n\n .copyright {\n display: flex;\n flex-flow: row wrap;\n flex: 1;\n align-items: center;\n font-size: 1rem;\n justify-content: center;\n\n &--user {\n margin: auto;\n text-align: center;\n }\n\n & > *:first-child:not(:only-child) {\n margin-right: 10px;\n }\n\n span {\n white-space: nowrap;\n }\n }\n}\n", + "/* PrismJS 1.24.1\nhttps://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+actionscript+apacheconf+applescript+bash+c+csharp+cpp+cmake+coffeescript+csp+css-extras+diff+django+docker+elixir+elm+erlang+fsharp+flow+git+go+graphql+haml+handlebars+haskell+http+java+json+kotlin+latex+less+llvm+makefile+markdown+markup-templating+nasm+objectivec+ocaml+perl+php+php-extras+powershell+processing+pug+python+r+jsx+tsx+reason+ruby+rust+sass+scss+scala+scheme+sql+stylus+swift+textile+toml+twig+typescript+vim+visual-basic+wasm+yaml&plugins=line-highlight+line-numbers+jsonp-highlight+highlight-keywords+command-line+toolbar+copy-to-clipboard */\n/**\n * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML\n * Based on https://github.com/chriskempson/tomorrow-theme\n * @author Rose Pritchard\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tcolor: #ccc;\n\tbackground: none;\n\tfont-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n\tfont-size: 1em;\n\ttext-align: left;\n\twhite-space: pre;\n\tword-spacing: normal;\n\tword-break: normal;\n\tword-wrap: normal;\n\tline-height: 1.5;\n\n\t-moz-tab-size: 4;\n\t-o-tab-size: 4;\n\ttab-size: 4;\n\n\t-webkit-hyphens: none;\n\t-moz-hyphens: none;\n\t-ms-hyphens: none;\n\thyphens: none;\n\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n\tpadding: 1em;\n\tmargin: .5em 0;\n\toverflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n\tbackground: #2d2d2d;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n\tpadding: .1em;\n\tborder-radius: .3em;\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.block-comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: #999;\n}\n\n.token.punctuation {\n\tcolor: #ccc;\n}\n\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted {\n\tcolor: #e2777a;\n}\n\n.token.function-name {\n\tcolor: #6196cc;\n}\n\n.token.boolean,\n.token.number,\n.token.function {\n\tcolor: #f08d49;\n}\n\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n\tcolor: #f8c555;\n}\n\n.token.selector,\n.token.important,\n.token.atrule,\n.token.keyword,\n.token.builtin {\n\tcolor: #cc99cd;\n}\n\n.token.string,\n.token.char,\n.token.attr-value,\n.token.regex,\n.token.variable {\n\tcolor: #7ec699;\n}\n\n.token.operator,\n.token.entity,\n.token.url {\n\tcolor: #67cdcc;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n\n.token.inserted {\n\tcolor: green;\n}\n\npre[data-line] {\n\tposition: relative;\n\tpadding: 1em 0 1em 3em;\n}\n\n.line-highlight {\n\tposition: absolute;\n\tleft: 0;\n\tright: 0;\n\tpadding: inherit 0;\n\tmargin-top: 1em; /* Same as .prism’s padding-top */\n\n\tbackground: hsla(24, 20%, 50%,.08);\n\tbackground: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0));\n\n\tpointer-events: none;\n\n\tline-height: inherit;\n\twhite-space: pre;\n}\n\n@media print {\n\t.line-highlight {\n\t\t/*\n\t\t * This will prevent browsers from replacing the background color with white.\n\t\t * It's necessary because the element is layered on top of the displayed code.\n\t\t */\n\t\t-webkit-print-color-adjust: exact;\n\t\tcolor-adjust: exact;\n\t}\n}\n\n\t.line-highlight:before,\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-start);\n\t\tposition: absolute;\n\t\ttop: .4em;\n\t\tleft: .6em;\n\t\tmin-width: 1em;\n\t\tpadding: 0 .5em;\n\t\tbackground-color: hsla(24, 20%, 50%,.4);\n\t\tcolor: hsl(24, 20%, 95%);\n\t\tfont: bold 65%/1.5 sans-serif;\n\t\ttext-align: center;\n\t\tvertical-align: .3em;\n\t\tborder-radius: 999px;\n\t\ttext-shadow: none;\n\t\tbox-shadow: 0 1px white;\n\t}\n\n\t.line-highlight[data-end]:after {\n\t\tcontent: attr(data-end);\n\t\ttop: auto;\n\t\tbottom: .4em;\n\t}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n\tcontent: none;\n}\n\npre[id].linkable-line-numbers span.line-numbers-rows {\n\tpointer-events: all;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:before {\n\tcursor: pointer;\n}\npre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {\n\tbackground-color: rgba(128, 128, 128, .2);\n}\n\npre[class*=\"language-\"].line-numbers {\n\tposition: relative;\n\tpadding-left: 3.8em;\n\tcounter-reset: linenumber;\n}\n\npre[class*=\"language-\"].line-numbers > code {\n\tposition: relative;\n\twhite-space: inherit;\n}\n\n.line-numbers .line-numbers-rows {\n\tposition: absolute;\n\tpointer-events: none;\n\ttop: 0;\n\tfont-size: 100%;\n\tleft: -3.8em;\n\twidth: 3em; /* works for line-numbers below 1000 lines */\n\tletter-spacing: -1px;\n\tborder-right: 1px solid #999;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n\n}\n\n\t.line-numbers-rows > span {\n\t\tdisplay: block;\n\t\tcounter-increment: linenumber;\n\t}\n\n\t\t.line-numbers-rows > span:before {\n\t\t\tcontent: counter(linenumber);\n\t\t\tcolor: #999;\n\t\t\tdisplay: block;\n\t\t\tpadding-right: 0.8em;\n\t\t\ttext-align: right;\n\t\t}\n\n.command-line-prompt {\n\tborder-right: 1px solid #999;\n\tdisplay: block;\n\tfloat: left;\n\tfont-size: 100%;\n\tletter-spacing: -1px;\n\tmargin-right: 1em;\n\tpointer-events: none;\n\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.command-line-prompt > span:before {\n\tcolor: #999;\n\tcontent: ' ';\n\tdisplay: block;\n\tpadding-right: 0.8em;\n}\n\n.command-line-prompt > span[data-user]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] $\";\n}\n\n.command-line-prompt > span[data-user=\"root\"]:before {\n\tcontent: \"[\" attr(data-user) \"@\" attr(data-host) \"] #\";\n}\n\n.command-line-prompt > span[data-prompt]:before {\n\tcontent: attr(data-prompt);\n}\n\ndiv.code-toolbar {\n\tposition: relative;\n}\n\ndiv.code-toolbar > .toolbar {\n\tposition: absolute;\n\ttop: .3em;\n\tright: .2em;\n\ttransition: opacity 0.3s ease-in-out;\n\topacity: 0;\n}\n\ndiv.code-toolbar:hover > .toolbar {\n\topacity: 1;\n}\n\n/* Separate line b/c rules are thrown out if selector is invalid.\n IE11 and old Edge versions don't support :focus-within. */\ndiv.code-toolbar:focus-within > .toolbar {\n\topacity: 1;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item {\n\tdisplay: inline-block;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a {\n\tcursor: pointer;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > button {\n\tbackground: none;\n\tborder: 0;\n\tcolor: inherit;\n\tfont: inherit;\n\tline-height: normal;\n\toverflow: visible;\n\tpadding: 0;\n\t-webkit-user-select: none; /* for button */\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n\tcolor: #bbb;\n\tfont-size: .8em;\n\tpadding: 0 .5em;\n\tbackground: #f5f2f0;\n\tbackground: rgba(224, 224, 224, 0.2);\n\tbox-shadow: 0 2px 0 0 rgba(0,0,0,0.2);\n\tborder-radius: .5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > a:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > button:focus,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:hover,\ndiv.code-toolbar > .toolbar > .toolbar-item > span:focus {\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n", + "code.language-css,\ncode.language-scss,\n.token.boolean,\n.token.string,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.language-scss .token.string,\n.style .token.string,\n.token.attr-value,\n.token.keyword,\n.token.control,\n.token.directive,\n.token.statement,\n.token.regex,\n.token.atrule,\n.token.number,\n.token.inserted,\n.token.important {\n color: $accent !important;\n}\n\n.token.tag-id,\n.token.atrule-id,\n.token.operator,\n.token.unit,\n.token.placeholder,\n.token.variable,\n.token.tag,\n.token.attr-name,\n.token.namespace,\n.token.deleted,\n.token.property,\n.token.class-name,\n.token.constant,\n.token.symbol {\n color: transparentize($accent, .3) !important;\n}\n\n.token.property,\n.token.function,\n.token.function-name,\n.token.deleted,\ncode.language-javascript,\ncode.language-html,\n.command-line-prompt > span:before {\n color: mix($accent, #999, .9) !important;\n}\n\n.token.selector,\n.token.tag,\n.token.punctuation {\n color: white;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: rgba(255, 255, 255, .3) !important;\n}\n\n.token.namespace {\n opacity: .7 !important;\n}\n\npre[data-line] {\n position: relative;\n}\n\npre[class*=\"language-\"] {\n margin: 0;\n padding: 0;\n overflow: auto;\n}\n\n.line-highlight {\n position: absolute;\n left: 0;\n right: 0;\n padding: 0;\n margin: 0;\n background: transparentize(mix($accent, #999, 90%), .92);\n pointer-events: none;\n line-height: inherit;\n white-space: pre;\n}\n\n.line-highlight:before,\n.line-highlight[data-end]:after {\n content: attr(data-start);\n position: absolute;\n /* top: .4em; */\n left: .6em;\n min-width: 1em;\n padding: 0 .5em;\n background-color: hsla(24, 20%, 50%, .4);\n color: hsl(24, 20%, 95%);\n font: bold 65%/1.5 sans-serif;\n text-align: center;\n vertical-align: .3em;\n border-radius: 999px;\n text-shadow: none;\n box-shadow: 0 1px white;\n}\n\n.line-highlight[data-end]:after {\n content: attr(data-end);\n top: auto;\n bottom: .4em;\n}\n\n.line-numbers .line-highlight:before,\n.line-numbers .line-highlight:after {\n content: none;\n}\n\n.code-toolbar {\n $code-margin: 40px;\n\tposition: relative;\n\tmargin: $code-margin 0;\n\tpadding: 20px;\n\tborder: 1px solid rgba(255, 255, 255, .1);\n\n\t+ .code-toolbar,\n\t+ .highlight,\n\t+ .highlight .code-toolbar {\n\t\tborder-top: 0;\n\t\tmargin-top: calc(-1 * $code-margin);\n\t}\n\n\tpre, code {\n\t\tborder: none;\n\t}\n\n\tcode {\n\t\tdisplay: block;\n\t\tcolor: inherit;\n\t}\n\n > .toolbar {\n button {\n font-size: .8em !important;\n background: hsla(0,0%,87.8%,.2) !important;\n color: #bbb !important;\n box-shadow: 0 2px 0 0 rgba(0,0,0,.2) !important;\n border-radius: 0 !important;\n margin: 6px !important;\n padding: 10px !important;\n user-select:none\n }\n }\n}\n", + ".collapsable-code {\n $border-color: mix($accent, #999, 90%);\n\n position: relative;\n width: 100%;\n margin: 40px 0;\n\n input[type=\"checkbox\"] {\n position: absolute;\n visibility: hidden;\n }\n\n input[type=\"checkbox\"]:checked {\n ~ pre,\n ~ .code-toolbar pre {\n height: 0;\n padding: 0;\n border-top: none;\n }\n\n ~ .code-toolbar {\n padding: 0;\n border-top: none;\n\n .toolbar {\n display: none;\n }\n }\n\n ~ label .collapsable-code__toggle:after {\n content: attr(data-label-expand);\n }\n }\n\n label {\n position: relative;\n display: flex;\n justify-content: space-between;\n min-width: 30px;\n min-height: 30px;\n margin: 0;\n border-bottom: 1px solid $border-color;\n cursor: pointer;\n }\n\n &__title {\n flex: 1;\n color: $accent;\n padding: 3px 10px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__language {\n color: $accent;\n border: 1px solid $border-color;\n border-bottom: none;\n text-transform: uppercase;\n padding: 3px 10px;\n }\n\n &__toggle {\n color: $accent;\n font-size: 16px;\n padding: 3px 10px;\n\n &:after {\n content: attr(data-label-collapse);\n }\n }\n\n pre {\n margin-top: 0;\n\n &::first-line {\n line-height: 0;\n }\n }\n\n .code-toolbar {\n margin: 0;\n }\n}\n", + ".terms {\n h3 {\n font-size: initial;\n }\n\n ul {\n list-style: none;\n\n li {\n a {\n color: $accent;\n }\n }\n\n li:not(:empty):before {\n content: '-';\n position: absolute;\n left: -20px;\n color: $accent;\n }\n }\n}\n", + "body .gist .blob-num /* line numbers */,\nbody .gist .blob-code-inner\n{\n border: none;\n}\n\n" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/public/tags/codeberg/index.html b/public/tags/codeberg/index.html new file mode 100644 index 0000000..2f894d5 --- /dev/null +++ b/public/tags/codeberg/index.html @@ -0,0 +1,275 @@ + + + + + codeberg :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #codeberg

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/codeberg/index.xml b/public/tags/codeberg/index.xml new file mode 100644 index 0000000..b88f39f --- /dev/null +++ b/public/tags/codeberg/index.xml @@ -0,0 +1,83 @@ + + + + codeberg on Sadium + /tags/codeberg/ + Recent content in codeberg on Sadium + Hugo -- gohugo.io + ru + Sun, 10 Dec 2023 00:00:00 +0000 + + Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud + /posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /posts/codeberg_x_nextcloud/ + Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. Пригодилось - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Создаём приложение в Codeberg и копируем куда-нибудь Client ID и Client secret. 2. Идём в параметры сервера Nextcloud, пункт Social Login, и создаём Custom Oauth2 на +. +Пункт Что вводить Внутреннее имя Codeberg Название Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg.org/login/oauth/userinfo Logout url Оставить пустым Client ID и Client secret вставить из 1 пункта Scope read:user Остальные после Не трогайте, если не уверены 3. + <p>Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. <br> +Пригодилось - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Создаём приложение в Codeberg</a> и копируем куда-нибудь Client ID и Client secret. <br> +<code>2.</code> Идём в параметры сервера Nextcloud, пункт <code>Social Login</code>, и создаём Custom Oauth2 на <code>+</code>.</p> +<table> +<thead> +<tr> +<th>Пункт</th> +<th>Что вводить</th> +</tr> +</thead> +<tbody> +<tr> +<td>Внутреннее имя</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Название</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>Оставить пустым</td> +</tr> +<tr> +<td>Client ID и Client secret</td> +<td>вставить из 1 пункта</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Остальные после</td> +<td>Не трогайте, если не уверены</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Ставим галку напротив пункта <code>Позволять пользователям подключать социальные логины к своим аккаунтам</code> и нажимаем <code>Сохранить</code> внизу страницы. <br> +<code>4.</code> Идём в режим Инкогнито вашего браузера, затем на страничку входа в ваше облако и копируем путь провайдера Codeberg - правая кнопка мыши, копируем ссылку, сохраняем куда-нибудь. <br> +Должно выглядеть примерно так - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Возвращаемся к ранее созданному <a href="https://codeberg.org/user/settings/applications">приложению Codeberg</a>, Нажимаем <code>Изменить</code> и вставляем ссылку из прошлого пункта в поле <code>URI для перенаправления</code>, нажимаем <code>Сохранить</code>.</p> +<p>Теперь попробуйте связать ваш аккаунт Codeberg и Nextcloud из пункта <code>Social Login</code> в настройках пользователя Nextcloud, должно работать. В теории, это также применимо к <code>Gitea</code>, потому что <a href="https://forgejo.org">Forgejo</a> это форк <a href="https://gitea.com">Gitea</a>.</p> +<p>Давеча сделал по этому поводу Issue на Github: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + diff --git a/public/tags/codeberg/page/1/index.html b/public/tags/codeberg/page/1/index.html new file mode 100644 index 0000000..c2a4c28 --- /dev/null +++ b/public/tags/codeberg/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/codeberg/ + + + + + + diff --git a/public/tags/index.html b/public/tags/index.html new file mode 100644 index 0000000..aff879e --- /dev/null +++ b/public/tags/index.html @@ -0,0 +1,302 @@ + + + + + Tags :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+

Tags

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/index.xml b/public/tags/index.xml new file mode 100644 index 0000000..0e69e83 --- /dev/null +++ b/public/tags/index.xml @@ -0,0 +1,91 @@ + + + + Tags on Sadium + /tags/ + Recent content in Tags on Sadium + Hugo -- gohugo.io + ru + Sun, 10 Dec 2023 00:00:00 +0000 + + codeberg + /tags/codeberg/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /tags/codeberg/ + + + + + + nextcloud + /tags/nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /tags/nextcloud/ + + + + + + nvme + /tags/nvme/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /tags/nvme/ + + + + + + сервер + /tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/ + + + + + + принтер + /tags/%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /tags/%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80/ + + + + + + софт + /tags/%D1%81%D0%BE%D1%84%D1%82/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /tags/%D1%81%D0%BE%D1%84%D1%82/ + + + + + + wallpapers + /tags/wallpapers/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /tags/wallpapers/ + + + + + + обои + /tags/%D0%BE%D0%B1%D0%BE%D0%B8/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /tags/%D0%BE%D0%B1%D0%BE%D0%B8/ + + + + + + diff --git a/public/tags/nextcloud/index.html b/public/tags/nextcloud/index.html new file mode 100644 index 0000000..11dc0d3 --- /dev/null +++ b/public/tags/nextcloud/index.html @@ -0,0 +1,275 @@ + + + + + nextcloud :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #nextcloud

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/nextcloud/index.xml b/public/tags/nextcloud/index.xml new file mode 100644 index 0000000..e56a93d --- /dev/null +++ b/public/tags/nextcloud/index.xml @@ -0,0 +1,83 @@ + + + + nextcloud on Sadium + /tags/nextcloud/ + Recent content in nextcloud on Sadium + Hugo -- gohugo.io + ru + Sun, 10 Dec 2023 00:00:00 +0000 + + Как настроить Codeberg как провайдер входа Oauth2 для Nexcloud + /posts/codeberg_x_nextcloud/ + Sun, 10 Dec 2023 00:00:00 +0000 + + /posts/codeberg_x_nextcloud/ + Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. Пригодилось - https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/ +1. Создаём приложение в Codeberg и копируем куда-нибудь Client ID и Client secret. 2. Идём в параметры сервера Nextcloud, пункт Social Login, и создаём Custom Oauth2 на +. +Пункт Что вводить Внутреннее имя Codeberg Название Codeberg API Base URL https://codeberg.org Authorize url https://codeberg.org/login/oauth/authorize Token url https://codeberg.org/login/oauth/access_token Profile url https://codeberg.org/login/oauth/userinfo Logout url Оставить пустым Client ID и Client secret вставить из 1 пункта Scope read:user Остальные после Не трогайте, если не уверены 3. + <p>Я не смог найти никакой информации об этом через поисковые системы, поэтому решил написать об этом здесь. <br> +Пригодилось - <a href="https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/">https://forgejo.codeberg.page/docs/latest/user/oauth2-provider/</a></p> +<p><code>1.</code> <a href="https://codeberg.org/user/settings/applications">Создаём приложение в Codeberg</a> и копируем куда-нибудь Client ID и Client secret. <br> +<code>2.</code> Идём в параметры сервера Nextcloud, пункт <code>Social Login</code>, и создаём Custom Oauth2 на <code>+</code>.</p> +<table> +<thead> +<tr> +<th>Пункт</th> +<th>Что вводить</th> +</tr> +</thead> +<tbody> +<tr> +<td>Внутреннее имя</td> +<td>Codeberg</td> +</tr> +<tr> +<td>Название</td> +<td>Codeberg</td> +</tr> +<tr> +<td>API Base URL</td> +<td><a href="https://codeberg.org">https://codeberg.org</a></td> +</tr> +<tr> +<td>Authorize url</td> +<td><a href="https://codeberg.org/login/oauth/authorize">https://codeberg.org/login/oauth/authorize</a></td> +</tr> +<tr> +<td>Token url</td> +<td><a href="https://codeberg.org/login/oauth/access_token">https://codeberg.org/login/oauth/access_token</a></td> +</tr> +<tr> +<td>Profile url</td> +<td><a href="https://codeberg.org/login/oauth/userinfo">https://codeberg.org/login/oauth/userinfo</a></td> +</tr> +<tr> +<td>Logout url</td> +<td>Оставить пустым</td> +</tr> +<tr> +<td>Client ID и Client secret</td> +<td>вставить из 1 пункта</td> +</tr> +<tr> +<td>Scope</td> +<td>read:user</td> +</tr> +<tr> +<td>Остальные после</td> +<td>Не трогайте, если не уверены</td> +</tr> +</tbody> +</table> +<p><code>3.</code> Ставим галку напротив пункта <code>Позволять пользователям подключать социальные логины к своим аккаунтам</code> и нажимаем <code>Сохранить</code> внизу страницы. <br> +<code>4.</code> Идём в режим Инкогнито вашего браузера, затем на страничку входа в ваше облако и копируем путь провайдера Codeberg - правая кнопка мыши, копируем ссылку, сохраняем куда-нибудь. <br> +Должно выглядеть примерно так - <code>https://cloud.example.org(/index.php)/apps/sociallogin/custom_oauth2/Codeberg</code> <br> +<code>5.</code> Возвращаемся к ранее созданному <a href="https://codeberg.org/user/settings/applications">приложению Codeberg</a>, Нажимаем <code>Изменить</code> и вставляем ссылку из прошлого пункта в поле <code>URI для перенаправления</code>, нажимаем <code>Сохранить</code>.</p> +<p>Теперь попробуйте связать ваш аккаунт Codeberg и Nextcloud из пункта <code>Social Login</code> в настройках пользователя Nextcloud, должно работать. В теории, это также применимо к <code>Gitea</code>, потому что <a href="https://forgejo.org">Forgejo</a> это форк <a href="https://gitea.com">Gitea</a>.</p> +<p>Давеча сделал по этому поводу Issue на Github: <a href="https://github.com/zorn-v/nextcloud-social-login/issues/440">https://github.com/zorn-v/nextcloud-social-login/issues/440</a></p> + + + + + diff --git a/public/tags/nextcloud/page/1/index.html b/public/tags/nextcloud/page/1/index.html new file mode 100644 index 0000000..dabebd7 --- /dev/null +++ b/public/tags/nextcloud/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/nextcloud/ + + + + + + diff --git a/public/tags/nvme/index.html b/public/tags/nvme/index.html new file mode 100644 index 0000000..817d57e --- /dev/null +++ b/public/tags/nvme/index.html @@ -0,0 +1,275 @@ + + + + + nvme :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #nvme

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/nvme/index.xml b/public/tags/nvme/index.xml new file mode 100644 index 0000000..eb25076 --- /dev/null +++ b/public/tags/nvme/index.xml @@ -0,0 +1,26 @@ + + + + nvme on Sadium + /tags/nvme/ + Recent content in nvme on Sadium + Hugo -- gohugo.io + ru + Sat, 07 Oct 2023 00:00:00 +0000 + + Не берите дешёвые M2 NMVE + /posts/rpi-rip-nvme/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /posts/rpi-rip-nvme/ + Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад. +Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. + <p>Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад.</p> +<p>Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. Ну и какая-то там планка оперативки на 8ГБ частотой 2133МГц. Диск тоже, по факту, был со старого компа, просто на момент работы сервера на Малинке он у меня был чисто под виртуалки всякие. Это SSD SanDisk на 120Гб.</p> +<p>В ближайшее время я планирую проапгрейдить сервер новым процом, в неближайшее - диском, и хочу докинуть ещё плашку оперативы на 8ГБ, дабы был двухканал. Процессор этот будет Intel Core i5 7600. Брал его <a href="https://aliexpress.ru/item/1005003651636041.html">тут</a>. Хотел взять Xeon-E3 1245 v5, однако без плясок с бубнами и программатора, мне бы его не получилось завести на этой материнке, менять которую мне вообще ни разу не хочется, да и с бубном плясать тоже неохота. После хотелось бы взять SSD Samsung EVO, скорее всего <a href="https://www.dns-shop.ru/product/184d257ee33aed20/500-gb-25-sata-nakopitel-samsung-870-evo-mz-77e500bkr">этот</a>. Ну а плашку оперативы возьму <a href="https://www.citilink.ru/product/modul-pamyati-kingmax-ddr4-8gb-2133-dimm-ret-400808">эту</a>. В идеале бы ещё ИБПшник взять, но я не знаю, какой&hellip;</p> +<p>Может допишу ещё чего&hellip;</p> + + + + + diff --git a/public/tags/nvme/page/1/index.html b/public/tags/nvme/page/1/index.html new file mode 100644 index 0000000..93308e8 --- /dev/null +++ b/public/tags/nvme/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/nvme/ + + + + + + diff --git a/public/tags/wallpapers/index.html b/public/tags/wallpapers/index.html new file mode 100644 index 0000000..23e5ab2 --- /dev/null +++ b/public/tags/wallpapers/index.html @@ -0,0 +1,275 @@ + + + + + wallpapers :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #wallpapers

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/wallpapers/index.xml b/public/tags/wallpapers/index.xml new file mode 100644 index 0000000..9732837 --- /dev/null +++ b/public/tags/wallpapers/index.xml @@ -0,0 +1,35 @@ + + + + wallpapers on Sadium + /tags/wallpapers/ + Recent content in wallpapers on Sadium + Hugo -- gohugo.io + ru + Sat, 01 Jul 2023 00:00:00 +0000 + + Подборка обоев + /posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /posts/walls/ + Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев. +Посмотреть их и забрать её можно тут. +О подборке: +Большая часть обоев взято с wallhaven.cc Содержит NSFW (около ~3-10%) Дополняется и обновляется как минимум еженедельно. У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. + <p>Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев.</p> +<p>Посмотреть их и забрать её можно <a href="https://cloud.sadium.cyou/s/walls">тут</a>.</p> +<p>О подборке:</p> +<ul> +<li>Большая часть обоев взято с <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Содержит NSFW (около ~3-10%)</li> +<li>Дополняется и обновляется как минимум еженедельно.</li> +</ul> +<p>У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/tags/wallpapers/page/1/index.html b/public/tags/wallpapers/page/1/index.html new file mode 100644 index 0000000..88c1a17 --- /dev/null +++ b/public/tags/wallpapers/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/wallpapers/ + + + + + + diff --git a/public/tags/обои/index.html b/public/tags/обои/index.html new file mode 100644 index 0000000..097246c --- /dev/null +++ b/public/tags/обои/index.html @@ -0,0 +1,275 @@ + + + + + обои :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #обои

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/обои/index.xml b/public/tags/обои/index.xml new file mode 100644 index 0000000..5ad68cd --- /dev/null +++ b/public/tags/обои/index.xml @@ -0,0 +1,35 @@ + + + + обои on Sadium + /tags/%D0%BE%D0%B1%D0%BE%D0%B8/ + Recent content in обои on Sadium + Hugo -- gohugo.io + ru + Sat, 01 Jul 2023 00:00:00 +0000 + + Подборка обоев + /posts/walls/ + Sat, 01 Jul 2023 00:00:00 +0000 + + /posts/walls/ + Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев. +Посмотреть их и забрать её можно тут. +О подборке: +Большая часть обоев взято с wallhaven.cc Содержит NSFW (около ~3-10%) Дополняется и обновляется как минимум еженедельно. У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. + <p>Предлагаю вашему вниманию свою подборку обоев, которая уже достигла более 1500 обоев.</p> +<p>Посмотреть их и забрать её можно <a href="https://cloud.sadium.cyou/s/walls">тут</a>.</p> +<p>О подборке:</p> +<ul> +<li>Большая часть обоев взято с <a href="https://wallhaven.cc">wallhaven.cc</a></li> +<li>Содержит NSFW (около ~3-10%)</li> +<li>Дополняется и обновляется как минимум еженедельно.</li> +</ul> +<p>У некоторых обоев может быть качество ниже FullHD (1920x1080), поскольку я не смог их найти в более лучшем качестве. Если кто сможет найти, буду признателен, если кинете ссылку. +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/tags/обои/page/1/index.html b/public/tags/обои/page/1/index.html new file mode 100644 index 0000000..687b3f1 --- /dev/null +++ b/public/tags/обои/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/%D0%BE%D0%B1%D0%BE%D0%B8/ + + + + + + diff --git a/public/tags/принтер/index.html b/public/tags/принтер/index.html new file mode 100644 index 0000000..2378b30 --- /dev/null +++ b/public/tags/принтер/index.html @@ -0,0 +1,275 @@ + + + + + принтер :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #принтер

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/принтер/index.xml b/public/tags/принтер/index.xml new file mode 100644 index 0000000..c3f44d6 --- /dev/null +++ b/public/tags/принтер/index.xml @@ -0,0 +1,41 @@ + + + + принтер on Sadium + /tags/%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80/ + Recent content in принтер on Sadium + Hugo -- gohugo.io + ru + Sat, 09 Sep 2023 00:00:00 +0000 + + Мучения с принтером + /posts/ricoh_config/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /posts/ricoh_config/ + Я всё думал, как завести свой принтер под Linux. И однажды наткнулся на пакет в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён. +Но недавно в очередных поисках я наткнулся на раздел на форуме Ubuntu. Там добрый человек поделился репозиторием - туть. +Однако я поступил по другому, не так, как написал человек на форуме. Последовательность +git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/ cd ricoh-sp100 sudo cp pstoricohddst-gdi /usr/lib/cups/filter sudo cp *.ppd /usr/share/cups/model + <p>Я всё думал, как завести свой принтер под Linux. <br> +И однажды наткнулся на <a href="https://aur.archlinux.org/packages/ricoh-sp100-git">пакет</a> в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён.</p> +<p>Но недавно в очередных поисках я наткнулся на <a href="https://forum.ubuntu.ru/index.php?PHPSESSID=b541bb569cce4b86e0a21bf1f69ca5ec&amp;topic=203120.msg2481757#msg2481757">раздел на форуме Ubuntu</a>. <br> +Там добрый человек поделился репозиторием - <a href="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/">туть</a>.</p> +<p>Однако я поступил по другому, не так, как написал человек на форуме. <br> +Последовательность</p> +<p><code>git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/</code> <br> +<code>cd ricoh-sp100</code> <br> +<code>sudo cp pstoricohddst-gdi /usr/lib/cups/filter</code> <br> +<code>sudo cp *.ppd /usr/share/cups/model</code></p> +<p>Если есть yay: <br> +<code>yay -S jbigkit inotify-tools</code></p> +<p>Если нет:<br> +<code>sudo pacman -S jbigkit inotify-tools</code></p> +<p>Как то так. Теперь идём и настраиваем наш принтер в своём рабочем окружении и радуемся жизни. <br> +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/tags/принтер/page/1/index.html b/public/tags/принтер/page/1/index.html new file mode 100644 index 0000000..7d8179b --- /dev/null +++ b/public/tags/принтер/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/%D0%BF%D1%80%D0%B8%D0%BD%D1%82%D0%B5%D1%80/ + + + + + + diff --git a/public/tags/сервер/index.html b/public/tags/сервер/index.html new file mode 100644 index 0000000..6f763fb --- /dev/null +++ b/public/tags/сервер/index.html @@ -0,0 +1,275 @@ + + + + + сервер :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #сервер

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/сервер/index.xml b/public/tags/сервер/index.xml new file mode 100644 index 0000000..243ecdb --- /dev/null +++ b/public/tags/сервер/index.xml @@ -0,0 +1,26 @@ + + + + сервер on Sadium + /tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/ + Recent content in сервер on Sadium + Hugo -- gohugo.io + ru + Sat, 07 Oct 2023 00:00:00 +0000 + + Не берите дешёвые M2 NMVE + /posts/rpi-rip-nvme/ + Sat, 07 Oct 2023 00:00:00 +0000 + + /posts/rpi-rip-nvme/ + Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад. +Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. + <p>Да, знаю, сам дурак, не сделал бэкапы. Хотя, с другой стороны, самое важное не пострадало - файлы в Nextcloud. Они-то, как раз-таки, лежали на отдельном рейде. И не только они, этот сайт, например, тоже. Так или иначе, я не собирался делать из Малинки серьёзный сервер. Мощи у неё не те, хотя тянула она NC неплохо, однако, когда дело доходило до мобильного клиента, это был тихий ад.</p> +<p>Ну, поскольку смысла было покупать новый диск для Малинки я не видел, я просто решил собрать сервер на своём страком компутерном железе, а именно на проце Intel Pentium G4560 aka Гиперпень, и материнка Asus H110M-R. Ну и какая-то там планка оперативки на 8ГБ частотой 2133МГц. Диск тоже, по факту, был со старого компа, просто на момент работы сервера на Малинке он у меня был чисто под виртуалки всякие. Это SSD SanDisk на 120Гб.</p> +<p>В ближайшее время я планирую проапгрейдить сервер новым процом, в неближайшее - диском, и хочу докинуть ещё плашку оперативы на 8ГБ, дабы был двухканал. Процессор этот будет Intel Core i5 7600. Брал его <a href="https://aliexpress.ru/item/1005003651636041.html">тут</a>. Хотел взять Xeon-E3 1245 v5, однако без плясок с бубнами и программатора, мне бы его не получилось завести на этой материнке, менять которую мне вообще ни разу не хочется, да и с бубном плясать тоже неохота. После хотелось бы взять SSD Samsung EVO, скорее всего <a href="https://www.dns-shop.ru/product/184d257ee33aed20/500-gb-25-sata-nakopitel-samsung-870-evo-mz-77e500bkr">этот</a>. Ну а плашку оперативы возьму <a href="https://www.citilink.ru/product/modul-pamyati-kingmax-ddr4-8gb-2133-dimm-ret-400808">эту</a>. В идеале бы ещё ИБПшник взять, но я не знаю, какой&hellip;</p> +<p>Может допишу ещё чего&hellip;</p> + + + + + diff --git a/public/tags/сервер/page/1/index.html b/public/tags/сервер/page/1/index.html new file mode 100644 index 0000000..3cf3bb8 --- /dev/null +++ b/public/tags/сервер/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80/ + + + + + + diff --git a/public/tags/софт/index.html b/public/tags/софт/index.html new file mode 100644 index 0000000..18dac83 --- /dev/null +++ b/public/tags/софт/index.html @@ -0,0 +1,275 @@ + + + + + софт :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +

Posts for: #софт

+ +
+ + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/public/tags/софт/index.xml b/public/tags/софт/index.xml new file mode 100644 index 0000000..d82bffb --- /dev/null +++ b/public/tags/софт/index.xml @@ -0,0 +1,41 @@ + + + + софт on Sadium + /tags/%D1%81%D0%BE%D1%84%D1%82/ + Recent content in софт on Sadium + Hugo -- gohugo.io + ru + Sat, 09 Sep 2023 00:00:00 +0000 + + Мучения с принтером + /posts/ricoh_config/ + Sat, 09 Sep 2023 00:00:00 +0000 + + /posts/ricoh_config/ + Я всё думал, как завести свой принтер под Linux. И однажды наткнулся на пакет в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён. +Но недавно в очередных поисках я наткнулся на раздел на форуме Ubuntu. Там добрый человек поделился репозиторием - туть. +Однако я поступил по другому, не так, как написал человек на форуме. Последовательность +git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/ cd ricoh-sp100 sudo cp pstoricohddst-gdi /usr/lib/cups/filter sudo cp *.ppd /usr/share/cups/model + <p>Я всё думал, как завести свой принтер под Linux. <br> +И однажды наткнулся на <a href="https://aur.archlinux.org/packages/ricoh-sp100-git">пакет</a> в AUR, который, правда, оказался нерабочим, поскольку source репозиторий был удалён.</p> +<p>Но недавно в очередных поисках я наткнулся на <a href="https://forum.ubuntu.ru/index.php?PHPSESSID=b541bb569cce4b86e0a21bf1f69ca5ec&amp;topic=203120.msg2481757#msg2481757">раздел на форуме Ubuntu</a>. <br> +Там добрый человек поделился репозиторием - <a href="https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/">туть</a>.</p> +<p>Однако я поступил по другому, не так, как написал человек на форуме. <br> +Последовательность</p> +<p><code>git clone https://git.kernel.org/pub/scm/linux/kernel/git/jejb/ricoh-sp100.git/</code> <br> +<code>cd ricoh-sp100</code> <br> +<code>sudo cp pstoricohddst-gdi /usr/lib/cups/filter</code> <br> +<code>sudo cp *.ppd /usr/share/cups/model</code></p> +<p>Если есть yay: <br> +<code>yay -S jbigkit inotify-tools</code></p> +<p>Если нет:<br> +<code>sudo pacman -S jbigkit inotify-tools</code></p> +<p>Как то так. Теперь идём и настраиваем наш принтер в своём рабочем окружении и радуемся жизни. <br> +<a rel="me" href="https://social.exo.icu/@sl"></a> +</p> + + + + + diff --git a/public/tags/софт/page/1/index.html b/public/tags/софт/page/1/index.html new file mode 100644 index 0000000..e55a397 --- /dev/null +++ b/public/tags/софт/page/1/index.html @@ -0,0 +1,10 @@ + + + + /tags/%D1%81%D0%BE%D1%84%D1%82/ + + + + + + diff --git a/public/tos/index.html b/public/tos/index.html new file mode 100644 index 0000000..ff2ac6e --- /dev/null +++ b/public/tos/index.html @@ -0,0 +1,302 @@ + + + + + Условия использования :: Sadium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + + + + + + + + +
+ + + + +
+ + +
+ +
+
+
+

Условия использования

+
+

Общее положение

+

Данный документ - свод правил поведения. При использовании любых сервисов, размещённых в рамках проекта Sadium, администрация и, мы надеемся, сообщество, должны соблюдать данный свод правил.

+

Данный документ относится ко всем сервисам, размещенным в рамках проекта Sadium. Это означает, что данный свод правил нужно соблюдать при использовании сервисов, размещенных на домене и под-доменах *.sadium.cyou.

+

Сервис предоставляется “как есть”

+

Сервис - онлайн-ресурсы и ПО, размещенные в рамках проекта Sadium на домене и под-доменах *.sadium.cyou.

+

Вы понимаете и соглашаетесь с тем, что Сервис предоставляется «как есть» без каких-либо гарантий, что сервис не содержит ошибок или дефектов. Администрация Сервиса не несёт никакой ответственности за какую-либо неверную и/или несвоевременную доставку информации, правильность обработки предоставленных и/или копируемых данных, а равно за прямой или косвенный ущерб, вызванный использованием данного Сервиса.

+

Отказ от ответственности

+

Дополнительно сообщаем, что администрация проекта Sadium несёт ответственность только за контент, размещенный на “своих” сервисах. Администрация Sadium отказывается от ответвенности за размещение контента через “проксирующие” сервисы, ибо не имеет технической и правовой возможности его контроллировать.

+

Проект Sadium просит обратить внимание, что администрация не занимается модерированием каждого действия пользователей, в то же время контент может модерироваться/удаляться по обращению правообладателей, но только в том случае, если правообладатель сможет доказать авторство опубликованного на домене *.sadium.cyou контента.

+

Жалобы на контент принимаются только в письменном виде и в специальной для этого форме: - <ссылка на форму>

+
    +
  • Сервис считается “своим”, если веб-приложение, находящееся на домене *.sadium.cyou, либо его контент может контролироваться администрацией (изменение, создание, удаление), а так же если администраторы проекта Sadium имеют техническую возможность контролировать пользователей как сущность базы данных (удалять, создавать, изменять).
  • +
  • Сервис считается “проксирующим”, если веб-приложение, находящееся на домене *.sadium.cyou, по сути своей, является лишь альтернативным путём для получения контента, и контент никак не может быть изменен администрацией проекта Sadium.
  • +
+

Персональные данные

+

Предоставляя свои персональные данные при использовании Сервиса, вы даёте своё согласие на обработку и использование своих персональных данных для работы Сервиса. Администрация проекта Sadium не принуждает вас указывать свои “настоящие” персональные данные. +Администрация проекта Sadium не использует персональные данные пользователей в иных целях, если пользователь не изъявил обратного.

+

Воспрещается

+
    +
  • Обсуждать/распространять/хранить порнографические материалы с участием несовершеннолетних.
  • +
  • Назойливо-агрессивное поведение (преследования, необоснованное хамство на постоянной основе и т.п.)
  • +
  • Создавать аккаунт для компании/ИП/самозанятого пользователя, если цель создания аккаунта - извлечение прибыли.
  • +
  • Разглашать личные данные[1] пользователя без его согласия. Если пользователь (в не зависимости от его инстанса) потребует удаления своих личных данных со страницы пользователя, относящегося к проекту *.sadium.cyou - пользователь sadium.cyou обязан это сделать, в ином случае это сделает администрация.
  • +
  • Призывать к травле[2]. Одно дело - высказать своё мнение о пользователе. Совсем другое - мешать пользователю жить.
  • +
  • Рассылать спам.
  • +
+

Обращаем Ваше внимание:

+
    +
  • Несовпадение взглядов (политических, сексуальных, религиозных…) пользователя со взглядами администрации не является основанием для санкций.
  • +
+
+

[1] - Персональные данные или личные данные (ЛД) — любая информация, относящаяся прямо или косвенно к определенному пользователю. Любая информация, не опубликованная пользователем в открытый доступ будет считаться как ЛД пользователя.

+

В независимости от того, опубликованы или нет, ЛД всегда будут считаться:

+
    +
  • Паспортные данные, а именно совокупность таких данных, как ФИО, дата рождения, семейное положение.
  • +
  • Социальное и имущественное положение.
  • +
  • Информация о банковской карте, включая номер, PIN-код и CVV2/CVC2-коды.
  • +
  • Телефонный номер.
  • +
+

[2] - Призывом к травле может являться:

+
    +
  • Вмешательство в личную жизнь пользователя с целью негативного влияния на его ментальное и физическое состояние
  • +
  • Прямые и непосредственные призывы к насилию.
  • +
  • Призывы к насилию с использованием общих лозунгов.
  • +
  • Прямые и непосредственные призывы к дискриминации.
  • +
  • Призывы к дискриминации в виде общих лозунгов.
  • +
+
+

Некоторые фрагменты текста были взяты и адаптированы отсюда
+Данный текст ещё будет дорабатываться.

+ +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ + + diff --git a/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.content b/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.content new file mode 100644 index 0000000..0d63005 --- /dev/null +++ b/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.content @@ -0,0 +1,3 @@ +@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:400;src:url("../fonts/FiraCode-Regular.woff") format("woff")}@font-face{font-display:swap;font-family:'Fira Code';font-style:normal;font-weight:800;src:url("../fonts/FiraCode-Bold.woff") format("woff")}.button-container{display:table;margin-left:auto;margin-right:auto}button,.button,a.button{position:relative;display:flex;align-items:center;justify-content:center;padding:8px 18px;margin:5px 0;text-decoration:none;text-align:center;border-radius:8;border:1px solid #FF6266;background:#FF6266;color:#221f29;font:inherit;font-weight:bold;appearance:none;cursor:pointer;outline:none}button:hover,.button:hover,a.button:hover{background:rgba(255,98,102,0.9)}button.outline,.button.outline,a.button.outline{background:transparent;box-shadow:none;padding:8px 18px}button.outline :hover,.button.outline :hover,a.button.outline :hover{transform:none;box-shadow:none}button.link,.button.link,a.button.link{background:none;font-size:1rem}button.small,.button.small,a.button.small{font-size:.8rem}button.wide,.button.wide,a.button.wide{min-width:200px;padding:14px 24px}a.read-more,a.read-more:hover,a.read-more:active{display:inline-flex;border:none;color:#FF6266;background:none;box-shadow:none;padding:0;margin:20px 0;max-width:100%}.code-toolbar{margin-bottom:20px}.code-toolbar .toolbar-item a{position:relative;display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;margin-bottom:5px;text-decoration:none;text-align:center;font-size:13px;font-weight:500;border-radius:8px;border:1px solid transparent;appearance:none;cursor:pointer;outline:none}input,textarea,select{background:transparent;color:#FF6266;border:1px solid #FF6266;border-radius:0;padding:10px;margin:5px 0;font:inherit;appearance:none}input:focus,input :active,textarea:focus,textarea :active,select:focus,select :active{border-color:#fff;outline:1px solid #fff}input:active,textarea:active,select:active{box-shadow:none}select{background:#221f29}select option{background:#221f29}::placeholder{color:rgba(255,98,102,0.5)}input[type="checkbox"]{vertical-align:middle;padding:10px;box-shadow:inset 0 0 0 3px #221f29}input[type="checkbox"]:checked{background:#FF6266}.header{display:flex;flex-direction:column;position:relative}@media print{.header{display:none}}.header__inner{display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex:1}.header__logo:after{content:'';background:repeating-linear-gradient(90deg, #FF6266, #FF6266 2px, transparent 0, transparent 10px);display:block;width:100%;right:10px}.header__logo a{flex:0 0 auto;max-width:100%;text-decoration:none}.navigation-menu{display:flex;align-items:flex-start;justify-content:space-between;margin:20px 1px}@media (max-width: 684px){.navigation-menu{margin:0}}.navigation-menu__inner{display:flex;flex:1;flex-wrap:wrap;list-style:none;margin:0;padding:0}.navigation-menu__inner>li{flex:0 0 auto;margin-bottom:10px;white-space:nowrap}.navigation-menu__inner>li:not(:last-of-type){margin-right:20px}@media (max-width: 684px){.navigation-menu__inner{flex-direction:column;align-items:flex-start;padding:0}.navigation-menu__inner li{margin:0;padding:5px}}.navigation-menu .spacer{flex-grow:1 !important}.menu{display:flex;flex-direction:column;position:relative;list-style:none;padding:0;margin:0}.menu__trigger{margin-right:0 !important;color:#FF6266;user-select:none;cursor:pointer}.menu__dropdown{display:none;flex-direction:column;position:absolute;background:#221f29;box-shadow:0 10px rgba(34,31,41,0.8),-10px 10px rgba(34,31,41,0.8),10px 10px rgba(34,31,41,0.8);color:white;border:2px solid;margin:0;padding:10px;top:10px;left:0;list-style:none;z-index:99}.open .menu__dropdown{display:flex}.menu__dropdown>li{flex:0 0 auto}.menu__dropdown>li:not(:last-of-type){margin-bottom:10px}.menu__dropdown>li a{display:flex;padding:5px}@media (max-width: 684px){.menu--desktop{display:none}}.menu--mobile .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer;display:none}@media (max-width: 684px){.menu--mobile .menu__trigger{display:block}}@media (max-width: 684px){.menu--mobile .menu__dropdown{left:auto;right:0}}.menu--mobile li{flex:0 0 auto}.menu--mobile li:not(:last-of-type){margin-bottom:10px}.menu--language-selector .menu__trigger{color:#FF6266;border:2px solid;margin-left:10px;height:100%;padding:3px 8px;margin-bottom:0 !important;position:relative;cursor:pointer}@media (max-width: 684px){.menu--language-selector .menu__trigger{display:none}}.menu--language-selector .menu__dropdown{left:auto;right:0}.logo{display:flex;align-items:center;text-decoration:none;background:#FF6266;color:black;padding:5px 10px}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace;font-size:1rem;line-height:1.54;letter-spacing:-0.02em;background-color:#221f29;color:#fff;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"liga", "tnum", "zero", "ss01", "locl";font-variant-ligatures:contextual;-webkit-overflow-scrolling:touch;-webkit-text-size-adjust:100%}@media (max-width: 684px){body{font-size:1rem}}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3,.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{line-height:1.3}.headings--one-size h1:not(first-child),.headings--one-size h2:not(first-child),.headings--one-size h3:not(first-child),.headings--one-size h4:not(first-child),.headings--one-size h5:not(first-child),.headings--one-size h6:not(first-child){margin-top:40px}.headings--one-size h1,.headings--one-size h2,.headings--one-size h3{font-size:1.4rem}.headings--one-size h4,.headings--one-size h5,.headings--one-size h6{font-size:1.2rem}a{color:inherit}img{display:block;max-width:100%}img.left{margin-right:auto}img.center{margin-left:auto;margin-right:auto}img.right{margin-left:auto}p{margin-bottom:20px}figure{display:table;max-width:100%;margin:25px 0}figure.left{margin-right:auto}figure.center{margin-left:auto;margin-right:auto}figure.right{margin-left:auto}figure figcaption{font-size:14px;padding:5px 10px;margin-top:5px;background:#FF6266;color:#221f29}figure figcaption.left{text-align:left}figure figcaption.center{text-align:center}figure figcaption.right{text-align:right}code,kbd{font-family:'Fira Code', Monaco, Consolas, Ubuntu Mono, monospace !important;font-feature-settings:normal;background:rgba(255,98,102,0.2);color:#FF6266;padding:1px 6px;margin:0 2px;font-size:.95rem}code code,code kbd,kbd code,kbd kbd{background:transparent;padding:0;margin:0}pre{background:transparent !important;padding:20px 10px;margin:40px 0;font-size:.95rem !important;overflow:auto;border-top:1px solid rgba(255,255,255,0.1);border-bottom:1px solid rgba(255,255,255,0.1)}pre+pre{border-top:0;margin-top:-40px}@media (max-width: 684px){pre{white-space:pre-wrap;word-wrap:break-word}}pre code{background:none !important;margin:0;padding:0;font-size:inherit;border:none}blockquote{border-top:1px solid #FF6266;border-bottom:1px solid #FF6266;margin:40px 0;padding:25px}@media (max-width: 684px){blockquote{padding-right:0}}blockquote p:first-of-type{margin-top:0}blockquote p:last-of-type{margin-bottom:0}blockquote p{position:relative}blockquote p:first-of-type:before{content:'>';display:block;position:absolute;left:-25px;color:#FF6266}blockquote.twitter-tweet{position:relative;background:rgba(255,98,102,0.1);font:inherit;color:inherit;border:1px solid #FF6266;padding-top:60px}blockquote.twitter-tweet p:before{content:''}blockquote.twitter-tweet:before{content:'> From Twitter:';position:absolute;top:20px;color:#FF6266;font-weight:bold}blockquote.twitter-tweet a{color:#FF6266}table{table-layout:auto;border-collapse:collapse;width:100%;margin:40px 0}table,th,td{border:1px dashed #FF6266;padding:10px}th{color:#FF6266}ul,ol{margin-left:22px;padding:0}ul li,ol li{position:relative}@media (max-width: 684px){ul,ol{margin-left:20px}}ol{list-style:none;counter-reset:li}ol>li{counter-increment:li}ol>li:before{content:counter(li);position:absolute;right:calc(100% + 10px);color:#FF6266;display:inline-block;text-align:right}ol>li>ol{margin-left:38px}ol>li>ol>li{counter-increment:li}ol>li>ol>li:before{content:counters(li, ".") " "}mark{background:#FF6266;color:#221f29}.container{display:flex;flex-direction:column;padding:40px;max-width:864px;min-height:100vh;border-right:1px solid rgba(255,255,255,0.1)}.container.full,.container.center{border:none;margin:0 auto}.container.full{max-width:100%}@media (max-width: 684px){.container{padding:20px}}@media print{.container{display:initial}}.content{display:flex;flex-direction:column}@media print{.content{display:initial}}hr{width:100%;border:none;background:rgba(255,255,255,0.1);height:1px}.hidden{display:none}sup{line-height:0}.index-content{margin-top:20px}.framed{border:1px solid #FF6266;padding:20px}.framed *:first-child{margin-top:0}.framed *:last-child{margin-bottom:0}.posts{width:100%}.post{width:100%;text-align:left;margin:20px auto;padding:20px 0}.post:not(:last-of-type){border-bottom:1px solid rgba(255,255,255,0.1)}.post-meta{font-size:1rem;margin-bottom:10px;color:rgba(255,98,102,0.7)}.post-meta>*:not(:first-child)::before{content:"::";display:inline-block;margin:0 8px}.post-title{position:relative;color:#FF6266;margin:0 0 15px;padding-bottom:15px;border-bottom:3px dotted #FF6266}.post-title:after{content:'';position:absolute;bottom:2px;display:block;width:100%;border-bottom:3px dotted #FF6266}.post-title a{text-decoration:none}.post-tags{display:block;margin-bottom:20px;font-size:1rem;opacity:.5}.post-tags a{text-decoration:none}.post-content{margin-top:30px}.post-cover{border:20px solid #FF6266;background:transparent;margin:40px 0;padding:20px}@media (max-width: 684px){.post-cover{padding:10px;border-width:10px}}.post ul{list-style:none}.post ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}.post--regulation h1{justify-content:center}.post--regulation h2{justify-content:center;margin-bottom:10px}.post--regulation h2+h2{margin-top:-10px;margin-bottom:20px}.hanchor{color:rgba(255,98,102,0.9);text-decoration:none;margin-left:10px;visibility:hidden}h1:hover a,h2:hover a,h3:hover a,h4:hover a{visibility:visible}.footnotes{color:rgba(255,255,255,0.5)}.pagination{margin-top:50px}@media print{.pagination{display:none}}.pagination__title{display:flex;text-align:center;position:relative;margin:100px 0 20px}.pagination__title-h{text-align:center;margin:0 auto;padding:5px 10px;background:#221f29;color:rgba(255,255,255,0.3);font-size:.8rem;text-transform:uppercase;text-decoration:none;letter-spacing:.1em;z-index:1}.pagination__title hr{position:absolute;left:0;right:0;width:100%;margin-top:15px;z-index:0}.pagination__buttons{display:flex;align-items:center;justify-content:center;flex-flow:row wrap;gap:10px}.pagination__buttons a{text-decoration:none}.button{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:1rem;padding:0;appearance:none}@media (max-width: 684px){.button{flex:1}}.button a{display:flex;justify-content:center;flex:1;padding:8px 16px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.button.next .button__icon{margin-left:8px}.button.previous .button__icon{margin-right:8px}.footer{padding:40px 0;flex-grow:0;opacity:.5}.footer__inner{display:flex;align-items:center;justify-content:space-between;margin:0;width:760px;max-width:100%}@media (max-width: 900px){.footer__inner{flex-direction:column}}.footer a{color:inherit}.footer .copyright{display:flex;flex-flow:row wrap;flex:1;align-items:center;font-size:1rem;justify-content:center}.footer .copyright--user{margin:auto;text-align:center}.footer .copyright>*:first-child:not(:only-child){margin-right:10px}.footer .copyright span{white-space:nowrap}code[class*="language-"],pre[class*="language-"]{color:#ccc;background:none;font-family:Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*="language-"],pre[class*="language-"]{background:#2d2d2d}:not(pre)>code[class*="language-"]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,0.08);background:linear-gradient(to right, rgba(153,122,102,0.1) 70%, rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:rgba(128,128,128,0.2)}pre[class*="language-"].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*="language-"].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:0.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.command-line-prompt>span:before{color:#999;content:' ';display:block;padding-right:0.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user="root"]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}div.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;transition:opacity 0.3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,0.2);box-shadow:0 2px 0 0 rgba(0,0,0,0.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus{color:inherit;text-decoration:none}code.language-css,code.language-scss,.token.boolean,.token.string,.token.entity,.token.url,.language-css .token.string,.language-scss .token.string,.style .token.string,.token.attr-value,.token.keyword,.token.control,.token.directive,.token.statement,.token.regex,.token.atrule,.token.number,.token.inserted,.token.important{color:#FF6266 !important}.token.tag-id,.token.atrule-id,.token.operator,.token.unit,.token.placeholder,.token.variable,.token.tag,.token.attr-name,.token.namespace,.token.deleted,.token.property,.token.class-name,.token.constant,.token.symbol{color:rgba(255,98,102,0.7) !important}.token.property,.token.function,.token.function-name,.token.deleted,code.language-javascript,code.language-html,.command-line-prompt>span:before{color:#9a9999 !important}.token.selector,.token.tag,.token.punctuation{color:white}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:rgba(255,255,255,0.3) !important}.token.namespace{opacity:.7 !important}pre[data-line]{position:relative}pre[class*="language-"]{margin:0;padding:0;overflow:auto}.line-highlight{position:absolute;left:0;right:0;padding:0;margin:0;background:rgba(245,104,107,0.08);pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,0.4);color:#f5f2f0;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px white}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:before,.line-numbers .line-highlight:after{content:none}.code-toolbar{position:relative;margin:40px 0;padding:20px;border:1px solid rgba(255,255,255,0.1)}.code-toolbar+.code-toolbar,.code-toolbar+.highlight,.code-toolbar+.highlight .code-toolbar{border-top:0;margin-top:calc(-1 * $code-margin)}.code-toolbar pre,.code-toolbar code{border:none}.code-toolbar code{display:block;color:inherit}.code-toolbar>.toolbar button{font-size:.8em !important;background:rgba(224,224,224,0.2) !important;color:#bbb !important;box-shadow:0 2px 0 0 rgba(0,0,0,0.2) !important;border-radius:0 !important;margin:6px !important;padding:10px !important;user-select:none}.collapsable-code{position:relative;width:100%;margin:40px 0}.collapsable-code input[type="checkbox"]{position:absolute;visibility:hidden}.collapsable-code input[type="checkbox"]:checked~pre,.collapsable-code input[type="checkbox"]:checked~.code-toolbar pre{height:0;padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar{padding:0;border-top:none}.collapsable-code input[type="checkbox"]:checked~.code-toolbar .toolbar{display:none}.collapsable-code input[type="checkbox"]:checked~label .collapsable-code__toggle:after{content:attr(data-label-expand)}.collapsable-code label{position:relative;display:flex;justify-content:space-between;min-width:30px;min-height:30px;margin:0;border-bottom:1px solid #f5686b;cursor:pointer}.collapsable-code__title{flex:1;color:#FF6266;padding:3px 10px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.collapsable-code__language{color:#FF6266;border:1px solid #f5686b;border-bottom:none;text-transform:uppercase;padding:3px 10px}.collapsable-code__toggle{color:#FF6266;font-size:16px;padding:3px 10px}.collapsable-code__toggle:after{content:attr(data-label-collapse)}.collapsable-code pre{margin-top:0}.collapsable-code pre::first-line{line-height:0}.collapsable-code .code-toolbar{margin:0}.terms h3{font-size:initial}.terms ul{list-style:none}.terms ul li a{color:#FF6266}.terms ul li:not(:empty):before{content:'-';position:absolute;left:-20px;color:#FF6266}body .gist .blob-num,body .gist .blob-code-inner{border:none} + +/*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.json b/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.json new file mode 100644 index 0000000..e7b8e7c --- /dev/null +++ b/resources/_gen/assets/scss/css/base.scss_3b33337114e481782feeb60752452e17.json @@ -0,0 +1 @@ +{"Target":"styles.css","MediaType":"text/css","Data":{}} \ No newline at end of file