Simplify and make the content more dynamic (#39)

* Rename src to content

* Simplify CSS and layout and move content to a md file

* Make the content truly dynamic, embedding Vue components

* Update and solve vulnerabilities

* Simplify component definitions.

Factor out the common CSS.
Make extensive use of @Prop decorator to specify the component
properties.

* Rethink content layout; make header texts dynamic.

* Factor out the card TOC loading process.

At the price of adding a nesting level we can start automatizin the
load-and-expand process for `.md` documents. The intention is to
come up with a more versatile format, based on "reference" objects
if needed.
This commit is contained in:
Salvador de la Puente González 2019-07-24 14:20:06 +02:00 committed by GitHub
parent 1c9cf7bbf2
commit 6e9df23d39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 808 additions and 1040 deletions

2
.github/CODEOWNERS vendored
View File

@ -1,2 +1,2 @@
* @delapuente @asierarranz @SooluThomas
src/* @CatherineKlauss @SooluThomas
content/* @CatherineKlauss @SooluThomas

View File

@ -18,24 +18,18 @@
<script lang="ts">
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import { Component, Prop } from 'vue-property-decorator'
@Component({
props: {
name: String,
image: String,
location: String,
areas: String
}
})
export default class extends Vue { }
@Component
export default class extends Vue {
@Prop(String) name
@Prop(String) image
@Prop(String) location
@Prop(String) areas
}
</script>
<style>
:root {
--gray-shadow: rgba(148,148,148,1);
}
<style scoped>
.advocate-card {
display: flex;
flex-direction: column;

45
components/Button.vue Normal file
View File

@ -0,0 +1,45 @@
<template>
<a
:href="href"
:target="isPointingOutside ? '_blank' : '_self'"
class="button"
>
<slot />
</a>
</template>
<script lang="ts">
import Vue from 'vue'
import { Component, Prop } from 'vue-property-decorator'
@Component
export default class extends Vue {
@Prop(String) href
get isPointingOutside() {
return this.$props.href.startsWith('http')
}
}
</script>
<style scoped>
a {
border: 1px solid black;
padding: 0.5rem 1rem;
display: inline-block;
background-color: white;
text-align: center;
color: black;
}
a[call-to-action] {
background-color: var(--ibm-color);
color: white;
}
@media (max-width: 800px) {
a {
display: block;
}
}
</style>

View File

@ -19,20 +19,15 @@
<script lang="ts">
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import { Component, Prop } from 'vue-property-decorator'
@Component({
props: {
title: String,
image: String,
to: {
type: String,
default: ''
},
info: String
}
})
@Component
export default class extends Vue {
@Prop(String) title
@Prop(String) image
@Prop({ default: '' }) to
@Prop(String) info
get isPointingOutside() {
return this.$props.to.startsWith('http')
}

23
components/MdContent.vue Normal file
View File

@ -0,0 +1,23 @@
<script lang="ts">
import Vue from 'vue'
import { Component, Prop } from 'vue-property-decorator'
import Button from '~/components/Button.vue'
@Component({ components: { Button } })
export default class extends Vue {
@Prop(String) renderFn
@Prop(String) staticRenderFns
render(createElement) {
return this.$data.templateRender ? this.$data.templateRender()
: createElement('div', 'Rendering...')
}
beforeMount() {
/* eslint no-new-func: "off" */
this.$data.templateRender =
(new Function(this.$props.renderFn)()).bind(this)
this.$options.staticRenderFns = new Function(this.$props.staticRenderFns)()
}
}
</script>

View File

@ -0,0 +1,37 @@
---
title: Qiskit Advocates
tagline: A global program that provides support to the individuals who actively work on assisting and growing the Qiskit Community.
---
<section class="join">
## Why Join
* ![](/images/icons/funding.svg)
### Funding your projects and work
Advocates can request funding or events and projects.
* ![](/images/icons/network.svg)
### Network with experts and enthusiasts
Advocates will be added to a group of quantum experts and will receive ??.
* ![](/images/icons/access.svg)
### Prioritized access to hardware
Advocates will receive prioritized access to publicly available hardware.
* ![](/images/icons/visibility.svg)
### Increased visibility for your work
All advocates will have the opportunity to have their work supported by IBM.
</section>
<section class="apply">
## Steps to apply
1. Fill the form below
2. Click the link to attend test
3. Learn, do the test and get certified
<Button href="#">Apply now</Button>
</section>

View File

@ -0,0 +1,9 @@
---
-
title: Meet the Qiskit Advocates
collections:
regular:
- james-weaver.md
- abraham-asfaw.md
- james-wootton.md
---

View File

@ -0,0 +1,17 @@
---
-
title: Qiskit Camp
collections:
cards:
- qiskit-camp-europe.md
- qiskit-camp-africa.md
- qiskit-camp-asia.md
-
title: Archive
anchor: archive
collections:
cards:
- qiskit-hackathon-haifa.md
- qiskit-hackathon-madrid.md
- qiskit-camp.md
---

25
content/index/toc.md Normal file
View File

@ -0,0 +1,25 @@
---
-
title: Save the date!
collections:
major:
- qiskit-camp-europe.md
-
title: Gather together
collections:
regular:
- qiskit-camps.md
- local-events.md
-
title: Get involved
collections:
major:
- advocate-program.md
-
title: Get help
collections:
minor:
- join-slack.md
- stack-exchange.md
- twitter.md
---

View File

@ -1,361 +0,0 @@
<template>
<div class="wrapper">
<Menu>
<li><a href="/">Home</a></li>
<li><a href="#whyJoin">Why Join</a></li>
<li><a href="#applySteps">Apply</a></li>
<li><a href="#meet-advocates">Advocates</a></li>
</Menu>
<header>
<section>
<div>
<h1>Qiskit Advocates Program</h1>
<p class="header-subtitle">
A global program that provides support to the individuals<br>who actively work on assisting and growing the Qiskit Community
</p>
</div>
</section>
</header>
<nuxt />
<Footer />
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
import { Component } from 'vue-property-decorator'
@Component({
components: {
Menu,
Footer
}
})
export default class extends Vue { };
</script>
<style>
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: italic;
font-weight: 400;
src: local("IBM Plex Mono Italic"), local("IBMPlexMono-Italic"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff") format("woff");
}
:root {
--secondary-color: rgb(103, 58, 183);
--dark-color: rgb(30, 20, 60);
--gray-color: rgba(71, 71, 71, 0.9);
}
* {
margin: 0;
padding: 0;
}
ul {
margin: 1rem 0 1rem 3rem;
}
a {
text-decoration: none;
color: #4A90E2;
}
a:hover {
opacity: 0.6;
}
html {
font-family: 'IBM Plex Sans', sans-serif;
font-size: calc(10px + (18 - 10) * ((900px - 340px) / (900 - 340)));
background-image: url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg');
background-repeat: repeat-x,
repeat-x,
repeat-x,
repeat-y,
repeat-y,
repeat-y;
background-position: top calc(100vh + 890px) left 0,
top calc(100vh + 930px) left 0,
top calc(100vh + 970px) left 0,
top 0 right 100px, top 0 right 0,
top 0 right -100px;
}
h3 {
font-size: 1.5em;
margin-bottom: 1.5em;
margin-top: 1em;
}
.wrapper {
display: flex;
flex-direction: column;
}
.join {
display: flex;
flex-direction: column;
box-sizing: border-box;
width: 100%;
background-color: var(--secondary-color);
color: #FFFFFF;
}
.join img {
padding-right: 1rem;
height: 3rem;
width: 3rem;
display:inline-block;
vertical-align:middle;
}
.applySteps {
margin-left: 33.33%;
}
.apply {
background-color: var(--gray-color);
box-sizing: border-box;
display: flex;
flex-direction: column;
color: #FFFFFF;
}
.apply ol {
max-width: 320px;
counter-reset: my-awesome-counter;
list-style: none;
padding-left: 40px;
margin: 0 auto;
}
.apply ol li {
margin: 0.5em;
counter-increment: my-awesome-counter;
position: relative;
}
.apply ol li::before {
content: counter(my-awesome-counter);
color: var(--gray-color);
font-size: 1rem;
font-weight: bold;
position: absolute;
--size: 25px;
left: calc(-1 * var(--size) - 10px);
line-height: var(--size);
width: var(--size);
height: var(--size);
top: 0;
background: white;
border-radius: 50%;
text-align: center;
}
.apply .button-container {
margin: 0 auto;
text-align: center;
}
.apply .button-container button {
padding: 0.5em 1em;
margin: 1.5em;
font-size: 1em;
outline: 0;
border: 2px solid white;
border-radius: 5px;
background: var(--gray-color);
color: white;
cursor: pointer;
}
.apply h1 {
margin-top: 1.5em;
margin-bottom: .5em;
}
.apply button{
background-color: white;
border: none;
color: black;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
.apply img {
padding-right: 1rem;
height: 30px;
}
.apply .button {
margin: 1em;
text-align: center;
}
.gallery-apply-content {
display: flex;
flex-direction: row;
margin: 2vw;
}
.apply img {
display: inline-block;
vertical-align: middle;
}
.gallery-text {
display: flex;
flex-direction: row;
justify-content: space-around;
}
.gallery-text-column {
display: flex;
flex-direction: column;
width: 40%;
}
.gallery-text-subtitle {
font-size: 1.25em !important;
margin-bottom: 0 !important;
margin-top: 0;
}
.gallery-text-content {
display: flex;
flex-direction: row;
margin: 1em 1em 2em 1em;
}
.gallery-text-content p {
font-size: 0.9em;
}
.section-title {
margin-left: 50px;
}
header {
position: relative;
top: 63px;
height: calc(100vh - 63px);
width: auto;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-image: url(/images/advocates/advocates.jpg);
}
header > section {
position: relative;
width: 100%;
background-color: rgba(255, 255, 255, 0.9);
padding: 1rem;
display: flex;
flex-direction: row;
justify-content: center;
}
header > section > div {
display: flex;
flex-direction: column;
justify-content: center;
}
header img {
height: 100vw;
position: absolute;
width: auto;
top: 10px;
}
header h1 {
font-size: 50px;
margin-left: 1.5rem;
text-align: center;
}
header .header-subtitle {
margin-left: 1.5rem;
font-weight: bold;
font-size: 1rem;
text-align: center;
}
h2::before {
content: "";
float: left;
width: 5%;
margin-top: 0.5rem;
margin-right: 5%;
border-top: 1px solid #0A1D8F;
}
h2 {
margin: 2rem 0 2.5rem;
color: #0A1D8F;
}
@media (max-width: 800px) {
header section {
display: block;
text-align: center;
}
header h1 {
margin: 0;
margin-top: 2rem;
}
.gallery-text {
flex-direction: column;
}
.gallery-text-column {
width: 100%;
}
.gallery-text-content {
flex-direction: column;
text-align: center;
}
.gallery-text-content img {
height: 100px;
width: 100%;
}
}
@media (max-height: 390px) {
header h1 {
margin: 0;
margin-top: 0.5rem;
}
header section {
padding: 1rem;
}
}
</style>

View File

@ -21,91 +21,19 @@
<script lang="ts">
import Vue from 'vue'
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
import { Component } from 'vue-property-decorator'
@Component({
components: {
Menu,
Footer
}
})
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
@Component({ components: { Menu, Footer } })
export default class extends Vue { };
</script>
<style>
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: italic;
font-weight: 400;
src: local("IBM Plex Mono Italic"), local("IBMPlexMono-Italic"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff") format("woff");
}
:root {
--secondary-color: rgb(103, 58, 183);
--dark-color: rgb(30, 20, 60);
}
* {
margin: 0;
padding: 0;
}
ul {
margin: 1rem 0 1rem 3rem;
}
a {
text-decoration: none;
color: #4A90E2;
}
a:hover {
opacity: 0.6;
}
html {
font-family: 'IBM Plex Sans', sans-serif;
/* min-fs + (max-fs - min-fs) * ((viewport-width - min-vw) / (max-vw - min-vw)) */
font-size: calc(10px + (18 - 10) * ((900px - 340px) / (900 - 340)));
background-image: url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg');
background-repeat: repeat-x,
repeat-x,
repeat-x,
repeat-y,
repeat-y,
repeat-y;
background-position: top calc(100vh + 890px) left 0,
top calc(100vh + 930px) left 0,
top calc(100vh + 970px) left 0,
top 0 right 100px, top 0 right 0,
top 0 right -100px;
}
.wrapper {
display: flex;
flex-direction: column;
}
@import url(~/static/css/fonts.css);
@import url(~/static/css/config.css);
@import url(~/static/css/theme.css);
header {
position: relative;
@ -155,20 +83,6 @@ header h1 {
margin-left: 1.5rem;
}
h2::before {
content: "";
float: left;
width: 5%;
margin-top: 0.5rem;
margin-right: 5%;
border-top: 1px solid #0A1D8F;
}
h2 {
margin: 2rem 0 2.5rem;
color: #0A1D8F;
}
@media (max-width: 800px) {
header section {

View File

@ -12,91 +12,17 @@
<script lang="ts">
import Vue from 'vue'
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
import { Component } from 'vue-property-decorator'
@Component({
components: {
Menu,
Footer
}
})
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
@Component({ components: { Menu, Footer } })
export default class extends Vue { };
</script>
<style>
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: italic;
font-weight: 400;
src: local("IBM Plex Mono Italic"), local("IBMPlexMono-Italic"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff") format("woff");
}
:root {
--secondary-color: rgb(103, 58, 183);
--dark-color: rgb(33, 37, 43);
}
* {
margin: 0;
padding: 0;
}
ul {
margin: 1rem 0 1rem 3rem;
}
a {
text-decoration: none;
color: #4A90E2;
}
a:hover {
opacity: 0.6;
}
html {
font-family: 'IBM Plex Sans', sans-serif;
/* min-fs + (max-fs - min-fs) * ((viewport-width - min-vw) / (max-vw - min-vw)) */
font-size: calc(10px + (18 - 10) * ((900px - 340px) / (900 - 340)));
background-image: url('/img/dots.svg'), url('/img/dots.svg'), url('/img/dots.svg'),
url('/img/lines.svg'), url('/img/lines.svg'), url('/img/lines.svg');
background-repeat: repeat-x, repeat-x, repeat-x, repeat-y, repeat-y, repeat-y;
background-position: top calc(100vh + 890px) left 0, top calc(100vh + 930px) left 0, top calc(100vh + 970px) left 0,
top 0 right 100px, top 0 right 0, top 0 right -100px;
}
.wrapper {
display: flex;
flex-direction: column;
}
h2::before {
content: "";
float: left;
width: 5%;
margin-top: 0.5rem;
margin-right: 5%;
border-top: 1px solid #0A1D8F;
}
h2 {
margin: 2rem 0 2.5rem;
color: #0A1D8F;
}
@import url(~/static/css/fonts.css);
@import url(~/static/css/config.css);
@import url(~/static/css/theme.css);
</style>

View File

@ -54,6 +54,7 @@ export default {
** Plugins to load before mounting the App
*/
plugins: [
'~/plugins/deep-load.ts'
],
/*
@ -73,10 +74,10 @@ export default {
config.module.rules.push({
test: /\.md$/,
loader: 'frontmatter-markdown-loader',
include: path.resolve(__dirname, 'src'),
include: path.resolve(__dirname, 'content'),
options: {
vue: {
root: 'dynamicMarkdown'
root: 'content'
},
markdown: (body) => {
return md.render(body)
@ -109,7 +110,7 @@ export default {
generate: {
routes: (function () {
return fs.readdirSync(path.resolve(__dirname, 'src', 'events'))
return fs.readdirSync(path.resolve(__dirname, 'content', 'events'))
.filter(filename => path.extname(filename) === '.md')
.map(filename => `/events/${path.parse(filename).name}`)
})()

291
package-lock.json generated
View File

@ -1346,6 +1346,12 @@
"@types/uglify-js": "*"
}
},
"@types/json-schema": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz",
"integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==",
"dev": true
},
"@types/linkify-it": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-2.1.0.tgz",
@ -1529,12 +1535,12 @@
}
},
"@typescript-eslint/eslint-plugin": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.10.2.tgz",
"integrity": "sha512-7449RhjE1oLFIy5E/5rT4wG5+KsfPzakJuhvpzXJ3C46lq7xywY0/Rjo9ZBcwrfbk0nRZ5xmUHkk7DZ67tSBKw==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz",
"integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==",
"dev": true,
"requires": {
"@typescript-eslint/experimental-utils": "1.10.2",
"@typescript-eslint/experimental-utils": "1.13.0",
"eslint-utils": "^1.3.1",
"functional-red-black-tree": "^1.0.1",
"regexpp": "^2.0.1",
@ -1542,31 +1548,32 @@
}
},
"@typescript-eslint/experimental-utils": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.10.2.tgz",
"integrity": "sha512-Hf5lYcrnTH5Oc67SRrQUA7KuHErMvCf5RlZsyxXPIT6AXa8fKTyfFO6vaEnUmlz48RpbxO4f0fY3QtWkuHZNjg==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz",
"integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==",
"dev": true,
"requires": {
"@typescript-eslint/typescript-estree": "1.10.2",
"@types/json-schema": "^7.0.3",
"@typescript-eslint/typescript-estree": "1.13.0",
"eslint-scope": "^4.0.0"
}
},
"@typescript-eslint/parser": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.10.2.tgz",
"integrity": "sha512-xWDWPfZfV0ENU17ermIUVEVSseBBJxKfqBcRCMZ8nAjJbfA5R7NWMZmFFHYnars5MjK4fPjhu4gwQv526oZIPQ==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz",
"integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==",
"dev": true,
"requires": {
"@types/eslint-visitor-keys": "^1.0.0",
"@typescript-eslint/experimental-utils": "1.10.2",
"@typescript-eslint/typescript-estree": "1.10.2",
"@typescript-eslint/experimental-utils": "1.13.0",
"@typescript-eslint/typescript-estree": "1.13.0",
"eslint-visitor-keys": "^1.0.0"
}
},
"@typescript-eslint/typescript-estree": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.10.2.tgz",
"integrity": "sha512-Kutjz0i69qraOsWeI8ETqYJ07tRLvD9URmdrMoF10bG8y8ucLmPtSxROvVejWvlJUGl2et/plnMiKRDW+rhEhw==",
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz",
"integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==",
"dev": true,
"requires": {
"lodash.unescape": "4.0.1",
@ -1982,9 +1989,9 @@
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"arg": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg=="
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz",
"integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw=="
},
"argparse": {
"version": "1.0.10",
@ -3921,9 +3928,9 @@
}
},
"eslint-module-utils": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz",
"integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==",
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
"integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
"dev": true,
"requires": {
"debug": "^2.6.8",
@ -4004,9 +4011,9 @@
}
},
"eslint-plugin-import": {
"version": "2.17.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz",
"integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==",
"version": "2.18.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz",
"integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==",
"dev": true,
"requires": {
"array-includes": "^3.0.3",
@ -4016,8 +4023,8 @@
"eslint-import-resolver-node": "^0.3.2",
"eslint-module-utils": "^2.4.0",
"has": "^1.0.3",
"lodash": "^4.17.11",
"minimatch": "^3.0.4",
"object.values": "^1.1.0",
"read-pkg-up": "^2.0.0",
"resolve": "^1.11.0"
},
@ -4044,10 +4051,13 @@
}
},
"eslint-plugin-jest": {
"version": "22.6.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.6.4.tgz",
"integrity": "sha512-36OqnZR/uMCDxXGmTsqU4RwllR0IiB/XF8GW3ODmhsjiITKuI0GpgultWFt193ipN3HARkaIcKowpE6HBvRHNg==",
"dev": true
"version": "22.13.6",
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.13.6.tgz",
"integrity": "sha512-wn3n9Djj+Dyi8AS1kvGOXpzUJfs9SJYhoZxIb49y4cwHRPaSgDHzSJPZX3sliZ3k8l6bYVeEGW76QvvqoOjSEw==",
"dev": true,
"requires": {
"@typescript-eslint/experimental-utils": "^1.13.0"
}
},
"eslint-plugin-node": {
"version": "9.1.0",
@ -4072,9 +4082,9 @@
}
},
"eslint-plugin-promise": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz",
"integrity": "sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==",
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
"integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==",
"dev": true
},
"eslint-plugin-standard": {
@ -4084,9 +4094,9 @@
"dev": true
},
"eslint-plugin-vue": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.2.tgz",
"integrity": "sha512-CtGWH7IB0DA6BZOwcV9w9q3Ri6Yuo8qMjx05SmOGJ6X6E0Yo3y9E/gQ5tuNxg2dEt30tRnBoFTbvtmW9iEoyHA==",
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz",
"integrity": "sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw==",
"dev": true,
"requires": {
"vue-eslint-parser": "^5.0.0"
@ -4694,7 +4704,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@ -4715,12 +4726,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -4735,17 +4748,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@ -4862,7 +4878,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@ -4874,6 +4891,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -4888,6 +4906,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -4895,12 +4914,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -4919,6 +4940,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -4999,7 +5021,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@ -5011,6 +5034,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -5096,7 +5120,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@ -5132,6 +5157,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -5151,6 +5177,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -5194,12 +5221,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
}
}
},
@ -5359,14 +5388,14 @@
}
},
"frontmatter-markdown-loader": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/frontmatter-markdown-loader/-/frontmatter-markdown-loader-1.6.1.tgz",
"integrity": "sha512-4yCjRjBBTb2w784zCYrwJWbougWaPquWzgcJ6dJxsRK2hQJbeHFlBPzLgR1rcUfIWK/RNpPRFlLY8owHHcFmdg==",
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/frontmatter-markdown-loader/-/frontmatter-markdown-loader-1.8.0.tgz",
"integrity": "sha512-woGWVfcs3wOcL70XdG4LvDOni/0RJ+jYzJ4h6L7Kb+kVdtcu0crDWfOWh6eUJ2rNNrY/fbV4+BASO8cbzrapWw==",
"dev": true,
"requires": {
"front-matter": "^3.0.1",
"loader-utils": "^1.2.3",
"markdown-it": "^8.4.2",
"markdown-it": "^9.0.0",
"vue-template-compiler": "^2.5.0",
"vue-template-es2015-compiler": "^1.6.0"
}
@ -6392,9 +6421,9 @@
}
},
"linkify-it": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz",
"integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
"integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
"dev": true,
"requires": {
"uc.micro": "^1.0.1"
@ -6464,9 +6493,9 @@
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"lodash._reinterpolate": {
"version": "3.0.0",
@ -6581,9 +6610,9 @@
}
},
"markdown-it": {
"version": "8.4.2",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",
"integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-9.0.1.tgz",
"integrity": "sha512-XC9dMBHg28Xi7y5dPuLjM61upIGPJG8AiHNHYqIaXER2KNnn7eKnM5/sF0ImNnyoV224Ogn9b1Pck8VH4k0bxw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@ -6866,9 +6895,9 @@
}
},
"mixin-deep": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
"integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
"requires": {
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
@ -7193,7 +7222,8 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@ -7214,12 +7244,14 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -7234,17 +7266,20 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@ -7361,7 +7396,8 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@ -7373,6 +7409,7 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -7387,6 +7424,7 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -7394,12 +7432,14 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -7418,6 +7458,7 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -7498,7 +7539,8 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@ -7510,6 +7552,7 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -7595,7 +7638,8 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@ -7631,6 +7675,7 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -7650,6 +7695,7 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -7693,12 +7739,14 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true
"dev": true,
"optional": true
}
}
},
@ -9796,9 +9844,9 @@
"integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0="
},
"set-value": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
"integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
"integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
@ -10073,9 +10121,9 @@
}
},
"spdx-license-ids": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
"integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
"integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
"dev": true
},
"split-string": {
@ -10614,9 +10662,9 @@
}
},
"ts-node": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
"integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
"requires": {
"arg": "^4.1.0",
"diff": "^4.0.1",
@ -10755,35 +10803,14 @@
"integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw=="
},
"union-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
"integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
"integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
"is-extendable": "^0.1.1",
"set-value": "^0.4.3"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"requires": {
"is-extendable": "^0.1.0"
}
},
"set-value": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
"integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.1",
"to-object-path": "^0.3.0"
}
}
"set-value": "^2.0.1"
}
},
"uniq": {
@ -11244,11 +11271,12 @@
"integrity": "sha512-ZMjqRpWabMPqPc7gIrG0Nw6vRf1+itwf0Itft7LbMXs2g3Zs/NFmevjZGN1x7K3Q95GmIjWbQZTVerxiBxI+0g=="
},
"vue-property-decorator": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.1.1.tgz",
"integrity": "sha512-K+PUT17ZEMWyhrKZnl4Fc9qMyFpMcjVbZJBwx4BpA8BXfaspaTeFdoHuk1aywC/+4G86sxIr/5n4IQUQLecSWw==",
"version": "8.2.1",
"resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.2.1.tgz",
"integrity": "sha512-zgtcvzGB2JpDqnIxVhTK+6m+dv3uyhYs+tL8elL+DWiXj9kDonKcPY7f1DHYX1NlnWPCj7ht0nL/i8+S1gg76Q==",
"dev": true,
"requires": {
"vue": "^2.6.10",
"vue-class-component": "^7.0.1"
}
},
@ -11443,7 +11471,8 @@
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
"bundled": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
@ -11461,11 +11490,13 @@
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
"bundled": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -11478,15 +11509,18 @@
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
"bundled": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
"bundled": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true
"bundled": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
@ -11589,7 +11623,8 @@
},
"inherits": {
"version": "2.0.3",
"bundled": true
"bundled": true,
"optional": true
},
"ini": {
"version": "1.3.5",
@ -11599,6 +11634,7 @@
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@ -11611,17 +11647,20 @@
"minimatch": {
"version": "3.0.4",
"bundled": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true
"bundled": true,
"optional": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@ -11638,6 +11677,7 @@
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@ -11710,7 +11750,8 @@
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
"bundled": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
@ -11720,6 +11761,7 @@
"once": {
"version": "1.4.0",
"bundled": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@ -11795,7 +11837,8 @@
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true
"bundled": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
@ -11825,6 +11868,7 @@
"string-width": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@ -11842,6 +11886,7 @@
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@ -11880,11 +11925,13 @@
},
"wrappy": {
"version": "1.0.2",
"bundled": true
"bundled": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true
"bundled": true,
"optional": true
}
}
},

View File

@ -16,27 +16,27 @@
"dependencies": {
"cross-env": "^5.2.0",
"nuxt": "^2.8.1",
"ts-node": "^8.2.0"
"ts-node": "^8.3.0"
},
"devDependencies": {
"@nuxt/typescript": "^2.8.1",
"@nuxtjs/eslint-config": "0.0.1",
"@types/markdown-it": "0.0.7",
"@typescript-eslint/eslint-plugin": "^1.10.2",
"@typescript-eslint/parser": "^1.10.2",
"@typescript-eslint/eslint-plugin": "^1.13.0",
"@typescript-eslint/parser": "^1.13.0",
"eslint": "^5.16.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.17.3",
"eslint-plugin-jest": "^22.6.4",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jest": "^22.13.6",
"eslint-plugin-node": "^9.1.0",
"eslint-plugin-promise": "^4.1.1",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^5.2.2",
"frontmatter-markdown-loader": "^1.6.1",
"eslint-plugin-vue": "^5.2.3",
"frontmatter-markdown-loader": "^1.8.0",
"markdown-it-anchor": "^5.2.4",
"markdown-it-link-attributes": "^2.1.0",
"nodemon": "^1.18.9",
"uslug": "^1.0.4",
"vue-property-decorator": "^8.1.1"
"vue-property-decorator": "^8.2.1"
}
}

View File

@ -1,81 +1,34 @@
<template>
<main>
<section id="whyJoin" class="join">
<h3 class="section-title">
Why Join
</h3>
<div class="gallery-text">
<div class="gallery-text-column">
<div class="gallery-text-content">
<img src="images/icons/apply01.svg">
<div>
<h3 class="gallery-text-subtitle">
Funding for your projects and work
</h3>
<p>Advocates can request funding or events and projects</p>
</div>
</div>
<div class="gallery-text-content">
<img src="images/icons/apply03.svg">
<div>
<h3 class="gallery-text-subtitle">
Prioritized access to hardware
</h3>
<p>Advocates will receive prioritized access to publicly available hardware</p>
</div>
</div>
<header>
<section>
<div>
<h1>{{ attributes.title }}</h1>
<p class="header-subtitle">
{{ attributes.tagline }}
</p>
</div>
<div class="gallery-text-column">
<div class="gallery-text-content">
<img src="images/icons/apply02.svg">
<div>
<h3 class="gallery-text-subtitle">
Network with experts and enthusiasts
</h3>
<p>Advocates will be added to a group of quantum experts and will receive ~~~~(??).</p>
</div>
</div>
<div class="gallery-text-content">
<img src="images/icons/apply04.svg">
<div>
<h3 class="gallery-text-subtitle">
Increased visibility for your work
</h3>
<p>All advocates will have the opportunity to have their work supported by IBM</p>
</div>
</div>
</div>
</div>
</section>
<section class="apply">
<h3 class="section-title">
Steps to apply
</h3>
<ol>
<li>Fill the form below</li>
<li>Click the link to attend test</li>
<li>Learn, Do the test and get certified!</li>
</ol>
<div class="button-container">
<button onclick="alert('Redirect to apply form')">
Apply Now!
</button>
</div>
</section>
</section>
</header>
<MdContent
:render-fn="renderFn"
:static-render-fns="staticRenderFns"
/>
<section
v-for="(section, index) in sections"
:key="`section-${index}`"
class="advocates"
>
<h3
<h2
v-if="!!section.title"
:id="section.anchor"
class="section-title"
>
{{ section.title }}
</h3>
</h2>
<div class="card-container">
<AdvocateCard
v-for="(card, cardIndex) in section.regular"
<AdvocateProfile
v-for="(card, cardIndex) in section.collections.regular"
:key="`card-${cardIndex}`"
:name="card.attributes.name"
:image="`/images/advocates/${card.attributes.image}`"
@ -91,38 +44,29 @@
<script lang="ts">
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import AdvocateCard from '~/components/AdvocateCard.vue'
async function loadToc(source: string): Promise<any> {
const toc = (await import(`~/src/${source}/toc.md`)).attributes
return toc
}
async function embedDocuments(section, source: string, collection: string) {
if (!section[collection]) { return [] }
section[collection] = await Promise.all(section[collection].map(
path => import(`~/src/${source}/${path}`)
))
}
import AdvocateProfile from '~/components/AdvocateProfile.vue'
import Button from '~/components/Button.vue'
import MdContent from '~/components/MdContent.vue'
@Component({
layout: 'advocate',
layout: 'secondary',
components: { AdvocateCard },
components: { AdvocateProfile, Button, MdContent },
async asyncData() {
const root = 'advocates/index'
const sections = await loadToc(root)
for (const aSection of sections) {
await embedDocuments(aSection, root, 'regular')
}
async asyncData(ctx) {
const index = await import(`~/content/advocates/index/${'master.md'}`)
const sections = await ctx.app.deepLoadCardToc('profiles.md', {
basePath: 'advocates/index/'
})
return {
sections
sections,
attributes: index.attributes,
renderFn: index.vue.render,
staticRenderFns: index.vue.staticRenderFns
}
}
})
export default class extends Vue { }
</script>
@ -131,28 +75,199 @@ main {
position: relative;
top: 60px;
}
</style>
<style scoped>
header {
height: calc(100vh - 63px);
width: auto;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-image: url(/images/advocates/advocates-decoration.svg);
background-color: white;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
header > section {
position: relative;
width: 100%;
padding: 1rem;
display: flex;
flex-direction: row;
justify-content: center;
}
header > section > div {
display: flex;
flex-direction: column;
justify-content: center;
}
header img {
height: 100vw;
position: absolute;
width: auto;
top: 10px;
}
header h1 {
font-size: 50px;
margin-left: 1.5rem;
text-align: center;
}
header .header-subtitle {
font-weight: bold;
font-size: 1rem;
text-align: center;
max-width: 30rem;
margin: 0 auto;
}
@media (max-width: 800px) {
header section {
display: block;
text-align: center;
}
header h1 {
margin: 0;
margin-top: 2rem;
}
}
@media (max-height: 390px) {
header h1 {
margin: 0;
margin-top: 0.5rem;
}
header section {
padding: 1rem;
}
}
section > h2 {
color: black;
font-size: 1.5em;
margin-bottom: 1.5em;
margin-top: 1em;
}
section > h2::before {
content: none;
}
.join > h2,
.apply > h2 {
color: white;
}
.join,
.apply,
.advocates {
padding: 0 5%;
}
.join {
display: flex;
flex-direction: column;
box-sizing: border-box;
width: 100%;
background-color: var(--secondary-color);
color: #FFFFFF;
}
.join > ul {
list-style: none;
display: grid;
grid-template-columns: 1fr 1fr;
grid-column-gap: 2rem;
margin: 1rem 3rem 1rem 0;
}
.join > ul > li {
margin: 1em 1em 2em;
}
.join > ul > li > p:first-of-type {
float: left;
}
.join > ul > li > p > img {
padding-right: 1rem;
height: 3rem;
width: 3rem;
border-radius: 0;
}
.card-container {
display: flex;
flex-direction: row;
justify-content: space-around;
justify-content: space-between;
}
.advocate-card {
padding: 1em;
box-shadow: 10px 10px 11px -10px var(--gray-shadow);
border: 1px solid var(--gray-shadow);
box-shadow: 10px 10px 11px -10px var(--shadow-color);
border: 1px solid var(--shadow-color);
width: 25%;
margin: 0.5em;
}
.apply {
background-color: var(--gray-color);
box-sizing: border-box;
display: flex;
flex-direction: column;
color: #FFFFFF;
padding-bottom: 3rem;
}
.apply > ol {
list-style: none;
counter-reset: my-awesome-counter;
margin-bottom: 2rem;
}
.apply > ol > li {
margin: 0.5em;
position: relative;
counter-increment: my-awesome-counter;
--size: 1.5rem;
}
.apply > ol > li::before {
content: counter(my-awesome-counter);
color: var(--gray-color);
font-size: 1rem;
font-weight: bold;
position: relative;
margin-right: 0.5rem;
display: inline-block;
line-height: var(--size);
width: var(--size);
height: var(--size);
background: white;
border-radius: 50%;
text-align: center;
}
@media (max-width: 800px) {
.join > ul {
display: block;
}
.card-container {
flex-direction: column;
align-items: center;
}
.advocate-card {
width: 70%;
}

View File

@ -33,9 +33,9 @@
<script lang="ts">
import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import { Context } from '@nuxt/vue-app'
import Menu from '~/components/Menu.vue'
import Footer from '~/components/Footer.vue'
import { Context } from '@nuxt/vue-app'
function getBackgroundUris(background: string): [string, string] {
const bgRoute = '/images/events/headers/'
@ -55,7 +55,7 @@ function getBackgroundUris(background: string): [string, string] {
if (sourceName === 'undefined') {
return
}
const definition = await import(`~/src/events/${sourceName}.md`)
const definition = await import(`~/content/events/${sourceName}.md`)
const [lBackgroundUri, hBackgroundUri] =
getBackgroundUris(definition.attributes.background)
return {

View File

@ -11,7 +11,7 @@
{{ section.title }}
</h2>
<Card
v-for="(card, cardIndex) in section.cards"
v-for="(card, cardIndex) in section.collections.cards"
:key="`card-${cardIndex}`"
:title="card.attributes.title"
:image="`/images/events/${card.attributes.image}`"
@ -28,33 +28,16 @@ import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import Card from '~/components/Card.vue'
async function loadToc(source: string): Promise<any> {
const toc = (await import(`~/src/${source}/toc.md`)).attributes
return toc
}
async function embedCards(section, source: string) {
const cards = await Promise.all(section.cards.map(
path => import(`~/src/${source}/${path}`)
))
section.cards = cards
}
@Component({
layout: 'secondary',
components: {
Card
},
components: { Card },
async asyncData() {
const root = 'events/index'
const sections = await loadToc(root)
for (const aSection of sections) {
await embedCards(aSection, root)
}
async asyncData(ctx) {
return {
sections
sections: await ctx.app.deepLoadCardToc('toc.md', {
basePath: 'events/index/'
})
}
}
})
@ -63,7 +46,7 @@ export default class extends Vue { }
<style>
main {
position: relative;
top: 60px;
top: 63px;
}
.card {

View File

@ -11,7 +11,7 @@
{{ section.title }}
</h2>
<Card
v-for="(card, cardIndex) in section.major"
v-for="(card, cardIndex) in section.collections.major"
:key="`major-${cardIndex}`"
:title="card.attributes.title"
:image="card.attributes.image"
@ -20,7 +20,7 @@
major
/>
<Card
v-for="(card, cardIndex) in section.regular"
v-for="(card, cardIndex) in section.collections.regular"
:key="`regular-${cardIndex}`"
:title="card.attributes.title"
:image="card.attributes.image"
@ -29,7 +29,7 @@
/>
<section class="minor">
<Card
v-for="(card, cardIndex) in section.minor"
v-for="(card, cardIndex) in section.collections.minor"
:key="`minor-${cardIndex}`"
:title="card.attributes.title"
:image="card.attributes.image"
@ -46,38 +46,20 @@ import Vue from 'vue'
import { Component } from 'vue-property-decorator'
import Card from '~/components/Card.vue'
async function loadToc(source: string): Promise<any> {
const toc = (await import(`~/src/${source}/toc.md`)).attributes
return toc
}
async function embedDocuments(section, source: string, collection: string) {
if (!section[collection]) { return [] }
section[collection] = await Promise.all(section[collection].map(
path => import(`~/src/${source}/${path}`)
))
}
@Component({
components: {
Card
},
components: { Card },
async asyncData() {
const root = 'index'
const sections = await loadToc(root)
for (const aSection of sections) {
await embedDocuments(aSection, root, 'major')
await embedDocuments(aSection, root, 'regular')
await embedDocuments(aSection, root, 'minor')
}
async asyncData(ctx) {
return {
sections
sections: await ctx.app.deepLoadCardToc('toc.md', {
basePath: 'index/'
})
}
}
})
export default class extends Vue { }
</script>
<style>
main {
position: relative;

69
plugins/deep-load.ts Normal file
View File

@ -0,0 +1,69 @@
/**
* The format of the sections inside the frontmatter of card TOCs.
* The "slim" qualificative reminds this format just contain reference to
* other `.md` documents with the extended content of the card.
*/
interface SlimCardSection {
/** Title of the section. */
title: string
/** Id for the section. */
anchor?: string
/** Each collection is a map of a unique id and a list of cards to embed. */
collections?: Map<string, string[]>
}
interface DeepLoadOptions {
/**
* Path to prepend to the file references, including the TOC file and all
* the internal references to `.md` files.
*/
basePath: string
}
export default ({ app }) => {
async function loadToc(source: string): Promise<any> {
const toc: any[] = []
const attrs = (await import(`~/content/${source}`)).attributes
let entry = null
// XXX: Conversion to an array is needed because of:
// https://github.com/hmsk/frontmatter-markdown-loader/issues/50
for (let i = 0; (entry = attrs[i]) !== undefined; i++) {
toc.push(entry)
}
return toc
}
async function embedDocumentsInPlace(section: SlimCardSection, basepath: string) {
if (typeof section.collections === 'undefined') { return }
for (const aCollection of Object.keys(section.collections)) {
section.collections[aCollection] =
await Promise.all(section.collections[aCollection].map(
path => import(`~/content/${basepath}${path}`)
))
}
}
/**
* Load a table of contents (TOC) file and embed the `.md` references in
* place. The TOC file is a `.md` file whose frontmatter is **a list** of
* [[SlimSections]].
*
* @param filePath the TOC file path inside the `~/contents/` folder.
* @param options optional modifiers.
*/
async function deepLoadCardToc(
filePath: string,
options: DeepLoadOptions = { basePath: '' }
): Promise<any> {
const { basePath } = options
const toc = await loadToc(`${basePath}${filePath}`)
for (const aSection of toc) {
await embedDocumentsInPlace(aSection, basePath)
}
return toc
}
app.deepLoadCardToc = deepLoadCardToc
}

View File

@ -1,9 +0,0 @@
---
-
title: Meet the Qiskit Advocates
anchor: meet-advocates
regular:
- james-weaver.md
- abraham-asfaw.md
- james-wootton.md
---

View File

@ -1,15 +0,0 @@
---
-
title: Qiskit Camp
cards:
- qiskit-camp-europe.md
- qiskit-camp-africa.md
- qiskit-camp-asia.md
-
title: Archive
anchor: archive
cards:
- qiskit-hackathon-haifa.md
- qiskit-hackathon-madrid.md
- qiskit-camp.md
---

View File

@ -1,21 +0,0 @@
---
-
title: Save the date!
major:
- qiskit-camp-europe.md
-
title: Gather together
regular:
- qiskit-camps.md
- local-events.md
-
title: Get involved
major:
- advocate-program.md
-
title: Get help
minor:
- join-slack.md
- stack-exchange.md
- twitter.md
---

6
static/css/config.css Normal file
View File

@ -0,0 +1,6 @@
:root {
--secondary-color: rgb(103, 58, 183);
--dark-color: rgb(30, 20, 60);
--gray-color: rgba(71, 71, 71, 0.9);
--shadow-color: rgba(148,148,148,1);
}

20
static/css/fonts.css Normal file
View File

@ -0,0 +1,20 @@
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: italic;
font-weight: 400;
src: local("IBM Plex Mono Italic"), local("IBMPlexMono-Italic"), url("/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff") format("woff");
}
@font-face {
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff") format("woff");
}

59
static/css/theme.css Normal file
View File

@ -0,0 +1,59 @@
* {
margin: 0;
padding: 0;
}
html {
font-family: 'IBM Plex Sans', sans-serif;
/* min-fs + (max-fs - min-fs) * ((viewport-width - min-vw) / (max-vw - min-vw)) */
font-size: calc(10px + (18 - 10) * ((900px - 340px) / (900 - 340)));
background-image: url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/dots.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg'),
url('/images/events/deco/lines.svg');
background-repeat: repeat-x,
repeat-x,
repeat-x,
repeat-y,
repeat-y,
repeat-y;
background-position: top calc(100vh + 890px) left 0,
top calc(100vh + 930px) left 0,
top calc(100vh + 970px) left 0,
top 0 right 100px, top 0 right 0,
top 0 right -100px;
}
ul {
margin: 1rem 0 1rem 3rem;
}
a {
text-decoration: none;
color: #4A90E2;
}
a:hover {
opacity: 0.6;
}
h2::before {
content: "";
float: left;
width: 5%;
margin-top: 0.5rem;
margin-right: 5%;
border-top: 1px solid #0A1D8F;
}
h2 {
margin: 2rem 0 2.5rem;
color: #0A1D8F;
}
.wrapper {
display: flex;
flex-direction: column;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1225.4 376" style="enable-background:new 0 0 1225.4 376;" xml:space="preserve">
<style type="text/css">
.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#634991;}
</style>
<g id="Aksen" transform="translate(27.000000, 164.000000)">
<path id="Page-1" class="st0" d="M115.5-16h-68c-1.9,0-3.5,1.6-3.5,3.5v185c0,1.9,1.6,3.5,3.5,3.5h68c1.9,0,3.5-1.6,3.5-3.5v-185
C119-14.4,117.4-16,115.5-16L115.5-16z M112,169H51v-30.8h16.5c1.9,0,3.5-1.6,3.5-3.5c0-1.9-1.6-3.5-3.5-3.5H51v-14h16.5
c1.9,0,3.5-1.6,3.5-3.5s-1.6-3.5-3.5-3.5H51v-14h16.5c1.9,0,3.5-1.6,3.5-3.5s-1.6-3.5-3.5-3.5H51v-14h16.5c1.9,0,3.5-1.6,3.5-3.5
c0-1.9-1.6-3.5-3.5-3.5H51v-14h16.5c1.9,0,3.5-1.6,3.5-3.5s-1.6-3.5-3.5-3.5H51v-14h16.5c1.9,0,3.5-1.6,3.5-3.5
c0-1.9-1.6-3.5-3.5-3.5H51V12h16.5c1.9,0,3.5-1.6,3.5-3.5c0-1.9-1.6-3.5-3.5-3.5H51V-9h61L112,169L112,169z"/>
<path id="Oval-3" class="st0" d="M945,12c-2.2,0-4-1.8-4-4s1.8-4,4-4s4,1.8,4,4S947.2,12,945,12z M1005,132c-2.2,0-4-1.8-4-4
s1.8-4,4-4s4,1.8,4,4S1007.2,132,1005,132z M925,142c-2.2,0-4-1.8-4-4s1.8-4,4-4s4,1.8,4,4S927.2,142,925,142z M855,72
c-2.2,0-4-1.8-4-4s1.8-4,4-4s4,1.8,4,4S857.2,72,855,72z M995-50c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S996.1-50,995-50z M885-80
c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S886.1-80,885-80z M885-19c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S886.1-19,885-19z M795-19
c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S796.1-19,795-19z M795-86c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S796.1-86,795-86z M1055-86
c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S1056.1-86,1055-86z M925-160c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2S926.1-160,925-160z"/>
<path class="st0" d="M85,12c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S82.8,12,85,12z M25,132c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4
S22.8,132,25,132z M105,142c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S102.8,142,105,142z M175,72c2.2,0,4-1.8,4-4s-1.8-4-4-4
s-4,1.8-4,4S172.8,72,175,72z M35-50c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S33.9-50,35-50z M145-80c1.1,0,2-0.9,2-2s-0.9-2-2-2
s-2,0.9-2,2S143.9-80,145-80z M145-19c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S143.9-19,145-19z M235-19c1.1,0,2-0.9,2-2s-0.9-2-2-2
s-2,0.9-2,2S233.9-19,235-19z M235-86c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S233.9-86,235-86z M-25-86c1.1,0,2-0.9,2-2s-0.9-2-2-2
s-2,0.9-2,2S-26.1-86-25-86z M105-160c1.1,0,2-0.9,2-2s-0.9-2-2-2s-2,0.9-2,2S103.9-160,105-160z"/>
<path class="st0" d="M355,36c2.2,0,4,1.8,4,4s-1.8,4-4,4s-4-1.8-4-4S352.8,36,355,36z M295-84c2.2,0,4,1.8,4,4s-1.8,4-4,4
s-4-1.8-4-4S292.8-84,295-84z M375-94c2.2,0,4,1.8,4,4s-1.8,4-4,4s-4-1.8-4-4S372.8-94,375-94z M445-29c2.2,0,4,1.8,4,4s-1.8,4-4,4
s-4-1.8-4-4S442.8-29,445-29z M305,98c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S303.9,98,305,98z M415,129c1.1,0,2,0.9,2,2
s-0.9,2-2,2s-2-0.9-2-2S413.9,129,415,129z M415,67c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S413.9,67,415,67z M505,67
c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S503.9,67,505,67z M505,134c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S503.9,134,505,134z
M245,134c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S243.9,134,245,134z M375,208c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2
S373.9,208,375,208z"/>
<path class="st0" d="M505-134c2.2,0,4,1.8,4,4s-1.8,4-4,4s-4-1.8-4-4S502.8-134,505-134z M585-144c2.2,0,4,1.8,4,4s-1.8,4-4,4
s-4-1.8-4-4S582.8-144,585-144z M655-74c2.2,0,4,1.8,4,4s-1.8,4-4,4s-4-1.8-4-4S652.8-74,655-74z M515,48c1.1,0,2,0.9,2,2
s-0.9,2-2,2s-2-0.9-2-2S513.9,48,515,48z M625,78c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S623.9,78,625,78z M625,17c1.1,0,2,0.9,2,2
s-0.9,2-2,2s-2-0.9-2-2S623.9,17,625,17z M715,17c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S713.9,17,715,17z M715,84c1.1,0,2,0.9,2,2
s-0.9,2-2,2s-2-0.9-2-2S713.9,84,715,84z M455,85c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S453.9,85,455,85z M585,158
c1.1,0,2,0.9,2,2s-0.9,2-2,2s-2-0.9-2-2S583.9,158,585,158z"/>
<path class="st0" d="M134,101v75h43.4v-31.6H209V101H134z M185.3,176l23.7-23.7h-23.7V176z"/>
<path class="st0" d="M1142.1,69c-3.5-0.1-6.9,1.3-9.5,4.1l-0.1-0.1l-35.2,34.7c-8.4,8.4-8.4,21.7,0,30c8.4,8.4,21.7,8.4,30,0
L1150,115l-3.2-3.4l-1.8,1.6l-21.1,21.1c-6.6,6.6-16.7,6.6-23.3,0c-6.6-6.6-6.6-16.7,0-23.3l35.2-34.7v-0.1
c3.2-3.6,9.4-3.3,13.2,0.1c3.7,3.3,3.7,9.2-0.1,13l-35.2,34.7c-1,1-2.2,1-3.2,0c-1-1-1-2.2,0-3.2l22.7-22.7l-3.2-3.4l-1.8,1.6
l-21.1,21.1c-2.7,2.7-2.7,7.3,0,10s7.3,2.7,10,0l35.2-34.7c5.6-5.6,5.6-14.6-0.1-19.8C1149.3,70.5,1145.7,69.1,1142.1,69L1142.1,69
z"/>
<path class="st0" d="M1185.9,196c-1.8,0-3.5-0.6-4.8-2.1l-0.1,0.1l-17.8-17.6c-4.2-4.2-4.2-11,0-15.2c4.2-4.2,11-4.2,15.2,0
l11.5,11.5l-1.6,1.7l-0.9-0.8l-10.7-10.7c-3.4-3.4-8.4-3.4-11.8,0c-3.4,3.4-3.4,8.4,0,11.8l17.8,17.6v0.1c1.6,1.8,4.7,1.7,6.7-0.1
c1.9-1.7,1.9-4.7-0.1-6.6l-17.8-17.6c-0.5-0.5-1.1-0.5-1.6,0c-0.5,0.5-0.5,1.1,0,1.6l11.5,11.5l-1.6,1.7l-0.9-0.8l-10.7-10.7
c-1.4-1.4-1.4-3.7,0-5c1.4-1.4,3.7-1.4,5,0L1191,184c2.8,2.8,2.8,7.4-0.1,10C1189.5,195.3,1187.7,196,1185.9,196L1185.9,196z"/>
<path class="st0" d="M1130.2,16.4c-1.5-1.5-3.5-2.4-5.8-2.3l0-0.1l-29.6-0.2c-7.1,0-12.7,5.6-12.7,12.7c0,7.1,5.6,12.7,12.7,12.7
l19.3,0l0.1-2.8l-1.4-0.1l-17.9,0c-5.6,0-9.9-4.3-9.9-9.9c0-5.6,4.3-9.9,9.9-9.9l29.6,0.2l0.1-0.1c2.9-0.2,5.4,2.6,5.5,5.7
c0.2,3-2.4,5.5-5.6,5.5l-29.6-0.2c-0.9,0-1.4-0.5-1.4-1.4c0-0.9,0.5-1.4,1.4-1.4l19.3,0l0.1-2.8l-1.4-0.1l-17.9,0
c-2.3,0-4.2,1.9-4.2,4.2c0,2.3,1.9,4.2,4.2,4.2l29.6,0.2c4.7,0,8.6-3.8,8.3-8.5C1132.6,20,1131.7,17.9,1130.2,16.4L1130.2,16.4z"/>
<path class="st0" d="M1198.1-37.2c0.6,2,0.3,4.2-0.9,6.2l0.1,0.1l-14.7,25.8c-3.5,6.1-11.3,8.2-17.4,4.7
c-6.1-3.5-8.2-11.3-4.7-17.4l9.6-16.7l2.5,1.3L1172-32l-8.9,15.5c-2.8,4.9-1.3,10.7,3.6,13.5c4.9,2.8,10.7,1.3,13.5-3.6l14.7-25.8
l0.1,0c1.6-2.4,0.5-5.9-2.1-7.6c-2.5-1.6-5.9-0.7-7.5,2.1l-14.7,25.8c-0.4,0.8-0.3,1.4,0.5,1.9c0.8,0.4,1.4,0.3,1.9-0.5l9.6-16.7
l2.5,1.3l-0.7,1.3l-8.9,15.5c-1.1,2-3.8,2.7-5.8,1.5c-2-1.1-2.7-3.8-1.5-5.8l14.7-25.8c2.4-4.1,7.6-5.5,11.5-3
C1196.2-41.1,1197.5-39.3,1198.1-37.2L1198.1-37.2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#ffffff" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<path d="M256,0C114.609,0,0,114.609,0,256c0,141.391,114.609,256,256,256c141.391,0,256-114.609,256-256
C512,114.609,397.391,0,256,0z M256,472c-119.297,0-216-96.703-216-216S136.703,40,256,40s216,96.703,216,216S375.297,472,256,472z
"/>
<g>
<path d="M249.703,201.25H188v-25h19.312c6.859,0,13.422-1.219,19.5-3.594c6.172-2.375,11.438-5.641,15.797-9.797
c4.358-4.203,7.922-9.25,10.547-15.234c2.734-5.906,4.047-12.5,4.047-19.625H284v256h-34.297V201.25z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#ffffff" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<path d="M256,0C114.609,0,0,114.609,0,256c0,141.391,114.609,256,256,256c141.391,0,256-114.609,256-256
C512,114.609,397.391,0,256,0z M256,472c-119.297,0-216-96.703-216-216S136.703,40,256,40s216,96.703,216,216S375.297,472,256,472z
"/>
<g>
<path d="M176,209.75c2.531-24.406,10.969-44.141,25.375-59.219c14.344-15.031,34-22.531,58.859-22.531
c12.233,0,23.172,2.141,32.594,6.484c9.422,4.297,17.375,10.141,23.719,17.484c6.328,7.281,11.219,15.547,14.516,24.797
c3.281,9.266,4.938,18.844,4.938,28.703c0,8.625-0.984,16.391-3.062,23.266c-2.095,6.875-4.953,12.984-8.688,18.297
c-3.75,5.438-8.031,10.375-13.109,15c-4.922,4.688-10.327,9.078-16.188,13.234c-10.845,8.405-22.125,16.452-33.672,24.202
c-11.594,7.75-22.719,16.531-33.375,26.328c-3.875,3.672-7.062,7.438-9.594,11.453c-2.5,4.017-4.594,9.031-6.266,15.017h117.375
V384H178.531v-24.203c0-10.047,3.188-20,9.625-29.578c6.438-9.734,14.438-19.188,24.125-28.219
c9.625-9.031,20.188-17.828,31.781-26.359c11.609-8.516,22.531-16.766,32.891-24.781c7.844-5.984,14.031-12.359,18.672-19.234
c4.516-6.859,6.859-15.625,6.859-26.344c0-15.172-3.812-27.031-11.734-35.531c-7.781-8.484-17.938-12.734-30.516-12.734
c-15.359,0-27.531,4.703-36.453,14.109c-9,9.375-13.438,22.25-13.438,38.625L176,209.75L176,209.75z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#ffffff" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<path d="M256,0C114.609,0,0,114.609,0,256c0,141.391,114.609,256,256,256c141.391,0,256-114.609,256-256
C512,114.609,397.391,0,256,0z M256,472c-119.297,0-216-96.703-216-216S136.703,40,256,40s216,96.703,216,216S375.297,472,256,472z
"/>
<g>
<path d="M182.828,204.781c2.688-24.062,9.672-42.922,20.938-56.5C215.031,134.766,232.812,128,257.25,128
c21.156,0,37.938,5.969,50.25,17.875s18.469,27.75,18.469,47.469c0,14.125-2.562,25.375-7.781,33.781
c-5.233,8.375-13.453,14.906-24.78,19.625c5.422,1.75,10.641,4.25,15.688,7.5c5.188,3.25,9.734,7.406,13.672,12.594
c4.062,5.156,7.267,11.234,9.734,18.344c2.344,7.047,3.5,15.359,3.5,25.095c0,12.172-2.078,22.688-6.234,31.75
c-4.28,9.188-9.983,16.905-17.077,22.983c-7.234,6.219-15.642,10.938-25.047,14.188c-9.531,3.233-19.673,4.797-30.392,4.797
c-21.969,0-40.156-6.983-54.5-20.983c-14.344-13.984-23.25-34.548-26.75-62h32.562c3.188,20,8.734,34.047,16.5,42.202
c7.75,8.031,18.531,12.062,32.188,12.062c6.156,0,12.094-1.017,17.703-3.048c5.641-2.016,10.516-5.016,14.812-9.016
c4.312-4,7.734-8.734,10.392-14.281c2.5-5.688,3.702-11.905,3.702-18.655c0-13.517-4.125-25.017-12.5-34.438
c-8.25-9.375-19.641-14.094-34.108-14.094h-18.516v-28.719h18.516c6.719,0,12.422-1.062,17.108-3.281
c4.656-2.234,8.484-5.094,11.453-8.625c2.953-3.5,5.031-7.5,6.22-11.875c1.297-4.469,1.797-8.875,1.797-13.25
c0-12.375-3.406-22.109-10.25-29.156c-6.828-7.078-15.922-10.594-27.188-10.594c-6.953,0-12.797,1.281-17.656,3.984
c-4.812,2.641-8.875,6.156-12.078,10.547c-3.188,4.453-5.719,9.594-7.625,15.484c-1.859,5.875-3.219,12.109-4,18.516H182.828z"/>
</g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB