From d1f1e999965309a62fd086c570dd901fa074e413 Mon Sep 17 00:00:00 2001 From: Alex Phillips Date: Tue, 23 Feb 2021 18:52:40 -0500 Subject: [PATCH] Initial commit --- .gitlab-ci.yml | 28 ++ .gitmodules | 3 + README.txt | 3 + config.yml | 337 ++++++++++++++++++ content/issues/.gitkeep | 1 + .../issues/2018-01-17-sending-dms-impacted.md | 15 + ...13-unavailable-guilds-connection-issues.md | 25 ++ .../issues/2018-05-25-us-east-conn-issues.md | 20 ++ .../issues/2018-06-13-maintenance-window.md | 13 + .../2019-10-04-testing-cstate-functions.md | 10 + .../issues/2019-10-08-testing-new-pipeline.md | 14 + .../issues/2020-06-13-maintenance-window.md | 13 + content/pages/example-page.md | 170 +++++++++ layouts/README.md | 3 + netlify.toml | 17 + netlify/change.html | 5 + netlify/confirmation.html | 5 + netlify/invitation.html | 5 + netlify/recovery.html | 7 + static/README.md | 9 + static/img/README.md | 1 + static/logo.png | Bin 0 -> 5707 bytes themes/cstate | 1 + 23 files changed, 705 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitmodules create mode 100644 README.txt create mode 100644 config.yml create mode 100644 content/issues/.gitkeep create mode 100644 content/issues/2018-01-17-sending-dms-impacted.md create mode 100644 content/issues/2018-04-13-unavailable-guilds-connection-issues.md create mode 100644 content/issues/2018-05-25-us-east-conn-issues.md create mode 100644 content/issues/2018-06-13-maintenance-window.md create mode 100644 content/issues/2019-10-04-testing-cstate-functions.md create mode 100644 content/issues/2019-10-08-testing-new-pipeline.md create mode 100644 content/issues/2020-06-13-maintenance-window.md create mode 100644 content/pages/example-page.md create mode 100644 layouts/README.md create mode 100644 netlify.toml create mode 100644 netlify/change.html create mode 100644 netlify/confirmation.html create mode 100644 netlify/invitation.html create mode 100644 netlify/recovery.html create mode 100644 static/README.md create mode 100644 static/img/README.md create mode 100644 static/logo.png create mode 160000 themes/cstate diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..af5fabc4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,28 @@ +# SERVING CSTATE ON GITLAB PAGES +# Introduced in v4.2.1 +# +# This file is very similar to the existing GitLab template, and might need editing before it works on your project. +# +# All available Hugo versions are listed here: +# https://gitlab.com/pages/hugo/container_registry +# +# cState uses Hugo Extended. +image: registry.gitlab.com/pages/hugo/hugo_extended:0.65.3 + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +test: + script: + - hugo + except: + - master + +pages: + script: + - hugo + artifacts: + paths: + - public + only: + - master diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..7a9fc42e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "themes/cstate"] + path = themes/cstate + url = https://github.com/cstate/cstate diff --git a/README.txt b/README.txt new file mode 100644 index 00000000..4664609e --- /dev/null +++ b/README.txt @@ -0,0 +1,3 @@ +This is the default cState status page website directory/folder. + +https://github.com/cstate/example diff --git a/config.yml b/config.yml new file mode 100644 index 00000000..85665f6d --- /dev/null +++ b/config.yml @@ -0,0 +1,337 @@ +############################################################ +# +------------------------------------------------------+ # +# | Notes | # +# +------------------------------------------------------+ # +############################################################ + +# Welcome to the cState configuration file! +# +# If you are using an earlier version, or one +# in the future, such as v8.0 you may see errors +# pop up when deploying a cState website. +# +# Now, onto the fun part. +# +# Hugo is used for building the status page, +# so this file can be used to change how +# your status page should behave or look. +# +# If you want to use special characters, +# such as accented letters, you MUST save +# the file as UTF-8, not ANSI. +# +# If cState does not load, ensure that: +# - No tabs are present; +# YAML only allows spaces +# - Indents are correct +# YAML hierarchy is based entirely on indentation +# - You have "escaped" all apostrophes +# in your text: If you want to write "don't", +# for example, write "don''t" instead! +# Note the doubled apostrophe. +# - Text with symbols is enclosed in single +# or double quotation marks. +# +# If you have problems, create an issue on GitHub: +# https://github.com/cstate/cstate/issues + +############################################################ +# +------------------------------------------------------+ # +# | Basic metadata | # +# +------------------------------------------------------+ # +############################################################ + +# What is your status page called? +# Shows up in the browser bar and meta tags +title: Eggsample Status + +# Should posts, which have a publish date +# from the future, be built? Useful for +# sharing upcoming maintenance, etc. +# +# We recommend to keep this at `true`. +# BOOLEAN; `true`, `false` +buildFuture: true + +# What language do you want to use for the +# html[lang] definition? +# +# Does not change language of site +# itself. +# +# Default: `en` +# ISO 639-1 defines abbreviations. +# +# See: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes +# Also: https://www.w3schools.com/tags/ref_language_codes.asp +languageCode: en + +# What translation file should cState use? +# You can also define whether missing +# translations should get placeholders. +# +# For defaultContentLanguage— +# Default: `en` +# +# For enableMissingTranslationPlaceholders— +# do not set it to true for languages other +# than English! When tested with Lithuanian, +# it would add unnecesary placeholders to +# values that were intentionally empty. +defaultContentLanguage: en + +# What is the hostname or path to the root? +# Where is the site hosted? +# +# ❗ cState & Hugo don’t support '/' in +# production use. It will break RSS +# feeds and breaks permalinks since +# version 3. If you are just testing, +# localhost should automatically work. +# +# Example: https://status.example.com/ +baseURL: https://cstate.mnts.lt + +############################################################ +# +------------------------------------------------------+ # +# | Preferences | # +# +------------------------------------------------------+ # +############################################################ + +params: + # Before setting up your systems, you need + # to first define at least one category. + # + # Categories are shown in the order that + # you define in this config file. + # + # Categories can have a: + # - name + # - description + # - closed boolean `closed: true` + # That would collapse the category upon first load + # and the user can expand by clicking on the category + # (Requires JavaScript.) + # - untitled boolean `untitled: true` + # This would complerely hide the name of the category. + # This is useful, if you do not want to use categories + # because you need to set an 'Uncategorized' category. + # Or it can be used alongside other categories. + # + # For help, see the wiki: + # https://github.com/cstate/cstate/wiki/Customization + categories: + - name: North Coast + description: The main servers are located here. + closed: true + - name: East Coast + - name: Uncategorized + untitled: true + + # These are your systems. Change them to + # change the amount of components. + # + # For help, see the wiki: + # https://github.com/cstate/cstate/wiki/Customization + systems: + - name: Gateway + category: North Coast + - name: Backup Gateway + category: East Coast + - name: API + description: The guts of the application. + category: Uncategorized + - name: Media Proxy + description: This is the service responsible for serving images, audio, and video. It is reliant on our CDN. + category: Uncategorized + + # What date format to use? + # + # Hugo formatting docs: + # https://gohugo.io/functions/format/#hugo-date-and-time-templating-reference + # + # Technical: GOLANG/HUGO .Date.Format & dateFormat + # + # dateFormat Default: "January 2, 2006 at 3:04 PM" + # shortDateFormat Default: "15:04 — Jan 2" + dateFormat: January 2, 2006 at 3:04 PM + shortDateFormat: 15:04 — Jan 2 + + # What header design should we use? + # + # Default: true + # BOOLEAN; `true`, `false` + useLargeHeaderDesign: false + + # Should incident history be separated + # like in an archive view? + # + # Note: This WILL disable pagination. + # + # Default: `yearly` + # STRING; `monthly`, `yearly`, `none` + incidentHistoryFormat: "yearly" + + # Should incident history be hidden? + # + # By disabling the incident history, you also disable + # the RSS feed. To ensure no incidents are shown, you + # should delete them after they are resolved. This option + # overrides any other options that tailor your incident + # history’s look. + # + # Default: `false` + # BOOLEAN; `true`, `false` + disableIncidentHistory: false + + # Disable dark mode + # + # If your OS and browser support the + # `prefers-color-scheme` media query, + # cState will automatically switch to + # a darker user interface. + # + # cState uses its built-in colors for + # most of the interface to ensure + # a good user experience. + # + # Default: `false` + # BOOLEAN; `true`, `false` + disableDarkMode: false + + # Should we show the logo or the title + # of the status page? + # + # Default: false + # BOOLEAN; `true`, `false` + useLogo: true + + # Where is the logo located, if one is + # present at all? + # + # Recommended: png is best used for + # images like logos. + # + # Recommended: png, bmp, jpg, or gif + # for best browser support! + logo: logo.png + + # This is the description that is shown + # on the footer and meta tags. + # + # Default: We continuously monitor the status of our services and if there are any interruptions, a note will be posted here. + description: We continuously monitor the status of our services and if there are any interruptions, a note will be posted here. + + # Tabs on homepage + # Uncomment to enable. + # + # Format: + # customTabs: + # - + # name: Name + # link: https://example.com + + # Disable complex server-side + # calculations that may impact + # your build performance + # + # Disables math calculations + # for average downtime on + # systems ("/affected/") pages + # + # Default: false + # BOOLEAN; `true`, `false` + disableComplexCalculations: false + + # Incident posts shown + # in one page + # + # NUMERIC; Default: `10` + incidentPostsPerPage: 10 + + # Colors throughout cState + # + # We recommend using HEX + # (with the # symbol). + # + # Defaults: + # + # brand: "#0a0c0f" + # ok: "#008000" + # disrupted: "#cc4400" + # down: "#e60000" + # notice: "#24478f" + brand: "#0a0c0f" + ok: "#008000" + disrupted: "#cc4400" + down: "#e60000" + notice: "#24478f" + + # If the status page shows that + # there are disruptions or outages + # happening, should it keep the + # brand header color or drop it + # and use the status indication + # colors that were just defined? + # + # Default: `true` + # BOOLEAN; `true`, `false` + alwaysKeepBrandColor: true + + # Introduced in v4.0.1 for consistent + # site title text color. + # + # If you do not use the logo, what color + # should the site text color be? + # + # Removing this option will not force + # any site text color. This is likely + # unwanted behavior. + # + # Default: `white` + # STRING; `white`, `black`, or nothing + headerTextColor: white + + # Google Analytics tracking code + # + # By default, cState does not use + # Google Analytics. If you choose + # to use it, you may change the + # placeholder code below to your + # own and thereby enable the + # tracking service. + # + # To disable the analytics, change + # the value to the default: + # + # Default: UA-00000000-1 + googleAnalytics: UA-00000000-1 + +# These options affect the core of cState. +# Please do not change them if you do not +# know what you are doing. +theme: cstate + +preserveTaxonomyNames: true + +taxonomies: + affected: affected + +outputs: + page: + - html + - json + section: + - html + - json + - rss + home: + - html + - json + - rss + - svg + +outputFormats: + svg: + isPlainText: true + mediaType: image/svg+xml diff --git a/content/issues/.gitkeep b/content/issues/.gitkeep new file mode 100644 index 00000000..90fc975a --- /dev/null +++ b/content/issues/.gitkeep @@ -0,0 +1 @@ +If you plan to have an empty issues list, then please keep this file to prevent build failure. diff --git a/content/issues/2018-01-17-sending-dms-impacted.md b/content/issues/2018-01-17-sending-dms-impacted.md new file mode 100644 index 00000000..b96139fd --- /dev/null +++ b/content/issues/2018-01-17-sending-dms-impacted.md @@ -0,0 +1,15 @@ +--- +title: Issues Sending DMs +date: 2017-12-17 16:24:00 +resolved: true +resolvedWhen: 2017-12-17 16:58:00 +# Possible severity levels: down, disrupted, notice +severity: disrupted +affected: + - API +section: issue +--- + +*Update* - This incident has been resolved. + +*Investigating* - We're aware of an issue affecting sending DMs and viewing online friends. We're online and working on a resolution. diff --git a/content/issues/2018-04-13-unavailable-guilds-connection-issues.md b/content/issues/2018-04-13-unavailable-guilds-connection-issues.md new file mode 100644 index 00000000..170bd1f8 --- /dev/null +++ b/content/issues/2018-04-13-unavailable-guilds-connection-issues.md @@ -0,0 +1,25 @@ +--- +title: Unavailable Guilds & Connection Issues +date: 2018-04-13 15:54:00 +resolved: true +resolvedWhen: 2018-04-13 17:30:00 +# Possible severity levels: down, disrupted, notice +severity: down +affected: + - API + - Media Proxy +section: issue +--- + +*Post-mortem* + +At approximately 14:01, a Redis instance acting as the primary for a highly-available cluster used by our API services was migrated automatically by Google’s Cloud Platform. This migration caused the node to incorrectly drop offline, forcing the cluster to rebalance and trigger known issues with the way our API instances handle Redis failover. After resolving this partial outage, unnoticed issues on other services caused a cascading failure through Example Chat App’s real time system. These issues caused enough critical impact that Example Chat App’s engineering team was forced to fully restart the service, reconnecting millions of clients over a period of 20 minutes. + + +--- + +*Update* - A fix has been implemented and we are monitoring the results. Looks like this has been fixed. {{< track "2018-04-13 17:30:00" >}} + +*Monitoring* - After hitting the ole reboot button Example Chat App is now recovering. We're going to continue to monitor as everyone reconnects. {{< track "2018-04-13 16:50:00" >}} + +*Investigating* - We're aware of users experiencing unavailable guilds and issues when attempting to connect. We're currently investigating. {{< track "2018-04-13 15:54:00" >}} diff --git a/content/issues/2018-05-25-us-east-conn-issues.md b/content/issues/2018-05-25-us-east-conn-issues.md new file mode 100644 index 00000000..8d56cf26 --- /dev/null +++ b/content/issues/2018-05-25-us-east-conn-issues.md @@ -0,0 +1,20 @@ +--- +title: US East Connection Issues +date: 2018-04-25 04:13:00 +resolved: true +resolvedWhen: 2018-04-25 04:13:59 +# Possible severity levels: down, disrupted, notice +severity: down +affected: + - API + - Media Proxy + - Gateway +section: issue +--- + +*Resolved* - +We believe all users experiencing issues have been able to connect at this time. {{< track "2018-05-25 05:54:00" >}} + +*Monitoring* - We believe the connectivity issues are being caused by an isolated ISP issue. We've had reports that swapping to Google DNS servers (see here; https://developers.google.com/speed/public-dns/docs/using) resolves the problem for users. {{< track "2018-05-25 04:40:00" >}} + +*Investigating* - We're aware of reports that users are experiencing connection issues on the East coast of the United States. We're currently investigating these issues, and apologize for any inconvenience it may be causing you. {{< track "2018-05-25 04:13:00" >}} diff --git a/content/issues/2018-06-13-maintenance-window.md b/content/issues/2018-06-13-maintenance-window.md new file mode 100644 index 00000000..dae3afbc --- /dev/null +++ b/content/issues/2018-06-13-maintenance-window.md @@ -0,0 +1,13 @@ +--- +title: Maintenance Window +date: 2018-06-13 15:54:00 +resolved: true +resolvedWhen: 2018-06-13 16:54:00 +# Possible severity levels: down, disrupted, notice +severity: disrupted +affected: + - API +section: issue +--- + +*Just began* - We're currently shutting down the network. {{< track "2018-06-13 15:54:00" >}} diff --git a/content/issues/2019-10-04-testing-cstate-functions.md b/content/issues/2019-10-04-testing-cstate-functions.md new file mode 100644 index 00000000..efdf7d72 --- /dev/null +++ b/content/issues/2019-10-04-testing-cstate-functions.md @@ -0,0 +1,10 @@ +--- +title: Testing New cState Features +date: 2019-10-04 18:05:00 +informational: true +section: issue +--- + +There is a new feature in cState version 4 that lets you make what are called _informational_ posts. The main difference is that there will be no _Unresolved_ or _Resolved in under a minute_ text on the pages. + +This is essentially a page with a date and title. \ No newline at end of file diff --git a/content/issues/2019-10-08-testing-new-pipeline.md b/content/issues/2019-10-08-testing-new-pipeline.md new file mode 100644 index 00000000..4f139de2 --- /dev/null +++ b/content/issues/2019-10-08-testing-new-pipeline.md @@ -0,0 +1,14 @@ +--- +title: New Pipeline Rollout +date: 2019-10-05 16:24:00 +resolved: false +resolvedWhen: 2019-10-05 16:58:00 +# Possible severity levels: down, disrupted, notice +severity: disrupted +affected: + - API +section: issue +--- + +There may be disruptions in the rollout. + \ No newline at end of file diff --git a/content/issues/2020-06-13-maintenance-window.md b/content/issues/2020-06-13-maintenance-window.md new file mode 100644 index 00000000..404ccc48 --- /dev/null +++ b/content/issues/2020-06-13-maintenance-window.md @@ -0,0 +1,13 @@ +--- +title: Maintenance Window +date: 2020-06-13 15:54:00 +resolved: true +resolvedWhen: 2020-06-13 16:54:00 +# Possible severity levels: down, disrupted, notice +severity: disrupted +affected: + - API +section: issue +--- + +*Just began* - We're currently shutting down the network. {{< track "2018-06-13 15:54:00" >}} diff --git a/content/pages/example-page.md b/content/pages/example-page.md new file mode 100644 index 00000000..e373e845 --- /dev/null +++ b/content/pages/example-page.md @@ -0,0 +1,170 @@ +--- +title: Example Page +description: This is an example page that demonstrates the capabilities of a Markdown page in cState. +--- + +Title here! +=========== + +This is an example page that demonstrates the capabilities of a Markdown page in cState. + +You can use HTML if the file extension is `.html`, but this one is `.md`. + +Let us dive in. + +Paragraphs are separated by a blank line. + +2nd paragraph. *Italic*, **bold**, and `monospace`. Itemized lists +look like: + + * this one + * that one + * the other one + +Note that --- not considering the asterisk --- the actual text +content starts at 4-columns in. + +> Block quotes are +> written like so. +> +> They can span multiple paragraphs, +> if you like. + +Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., "it's all +in chapters 12--14"). Three dots ... will be converted to an ellipsis. +Unicode is supported. ☺ + + + +An h2 header +------------ + +Here's a numbered list: + + 1. first item + 2. second item + 3. third item + +Note again how the actual text starts at 4 columns in (4 characters +from the left side). Here's a code sample: + + # Let me re-iterate ... + for i in 1 .. 10 { do-something(i) } + +As you probably guessed, indented 4 spaces. By the way, instead of +indenting the block, you can use delimited blocks, if you like: + +~~~ +define foobar() { + print "Welcome to flavor country!"; +} +~~~ + +(which makes copying & pasting easier). You can optionally mark the +delimited block for Pandoc to syntax highlight it: + +~~~python +import time +# Quick, count to ten! +for i in range(10): + # (but not *too* quick) + time.sleep(0.5) + print(i) +~~~ + + + +### An h3 header ### + +Now a nested list: + + 1. First, get these ingredients: + + * carrots + * celery + * lentils + + 2. Boil some water. + + 3. Dump everything in the pot and follow + this algorithm: + + find wooden spoon + uncover pot + stir + cover pot + balance wooden spoon precariously on pot handle + wait 10 minutes + goto first step (or shut off burner when done) + + Do not bump wooden spoon or it will fall. + +Notice again how text always lines up on 4-space indents (including +that last line which continues item 3 above). + +Here's a link to [a website](http://foo.bar), to a [local +doc](local-doc.html), and to a [section heading in the current +doc](#an-h2-header). Here's a footnote [^1]. + +[^1]: Some footnote text. + +Tables can look like this: + +Name Size Material Color +-------------|-----|------------|------------ +All Business 9 leather brown +Roundabout 10 hemp canvas natural +Cinderella 11 glass transparent + +Table: Shoes sizes, materials, and colors. + +(The above is the caption for the table.) Pandoc also supports +multi-line tables: + +-------- ----------------------- +Keyword Text +-------- ----------------------- +red Sunsets, apples, and + other red or reddish + things. + +green Leaves, grass, frogs + and other things it's + not easy being. +-------- ----------------------- + +A horizontal rule follows. + +*** + +Here's a definition list: + +apples + : Good for making applesauce. + +oranges + : Citrus! + +tomatoes + : There's no "e" in tomatoe. + +Again, text is indented 4 spaces. (Put a blank line between each +term and its definition to spread things out more.) + +Here's a "line block" (note how whitespace is honored): + +| Line one +| Line too +| Line tree + +and images can be specified like so: + +![example image](https://via.placeholder.com/350x150 "An exemplary image") + +Inline math equation: $\omega = d\phi / dt$. Display +math should get its own line like so: + +$$I = \int \rho R^{2} dV$$ + +And note that you can backslash-escape any punctuation characters +which you wish to be displayed literally, ex.: \`foo\`, \*bar\*, etc. \ No newline at end of file diff --git a/layouts/README.md b/layouts/README.md new file mode 100644 index 00000000..794cbb17 --- /dev/null +++ b/layouts/README.md @@ -0,0 +1,3 @@ +This folder can be used to overwrite or add any layouts to your status page. + +For more, please [read the documentation](https://github.com/cstate/cstate/wiki/Customization). diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 00000000..d6497779 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,17 @@ +[build] + command = "hugo" + publish = "public" + functions = "functions" + +[build.environment] + HUGO_VERSION = "0.48" + +[context.production.environment] + HUGO_ENV = "production" + NODE_ENV = "production" + +[context.deploy-preview] + command = "hugo -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "hugo -b $DEPLOY_PRIME_URL" \ No newline at end of file diff --git a/netlify/change.html b/netlify/change.html new file mode 100644 index 00000000..23ad8a3e --- /dev/null +++ b/netlify/change.html @@ -0,0 +1,5 @@ +

[cState Admin]
An email change has been requested.

+ +

Follow this link to confirm the update of your email from {{ .Email }} to {{ .NewEmail }}:

+ +

Make it {{ .NewEmail }}

\ No newline at end of file diff --git a/netlify/confirmation.html b/netlify/confirmation.html new file mode 100644 index 00000000..b6b8e55c --- /dev/null +++ b/netlify/confirmation.html @@ -0,0 +1,5 @@ +

[cState Admin]
Confirm your signup, please.

+ +

Follow this link to confirm your account:

+ +

Yes, confirm this email

diff --git a/netlify/invitation.html b/netlify/invitation.html new file mode 100644 index 00000000..4ad78bd6 --- /dev/null +++ b/netlify/invitation.html @@ -0,0 +1,5 @@ +

[cState Admin]
You have been invited!

+ +

You have been invited to create a user profile on {{ .SiteURL }}. Follow this link to accept the invite:

+ +

Accept the invite

diff --git a/netlify/recovery.html b/netlify/recovery.html new file mode 100644 index 00000000..1de69fd7 --- /dev/null +++ b/netlify/recovery.html @@ -0,0 +1,7 @@ +

[cState Admin]
A password reset has been requested.

+ +

Follow this link to reset the password for your account:

+ +

Recover my access

+ +

Note: If you did not request a password change, you do not need to do anything. It may mean someone else is trying to log into your account.

\ No newline at end of file diff --git a/static/README.md b/static/README.md new file mode 100644 index 00000000..7541621a --- /dev/null +++ b/static/README.md @@ -0,0 +1,9 @@ +This folder can be used to store any static content that you may want to link to on your status page. + +You may replace the default favicons by creating icons with these names: + +- favicon-16x16.png +- favicon-32x32.png +- favicon.ico + +You may also replace the Netlify CMS configuration by creating an `admin` folder and placing your own `config.yml` or `index.html` file by following the project's given instructions. diff --git a/static/img/README.md b/static/img/README.md new file mode 100644 index 00000000..5f250f19 --- /dev/null +++ b/static/img/README.md @@ -0,0 +1 @@ +For users of Netlify CMS with cState, `static/img` is the media folder in the config. diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..95223da3cdbfaeaae69d036f8f08ccd38fe83e36 GIT binary patch literal 5707 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 asSvF68-r`#!(D0O!03v(L4}^n{r>=7{?I)D literal 0 HcmV?d00001 diff --git a/themes/cstate b/themes/cstate new file mode 160000 index 00000000..b5d07632 --- /dev/null +++ b/themes/cstate @@ -0,0 +1 @@ +Subproject commit b5d07632d40437bb87c3faf7b9ece7ca412dce9f