Merge pull request #1 from Sherpa-Cash/TS_redesign

Redesign for Sherpa
This commit is contained in:
Tyler Smith 2021-05-24 23:43:12 -07:00 committed by GitHub
commit 1aba38223e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 1815 additions and 242 deletions

View File

@ -1,4 +1,4 @@
FROM tornadocash/phase2-bn254:phase2 as bin
FROM sherpacash/phase2-bn254/ as bin
FROM node:12-buster
WORKDIR /app

View File

@ -1,4 +1,4 @@
# Tornado.cash Trusted Setup Ceremony app
# Sherpa.cash Trusted Setup Ceremony app
> zk-SNARKs require a pre-existing setup between the prover and verifier. A set of public parameters define the “rules of the game” for the construction of zk-SNARKs. This app allows everyone to contribute with your source of entropy so that tornado.cash can be trustless.

58
assets/img/flags/cn.svg Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#FF4B55;" d="M29.589,366.395l-0.036-220.713c-0.003-12.607,6.722-24.257,17.639-30.562L238.315,4.731
c10.917-6.306,24.368-6.307,35.287-0.006L464.763,115.05c10.918,6.302,17.646,17.95,17.649,30.557l0.036,220.713
c0.003,12.607-6.722,24.257-17.639,30.563L273.685,507.271c-10.917,6.306-24.368,6.307-35.287,0.006L47.238,396.952
C36.318,390.65,29.591,379.002,29.589,366.395z"/>
<g>
<path style="fill:#FFE15A;" d="M125.125,125.189l9.004,26.996l28.457,0.22c3.684,0.029,5.212,4.73,2.248,6.919l-22.893,16.905
l8.584,27.133c1.111,3.513-2.888,6.418-5.886,4.276l-23.152-16.548l-23.151,16.548c-2.998,2.143-6.997-0.764-5.886-4.276
l8.584-27.133l-22.893-16.905c-2.964-2.188-1.436-6.891,2.248-6.919l28.457-0.22l9.004-26.996
C119.016,121.694,123.959,121.694,125.125,125.189z"/>
<path style="fill:#FFE15A;" d="M228.462,131.842l6.456,8.804l10.42-3.258c1.348-0.422,2.458,1.116,1.633,2.263l-6.378,8.86
l6.318,8.903c0.819,1.152-0.301,2.683-1.648,2.252l-10.397-3.328l-6.514,8.76c-0.844,1.135-2.646,0.542-2.652-0.871l-0.049-10.917
l-10.345-3.489c-1.34-0.452-1.333-2.348,0.01-2.79l10.367-3.419l0.121-10.916C225.82,131.282,227.626,130.701,228.462,131.842z"/>
<path style="fill:#FFE15A;" d="M189.155,105.599l10.853,1.18l4.63-9.887c0.6-1.28,2.483-1.061,2.772,0.324l2.232,10.686
l10.833,1.348c1.402,0.175,1.776,2.034,0.55,2.737l-9.474,5.425l2.066,10.72c0.267,1.387-1.386,2.317-2.433,1.368l-8.087-7.334
l-9.557,5.277c-1.237,0.684-2.632-0.601-2.053-1.891l4.476-9.957l-7.973-7.458C186.96,107.17,187.749,105.447,189.155,105.599z"/>
<path style="fill:#FFE15A;" d="M206.312,211.398l-6.456,8.804l-10.42-3.258c-1.348-0.422-2.458,1.116-1.633,2.263l6.378,8.86
l-6.318,8.903c-0.819,1.152,0.302,2.683,1.648,2.252l10.397-3.328l6.514,8.76c0.844,1.135,2.646,0.542,2.652-0.871l0.047-10.917
l10.345-3.489c1.34-0.451,1.333-2.348-0.009-2.79l-10.367-3.419l-0.121-10.917C208.953,210.839,207.148,210.258,206.312,211.398z"
/>
<path style="fill:#FFE15A;" d="M245.618,186.737l-10.853,1.18l-4.63-9.886c-0.6-1.28-2.483-1.061-2.772,0.322l-2.232,10.686
l-10.833,1.348c-1.402,0.175-1.776,2.034-0.55,2.737l9.474,5.425l-2.066,10.72c-0.267,1.388,1.386,2.317,2.433,1.368l8.087-7.334
l9.557,5.277c1.237,0.684,2.632-0.602,2.053-1.891l-4.476-9.957l7.972-7.458C247.815,188.309,247.024,186.585,245.618,186.737z"/>
</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>

After

Width:  |  Height:  |  Size: 2.8 KiB

43
assets/img/flags/de.svg Normal file
View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 511.999 511.999" style="enable-background:new 0 0 511.999 511.999;" xml:space="preserve">
<path style="fill:#FFE15A;" d="M482.445,341.601l-0.029-171.203l-0.004-24.793c-0.003-12.607-6.729-24.255-17.649-30.557
L273.602,4.725c-10.918-6.302-24.37-6.3-35.287,0.006L47.19,115.118c-10.917,6.305-17.64,17.955-17.639,30.562l0.004,24.717
L29.583,341.6l0.004,24.793c0.003,12.607,6.73,24.255,17.649,30.557l191.161,110.325c10.92,6.302,24.37,6.298,35.287-0.006
L464.809,396.88c10.917-6.305,17.64-17.955,17.639-30.563L482.445,341.601z"/>
<polygon style="fill:#FF4B55;" points="482.417,170.398 254.751,136.033 29.556,170.398 29.585,341.601 482.445,341.601 "/>
<path style="fill:#464655;" d="M482.412,145.605c-0.003-12.607-6.729-24.255-17.649-30.557L273.602,4.725
c-10.918-6.302-24.37-6.3-35.287,0.006L47.19,115.118c-10.917,6.305-17.64,17.955-17.639,30.562l0.004,24.717h452.86
L482.412,145.605z"/>
<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>

After

Width:  |  Height:  |  Size: 1.3 KiB

115
assets/img/flags/es.svg Normal file
View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#FFD250;" d="M482.413,145.605c-0.001-6.832-1.992-13.374-5.54-18.945c-2.999-4.709-7.107-8.724-12.108-11.612
L273.603,4.725c-10.918-6.302-24.37-6.3-35.287,0.006L47.191,115.118c-4.975,2.873-9.065,6.864-12.059,11.542
c-3.575,5.587-5.581,12.158-5.58,19.021l0.036,220.713c0.001,6.832,1.992,13.374,5.54,18.945c2.999,4.709,7.107,8.725,12.108,11.612
l191.161,110.325c10.92,6.302,24.37,6.298,35.287-0.006l191.125-110.389c4.975-2.873,9.065-6.864,12.059-11.542
c3.577-5.587,5.581-12.158,5.58-19.021L482.413,145.605z"/>
<g>
<path style="fill:#C8414B;" d="M47.239,396.951L238.4,507.276c10.92,6.302,24.37,6.298,35.287-0.006l191.125-110.389
c4.975-2.873,9.065-6.864,12.059-11.542H35.129C38.129,390.048,42.237,394.065,47.239,396.951z"/>
<path style="fill:#C8414B;" d="M464.766,115.05L273.603,4.725c-10.918-6.302-24.37-6.3-35.287,0.006L47.191,115.118
c-4.975,2.873-9.065,6.864-12.059,11.542h441.742C473.874,121.953,469.767,117.936,464.766,115.05z"/>
<path style="fill:#C8414B;" d="M234.955,256.264l8.923-40.15c0.822-3.698-1.992-7.206-5.78-7.206h-6.286
c-3.788,0-6.602,3.508-5.78,7.206L234.955,256.264z"/>
</g>
<rect x="224.43" y="235.21" style="fill:#F5F5F5;" width="21.05" height="89.45"/>
<rect x="219.17" y="224.69" style="fill:#FAB446;" width="31.566" height="10.523"/>
<g>
<rect x="198.12" y="256.27" style="fill:#C8414B;" width="52.611" height="10.523"/>
<polygon style="fill:#C8414B;" points="250.74,298.357 219.17,287.834 219.17,277.31 250.74,287.834 "/>
<path style="fill:#C8414B;" d="M77.103,256.264l8.923-40.15c0.822-3.698-1.992-7.206-5.78-7.206H73.96
c-3.788,0-6.602,3.508-5.78,7.206L77.103,256.264z"/>
</g>
<path style="fill:#F5F5F5;" d="M113.935,224.693c-5.812,0-10.523,4.711-10.523,10.523v68.403c0,12.786,11.933,36.832,52.617,36.832
s52.617-24.046,52.617-36.832v-68.403c0-5.812-4.711-10.523-10.523-10.523H113.935z"/>
<g>
<path style="fill:#C8414B;" d="M156.029,277.31h-52.617v-42.62c0-5.521,4.476-9.997,9.997-9.997h42.62V277.31z"/>
<path style="fill:#C8414B;" d="M156.029,277.31h52.617v27.624c0,13.804-11.189,24.993-24.993,24.993h-2.631
c-13.804,0-24.993-11.189-24.993-24.993L156.029,277.31L156.029,277.31z"/>
</g>
<path style="fill:#FAB446;" d="M103.412,277.31h52.617v27.624c0,13.804-11.189,24.993-24.993,24.993h-2.631
c-13.804,0-24.993-11.189-24.993-24.993L103.412,277.31L103.412,277.31z"/>
<g>
<path style="fill:#C8414B;" d="M145.505,324.547V277.31h-10.523v52.087C138.896,328.602,142.433,326.869,145.505,324.547z"/>
<path style="fill:#C8414B;" d="M124.459,329.397V277.31h-10.523v47.237C117.008,326.869,120.545,328.602,124.459,329.397z"/>
</g>
<rect x="113.93" y="256.27" style="fill:#FFB441;" width="31.566" height="10.523"/>
<g>
<rect x="113.93" y="235.21" style="fill:#FAB446;" width="31.566" height="10.523"/>
<rect x="119.19" y="241.47" style="fill:#FAB446;" width="21.05" height="19.07"/>
</g>
<rect x="66.58" y="235.21" style="fill:#F5F5F5;" width="21.05" height="89.45"/>
<g>
<rect x="61.32" y="319.4" style="fill:#FAB446;" width="31.566" height="10.523"/>
<rect x="61.32" y="224.69" style="fill:#FAB446;" width="31.566" height="10.523"/>
</g>
<rect x="56.06" y="329.92" style="fill:#5064AA;" width="42.09" height="10.523"/>
<rect x="224.43" y="319.4" style="fill:#FAB446;" width="31.566" height="10.523"/>
<rect x="213.91" y="329.92" style="fill:#5064AA;" width="42.09" height="10.523"/>
<rect x="124.45" y="214.17" style="fill:#FAB446;" width="63.15" height="10.523"/>
<rect x="150.77" y="182.6" style="fill:#FFB441;" width="10.523" height="31.566"/>
<g>
<path style="fill:#F5F5F5;" d="M145.505,198.384c-8.704,0-15.786-7.081-15.786-15.786c0-8.704,7.081-15.786,15.786-15.786
c8.704,0,15.786,7.081,15.786,15.786S154.211,198.384,145.505,198.384z M145.505,177.338c-2.903,0-5.262,2.358-5.262,5.261
s2.358,5.261,5.262,5.261c2.903,0,5.262-2.358,5.262-5.261S148.408,177.338,145.505,177.338z"/>
<path style="fill:#F5F5F5;" d="M166.552,198.384c-8.704,0-15.786-7.081-15.786-15.786c0-8.704,7.081-15.786,15.786-15.786
c8.704,0,15.786,7.081,15.786,15.786S175.257,198.384,166.552,198.384z M166.552,177.338c-2.903,0-5.262,2.358-5.262,5.261
s2.358,5.261,5.262,5.261c2.903,0,5.261-2.358,5.261-5.261S169.455,177.338,166.552,177.338z"/>
<path style="fill:#F5F5F5;" d="M187.599,208.908c-8.704,0-15.786-7.081-15.786-15.786c0-8.704,7.081-15.786,15.786-15.786
c8.704,0,15.786,7.081,15.786,15.786S196.304,208.908,187.599,208.908z M187.599,187.861c-2.903,0-5.262,2.358-5.262,5.262
c0,2.903,2.358,5.262,5.262,5.262c2.903,0,5.261-2.358,5.261-5.262C192.861,190.219,190.503,187.861,187.599,187.861z"/>
<path style="fill:#F5F5F5;" d="M124.459,208.908c-8.704,0-15.786-7.081-15.786-15.786c0-8.704,7.081-15.786,15.786-15.786
c8.704,0,15.786,7.081,15.786,15.786C140.244,201.827,133.164,208.908,124.459,208.908z M124.459,187.861
c-2.903,0-5.261,2.358-5.261,5.262c0,2.903,2.358,5.262,5.261,5.262s5.262-2.358,5.262-5.262S127.362,187.861,124.459,187.861z"/>
</g>
<path style="fill:#FAB446;" d="M187.599,298.357v5.262c0,2.902-2.361,5.261-5.262,5.261c-2.902,0-5.261-2.361-5.261-5.261v-5.262
H187.599 M198.122,287.834h-31.57v15.786c0,8.704,7.082,15.786,15.786,15.786s15.786-7.082,15.786-15.786v-15.786H198.122z"/>
<path style="fill:#FFA0D2;" d="M182.864,266.787h-1.052c-5.521,0-9.997-4.476-9.997-9.997v-11.576c0-5.521,4.476-9.997,9.997-9.997
h1.052c5.521,0,9.997,4.476,9.997,9.997v11.576C192.861,262.311,188.385,266.787,182.864,266.787z"/>
<circle style="fill:#5064AA;" cx="156.03" cy="277.31" r="15.786"/>
<rect x="150.77" y="161.56" style="fill:#FAB446;" width="10.523" height="31.566"/>
<path style="fill:#C8414B;" d="M124.459,214.17l-10.523-10.523l6.165-6.165c9.529-9.529,22.453-14.882,35.929-14.882l0,0
c13.476,0,26.4,5.354,35.929,14.882l6.165,6.165l-10.523,10.523H124.459z"/>
<g>
<circle style="fill:#FFD250;" cx="156.03" cy="203.64" r="5.261"/>
<circle style="fill:#FFD250;" cx="134.98" cy="203.64" r="5.261"/>
<circle style="fill:#FFD250;" cx="177.08" cy="203.64" r="5.261"/>
</g>
<g>
<rect x="61.32" y="256.27" style="fill:#C8414B;" width="52.611" height="10.523"/>
<polygon style="fill:#C8414B;" points="61.318,298.357 92.889,287.834 92.889,277.31 61.318,287.834 "/>
</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>

After

Width:  |  Height:  |  Size: 6.6 KiB

43
assets/img/flags/fr.svg Normal file
View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M482.412,145.606c-0.003-12.607-6.729-24.255-17.649-30.557L331.812,38.32l-58.21-33.595
c-10.918-6.302-24.37-6.3-35.287,0.006l-58.127,33.572L47.19,115.119c-10.917,6.305-17.64,17.955-17.639,30.562l0.036,220.713
c0.003,12.607,6.729,24.255,17.649,30.557l132.951,76.729l58.21,33.596c10.92,6.302,24.37,6.298,35.287-0.006l58.128-33.573
l132.997-76.815c10.917-6.305,17.64-17.955,17.639-30.563L482.412,145.606z"/>
<path style="fill:#41479B;" d="M47.19,115.119c-10.917,6.305-17.64,17.955-17.639,30.562l0.036,220.713
c0.003,12.607,6.729,24.255,17.649,30.557l132.951,76.729V38.304L47.19,115.119z"/>
<path style="fill:#FF4B55;" d="M464.811,396.882c10.917-6.305,17.64-17.955,17.639-30.563l-0.036-220.713
c-0.003-12.607-6.729-24.255-17.649-30.557L331.814,38.32v435.377L464.811,396.882z"/>
<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>

After

Width:  |  Height:  |  Size: 1.3 KiB

63
assets/img/flags/gb.svg Normal file
View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M482.436,296.746l-0.014-81.491l-0.005-27.164l-0.008-42.486
c-0.001-11.607-5.715-22.389-15.14-28.946c-0.812-0.565-1.642-1.11-2.509-1.611l-23.711-13.684l-22.198-12.81l-17.87-10.313
l-94.999-54.826l-19.995-11.539l-12.39-7.151c-10.918-6.302-24.37-6.3-35.287,0.006l-12.307,7.108L206.01,23.387L111.024,78.25
L81.077,95.546l-22.191,12.818l-11.697,6.756c-0.841,0.486-1.648,1.015-2.439,1.561c-9.465,6.556-15.201,17.365-15.2,29.001
l0.007,42.41l0.005,27.164l0.014,81.491l0.005,27.164l0.007,42.485c0.003,11.607,5.715,22.389,15.14,28.946
c0.812,0.565,1.642,1.11,2.509,1.611l23.377,13.491l22.198,12.811l18.204,10.506l94.999,54.826l19.995,11.539l12.39,7.151
c10.918,6.302,24.37,6.298,35.287-0.006l12.307-7.108l19.995-11.548l94.989-54.863l27.325-15.782l22.191-12.818l14.319-8.27
c0.841-0.486,1.648-1.013,2.439-1.562c9.465-6.556,15.201-17.365,15.2-29.001l-0.008-42.41L482.436,296.746z"/>
<g>
<polygon style="fill:#41479B;" points="305.985,488.614 400.974,433.751 305.985,349.203 "/>
<polygon style="fill:#41479B;" points="400.984,78.241 305.985,23.415 305.985,162.798 "/>
<polygon style="fill:#41479B;" points="111.015,433.759 206.013,488.585 206.013,349.203 "/>
<path style="fill:#41479B;" d="M467.249,395.319c9.465-6.556,15.201-17.365,15.2-29.001l-0.008-42.41H387.02L467.249,395.319z"/>
<path style="fill:#41479B;" d="M29.58,323.91l0.007,42.485c0.003,11.607,5.715,22.389,15.14,28.946l80.252-71.432H29.58V323.91z"/>
<path style="fill:#41479B;" d="M44.751,116.68c-9.465,6.556-15.201,17.365-15.2,29.001l0.007,42.41h95.421L44.751,116.68z"/>
<path style="fill:#41479B;" d="M482.418,188.091l-0.008-42.486c-0.001-11.607-5.715-22.389-15.14-28.946l-80.252,71.432H482.418z"
/>
<polygon style="fill:#41479B;" points="206.013,23.387 111.024,78.25 206.013,162.798 "/>
</g>
<g>
<path style="fill:#FF4B55;" d="M285.991,11.875L273.6,4.725c-10.918-6.302-24.37-6.3-35.287,0.006l-12.307,7.108v203.416H29.562
l0.014,81.491h196.431v203.379l12.39,7.151c10.918,6.302,24.37,6.298,35.287-0.006l12.307-7.108V296.746h196.445l-0.014-81.491
H285.991V11.875z"/>
<polygon style="fill:#FF4B55;" points="168.738,323.91 70.612,410.443 92.81,423.254 205.463,323.91 "/>
<polygon style="fill:#FF4B55;" points="321.639,323.91 428.299,417.969 450.491,405.152 358.363,323.91 "/>
<polygon style="fill:#FF4B55;" points="186.018,188.091 81.077,95.546 58.885,108.364 149.293,188.091 "/>
<polygon style="fill:#FF4B55;" points="305.985,188.091 342.71,188.091 441.052,101.366 418.854,88.554 "/>
</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>

After

Width:  |  Height:  |  Size: 3.0 KiB

42
assets/img/flags/jp.svg Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M29.589,366.395l-0.036-220.713c-0.003-12.607,6.722-24.257,17.639-30.562L238.315,4.731
c10.917-6.306,24.368-6.307,35.287-0.006L464.763,115.05c10.918,6.302,17.646,17.95,17.649,30.557l0.036,220.713
c0.003,12.607-6.722,24.257-17.639,30.563L273.685,507.271c-10.917,6.306-24.368,6.307-35.287,0.006L47.238,396.952
C36.318,390.65,29.591,379.002,29.589,366.395z"/>
<path style="fill:#FF4B55;" d="M308.939,176.584c-43.847-29.231-103.071-17.279-132.283,26.492c-0.482,0.72-0.94,1.448-1.377,2.184
c-27.425,43.612-15.277,101.367,27.812,130.118c43.847,29.231,103.052,17.431,132.244-26.492c0.477-0.712,0.93-1.433,1.363-2.162
C364.142,263.111,352.036,205.341,308.939,176.584z"/>
<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>

After

Width:  |  Height:  |  Size: 1.2 KiB

101
assets/img/flags/kr.svg Normal file
View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M29.589,366.395l-0.036-220.713c-0.003-12.607,6.722-24.257,17.639-30.562L238.315,4.731
c10.917-6.306,24.368-6.307,35.287-0.006L464.763,115.05c10.92,6.302,17.646,17.95,17.649,30.557l0.036,220.713
c0.003,12.607-6.722,24.257-17.639,30.563L273.685,507.271c-10.917,6.306-24.368,6.307-35.287,0.006L47.238,396.952
C36.318,390.65,29.591,379.002,29.589,366.395z"/>
<path style="fill:#FF4B55;" d="M308.977,176.585c-43.847-29.231-103.071-17.279-132.283,26.492
c-14.652,21.848-8.698,51.535,13.226,66.151c21.905,14.616,51.497,8.68,66.113-13.244c14.616-21.924,44.227-27.785,66.133-13.245
c21.942,14.616,27.842,44.303,13.206,66.151C364.605,265.039,352.788,205.816,308.977,176.585"/>
<path style="fill:#41479B;" d="M176.695,203.075c-14.652,21.848-8.698,51.535,13.226,66.151
c21.905,14.616,51.497,8.68,66.113-13.244c14.616-21.924,44.227-27.785,66.133-13.245c21.942,14.616,27.842,44.303,13.206,66.151
c-29.192,43.923-88.397,55.722-132.244,26.492C159.32,306.147,147.464,246.922,176.695,203.075"/>
<g>
<path style="fill:#464655;" d="M357.527,140.542l17.333,26.053c1.457,2.189,0.867,5.145-1.317,6.607l-4.396,2.943
c-2.193,1.468-5.161,0.877-6.626-1.32l-17.355-26.047c-1.461-2.192-0.869-5.151,1.321-6.613l4.418-2.949
C353.099,137.752,356.064,138.345,357.527,140.542z"/>
<path style="fill:#464655;" d="M384.269,180.712l17.39,26.037c1.468,2.198,0.869,5.172-1.337,6.631l-4.414,2.917
c-2.191,1.447-5.139,0.854-6.598-1.33l-17.38-26.009c-1.463-2.191-0.875-5.152,1.315-6.617l4.404-2.944
C379.84,177.931,382.805,178.521,384.269,180.712z"/>
<path style="fill:#464655;" d="M376.084,128.157l44.135,66.236c1.461,2.192,0.869,5.154-1.323,6.616l-4.434,2.957
c-2.193,1.462-5.155,0.87-6.617-1.323l-44.149-66.231c-1.462-2.193-0.869-5.157,1.326-6.618l4.449-2.96
C371.663,125.371,374.623,125.965,376.084,128.157z"/>
<path style="fill:#464655;" d="M394.593,115.79l17.371,26.104c1.463,2.198,0.862,5.167-1.341,6.623l-4.418,2.919
c-2.192,1.448-5.142,0.852-6.599-1.333l-17.385-26.07c-1.462-2.193-0.87-5.155,1.323-6.617l4.431-2.954
C390.168,113.001,393.132,113.595,394.593,115.79z"/>
<path style="fill:#464655;" d="M421.354,156.044l17.345,26.05c1.458,2.191,0.869,5.149-1.32,6.611l-4.405,2.945
c-2.193,1.467-5.161,0.875-6.623-1.322l-17.345-26.05c-1.458-2.191-0.869-5.149,1.32-6.611l4.405-2.945
C416.924,153.255,419.891,153.847,421.354,156.044z"/>
<path style="fill:#464655;" d="M122.74,297.058l44.129,66.163c1.462,2.192,0.871,5.154-1.32,6.616l-4.42,2.95
c-2.192,1.463-5.156,0.872-6.618-1.321l-44.13-66.162c-1.462-2.192-0.871-5.154,1.321-6.616l4.42-2.95
C118.313,294.274,121.276,294.866,122.74,297.058z"/>
<path style="fill:#464655;" d="M104.213,309.435l17.325,25.988c1.46,2.189,0.871,5.147-1.316,6.612l-4.395,2.942
c-2.192,1.467-5.157,0.879-6.622-1.316l-17.348-25.982c-1.463-2.192-0.872-5.154,1.318-6.617l4.416-2.949
C99.787,306.649,102.751,307.24,104.213,309.435z"/>
<path style="fill:#464655;" d="M130.987,349.619l17.346,26.053c1.458,2.191,0.869,5.149-1.32,6.611l-4.408,2.947
c-2.193,1.466-5.16,0.875-6.622-1.321l-17.357-26.049c-1.46-2.192-0.869-5.151,1.321-6.613l4.419-2.95
C126.56,346.83,129.525,347.423,130.987,349.619z"/>
<path style="fill:#464655;" d="M85.685,321.806l44.102,66.167c1.46,2.191,0.87,5.15-1.318,6.613l-4.406,2.947
c-2.192,1.466-5.157,0.875-6.621-1.318l-44.128-66.158c-1.462-2.192-0.87-5.156,1.323-6.617l4.434-2.955
C81.261,319.021,84.224,319.614,85.685,321.806z"/>
<path style="fill:#464655;" d="M110.389,206.754l44.123-66.217c1.462-2.194,4.426-2.787,6.619-1.322l4.419,2.949
c2.191,1.462,2.782,4.424,1.32,6.616l-44.14,66.179c-1.458,2.187-4.411,2.782-6.603,1.331l-4.4-2.913
C109.523,211.92,108.925,208.951,110.389,206.754z"/>
<path style="fill:#464655;" d="M91.852,194.395l44.132-66.229c1.462-2.196,4.429-2.787,6.622-1.321l4.408,2.947
c2.188,1.462,2.778,4.421,1.32,6.612l-44.119,66.234c-1.462,2.194-4.428,2.787-6.621,1.323l-4.419-2.95
C90.983,199.546,90.392,196.587,91.852,194.395z"/>
<path style="fill:#464655;" d="M73.307,182.09l44.134-66.296c1.462-2.197,4.43-2.789,6.623-1.322l4.406,2.947
c2.187,1.462,2.778,4.419,1.321,6.609l-44.109,66.304c-1.461,2.196-4.425,2.789-6.618,1.327l-4.434-2.955
C72.441,187.242,71.847,184.281,73.307,182.09z"/>
<path style="fill:#464655;" d="M345.173,363.221l17.348-25.98c1.465-2.193,4.431-2.783,6.622-1.315l4.395,2.943
c2.187,1.463,2.775,4.421,1.315,6.611l-17.324,25.987c-1.462,2.193-4.426,2.785-6.619,1.321l-4.418-2.949
C344.3,368.376,343.709,365.413,345.173,363.221z"/>
<path style="fill:#464655;" d="M371.928,323.172l17.374-26.11c1.461-2.194,4.425-2.789,6.618-1.327l4.428,2.952
c2.194,1.462,2.785,4.428,1.321,6.619l-17.411,26.069c-1.46,2.186-4.413,2.779-6.603,1.327l-4.391-2.91
C371.064,328.336,370.466,325.369,371.928,323.172z"/>
<path style="fill:#464655;" d="M363.694,375.663l17.358-26.049c1.462-2.193,4.424-2.787,6.617-1.325l4.436,2.958
c2.192,1.461,2.784,4.421,1.325,6.614l-17.347,26.052c-1.46,2.193-4.421,2.788-6.614,1.327l-4.448-2.96
C362.826,380.819,362.233,377.856,363.694,375.663z"/>
<path style="fill:#464655;" d="M390.476,335.413l17.368-25.988c1.463-2.189,4.423-2.779,6.613-1.318l4.433,2.955
c2.194,1.463,2.785,4.428,1.321,6.621l-17.366,25.989c-1.463,2.189-4.423,2.779-6.613,1.32l-4.435-2.957
C389.603,340.571,389.01,337.606,390.476,335.413z"/>
<path style="fill:#464655;" d="M382.227,387.967l17.376-26.004c1.458-2.183,4.408-2.777,6.598-1.33l4.418,2.919
c2.204,1.457,2.805,4.429,1.34,6.627l-17.364,26.038c-1.462,2.192-4.424,2.784-6.616,1.323l-4.431-2.954
C381.354,393.126,380.762,390.16,382.227,387.967z"/>
<path style="fill:#464655;" d="M409.016,347.85l17.334-26.034c1.462-2.197,4.43-2.789,6.623-1.322l4.401,2.943
c2.189,1.463,2.778,4.424,1.317,6.614l-17.348,26c-1.46,2.187-4.414,2.782-6.604,1.328l-4.388-2.908
C408.151,353.013,407.554,350.046,409.016,347.85z"/>
</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>

After

Width:  |  Height:  |  Size: 6.3 KiB

42
assets/img/flags/ru.svg Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#F5F5F5;" d="M482.445,341.81l-0.029-171.619l-0.004-24.585c-0.003-12.607-6.729-24.255-17.649-30.557
L273.602,4.725c-10.918-6.302-24.37-6.3-35.287,0.006L47.19,115.118c-10.917,6.305-17.64,17.955-17.639,30.562l0.004,24.51
l0.029,171.619l0.004,24.585C29.59,379,36.317,390.648,47.236,396.95l191.161,110.325c10.918,6.302,24.37,6.298,35.287-0.006
L464.809,396.88c10.917-6.305,17.64-17.955,17.639-30.563L482.445,341.81z"/>
<polygon style="fill:#41479B;" points="482.417,170.191 29.556,170.191 29.585,341.81 254.751,368.469 482.445,341.81 "/>
<path style="fill:#FF4B55;" d="M482.445,341.81H29.585l0.004,24.585c0.003,12.607,6.729,24.255,17.649,30.557l191.161,110.325
c10.918,6.302,24.37,6.298,35.287-0.006l191.125-110.389c10.917-6.305,17.64-17.955,17.639-30.563L482.445,341.81z"/>
<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>

After

Width:  |  Height:  |  Size: 1.3 KiB

49
assets/img/flags/tr.svg Normal file
View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
<path style="fill:#FF4B55;" d="M29.589,366.395l-0.036-220.713c-0.003-12.607,6.722-24.257,17.639-30.562L238.315,4.731
c10.917-6.306,24.368-6.307,35.287-0.006L464.763,115.05c10.918,6.302,17.646,17.95,17.649,30.557l0.036,220.713
c0.003,12.607-6.722,24.257-17.639,30.563L273.685,507.271c-10.917,6.306-24.368,6.307-35.287,0.006L47.238,396.952
C36.318,390.65,29.591,379.002,29.589,366.395z"/>
<g>
<path style="fill:#F5F5F5;" d="M243.879,230.326l11.746,15.365l18.34-6.138c1.026-0.344,1.898,0.816,1.283,1.706l-10.983,15.918
l11.506,15.544c0.644,0.869-0.19,2.057-1.226,1.748l-18.534-5.527l-11.228,15.746c-0.629,0.881-2.016,0.455-2.042-0.626
l-0.471-19.333l-18.445-5.813c-1.031-0.325-1.056-1.776-0.035-2.136l18.243-6.422l-0.171-19.338
C241.85,229.938,243.223,229.467,243.879,230.326z"/>
<path style="fill:#F5F5F5;" d="M178.929,315.98c-33.1,0-59.95-26.85-59.95-59.98c0-33.068,26.85-59.979,59.95-59.979
c12.315,0,23.672,3.788,33.136,10.198c1.45,0.982,3.103-0.922,1.889-2.184c-14.145-14.706-34.164-23.677-56.36-22.92
c-38.135,1.301-69.703,31.876-72.14,69.955c-2.79,43.616,31.745,79.862,74.743,79.862c21.18,0,40.216-8.855,53.81-23.012
c1.201-1.251-0.457-3.127-1.892-2.153C202.64,312.188,191.266,315.98,178.929,315.98z"/>
</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>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><path d="M 25 2 C 15.058594 2 7 4.6875 7 8 C 7 8 7 16.082031 7 25 C 7 30.082031 12.417969 44.082031 25 47 C 37.582031 44.082031 43 30.082031 43 25 C 43 16.082031 43 8 43 8 C 43 4.6875 34.941406 2 25 2 Z M 17 11 C 20.4375 11 22.195313 14.074219 22.5625 14.4375 C 23.148438 15.023438 23.148438 15.976563 22.5625 16.558594 C 21.976563 17.144531 21.023438 17.144531 20.441406 16.558594 C 20.027344 16.148438 18.6875 13 16 13 C 14.613281 13 12.953125 13.640625 11 15 C 12.855469 11.878906 15.003906 11 17 11 Z M 20 18.5 C 19.082031 19.40625 17.640625 20 16 20 C 14.359375 20 12.917969 19.40625 12 18.5 C 12.917969 17.59375 14.359375 17 16 17 C 17.640625 17 19.082031 17.59375 20 18.5 Z M 27 43 L 25 45 L 23 43 L 23 38 L 27 38 Z M 34 34 L 27 34 L 25 32 L 23 34 L 16 34 L 11 26 L 17 31 L 21 31 L 24 28 L 26 28 L 29 31 L 33 31 L 39 26 Z M 30 18.5 C 30.917969 17.59375 32.359375 17 34 17 C 35.640625 17 37.082031 17.59375 38 18.5 C 37.082031 19.40625 35.640625 20 34 20 C 32.359375 20 30.917969 19.40625 30 18.5 Z M 34 13 C 31.3125 13 29.972656 16.148438 29.5625 16.5625 C 28.976563 17.148438 28.023438 17.148438 27.441406 16.5625 C 26.855469 15.976563 26.855469 15.023438 27.441406 14.441406 C 27.804688 14.074219 29.5625 11 33 11 C 34.996094 11 37.144531 11.878906 39 15 C 37.046875 13.640625 35.386719 13 34 13 Z" fill="#94FEBF"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
<path
d="M 25 2 C 15.058594 2 7 4.6875 7 8 C 7 8 7 16.082031 7 25 C 7 30.082031 12.417969 44.082031 25 47 C 37.582031 44.082031 43 30.082031 43 25 C 43 16.082031 43 8 43 8 C 43 4.6875 34.941406 2 25 2 Z M 17 11 C 20.4375 11 22.195313 14.074219 22.5625 14.4375 C 23.148438 15.023438 23.148438 15.976563 22.5625 16.558594 C 21.976563 17.144531 21.023438 17.144531 20.441406 16.558594 C 20.027344 16.148438 18.6875 13 16 13 C 14.613281 13 12.953125 13.640625 11 15 C 12.855469 11.878906 15.003906 11 17 11 Z M 20 18.5 C 19.082031 19.40625 17.640625 20 16 20 C 14.359375 20 12.917969 19.40625 12 18.5 C 12.917969 17.59375 14.359375 17 16 17 C 17.640625 17 19.082031 17.59375 20 18.5 Z M 27 43 L 25 45 L 23 43 L 23 38 L 27 38 Z M 34 34 L 27 34 L 25 32 L 23 34 L 16 34 L 11 26 L 17 31 L 21 31 L 24 28 L 26 28 L 29 31 L 33 31 L 39 26 Z M 30 18.5 C 30.917969 17.59375 32.359375 17 34 17 C 35.640625 17 37.082031 17.59375 38 18.5 C 37.082031 19.40625 35.640625 20 34 20 C 32.359375 20 30.917969 19.40625 30 18.5 Z M 34 13 C 31.3125 13 29.972656 16.148438 29.5625 16.5625 C 28.976563 17.148438 28.023438 17.148438 27.441406 16.5625 C 26.855469 15.976563 26.855469 15.023438 27.441406 14.441406 C 27.804688 14.074219 29.5625 11 33 11 C 34.996094 11 37.144531 11.878906 39 15 C 37.046875 13.640625 35.386719 13 34 13 Z"
fill="#138198"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="9" height="16"><path fill-rule="evenodd" d="M8.713 1.691L2.404 8l6.309 6.309a.992.992 0 1 1-1.404 1.404L.353 8.758C.332 8.74.306 8.733.287 8.713A.984.984 0 0 1-.002 8a.984.984 0 0 1 .289-.713c.019-.02.045-.027.066-.044L7.309.287a.992.992 0 1 1 1.404 1.404z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="9" height="16">
<path fill-rule="evenodd"
d="M8.713 1.691L2.404 8l6.309 6.309a.992.992 0 1 1-1.404 1.404L.353 8.758C.332 8.74.306 8.733.287 8.713A.984.984 0 0 1-.002 8a.984.984 0 0 1 .289-.713c.019-.02.045-.027.066-.044L7.309.287a.992.992 0 1 1 1.404 1.404z"/>
</svg>

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 325 B

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><path fill-rule="evenodd" fill="#94FEBF" d="M15 14h-1v1a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h1V3a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3zM3 6a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1H3zm13-3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v1h5a3 3 0 0 1 3 3v5h1a1 1 0 0 0 1-1V3z"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18">
<path fill-rule="evenodd" fill="#eee"
d="M15 14h-1v1a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h1V3a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3zM3 6a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1H3zm13-3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1v1h5a3 3 0 0 1 3 3v5h1a1 1 0 0 0 1-1V3z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 374 B

After

Width:  |  Height:  |  Size: 383 B

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="17"><path fill="#94FEBF" fill-rule="evenodd" d="M8.999 0C4.03 0 0 3.902 0 8.716c0 3.85 2.578 7.116 6.156 8.269.45.081.614-.188.614-.42 0-.207-.008-.755-.012-1.482-2.503.526-3.032-1.169-3.032-1.169-.408-1.007-.999-1.274-.999-1.274-.818-.541.061-.53.061-.53.903.062 1.378.898 1.378.898.803 1.332 2.107.948 2.62.724.081-.563.314-.947.572-1.165-1.999-.22-4.1-.968-4.1-4.307 0-.952.351-1.73.927-2.34-.093-.22-.402-1.106.088-2.305 0 0 .756-.235 2.475.893a8.827 8.827 0 0 1 4.507.001c1.717-1.128 2.472-.893 2.472-.893.491 1.2.182 2.085.09 2.305.577.61.925 1.388.925 2.34 0 3.348-2.104 4.084-4.108 4.3.322.269.61.801.61 1.614 0 1.165-.011 2.105-.011 2.39 0 .234.162.505.619.419C15.424 15.83 18 12.565 18 8.716 18 3.902 13.97 0 8.999 0z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="17">
<path fill="#138198" fill-rule="evenodd"
d="M8.999 0C4.03 0 0 3.902 0 8.716c0 3.85 2.578 7.116 6.156 8.269.45.081.614-.188.614-.42 0-.207-.008-.755-.012-1.482-2.503.526-3.032-1.169-3.032-1.169-.408-1.007-.999-1.274-.999-1.274-.818-.541.061-.53.061-.53.903.062 1.378.898 1.378.898.803 1.332 2.107.948 2.62.724.081-.563.314-.947.572-1.165-1.999-.22-4.1-.968-4.1-4.307 0-.952.351-1.73.927-2.34-.093-.22-.402-1.106.088-2.305 0 0 .756-.235 2.475.893a8.827 8.827 0 0 1 4.507.001c1.717-1.128 2.472-.893 2.472-.893.491 1.2.182 2.085.09 2.305.577.61.925 1.388.925 2.34 0 3.348-2.104 4.084-4.108 4.3.322.269.61.801.61 1.614 0 1.165-.011 2.105-.011 2.39 0 .234.162.505.619.419C15.424 15.83 18 12.565 18 8.716 18 3.902 13.97 0 8.999 0z"/>
</svg>

Before

Width:  |  Height:  |  Size: 796 B

After

Width:  |  Height:  |  Size: 808 B

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 40 40"><path fill="#94FEBF" fill-rule="evenodd" d="M36 40H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4h8a2 2 0 1 1 0 4H6a2 2 0 0 0-2 2v28a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2v-6a2 2 0 1 1 4 0v8a4 4 0 0 1-4 4zm2-22a2 2 0 0 1-2-2V6.801l-3.601 3.602-6.162 6.162-3.834 3.834-7 7a2.004 2.004 0 0 1-2.833-2.833l7-7L33.136 4H24a2 2 0 1 1 0-4h13.897c.083-.004.161.008.243.014.165.012.324.043.476.093.054.018.107.027.159.049.227.096.431.235.606.403.005.005.012.006.018.011A1.993 1.993 0 0 1 40 2v14a2 2 0 0 1-2 2z"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 40 40">
<path fill="#138198" fill-rule="evenodd"
d="M36 40H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4h8a2 2 0 1 1 0 4H6a2 2 0 0 0-2 2v28a2 2 0 0 0 2 2h28a2 2 0 0 0 2-2v-6a2 2 0 1 1 4 0v8a4 4 0 0 1-4 4zm2-22a2 2 0 0 1-2-2V6.801l-3.601 3.602-6.162 6.162-3.834 3.834-7 7a2.004 2.004 0 0 1-2.833-2.833l7-7L33.136 4H24a2 2 0 1 1 0-4h13.897c.083-.004.161.008.243.014.165.012.324.043.476.093.054.018.107.027.159.049.227.096.431.235.606.403.005.005.012.006.018.011A1.993 1.993 0 0 1 40 2v14a2 2 0 0 1-2 2z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 577 B

After

Width:  |  Height:  |  Size: 589 B

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><path fill="#94FEBF" fill-rule="evenodd" d="M17 18H1a1 1 0 0 1-1-1v-4a1 1 0 0 1 2 0v3h14v-3a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1zm-7.134-6.332a1.08 1.08 0 0 1-.78.315C9.056 11.985 9.03 12 9 12c-.03 0-.056-.015-.086-.017a1.08 1.08 0 0 1-.78-.315L4.298 7.833a1.086 1.086 0 0 1 1.534-1.535L8 8.466V1a1 1 0 0 1 2 0v7.466l2.167-2.168a1.087 1.087 0 0 1 1.535 0 1.087 1.087 0 0 1 0 1.535l-3.836 3.835z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18">
<path fill="#138198" fill-rule="evenodd"
d="M17 18H1a1 1 0 0 1-1-1v-4a1 1 0 0 1 2 0v3h14v-3a1 1 0 0 1 2 0v4a1 1 0 0 1-1 1zm-7.134-6.332a1.08 1.08 0 0 1-.78.315C9.056 11.985 9.03 12 9 12c-.03 0-.056-.015-.086-.017a1.08 1.08 0 0 1-.78-.315L4.298 7.833a1.086 1.086 0 0 1 1.534-1.535L8 8.466V1a1 1 0 0 1 2 0v7.466l2.167-2.168a1.087 1.087 0 0 1 1.535 0 1.087 1.087 0 0 1 0 1.535l-3.836 3.835z"/>
</svg>

Before

Width:  |  Height:  |  Size: 460 B

After

Width:  |  Height:  |  Size: 472 B

View File

@ -1,3 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<path fill="#94FEBF" fill-rule="evenodd" d="M15.678 15.678a1.045 1.045 0 0 1-1.478 0l-3.06-3.06A6.941 6.941 0 0 1 7 14a7 7 0 1 1 7-7 6.941 6.941 0 0 1-1.382 4.14l3.06 3.06c.408.408.408 1.07 0 1.478zM7 2a5 5 0 1 0 .001 10.001A5 5 0 0 0 7 2z"/>
<path fill="#138198" fill-rule="evenodd" d="M15.678 15.678a1.045 1.045 0 0 1-1.478 0l-3.06-3.06A6.941 6.941 0 0 1 7 14a7 7 0 1 1 7-7 6.941 6.941 0 0 1-1.382 4.14l3.06 3.06c.408.408.408 1.07 0 1.478zM7 2a5 5 0 1 0 .001 10.001A5 5 0 0 0 7 2z"/>
</svg>

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

View File

@ -1 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="15"><path fill="#94FEBF" fill-rule="evenodd" d="M18 1.776a7.518 7.518 0 0 1-2.126.597A3.743 3.743 0 0 0 17.497.282a7.269 7.269 0 0 1-2.34.916A3.653 3.653 0 0 0 12.462 0c-2.043 0-3.688 1.701-3.688 3.786 0 .3.025.588.085.863C5.791 4.495 3.077 2.987 1.253.69a3.89 3.89 0 0 0-.505 1.913c0 1.311.658 2.473 1.639 3.145A3.569 3.569 0 0 1 .72 5.282v.042c0 1.839 1.279 3.367 2.957 3.719a3.611 3.611 0 0 1-.968.124c-.236 0-.475-.014-.699-.064.479 1.499 1.835 2.6 3.448 2.636a7.29 7.29 0 0 1-4.575 1.614c-.302 0-.593-.013-.883-.051A10.203 10.203 0 0 0 5.661 15c6.79 0 10.503-5.769 10.503-10.77 0-.167-.006-.329-.014-.489A7.466 7.466 0 0 0 18 1.776z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="15">
<path fill="#138198" fill-rule="evenodd"
d="M18 1.776a7.518 7.518 0 0 1-2.126.597A3.743 3.743 0 0 0 17.497.282a7.269 7.269 0 0 1-2.34.916A3.653 3.653 0 0 0 12.462 0c-2.043 0-3.688 1.701-3.688 3.786 0 .3.025.588.085.863C5.791 4.495 3.077 2.987 1.253.69a3.89 3.89 0 0 0-.505 1.913c0 1.311.658 2.473 1.639 3.145A3.569 3.569 0 0 1 .72 5.282v.042c0 1.839 1.279 3.367 2.957 3.719a3.611 3.611 0 0 1-.968.124c-.236 0-.475-.014-.699-.064.479 1.499 1.835 2.6 3.448 2.636a7.29 7.29 0 0 1-4.575 1.614c-.302 0-.593-.013-.883-.051A10.203 10.203 0 0 0 5.661 15c6.79 0 10.503-5.769 10.503-10.77 0-.167-.006-.329-.014-.489A7.466 7.466 0 0 0 18 1.776z"/>
</svg>

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 718 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 95 KiB

BIN
assets/img/mountains.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
assets/img/sherpalogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -6,6 +6,7 @@
@import 'components/table';
@import 'components/dropdown';
@import 'components/icon';
@import 'components/flag';
@import 'components/pagination';
@import 'components/status';
@import 'components/fieldset';
@ -16,8 +17,7 @@
display: flex;
flex-direction: column;
min-height: 100vh;
background: url('../img/bg.png') repeat;
background-size: 40px 164px;
background: #03283d url('../img/mountains.png') no-repeat top center fixed;
> .main-content {
flex: 1;

View File

@ -4,11 +4,14 @@ $control-padding-vertical: calc(0.429em - #{$control-border-width});
$control-padding-horizontal: calc(1.25em - #{$control-border-width});
$white: #eee;
$primary: #94febf;
$primary-invert: #000403;
$warning: #ff8a00;
$black: #2c4538;
$danger: #FF0658;
$primary: #138198;
$primary-invert: #03283d;
$warning: #FF8F50;
$primary-complement: #FF8F50;
$sherpa: #ff3a44;
$black: #08252b;
$deep-black: #08070c;
$danger: #F44C6A;
$dark: #242424;
$pre: $white;
$info: $primary-invert;
@ -19,7 +22,7 @@ $block-spacing: 2rem;
@import '~bulma/sass/utilities/_all';
$body-family: 'PT Mono', monospace;
$body-family: 'Arial', monospace;
$body-background-color: $primary-invert;
$body-color: $white;
$body-size: 14px;
@ -55,11 +58,11 @@ $button-disabled-border-color: #393939;
$input-color: $white;
$input-background-color: transparent;
$input-border-color: #393939;
$input-border-color: $primary;
$input-hover-border-color: $white;
$input-hover-color: $white;
$input-focus-border-color: $primary;
$input-placeholder-color: #393939;
$input-focus-border-color: $white;
$input-placeholder-color: $primary;
$input-focus-box-shadow-size: 0 0 0;
$input-disabled-background-color: #181818;
@ -160,7 +163,11 @@ $pagination-current-color: $primary-invert;
$pagination-current-background-color: $primary;
$pagination-current-border-color: $primary;
$pre-background: rgba($primary, 0.104);
$pre-background: rgba($deep-black, 0.404);
.highlight {
border-radius: 10px;
}
.columns {
@include from(576px) {

View File

@ -3,13 +3,15 @@
font-weight: $weight-bold;
&.is-primary.is-outlined {
background-color: rgba($primary, .104);
color: $white;
border-color: $white;
background-color: rgba($primary-invert, .104);
&.is-loading:focus {
background-color: rgba($primary, .104);
background-color: rgba($primary-invert, .104);
&::after {
border-color: transparent transparent $primary $primary !important;
border-color: transparent transparent $white $white !important;
}
}
}

View File

@ -1,5 +1,11 @@
.ceremony {
text-align: center;
backdrop-filter: blur( 13.5px );
-webkit-backdrop-filter: blur( 13.5px );
background: rgba( 7, 26, 46, 0.60 );
margin:10px;
padding: 20px;
border-radius: 10px;
.title {
color: $white;
@ -10,7 +16,7 @@
}
.p {
font-size: .857rem;
font-size: 1rem;
max-width: 66.6666%;
margin: 0 auto;
@ -23,7 +29,7 @@
}
a {
color: $primary;
color: $primary-invert;
&:hover {
text-decoration: underline;
@ -44,10 +50,13 @@
display: flex;
flex-direction: column;
align-items: stretch;
border: solid 1px #424542;
background: rgba($deep-black, 0.604);
border-radius: 7px;
&:hover, &.is-hovered {
color: $primary;
border-color: #94febf;
border-color: $primary-invert;
.title {
color: $primary;
@ -155,7 +164,7 @@
}
.currently {
font-size: .85rem;
font-size: 1.25rem;
span {
color: $primary;
@ -179,3 +188,12 @@
}
}
.summary {
padding: 5px 10px;
margin: 50px 50px;
background: rgba($deep-black, .6);
border-radius: 7px;
}

View File

@ -85,3 +85,36 @@
}
}
}
.dropdown-langs {
margin-bottom: -0.5rem;
.dropdown-menu {
min-width: auto;
padding-top: 0;
padding-bottom: .5rem;
}
&.is-mobile-modal {
.dropdown-menu {
max-width: 100px;
}
}
a.dropdown-item {
padding-right: 1rem;
line-height: 28px;
display: inline-flex;
align-items: center;
justify-content: center;
font-weight: 400;
.flag-icon {
margin-right: .5rem;
}
}
.button {
margin-bottom: 0;
}
}

View File

@ -0,0 +1,24 @@
.flag-icon {
background-size: contain;
background-position: 50%;
background-repeat: no-repeat;
position: relative;
display: inline-block;
height: 28px;
width: 28px;
&:before {
content: '\00a0';
}
}
// https://github.com/HatScripts/circle-flags/tree/master/flags
@mixin flag-icon($country) {
.flag-icon-#{$country} {
background-image: url('../img/flags/#{$country}.svg');
}
}
$countries: gb fr tr kr jp de;
@each $country in $countries {
@include flag-icon($country);
}

View File

@ -25,10 +25,21 @@
height: 40px;
}
.navbar-menu {
.navbar-item {
padding-left: 1.25rem;
padding-right: 1.25rem;
}
.navbar-item {
font-size: 20px;
padding-left: 2rem;
padding-right: 2rem;
line-height: 30px;
font-weight: bold;
}
img {
max-height: 75px;
}
.sherpa-header-label {
padding-right: 1.5rem;
color: $sherpa;
font-size: 50px;
}
}

View File

@ -3,8 +3,20 @@
margin-bottom: $block-spacing;
}
a {
color: $primary-invert;
&:hover {
text-decoration: underline;
}
}
.input {
border-color: $white;
}
.status-message {
color: $primary;
color: $white;
text-align: center;
&.is-danger {

View File

@ -1,11 +1,209 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" class="cloak" width="147" height="147">
<svg
xmlns="http://www.w3.org/2000/svg"
width="150"
height="150"
class="cloak"
viewBox="0 0 396 396"
>
<defs></defs>
<path
fill="#FFF"
fill-opacity=".051"
fill-rule="evenodd"
stroke="#393939"
d="M121.872 93.745c-12.959 4.013-30.138 6.224-48.372 6.224-18.234 0-35.413-2.211-48.372-6.224C10.978 89.363 3.5 83.367 3.5 76.404c0-6.941 7.379-12.887 21.365-17.255V18.618c0-4.51 1.993-8.749 5.466-11.631a15.118 15.118 0 0 1 12.453-3.233c.055.01.109.022.162.035.23.057 23.042 5.727 30.554 5.727 7.515 0 30.324-5.67 30.553-5.727.054-.013.108-.025.162-.035a15.12 15.12 0 0 1 12.453 3.234 15.065 15.065 0 0 1 5.466 11.63v40.531C136.12 63.517 143.5 69.463 143.5 76.404c0 6.963-7.479 12.959-21.628 17.341zm-5.215-75.127a9.619 9.619 0 0 0-3.489-7.424 9.65 9.65 0 0 0-7.873-2.078c-1.801.448-23.78 5.869-31.795 5.869S43.505 9.564 41.704 9.116a9.644 9.644 0 0 0-7.872 2.078 9.615 9.615 0 0 0-3.489 7.424v21.033c11.728 2.946 26.415 4.56 41.652 4.56 8.92 0 17.57-.538 25.712-1.599a2.735 2.735 0 0 1 .709 5.423c-8.376 1.091-17.265 1.645-26.421 1.645-15.102 0-29.727-1.553-41.652-4.398v4.231c11.727 2.946 26.414 4.56 41.652 4.56 16.722 0 32.476-1.9 44.662-5.363V18.618zm0 45.659c-12.132 3.026-27.225 4.683-42.827 4.683-9.158 0-18.048-.553-26.421-1.645a2.734 2.734 0 1 1 .709-5.423c8.139 1.061 16.79 1.599 25.712 1.599 15.751 0 30.913-1.724 42.827-4.862v-4.243c-12.442 3.335-28.124 5.156-44.662 5.156-15.103 0-29.728-1.552-41.652-4.397v13.398c11.727 2.946 26.414 4.559 41.652 4.559 16.721 0 32.477-1.898 44.662-5.361v-3.464zm5.477.623v4.883a2.737 2.737 0 0 1-1.932 2.613c-12.935 3.982-30.055 6.175-48.207 6.175a217.716 217.716 0 0 1-15.302-.539c-.996-.071-1.987-.149-2.972-.234-9.843-.848-19.03-2.379-26.838-4.507a2.735 2.735 0 0 1-2.018-2.638V64.9c-9.891 3.34-15.888 7.63-15.888 11.504 0 4.079 6.811 8.722 17.773 12.117 12.449 3.855 29.051 5.978 46.75 5.978 17.698 0 34.301-2.122 46.749-5.978 10.963-3.395 17.773-8.038 17.773-12.117 0-3.874-5.997-8.164-15.888-11.504zm-83.699.183a2.724 2.724 0 0 1-.985.407 2.666 2.666 0 0 1-1.581-.156 2.742 2.742 0 0 1-.89-.59 2.755 2.755 0 0 1-.802-1.933c0-.178.019-.359.055-.534a2.67 2.67 0 0 1 .156-.511c.068-.167.153-.325.252-.473a2.61 2.61 0 0 1 .755-.755c.148-.101.307-.183.474-.251a2.72 2.72 0 0 1 2.095 0c.165.068.323.15.471.251a2.754 2.754 0 0 1 1.168 1.739 2.755 2.755 0 0 1-.751 2.467c-.126.126-.266.24-.417.339zm67.946-22.6a2.838 2.838 0 0 1 .591-.887 2.764 2.764 0 0 1 2.471-.746c.175.033.347.087.512.156.167.068.326.153.473.251a2.685 2.685 0 0 1 1.009 1.226 2.793 2.793 0 0 1 .21 1.047 2.74 2.74 0 0 1-1.219 2.275 2.796 2.796 0 0 1-.985.404 2.674 2.674 0 0 1-1.583-.156 2.895 2.895 0 0 1-.471-.248 2.824 2.824 0 0 1-.417-.342 2.742 2.742 0 0 1-.591-.889 2.829 2.829 0 0 1-.159-.511 2.736 2.736 0 0 1 .159-1.58zm-73.369 64.922h80.976c6.569 0 11.913 5.336 11.914 11.895v11.758c0 6.861-5.59 12.442-12.461 12.442h-17.75c-11.008 0-19.963-8.942-19.963-19.932v-10.694h-4.455v10.694c0 10.991-8.956 19.932-19.964 19.932H33.56c-6.871 0-12.461-5.581-12.461-12.442V119.3c0-6.559 5.344-11.895 11.913-11.895zm48.192 16.163c0 7.975 6.499 14.463 14.486 14.463h17.75c3.851 0 6.984-3.128 6.983-6.973V119.3c0-3.544-2.887-6.426-6.436-6.426H81.204v10.694zm-54.628 7.49c0 3.845 3.133 6.973 6.983 6.973h17.75c7.988 0 14.486-6.488 14.486-14.463h-.001v-10.694H33.012c-3.549 0-6.436 2.882-6.436 6.426v11.758zm12.839-15.392a2.742 2.742 0 0 1 3.872 0 2.733 2.733 0 0 1 .001 3.868l-8.856 8.841a2.73 2.73 0 0 1-1.936.801 2.733 2.733 0 0 1-1.937-4.668l8.856-8.842zm50.445 12.709a2.73 2.73 0 0 1-1.936.801 2.733 2.733 0 0 1-1.937-4.668l8.855-8.842a2.743 2.743 0 0 1 3.873 0 2.732 2.732 0 0 1 0 3.868l-8.855 8.841z"
/>
id="svg_2"
transform="matrix(0.72 0 0 0.72 97.6446562757765 17.8985716767358)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M122.382 0.0308727C106.538 1.58777 92.2942 -3.29901 49.7967 5.10682C19.1246 10.8423 6.64456 13.6711 1.38242 29.0309C-4.93358 47.4649 12.2034 62.8269 16.3824 76.0309C17.7154 85.3629 19.0494 94.6979 20.3824 104.031C100.374 103.697 180.39 103.364 260.382 103.031C260.542 75.5959 281.88 51.3419 278.382 35.0309C271.068 0.925873 170.321 -0.228127 122.382 0.0308727Z"
></path>
<path
id="svg_3"
transform="matrix(0.72 0 0 0.72 7.20000000000003 53.9208)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M105 0C70.552 17.203 74.487 66.306 66 109C49.325 192.877 48.134 293.569 0 346C0.6666 346 1.3334 346 2 346C22.0209 357.859 52.961 347.027 67 338C109.12 310.916 111.434 276.484 102 216C101.667 194.669 101.333 173.331 101 152C98.514 146.081 90.828 143.416 89 135C85.664 119.64 85.35 79.514 91 68C99.422 50.835 115.225 58.4 136 53C137.046 24.838 130.482 1.936 105 0Z"
></path>
<path
id="svg_4"
transform="matrix(0.72 0 0 0.72 292.136071573694 56.5416247670972)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M0.255456 50.36C36.6375 50.008 41.2625 59.543 41.2555 95.36C41.2555 106.692 41.2555 118.028 41.2555 129.36C39.2175 139.48 31.5405 141.772 28.2555 148.36C28.2555 166.691 28.2555 185.028 28.2555 203.36C28.0755 251.423 16.2285 279.834 42.2555 313.36C50.0645 323.419 111.265 363.551 134.255 340.36C108.714 330.811 102.449 287.697 95.2555 259.36C81.7185 206.04 77.0275 143.674 65.2555 88.36C59.7585 62.532 59.6855 36.034 50.2555 14.36C42.8175 -2.73603 16.0665 -5.58703 6.25546 11.36C0.407456 21.461 -0.572544 36.827 0.255456 50.36Z"
></path>
<path
id="svg_5"
transform="matrix(0.72 0 0 0.72 73.9985145739372 102.1608)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M13.2243 0C-1.67371 12.067 -7.32871 69.132 14.2243 76C44.8883 76 75.5603 76 106.224 76C156.886 76 207.562 76 258.224 76C281.204 76 310.685 78.869 330.224 74C340.928 60.465 346.844 10.065 327.224 1C222.568 0.666 117.88 0.333 13.2243 0Z"
></path>
<path
id="svg_6"
transform="matrix(0.72 0 0 0.72 85.6524712186876 166.2408)"
fill="#333"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M4.03823 0C-7.94377 29.535 9.96923 107.579 16.0382 130C17.7052 130 19.3712 130 21.0382 130C58.4322 118.336 86.8802 101.598 115.038 81C126.415 72.677 140.027 53.128 164.038 59C182.876 63.606 195.277 82.126 210.038 92C234.174 108.144 260.615 117.348 291.038 128C302.096 115.051 305.97 60.548 306.038 36C306.067 25.511 308.547 6.501 303.038 1C203.381 0.666 103.695 0.333 4.03823 0Z"
></path>
<path
id="svg_7"
transform="matrix(0.72 0 0 0.72 108.72 215.2008)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M121 0C107.147 8.25 109.31 17.456 101 31C91.723 46.119 76.338 55.719 60 64C55.422 66.32 48.878 70.983 44 70C44 69.666 44 69.333 44 69C65.185 60.976 85.392 42.862 95 23C94.667 21.667 94.333 20.333 94 19C90.365 19.643 90.973 19.403 89 21C76.335 29.666 63.665 38.334 51 47C34.002 54.666 16.998 62.334 0 70C0.333 71.666 0.667 73.333 1 75C16.227 79.148 37.743 92.008 56 87C69.472 83.304 79.176 73.988 91 69C91 69.333 91 69.666 91 70C85.357 78.038 76.487 82.268 71 90C71.667 91 72.333 92 73 93C103.135 95.191 147.55 103.181 176 93C176 92 176 91 176 90C167.147 84.742 158.99 78.095 153 70C153.333 69.666 153.667 69.333 154 69C166.628 76.356 179.502 85.809 196 89C208.307 91.38 254.732 74.631 250 69C238.668 65.333 227.332 61.666 216 58C194.398 48.532 175.133 33.333 157 20C155.667 20.333 154.333 20.666 153 21C153 22.333 153 23.667 153 25C167.082 42.6 180.42 61.132 204 69C204 69.666 204 70.333 204 71C183.113 66.537 160.933 51.058 150 36C140.143 22.423 143.431 1.646 121 0Z"
></path>
<path
id="svg_8"
transform="matrix(0.72 0 0 0.72 105.12 273.5208)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M6 0C1.737 3.213 0.415 3.59 0 11C10.256 26.665 22.974 28.925 43 35C90.198 49.317 237.124 89.644 250 18C253.108 0.706 204.692 16.526 192 19C127.878 31.497 54.886 16.868 6 0Z"
></path>
<path
id="svg_9"
transform="matrix(0.72 0 0 0.72 120.96 301.6008)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M5 0C3.333 1.333 1.667 2.667 0 4C0 6 0 8 0 10C8.307 26.898 24.061 49.594 40 59C70.157 76.795 141.555 66.171 169 54C178.509 49.783 184.867 41.634 192 35C190.874 15.719 157.93 24.88 138 24C87.822 21.783 47.261 5.299 5 0Z"
></path>
<path
id="svg_10"
transform="matrix(0.72 0 0 0.72 160.56 350.5608)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M97 0C82.631 5.931 0.084 2.372 0 8C7.75 20.443 33.616 40.281 50 43C68.28 34.304 89.997 20.294 102 5C101.333 3.333 100.667 1.666 100 0C99 0 98 0 97 0Z"
></path>
<path
id="svg_11"
transform="matrix(0.72 0 0 0.72 102.275265354177 21.4045549038451)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M115.041 0.161452C157.706 -0.876548 258.46 2.41645 266.041 30.1615C269.989 44.6105 250.301 75.0635 248.041 93.1615C171.049 93.1615 94.0334 93.1615 17.0414 93.1615C22.5484 61.2068 -11.3435 41.4121 4.0414 18.1615C12.2732 12.3703 22.1215 8.72331 35.2495 6.48031C49.513 4.04343 62.1892 2.18903 78.0403 1.48598C88.8583 0.00126992 107.633 1.1362 115.041 0.161452Z"
></path>
<path
id="svg_12"
transform="matrix(0.72 0 0 0.72 13.68 57.5208)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M122 44C111.688 44.552 94.206 44.254 87 49C71.471 59.226 68.148 102.123 74 129C76.099 138.64 84.507 140.779 87 148C87.333 170.664 87.667 193.335 88 216C99.714 286.295 76.356 350.636 0 339C0.3333 338 0.6667 337 1 336C44.326 299.492 49.987 166.647 64 98C72.837 54.713 69.826 23.378 97 0C115.992 6.101 122.579 18.84 122 44Z"
></path>
<path
id="svg_13"
transform="matrix(0.72 0 0 0.72 295.822726776216 61.1649079800472)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M0.135102 38.9387C-1.2699 10.7697 8.1621 -5.90426 34.1351 1.93874C49.1031 23.2357 48.0591 55.5207 55.1351 85.9387C74.5801 169.531 73.1811 275.765 118.135 333.939C118.135 334.272 118.135 334.605 118.135 334.939C117.135 334.939 116.135 334.939 115.135 334.939C98.4581 339.233 81.0791 328.586 70.1351 322.939C18.7511 296.426 27.9231 271.604 28.1351 203.939C28.1351 183.607 28.1351 163.27 28.1351 142.939C32.4681 137.606 36.8021 132.272 41.1351 126.939C41.1351 116.273 41.1351 105.604 41.1351 94.9387C41.1371 57.3277 37.5771 39.2827 0.135102 38.9387Z"
></path>
<path
id="svg_14"
transform="matrix(0.72 0 0 0.72 77.2676224998541 104.921169860624)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M10.6839 1.16615C85.6759 1.49915 160.692 1.83215 235.684 2.16615C260.424 2.16515 308.909 -4.76285 325.684 6.16615C329.56 18.4922 335.567 58.7432 321.684 66.1662C306.147 74.4742 272.758 67.1672 253.684 67.1662C196.356 67.1662 139.012 67.1662 81.6839 67.1662C57.3529 66.8322 33.0149 66.4992 8.68386 66.1662C-8.37014 55.4662 3.77286 12.5072 10.6839 1.16615Z"
></path>
<path
id="svg_15"
transform="matrix(0.72 0 0 0.72 89.3390842552083 169.838859432628)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M2.91794 0.00269523C74.5779 0.335695 146.259 0.668695 217.918 1.0027C231.382 1.0017 288.843 -2.2663 294.918 3.0027C304.869 26.3397 290.233 95.3527 284.918 115.003C284.251 115.336 283.585 115.669 282.918 116.003C256.092 109.091 226.489 96.6287 205.918 82.0027C190.685 71.1717 180.118 52.5897 158.918 48.0027C132.26 42.2347 121.352 61.7257 108.918 71.0027C81.0079 91.8257 50.2419 106.151 14.9179 120.003C9.21894 84.0417 -6.44406 41.6947 2.91794 0.00269523Z"
></path>
<path
id="svg_16"
transform="matrix(0.72 0 0 0.72 115.92 218.8008)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M112 0C127.697 6.878 124.598 17.312 133 31C139.682 41.886 153.067 53.38 164 60C171.544 64.567 209.743 79.898 195 58C179.786 55.057 166.177 42.338 159 31C182.837 41.355 199.306 60.049 230 66C229.333 66.333 228.667 66.666 228 67C189.41 96.436 171.019 63.335 142 59C140.667 60.666 139.333 62.333 138 64C138 65.333 138 66.667 138 68C143.554 72.03 153.612 81.297 155 86C128.269 88.053 94.844 89.882 70 83C70.667 82 71.333 81 72 80C76.666 75.667 81.334 71.333 86 67C85 64.333 84 61.666 83 59C82.667 59 82.333 59 82 59C57.6 63.149 31.274 95.725 0 66C27.943 57.554 47.885 38.343 72 28C72 28.333 72 28.666 72 29C60.733 44.371 40.471 48.851 29 63C29 64.333 29 65.667 29 67C45.963 76.946 86.185 43.235 94 32C101.121 21.763 104.296 9.147 112 0Z"
></path>
<path
id="svg_17"
transform="matrix(0.72 0 0 0.72 108.72 277.8408)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M1 0C39.064 9.533 96.39 31.163 148 23C174.603 18.792 217.649 7.202 240 10C240 10.333 240 10.666 240 11C216.519 81.597 35.737 34.501 0 4C0.333 2.667 0.667 1.333 1 0Z"
></path>
<path
id="svg_18"
transform="matrix(0.72 0 0 0.72 125.194653647152 305.2008)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M0.118537 0C40.3505 11.107 78.8645 17.167 122.119 24C140.694 26.934 169.437 16.355 180.119 28C161.655 53.039 85.5765 70.508 43.1185 53C27.1885 46.431 17.9205 32.882 9.11854 19C5.40454 13.142 -0.945463 7.82 0.118537 0Z"
></path>
<path
id="svg_19"
transform="matrix(0.72 0 0 0.72 167.04 355.6008)"
fill="none"
stroke="#fff"
stroke-width="2"
stroke-linecap="butt"
stroke-linejoin="miter"
stroke-miterlimit="2"
d="M75 0C78 0 81 0 84 0C75.328 11.487 54.562 27.451 38 30C23.78 23.849 8.702 15.715 0 4C24.997 2.667 50.003 1.333 75 0Z"
></path>
</svg>
</template>

View File

@ -4,7 +4,7 @@
<button @click="logOut" class="button is-icon logout">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path
fill="#94febf"
fill="#138198"
d="M14.08,15.59L16.67,13H7V11H16.67L14.08,8.41L15.5,7L20.5,12L15.5,17L14.08,15.59M19,3A2,2 0 0,1 21,5V9.67L19,7.67V5H5V19H19V16.33L21,14.33V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19Z"
/>
</svg>
@ -26,10 +26,10 @@
</div>
<div v-else class="buttons">
<b-button @click="logInVia('twitter')" type="is-primary" outlined expanded>
Sign in with Twitter
{{ $t('pages.form.twitterSignIn') }}
</b-button>
<b-button @click="logInVia('github')" type="is-primary" outlined expanded>
Sign in with Github
{{ $t('pages.form.githubSignIn') }}
</b-button>
</div>
</div>

View File

@ -11,11 +11,11 @@ export default {
data() {
return {
loading: false,
message: 'Loading'
message: this.$t('common.loading')
}
},
created() {
this.$root.$on('enableLoading', (msg = 'Loading') => {
this.$root.$on('enableLoading', (msg = this.$t('common.loading')) => {
this.loading = true
this.message = msg
})

View File

@ -1,9 +0,0 @@
<template>
<svg xmlns="http://www.w3.org/2000/svg" class="logo" viewBox="0 0 155 40">
<path
fill="#94febf"
fill-rule="evenodd"
d="M29.4,8.6A11.5,11.5,0,0,1,39.9,19.4,17.1,17.1,0,0,0,8.5,10.5,11.5,11.5,0,0,1,19.3,0a17.2,17.2,0,0,0-8.9,31.4A11.5,11.5,0,0,1,0,20.6a17.1,17.1,0,0,0,31.3,9.1A11.4,11.4,0,0,1,20.6,40,17.1,17.1,0,0,0,29.4,8.6ZM19.9,27.2a6.9,6.9,0,0,1-5-2.1,7.1,7.1,0,1,1,5,2.1Zm36.6-9.7v7.4c0,1.3.5,1.6,1.8,1.6a4.8,4.8,0,0,0,1.8-.3v2.9a6.4,6.4,0,0,1-2.4.5c-3,0-4.8-1.9-4.8-5V17.5H50.4V14.4h2.5V9.9h3.6v4.5h3.6v3.1ZM77,21.9c0,5-2.5,7.7-7,7.7s-7.1-2.7-7.1-7.7,2.5-7.7,7.1-7.7S77,16.9,77,21.9Zm-3.6,0c0-4-1.3-4.8-3.4-4.8s-3.5.8-3.5,4.8,1.3,4.7,3.5,4.7S73.4,25.8,73.4,21.9ZM88,14.1v3.2a11.5,11.5,0,0,0-3.8.5V29.4H80.6V15.7A20.4,20.4,0,0,1,88,14.1Zm16.9,6.3v9h-3.6V20.1c0-1.4-.2-2.8-3.5-2.8a12,12,0,0,0-2.8.3V29.4H91.4V15.8a15,15,0,0,1,6.9-1.7C102.4,14.1,104.9,16.5,104.9,20.4Zm16.2.1v4.1c0,2.4-1.6,5-6.3,5s-6.4-2.6-6.4-5.1.5-4.7,6.5-4.7a11,11,0,0,1,2.6.2c0-1.7-.8-2.9-3.2-2.9a11.2,11.2,0,0,0-4.4.8V15a12.5,12.5,0,0,1,4.6-.9C118.8,14.1,121.1,16.4,121.1,20.5Zm-3.6,1.7h-2.1c-2.5,0-3.4.7-3.4,1.9s.9,2.4,2.8,2.4,2.7-.9,2.7-2.3Zm13.9-8.1,2.5.3V8.7h3.6V24.6c0,2.4-1.7,5-6.4,5-2,0-6.7-.8-6.7-7.9C124.4,16.8,126.9,14.1,131.4,14.1Zm-.3,12.4c1.6,0,2.8-.4,2.8-1.6V17.2l-2.4-.2c-2.1,0-3.5,1-3.5,4.5S128.8,26.5,131.1,26.5ZM155,21.9c0,5-2.5,7.7-7.1,7.7s-7.1-2.7-7.1-7.7,2.5-7.7,7.1-7.7S155,16.9,155,21.9Zm-3.6,0c0-4-1.4-4.8-3.5-4.8s-3.5.8-3.5,4.8,1.4,4.7,3.5,4.7S151.4,25.8,151.4,21.9Z"
/>
</svg>
</template>

View File

@ -2,23 +2,70 @@
<b-navbar wrapper-class="container" class="header">
<template slot="brand">
<b-navbar-item :to="{ path: '/' }" tag="router-link">
<Logo />
<img src="../assets/img/sherpalogo.png" />
<div class="sherpa-header-label">Sherpa</div>
</b-navbar-item>
</template>
<template slot="end">
<b-navbar-item tag="router-link" to="/instructions">
Instructions
<div>{{ $t('pages.header.instructions') }}</div>
</b-navbar-item>
<b-navbar-item>
<b-dropdown
v-model="$i18n.locale"
@change="langChange"
class="dropdown-langs"
position="is-bottom-right"
aria-role="list"
>
<b-button slot="trigger" type="is-icon">
<FlagIcon :code="$i18n.locale" :class="'is-active-locale-' + $i18n.locale" />
</b-button>
<b-dropdown-item
v-for="locale in locales"
:key="locale"
:value="locale"
aria-role="listitem"
>
<FlagIcon :code="locale" />
{{ printLang(locale) }}
</b-dropdown-item>
</b-dropdown>
</b-navbar-item>
</template>
</b-navbar>
</template>
<script>
import Logo from '@/components/Logo'
import { FlagIcon } from '@/components/icons'
export default {
components: {
Logo
FlagIcon
},
computed: {
locales() {
return this.$i18n.availableLocales
}
},
methods: {
langChange(lang) {
localStorage.setItem('lang', lang)
if (lang === 'zh') {
lang += '-cn'
}
},
printLang(lang) {
let code = lang
switch (code) {
case 'zh':
code = 'cn'
break
}
return code.toUpperCase()
}
}
}
</script>

View File

@ -0,0 +1,26 @@
<template>
<i v-if="code" :class="flagIconClass" class="flag-icon"></i>
</template>
<script>
export default {
name: 'FlagIcon',
props: {
code: { type: String, default: null }
},
computed: {
flagIconClass() {
let code = this.code
switch (code) {
case 'zh':
code = 'cn'
break
case 'en':
code = 'gb'
break
}
return 'flag-icon-' + code
}
}
}
</script>

View File

@ -0,0 +1 @@
export { default as FlagIcon } from './FlagIcon'

82
langs/de.json Normal file
View File

@ -0,0 +1,82 @@
{
"common": {
"loading": "Loading",
"error": "Fehler",
"close": "schließen"
},
"pages": {
"header": {
"instructions": "Anweisung"
},
"form": {
"twitterSignIn": "Mit Twitter anmelden",
"githubSignIn": "Mit Github anmelden"
},
"index": {
"sherpaCash": "Sherpa.cash",
"trustedSetupCeremonyTitle": "Vertrauenswürdige Einrichtungszeremonie",
"zkSnarks": "zk-SNARKs erfordern eine bereits vorhandene Einrichtung zwischen einem Beweisführer (Prover) und einem Prüfer (Verifier). Eine Reihe öffentlicher Parameter definiert die\" Spielregeln \"für die Erstellung von zk-SNARKs. Bitte tragen Sie mit Ihrer Entropiequelle bei, so dass Sherpa.cash völlig vertrauenslos werden kann.",
"contribute": "Beitragen",
"currently": "Jetzt gibt es",
"contributions": "Beiträge",
"account": "Konto",
"name": "Name",
"project": "Projekt",
"attestation": "Bescheinigung",
"nothingHere": "Hier gibts nichts zu sehen.",
"search": "Suche..."
},
"authorize": {
"saveInformation": "Speichern",
"postAttestationTwitter": "Jetzt können Sie Ihre Bescheinigung auf Twitter veröffentlichen",
"postAttestation": "Bescheinigung veröffentlichen",
"contributeIdentity": "Möchten Sie ihre Identität veröffentlichen für Ihre Beitrag ",
"specifyName": "Bitte geben Sie Ihren Namen und Ihr Projekt an.",
"contributionUpdated": "Ihr Beitrag wurde aktualisiert",
"somethingWrong": "Fehler. Bitte wenden Sie sich an den Support."
},
"contribution": {
"hello": "Hallo, ",
"contributeHow": "Wie möchten Sie zur vertrauenswürdigen Einrichtungszeremonie von Sherpa.cash beitragen?",
"anonymously": "Anonym",
"socialAccount": "Soziale Netzwerke",
"contributionHash": "Ihr Beitrags-Hash (Blake2b) ist",
"postAttestationTwitter": "Jetzt können Sie Ihre Bescheinigung auf Twitter veröffentlichen",
"postAttestation": "Bescheinigung veröffentlichen",
"provideIdentity": "Sie können Ihre Identität für Ihren Beitrag veröffentlichen durch ",
"thisLink": "diesen Link",
"trustBinaries": "Wenn Sie unsere Binärdateien nicht vertrauen, empfehlen wir Ihnen, die",
"instructions": "Anweisung",
"easyCompile": " zu befolgen. Sie können einen Beitrag leisten, indem Sie aus dem Quellcode kompilieren. Es ist ziemlich einfach!",
"contribution": "Beitrag",
"provideRandom": "Bitte geben Sie zufällige Zeichen ein. Sie werden zusammen mit dem RNG des Browsers als Entropiequelle für Ihren Beitrag verwendet.",
"contribute": "Beitragen",
"downloadingLast": "Letzter Beitrag herunterladen",
"generatingRandom": "Generieren eines zufälligen Beitrags. Dies kann dazu führen, dass ihr Browser nicht mehr reagiert. Der Vorgang kann ungefähr eine Minute dauern.",
"uploadingContribution": "Hochladen und Überprüfen Ihres Beitrags",
"contributionVerified": "Ihr Beitrag wurde überprüft und aufgezeichnet.",
"failedUpload": "Fehler beim Hochladen Ihres Beitrags nach ",
"attempts": " Versuche",
"uploadError": "Fehler beim Hochladen Ihres Beitrags",
"copied": "Kopiert!"
},
"instructions": {
"instructions" : "Anweisung",
"pureRust": "Reinen Rust-Implementierung:",
"installRust": "# Rust installieren",
"cloneRepo": "# Klonen des Repositories mit dem Zeremoniecode",
"runCeremony": "# Zeremonie",
"afterContribution": "Nach dem Beitrag empfehlen wir Ihnen, Ihren Computer neu zu starten, um den RAM zu löschen.",
"usingDocker": "Mit einem Docker-Container:",
"downloadRustContainer": "Mit dieser Methode laden Sie den Zeremonien-Quellcode von unserem Git-Repo herunter und kompilieren ihn in einem Rust Container. Diese Methode verwendet keine Prebuilt-Container.",
"installDocker": "Installieren Sie zuerst Docker auf Ihrem System:",
"windows": "Windows",
"mac": "Mac",
"linux": "Linux",
"downloadDockerfile": "# Dockerfile herunterladen",
"buildDockerImage": "# Docker-Image erstellen",
"runCeremony": "# Zeremonie"
}
}
}

82
langs/en.json Normal file
View File

@ -0,0 +1,82 @@
{
"common": {
"loading": "Loading",
"error": "error",
"close": "close"
},
"pages": {
"header": {
"instructions": "Instructions"
},
"form": {
"twitterSignIn": "Sign in with Twitter",
"githubSignIn": "Sign in with Github"
},
"index": {
"sherpaCash": "Sherpa.cash",
"trustedSetupCeremonyTitle": "Trusted Setup Ceremony",
"zkSnarks": "zk-SNARKs require a pre-existing setup between Prover and Verifier. A set of public parameters\n defines the “rules of the game” for the construction of zk-SNARKs. Please contribute with your\n source of entropy, so that Sherpa.cash can become fully trustless.",
"contribute": "Contribute",
"currently": "Currently there are",
"contributions": "contributions",
"account": "Account",
"name": "Name",
"project": "Project",
"attestation": "Attestation",
"nothingHere": "Nothing here.",
"search": "Search..."
},
"authorize": {
"saveInformation": "Save information",
"postAttestationTwitter": "Now you can post your attestation to Twitter",
"postAttestation": "Post attestation",
"contributeIdentity": "Would you like to provide identity for your contribution ",
"specifyName": "Please specify your name and project.",
"contributionUpdated": "Your contribution has been updated",
"somethingWrong": "Something went wrong. Please contact support"
},
"contribution": {
"hello": "Hello, ",
"contributeHow": "How would you like to contribute to the Sherpa.cash Trusted Setup Ceremony?",
"anonymously": "Anonymously",
"socialAccount": "By using social account",
"contributionHash": "Your contribution hash (Blake2b)",
"postAttestationTwitter": "And now you can post your attestation to Twitter.",
"postAttestation": "Post attestation",
"provideIdentity": "You can still provide identity for your contribution by following",
"thisLink": "this link",
"trustBinaries": "If you dont trust binaries, we encourage you to follow these",
"instructions": "instructions",
"easyCompile": "to contribute by compiling from the source code. It is fairly easy!",
"contribution": "Contribution",
"provideRandom": "Please provide your random input that will be used as a source of entropy for your contribution along with browser's RNG.",
"contribute": "Contribute",
"downloadingLast": "Downloading last contribution",
"generatingRandom": "Generating random contribution. Your browser may appear unresponsive. It can take a minute or so to complete",
"uploadingContribution": "Uploading and verifying your contribution",
"contributionVerified": "Your contribution has been verified and recorded.",
"failedUpload": "Failed to upload your contribution after ",
"attempts": " attempts",
"uploadError": "Error uploading your contribution",
"copied": "Copied!"
},
"instructions": {
"instructions" : "Instructions",
"pureRust": "Using pure Rust implementation:",
"installRust": "# Install Rust",
"cloneRepo": "# Clone the repository with the ceremony code",
"runCeremony": "# Run the ceremony",
"afterContribution": "After the contribution, we recommend you to reboot your machine to clear your RAM.",
"usingDocker": "Using Docker container:",
"downloadRustContainer": "Using this method, you will download and compile the ceremony source code from our git repo in a stock Rust container. This is not a prebuilt container distribution.",
"installDocker": "Start by installing Docker on your system:",
"windows": "Windows",
"mac": "Mac",
"linux": "Linux",
"downloadDockerfile": "# Download Dockerfile",
"buildDockerImage": "# Build docker image",
"runCeremony": "# Run the ceremony"
}
}
}

82
langs/fr.json Normal file
View File

@ -0,0 +1,82 @@
{
"common": {
"loading": "Chargement",
"error": "erreur",
"close": "fermer"
},
"pages": {
"header": {
"instructions": "Instructions"
},
"form": {
"twitterSignIn": "Connectez-vous avec Twitter",
"githubSignIn": "Connectez-vous avec Github"
},
"index": {
"sherpaCash": "Sherpa.cash",
"trustedSetupCeremonyTitle": "Cérémonie de Trusted Setup",
"zkSnarks": "Les zk-SNARKs nécessitent une configuration préexistante entre un Prover et un Verifier. Un ensemble de paramètres publics définit les\" règles du jeu \"pour la construction des zk-SNARK. Merci de contribuer avec votre source de entropie, pour que Sherpa.cash devienne totalement trustless.",
"contribute": "Contribuer",
"currently": "Il y en a actuellement",
"contributions": "contributions",
"account": "Compte",
"name": "Nom",
"project": "Projet",
"attestation": "Attestation",
"nothingHere": "Il n'y a rien ici.",
"search": "Recherche..."
},
"authorize": {
"saveInformation": "Enregistrer les informations",
"postAttestationTwitter": "Vous pouvez désormais publier votre attestation sur Twitter",
"postAttestation": "Poster l'attestation",
"contributeIdentity": "Souhaitez-vous rendre votre identité publique pour votre contribution ",
"specifyName": "Veuillez renseigner votre nom et organisation.",
"contributionUpdated": "Votre contribution a été mise à jour",
"somethingWrong": "Erreur. Veuillez contacter notre service d'aide."
},
"contribution": {
"hello": "Bonjour, ",
"contributeHow": "Comment souhaitez-vous contribuer à la cérémonie Trusted Setup de Sherpa.cash?",
"anonymously": "Anonymement",
"socialAccount": "Avec mon compte SNS",
"contributionHash": "Le hash (Blake2b) de votre contribution",
"postAttestationTwitter": "Vous pouvez désormais publier votre attestation sur Twitter",
"postAttestation": "Poster l'attestation",
"provideIdentity": "Vous pouvez toujours publier votre identité pour votre contribution plus tard en suivant",
"thisLink": "ce lien",
"trustBinaries": "Si vous n'avez pas confiance dans nos exécutables, vous pouvez suivre les",
"instructions": "instructions",
"easyCompile": "contribuer en compilant à partir du code source. C'est assez simple!",
"contribution": "Contribution",
"provideRandom": "Veuillez taper des caracteres aléatoires qui seront utilisés comme source d'entropie pour votre contribution avec le RNG de votre navigateur.",
"contribute": "Contribuer",
"downloadingLast": "Télécharger la dernière contribution",
"generatingRandom": "Génération d'une contribution aléatoire. Il est possible que votre navigateur ne réponde momentanénent plus. L'exécution peut prendre une minute environ",
"uploadingContribution": "Upload et vérification de votre contribution",
"contributionVerified": "Votre contribution a été vérifiée et enregistrée.",
"failedUpload": "Impossible d'uploader votre contribution après ",
"attempts": " essais",
"uploadError": "Erreur lors de l'upload de votre contribution",
"copied": "Copié dans le presse-papier!"
},
"instructions": {
"instructions" : "Instructions",
"pureRust": "Avec une implémentation en Rust pur:",
"installRust": "# Installer Rust",
"cloneRepo": "# Cloner le repo avec le code de la cérémonie",
"runCeremony": "# Lancer la cérémonie",
"afterContribution": "Après avoir contribué, nous vous recommandons de redémarrer votre machine pour vider votre RAM.",
"usingDocker": "Avec un container Docker:",
"downloadRustContainer": "En utilisant cette méthode, vous allez télécharger et compiler le code source de la cérémonie à partir de notre dépôt git dans un stock Rust container. Cette méthode n'utilise pas de container pré-construit.",
"installDocker": "Commencez par installer Docker sur votre système:",
"windows": "Windows",
"mac": "Mac",
"linux": "Linux",
"downloadDockerfile": "# Télécharger le Dockerfile",
"buildDockerImage": "# Construire une image docker",
"runCeremony": "# Lancer la cérémonie"
}
}
}

13
langs/index.js Normal file
View File

@ -0,0 +1,13 @@
import en from './en.json'
import kr from './kr.json'
import de from './de.json'
import fr from './fr.json'
import jp from './jp.json'
export default {
en,
kr,
de,
fr,
jp
}

82
langs/jp.json Normal file
View File

@ -0,0 +1,82 @@
{
"common": {
"loading": "読み込み中",
"error": "エラー",
"close": "閉じる"
},
"pages": {
"header": {
"instructions": "説明書"
},
"form": {
"twitterSignIn": "ツイッターでサインイン",
"githubSignIn": "ギットハブでサインイン"
},
"index": {
"sherpaCash": "シェルパ・キャッシュ",
"trustedSetupCeremonyTitle": "信頼されたセットアップセレモニー",
"zkSnarks": "zk-SNARKsゼットケー・スナークは証明者と検証者間の既存のセットアップを要求します。zk-SNARKsの構造において、一連の公開されたパラメーターは”ゲームのルール”を定義づけます。あなたのエントロピーソースを寄与していただくことで、シェルパ・キャッシュは完全に管理者による検証を必要としなくなります。",
"contribute": "貢献する",
"currently": "現在~",
"contributions": "コントリビューション(貢献)があります。",
"account": "アカウント",
"name": "名前",
"project": "プロジェクト",
"attestation": "認証",
"nothingHere": "何もありません",
"search": "検索"
},
"authorize": {
"saveInformation": "情報を保存する",
"postAttestationTwitter": "ツイッターへ認証を掲示できます",
"postAttestation": "認証を掲示する",
"contributeIdentity": "コントリビューション(貢献)のためにあなたの認証を提供したいですか",
"specifyName": "あなたの名前とプロジェクトを明記してください",
"contributionUpdated": "あなたのコントリビューション(貢献)がアップデートされました",
"somethingWrong": "不具合が起こりました。サポートにご連絡ください"
},
"contribution": {
"hello": "こんにちは, ",
"contributeHow": "シェルパ・キャッシュの信頼されたセットアップセレモニーにどのようにコントリビューション(貢献)をされたいですか?",
"anonymously": "匿名で",
"socialAccount": "ソーシャルアカウントを使用して",
"contributionHash": "コントリビューション貢献のハッシュBlake2b)",
"postAttestationTwitter": "現在あなたのツイッター認証を掲示できるようになりました",
"postAttestation": "認証を掲示する",
"provideIdentity": "あなたは以下に示す認証をコントリビューション(貢献)のためにさらに提供することできます: ",
"thisLink": "このリンクをクリックしてください",
"trustBinaries": "あなたがこのバイナリーを信頼できない場合は、以下を推奨します",
"instructions": "明書",
"easyCompile": "ソースコードを蓄積することでのコントリビューション(貢献).それは非常に簡単です",
"contribution": "コントリビューション(貢献)",
"provideRandom": "ランダムな入力をご提供下さい。それによってブラウザーのRNG(乱数ジェネレーター)と連動しあなたのコントリビューション(貢献)のためのエントロピーソースとして使用されます。",
"contribute": "貢献する",
"downloadingLast": "最終のコントリビューション(貢献)をダウンロードしています",
"generatingRandom": "ランダムなコントリビューション貢献を作り出します。あなたのブラウザーは反応しない状態となるかもしれません。完了まで1分程度かかります。",
"uploadingContribution": "あなたのコントリビューション(貢献)をアップロード、検証しています",
"contributionVerified": "あなたのコントリビューション(貢献)は検証され、記録されました",
"failedUpload": "以下のコントリビューション(貢献)のアップロードに失敗しました (",
"attempts": " 試行)",
"uploadError": "あなたのコントリビューション(貢献)のアップロードにエラーが生じました",
"copied": "コピーされました!"
},
"instructions": {
"instructions" : "説明書",
"pureRust": "純粋なRustインプリメンテーション実装を使用:",
"installRust": "# Rustをインストール",
"cloneRepo": "# リポジトリ(保管場所)をセレモニーコードでクローンする",
"runCeremony": "# セレモニーを実行",
"afterContribution": "コントリビューション(貢献)した後は、 RAMランダムアクセスメモリをクリアするためをパソコンの再起動を推奨いたします",
"usingDocker": "Dockerのコンテナを使用する:",
"downloadRustContainer": "このメソッドを使用し、あなたはRustコンテナのストック内にある私達のgit repoからセレモニーソースコードをダウンロード、編集できます。これは事前に構築されたコンテナディストリビューションではありません",
"installDocker": "あなたのシステムにDockerをインストールすることにより開始:",
"windows": "Windows(ウィンドウズ)",
"mac": "Mac(マック)",
"linux": "Linux",
"downloadDockerfile": "# Dockerfileをダウンロード",
"buildDockerImage": "# Dockerイメージを構築",
"runCeremony": "# セレモニーを実行"
}
}
}

82
langs/kr.json Normal file
View File

@ -0,0 +1,82 @@
{
"common": {
"loading": "로드하는 중",
"error": "오류",
"close": "닫기"
},
"pages": {
"header": {
"instructions": "사용 설명서"
},
"form": {
"twitterSignIn": "트위터로 로그인",
"githubSignIn": "깃허브으로 로그인"
},
"index": {
"sherpaCash": "셰르파 캐시",
"trustedSetupCeremonyTitle": "신뢰할 수있는 설정 행사",
"zkSnarks": "zk-SNARKs를 사용하는 시스템에는 신뢰할 수있는 설정이 필요합니다. 신뢰할 수있는 설정 행사 참가자 수가 많을수록 시스템이 더 안전합니다. 셰르파 캐시 더욱 안전하게 만들려면 기여하십시오.",
"contribute": "기여합니다",
"currently": "지금은 ",
"contributions": "개의 기여물이 있습니다",
"account": "계좌",
"name": "성함",
"project": "회사",
"attestation": "증거",
"nothingHere": "여기는 아무것도 없습니다. ",
"search": "검색..."
},
"authorize": {
"saveInformation": "정보 저장",
"postAttestationTwitter": "지금 증거를 트위터에서 공유할 수 있습니다.",
"postAttestation": "증거를 고유",
"contributeIdentity": "신분을 공개하시겠어요? 기여",
"specifyName": "성함과 회사를 입력해 주십시오.",
"contributionUpdated": "기여가 업데이트되었습니다",
"somethingWrong": "오류가 발생했습니다. 우리 지원 팀에 문의하십시오."
},
"contribution": {
"hello": "안녕하세요, ",
"contributeHow": "셰르파 개시 신뢰할 수 있는 설정 행사에 어떻게 기여하시겠어요?",
"anonymously": "익명으로",
"socialAccount": "SNS로",
"contributionHash": "기여물의 해시값 (Blake2b)",
"postAttestationTwitter": "금 증거를 트위터에서 공유할 수 있습니다.",
"postAttestation": "증거를 고유",
"provideIdentity": "나중에 신분을 공개하시려면 ",
"thisLink": "이 링크를 클릭하십시오",
"trustBinaries": "이진 파일을 신뢰하지 않을 경우",
"instructions": "사용 설명서를 참조하며 ",
"easyCompile": "쉽게 소스컴파일할 수도 있습니다",
"contribution": "기여",
"provideRandom": "임의의 문자열을 입력하십시오.",
"contribute": "기여하기",
"downloadingLast": "마지막 기여물 다운받기",
"generatingRandom": "랜돔 기여물을 생성하기. 브라우저가 잠시 동안 응답하지 않을 수 있습니다. 약 1분 기다려 주십시오",
"uploadingContribution": "기여물을 확인하고 업로드 중입니다.",
"contributionVerified": "기여물이 확인되고 등록되었습니다.",
"failedUpload": "기여물을 업롣하지 못 했습니다.",
"attempts": " 번 시도했습니다.",
"uploadError": "기여물을 업로드하는 중 오류가 발생했습니다.",
"copied": "복사되었습니다!"
},
"instructions": {
"instructions" : "사용 설명서",
"pureRust": "순수한 러스트 구현:",
"installRust": "# 러스트 설치",
"cloneRepo": "# 신뢰할 수있는 설정 행사 리포지토리를 clone하기",
"runCeremony": "# 신뢰할 수있는 설정 행사를 실행하기",
"afterContribution": "기여하신 다음에, RAM을 지우기 위해 시스템을 다시 시작하십시오.",
"usingDocker": "도커 컨테이너:",
"downloadRustContainer": "본 방벙이 도커 컨테이너 안에서 우리 깃허브 리포지토리에서 신뢰할 수있는 설정 행사 소스를 다운받고 컴파일합니다. 사전 빌드된 컨테이너가 아닙니다.",
"installDocker": "먼저 도커를 설치하십시오:",
"windows": "윈도우",
"mac": "맥OS",
"linux": "리눅스",
"downloadDockerfile": "# 도커파일을 다운받기",
"buildDockerImage": "# 도거 이미지 빌드하기",
"runCeremony": "# 신뢰할 수있는 설정 행사를 실행하기"
}
}
}

View File

@ -4,7 +4,7 @@ module.exports = {
** Headers of the page
*/
head: {
title: 'Tornado.cash Trusted Setup Ceremony',
title: 'Sherpa.cash Trusted Setup Ceremony',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1, shrink-to-fit=no' },
@ -12,23 +12,23 @@ module.exports = {
{
hid: 'description',
name: 'description',
content: 'Non-custodial Ethereum Privacy solution.'
content: 'Non-custodial Privacy solution on Avalanche.'
},
{
hid: 'og:title',
property: 'og:title',
content: 'Tornado.cash Trusted Setup Ceremony'
content: 'Sherpa.cash Trusted Setup Ceremony'
},
{
hid: 'og:description',
property: 'og:description',
content:
"Improve security of tornado.cash by contributing to Trusted Setup Ceremony. Let's make it fully trustless!"
"Improve security of sherpa.cash by contributing to Trusted Setup Ceremony. Let's make it fully trustless!"
},
{
hid: 'og:url',
property: 'og:url',
content: 'https://ceremony.tornado.cash'
content: 'https://ceremony.sherpa.cash'
},
{
hid: 'og:type',
@ -38,19 +38,19 @@ module.exports = {
{
hid: 'og:image',
property: 'og:image',
content: 'https://tornado.cash/tw.png'
content: 'https://raw.githubusercontent.com/Sherpa-Cash/assets/main/1500x500.jpeg'
},
{
hid: 'description',
name: 'description',
content:
"Improve security of tornado.cash by contributing to Trusted Setup Ceremony. Let's make it fully trustless!"
"Improve security of sherpa.cash by contributing to Trusted Setup Ceremony. Let's make it fully trustless!"
},
{
hid: 'keywords',
name: 'keywords',
content:
'Mixer, Ethereum, ERC20, dapp, smart contract, decentralized, metamask, zksnark, zero knowledge'
'Mixer, Avalanche, dapp, smart contract, decentralized, metamask, zksnark, zero knowledge'
}
],
link: [
@ -66,7 +66,7 @@ module.exports = {
/*
** Customize the progress-bar color
*/
loading: { color: '#94febf', height: '5px', duration: 5000 },
loading: { color: '#138198', height: '5px', duration: 5000 },
/*
** Global CSS
*/
@ -74,7 +74,7 @@ module.exports = {
/*
** Plugins to load before mounting the App
*/
plugins: [{ src: '~plugins/phase2', ssr: false }, '~plugins/highlight'],
plugins: [{ src: '~plugins/phase2', ssr: false }, '~plugins/highlight', '~plugins/i18n.js'],
/*
** Nuxt.js dev-modules
*/

View File

@ -29,7 +29,8 @@
"oauth": "^0.9.15",
"sequelize": "^5.21.3",
"twitter": "^1.7.1",
"vue-highlightjs": "^1.3.3"
"vue-highlightjs": "^1.3.3",
"vue-i18n": "^8.24.2"
},
"devDependencies": {
"@nuxtjs/eslint-config": "^1.0.1",

View File

@ -17,16 +17,16 @@
type="is-primary"
outlined
>
Save information
{{ $t('pages.index.saveInformation') }}
</b-button>
</div>
<div v-show="status.type !== ''" class="status">
<div :class="status.type" class="status-message">{{ status.msg }}</div>
<div v-show="status.type === 'is-success'" class="status-message is-success">
Now you can post your attestation to Twitter.
{{ $t('pages.index.postAttestationTwitter') }}
<div class="buttons is-centered">
<b-button @click="makeTweet" type="is-primary" tag="a" target="_blank" outlined>
Post attestation
{{ $t('pages.index.postAttestation') }}
</b-button>
</div>
</div>
@ -60,9 +60,9 @@ export default {
return null
}
if (!this.isLoggedIn) {
return `Would you like to provide identity for your contribution #${this.contributionIndex}?`
return this.$t('pages.authorize.contributeIdentity') + `(#${this.contributionIndex})?`
} else {
return `Please, specify your name and project.`
return this.$t('pages.authorize.specifyName')
}
}
},
@ -97,7 +97,7 @@ export default {
body: JSON.stringify(body)
})
if (response.ok) {
this.status.msg = `Your contribution has been updated.`
this.status.msg = this.$t('pages.authorize.contributionUpdated')
this.status.type = 'is-success'
this.hideSaveBtn = true
} else {
@ -106,7 +106,7 @@ export default {
this.status.type = 'is-danger'
}
} catch (e) {
this.status.msg = 'Something went wrong. Please contact support'
this.status.msg = this.$t('pages.authorize.somethingWrong')
this.status.type = 'is-danger'
}
},
@ -133,7 +133,7 @@ export default {
this.hideSaveBtn = true
}
} catch (e) {
this.status.msg = 'Something went wrong. Please contact support'
this.status.msg = this.$t('pages.authorize.somethingWrong')
this.status.type = 'is-danger'
}
}

View File

@ -1,138 +1,139 @@
<template>
<div class="ceremony">
<h1 class="title is-size-1 is-size-2-mobile is-spaced">
Tornado.cash <span>Trusted Setup Ceremony</span>
{{ $t('pages.index.sherpaCash') }}
<span>{{ $t('pages.index.trustedSetupCeremonyTitle') }}</span>
</h1>
<p class="p is-size-6">
zk-SNARKs require a pre-existing setup between Prover and Verifier. A set of public parameters
defines the rules of the game for the construction of zk-SNARKs. Please contribute with your
source of entropy, so that Tornado.cash can become fully trustless.
{{ $t('pages.index.zkSnarks') }}
</p>
<div class="buttons is-centered">
<b-button type="is-primary" outlined tag="router-link" to="/make-contribution">
Contribute
{{ $t('pages.index.contribute') }}
</b-button>
</div>
<div class="currently">
Currently there are <span>{{ contributions.length }}</span> contributions
</div>
<div class="summary">
<div class="currently">
{{ $t('pages.index.currently') }} <span>{{ contributions.length }}</span>
{{ $t('pages.index.contributions') }}
</div>
<b-table
:data="filteredContributions"
:hoverable="true"
:mobile-cards="false"
:per-page="rowsPerPage"
paginated
pagination-position="both"
>
<template slot-scope="props">
<b-table-column field="id" label="#" width="40" numeric>
{{ props.row.id }}
</b-table-column>
<b-table
:data="filteredContributions"
:hoverable="true"
:mobile-cards="false"
:per-page="rowsPerPage"
paginated
pagination-position="both"
>
<template slot-scope="props">
<b-table-column field="id" label="#" width="40" numeric>
{{ props.row.id }}
</b-table-column>
<b-table-column label="Account">
<a
v-if="props.row.handle"
:href="`https://${props.row.socialType}.com/${props.row.handle}`"
class="social-link"
target="_blank"
>
<span :class="`icon-${props.row.socialType}`" class="icon"></span>
@{{ props.row.handle }}
</a>
<div v-else class="social-link">
<span :class="`icon-${props.row.socialType}`" class="icon"></span>
Anonymous
</div>
</b-table-column>
<b-table-column field="name" label="Name">
{{ props.row.name }}
</b-table-column>
<b-table-column field="company" label="Project">
{{ props.row.company }}
</b-table-column>
<b-table-column :centered="true" label="Attestation">
<a
v-if="props.row.attestation"
:href="`https://twitter.com/${props.row.handle}/status/${props.row.attestation}`"
target="_blank"
class="button is-icon"
>
<span class="icon icon-link"></span>
</a>
</b-table-column>
<b-table-column>
<a :href="`${downloadUrl}/response_${props.row.id}`" class="button is-icon" download>
<span class="icon icon-save"></span>
</a>
</b-table-column>
</template>
<template slot="empty">
<section class="section">
<div class="content has-text-centered">
<p>
<span class="icon icon-emoticon-sad icon-48px"></span>
</p>
<p>Nothing here.</p>
</div>
</section>
</template>
<template slot="top-left">
<b-field class="table-search">
<b-input
v-model="contributionSearch"
placeholder="Search..."
type="search"
icon="magnify"
></b-input>
</b-field>
</template>
<template slot="bottom-left">
<b-field horizontal label="Show">
<b-dropdown v-model="rowsPerPage" expanded aria-role="list" position="is-top-right">
<div slot="trigger" class="control">
<div class="input">
<span>{{ rowsPerPage }}</span>
</div>
</div>
<b-dropdown-item
v-for="(rows, index) in [10, 25, 50, 100, 1000]"
:key="index"
:value="rows"
aria-role="listitem"
<b-table-column :label="$t('pages.index.account')">
<a
v-if="props.row.handle"
:href="`https://${props.row.socialType}.com/${props.row.handle}`"
class="social-link"
target="_blank"
>
{{ rows }}
</b-dropdown-item>
</b-dropdown>
</b-field>
</template>
</b-table>
<span :class="`icon-${props.row.socialType}`" class="icon"></span>
@{{ props.row.handle }}
</a>
<div v-else class="social-link">
<span :class="`icon-${props.row.socialType}`" class="icon"></span>
Anonymous
</div>
</b-table-column>
<b-table-column :label="$t('pages.index.name')" field="name">
{{ props.row.name }}
</b-table-column>
<b-table-column :label="$t('pages.index.project')" field="company">
{{ props.row.company }}
</b-table-column>
<b-table-column :centered="true" :label="$t('pages.index.attestation')">
<a
v-if="props.row.attestation"
:href="`https://twitter.com/${props.row.handle}/status/${props.row.attestation}`"
target="_blank"
class="button is-icon"
>
<span class="icon icon-link"></span>
</a>
</b-table-column>
<b-table-column>
<a :href="`${downloadUrl}/response_${props.row.id}`" class="button is-icon" download>
<span class="icon icon-save"></span>
</a>
</b-table-column>
</template>
<template slot="empty">
<section class="section">
<div class="content has-text-centered">
<p>
<span class="icon icon-emoticon-sad icon-48px"></span>
</p>
<p>{{ $t('pages.index.nothingHere') }}</p>
</div>
</section>
</template>
<template slot="top-left">
<b-field class="table-search">
<b-input
v-model="contributionSearch"
:placeholder="$t('pages.index.search')"
type="search"
icon="magnify"
></b-input>
</b-field>
</template>
<template slot="bottom-left">
<b-field horizontal label="Show">
<b-dropdown v-model="rowsPerPage" expanded aria-role="list" position="is-top-right">
<div slot="trigger" class="control">
<div class="input">
<span>{{ rowsPerPage }}</span>
</div>
</div>
<b-dropdown-item
v-for="(rows, index) in [10, 25, 50, 100, 1000]"
:key="index"
:value="rows"
aria-role="listitem"
>
{{ rows }}
</b-dropdown-item>
</b-dropdown>
</b-field>
</template>
</b-table>
</div>
</div>
</template>
<script>
export default {
data() {
/* const contributor = {
id: 1,
socialType: 'twitter',
account: '@VitalikButerin',
name: 'Vitalik Buterin',
company: 'Ethereum',
attestation: 'https://twitter.com/VitalikButerin/status/1220158987456237568',
contribution: '#'
} */
return {
contributions: [],
// contributions: [
// {
// id: 1,
// socialType: 'twitter',
// account: '@VitalikButerin',
// name: 'Vitalik Buterin',
// company: 'Ethereum',
// attestation: 'https://twitter.com/VitalikButerin/status/1220158987456237568',
// contribution: '#'
// }
// ],
// contributions: [...Array(20).keys()].map((i) => contributor),
rowsPerPage: 100,
contributionSearch: '',
downloadUrl: process.env.downloadUrl

View File

@ -1,63 +1,66 @@
<template>
<div class="ceremony">
<h1 class="title is-size-1 is-size-2-mobile is-spaced">
Instructions
{{ $t('pages.instructions.instructions') }}
</h1>
<h2 class="subtitle">
Using pure Rust implementation:
{{ $t('pages.instructions.pureRust') }}
</h2>
<figure class="highlight">
<pre v-highlightjs><code class="bash"># Install Rust
<pre v-highlightjs><code class="bash">{{ $t('pages.instructions.installRust') }}
curl -sSf https://sh.rustup.rs | sh
# Clone the repository with the ceremony code
git clone https://github.com/tornadocash/phase2-bn254
{{ $t('pages.instructions.cloneRepo') }}
git clone https://github.com/sherpacash/phase2-bn254
cd phase2-bn254/phase2
# Run the ceremony
{{ $t('pages.instructions.runCeremony') }}
cargo run --release --bin tornado
</code></pre>
</figure>
<div class="content afterwords p">
<p>
After the contribution, we recommend you to reboot your machine to clear your RAM.
{{ $t('pages.instructions.afterContribution') }}
</p>
</div>
<h2 class="subtitle">
Using Docker container:
{{ $t('pages.instructions.usingDocker') }}
</h2>
<div class="content p">
<p>
Using this method, you will download and compile the ceremony source code from our git repo
in a stock Rust container. This is not a prebuilt container distribution.
{{ $t('pages.instructions.downloadRustContainer') }}
</p>
<p>
Start by installing Docker on your system:
{{ $t('pages.instructions.installDocker') }}
<a
href="https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe"
target="_blank"
>Windows</a
>{{ $t('pages.instructions.windows') }}</a
>
<a href="https://download.docker.com/mac/stable/Docker.dmg" target="_blank">Mac</a>
<a href="https://docs.docker.com/install/#supported-platforms" target="_blank">Linux</a>
<a href="https://download.docker.com/mac/stable/Docker.dmg" target="_blank">{{
$t('pages.instructions.mac')
}}</a>
<a href="https://docs.docker.com/install/#supported-platforms" target="_blank">{{
$t('pages.instructions.linux')
}}</a>
</p>
</div>
<figure class="highlight">
<pre v-highlightjs><code class="bash"># Download Dockerfile
wget https://raw.githubusercontent.com/tornadocash/phase2-bn254/master/Dockerfile
<pre v-highlightjs><code class="bash">{{ $t('pages.instructions.downloadDockerfile') }}
wget https://raw.githubusercontent.com/Sherpa-Cash/phase2-bn254/master/Dockerfile
# Build docker image
{{ $t('pages.instructions.buildDockerImage') }}
docker build . -t ceremony
# Run the ceremony
{{ $t('pages.instructions.runCeremony') }}
docker run -ti ceremony</code></pre>
</figure>
<div class="content afterwords p">
<p>
After the contribution, we recommend you to reboot your machine to clear your RAM.
{{ $t('pages.instructions.afterContribution') }}
</p>
</div>
</div>

View File

@ -1,10 +1,10 @@
<template>
<div class="ceremony">
<h1 class="title is-size-1 is-size-2-mobile is-spaced">
Hello, <span>@{{ userHandle }}</span>
{{ $t('pages.contribution.hello') }} <span>@{{ userHandle }}</span>
</h1>
<h2 class="subtitle">
How would you like to contribute to the Tornado.cash Trusted Setup Ceremony?
{{ $t('pages.contribution.contributeHow') }}
</h2>
<fieldset :disabled="status.type === 'is-success'">
<div class="columns is-centered">
@ -14,13 +14,13 @@
@click="onAnonymousHandler"
class="box box-anonymous"
>
<div class="title is-5">Anonymously</div>
<div class="title is-5">{{ $t('pages.contribution.anonymously') }}</div>
<Cloak />
</button>
</div>
<div class="column is-one-third">
<div :class="{ 'is-hovered': isLoggedIn }" class="box">
<div class="title is-5">By using social account</div>
<div class="title is-5">{{ $t('pages.contribution.socialAccount') }}</div>
<Form />
</div>
</div>
@ -28,7 +28,7 @@
</fieldset>
<div v-show="contributionHash" class="status">
<div class="label">Your contribution hash (Blake2b)</div>
<div class="label">{{ $t('pages.contribution.contributionHash') }}</div>
<b-field position="is-centered" class="has-addons contribution-hash">
<b-input
@click.native="copyContributionHash"
@ -44,17 +44,18 @@
v-show="status.type === 'is-success' && contributionType !== 'anonymous'"
class="status-message is-success"
>
And now you can post your attestation to Twitter.
{{ $t('pages.contribution.postAttestationTwitter') }}
<div class="buttons is-centered">
<b-button @click="makeTweet" type="is-primary" tag="a" target="_blank" outlined>
Post attestation
{{ $t('pages.contribution.postAttestation') }}
</b-button>
</div>
</div>
</div>
<div v-show="authorizeLink" class="status">
You can still provide identity for your contribution by following
<a :href="authorizeLink" class="has-text-primary">this link</a>.
{{ $t('pages.contribution.provideIdentity') }}
<a :href="authorizeLink">{{ $t('pages.contribution.thisLink') }}</a
>.
</div>
<div class="buttons is-centered">
@ -69,9 +70,9 @@
</b-button>
</div>
<p class="p">
If you dont trust binaries, we encorage you to follow these
<router-link to="/instructions">instructions</router-link> to contribute by compiling from the
source code. It is fairly easy!
{{ $t('pages.contribution.trustBinaries') }}
<router-link to="/instructions">{{ $t('pages.contribution.instructions') }}</router-link>
{{ $t('pages.contribution.easyCompile') }}
</p>
</div>
</template>
@ -158,12 +159,12 @@ export default {
...mapActions('user', ['makeTweet', 'logOut', 'getUserData']),
getUserRandom() {
this.$buefy.dialog.prompt({
title: 'Contribution',
message: `Please provide your random input that will be used as a source of entropy for your contribution along with browser's RNG.`,
title: this.$t('pages.contribution.contribution'),
message: this.$t('pages.contribution.provideRandom'),
inputAttrs: {
maxlength: 300
},
confirmText: 'Contribute',
confirmText: this.$t('pages.contribution.contribute'),
trapFocus: true,
onConfirm: (userInput) => {
this.makeContribution({ userInput })
@ -176,14 +177,11 @@ export default {
this.isContributeBtnSnown = true
this.status.msg = ''
this.status.type = ''
this.$root.$emit('enableLoading', 'Downloading last contribution')
this.$root.$emit('enableLoading', this.$t('pages.contribution.downloadingLast'))
let data = await fetch('api/challenge')
data = new Uint8Array(await data.arrayBuffer())
this.$root.$emit(
'enableLoading',
'Generating random contribution. Your browser may appear unresponsive. It can take a minute or so to complete'
)
this.$root.$emit('enableLoading', this.$t('pages.contribution.generatingRandom'))
await timeout(100) // allow UI to update before freezing in wasm
console.log('Source params', data)
@ -211,7 +209,7 @@ export default {
console.log('hash', hash)
console.log('contribution', contribution)
this.$root.$emit('enableLoading', 'Uploading and verifying your contribution')
this.$root.$emit('enableLoading', this.$t('pages.contribution.uploadingContribution'))
const formData = new FormData()
formData.append('response', new Blob([contribution], { type: 'application/octet-stream' }))
if (this.contributionType !== 'anonymous') {
@ -225,7 +223,7 @@ export default {
if (resp.ok) {
const responseData = await resp.json()
this.$store.commit('user/SET_CONTRIBUTION_INDEX', responseData.contributionIndex)
this.status.msg = 'Your contribution has been verified and recorded.'
this.status.msg = this.$t('pages.contribution.contributionVerified')
this.status.type = 'is-success'
this.contributionHash = hash
if (this.contributionType === 'anonymous') {
@ -236,12 +234,15 @@ export default {
console.log(`Looks like someone else uploaded contribution ahead of us, retrying`)
await this.makeContribution({ userInput, retry: retry++ })
} else {
this.status.msg = `Failed to upload your contribution after ${retry} attempts`
this.status.msg =
this.$t('pages.contribution.failedUpload') +
retry +
this.$t('pages.contribution.attempts')
this.status.type = 'is-danger'
this.isContributeBtnSnown = false
}
} else {
this.status.msg = 'Error uploading your contribution'
this.status.msg = this.$t('pages.contribution.uploadError')
this.status.type = 'is-danger'
this.isContributeBtnSnown = false
}
@ -261,7 +262,7 @@ export default {
copyContributionHash() {
navigator.clipboard.writeText(this.contributionHash).then(() => {
this.$buefy.toast.open({
message: 'Copied!',
message: this.$t('pages.contribution.copied'),
type: 'is-primary'
})
})

114
plugins/i18n.js Normal file
View File

@ -0,0 +1,114 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import messages from '../langs/index'
Vue.use(VueI18n)
let lang = 'en'
if (process.browser) {
const locale = localStorage.getItem('lang') || navigator.language.substr(0, 2).toLowerCase()
lang = !messages[locale] ? 'en' : locale
}
const dateTimeFormats = {
en: {
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
hour12: true
}
},
fr: {
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
hour12: true
}
},
tr: {
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
hour12: true
}
},
jp: {
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
hour12: true
}
},
kr: {
long: {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: 'numeric',
minute: 'numeric',
hour12: true
}
}
}
const numberFormats = {
en: {
compact: {
notation: 'compact'
}
},
fr: {
compact: {
notation: 'compact'
}
},
jp: {
compact: {
notation: 'compact'
}
},
kr: {
compact: {
notation: 'compact'
}
},
tr: {
compact: {
notation: 'compact'
}
}
}
// Create VueI18n instance with options
export default ({ app, route, store }) => {
app.i18n = new VueI18n({
locale: lang,
fallbackLocale: 'en',
messages,
silentFallbackWarn: true,
dateTimeFormats,
numberFormats
})
if (lang === 'zh') {
lang += '-cn'
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,6 +1,6 @@
{
"name": "Tornado Cash",
"short_name": "Tornado Cash",
"name": "Sherpa Cash",
"short_name": "Sherpa Cash",
"icons": [
{
"src": "/favicon/android-chrome-192x192.png",

View File

@ -53,9 +53,9 @@ const actions = {
window.location.replace(`/api/connect/${provider}`)
},
makeTweet({ state }) {
const tweetText = `I just made the contribution %23${state.contributionIndex} to @TornadoCash Trusted Setup Ceremony!
const tweetText = `I just uploaded contribution %23${state.contributionIndex} to @sherpa_cash Trusted Setup Ceremony!
🚀 Let's make it more secure and trustless %23${process.env.hashtag} \n
https://ceremony.tornado.cash`
https://ceremony.sherpa.cash`
const popUpWindowWidth = 600
const popUpWindowHeight = 250
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX

1
utils/index.js Normal file
View File

@ -0,0 +1 @@
export { localStorage } from "./localStorage";

63
utils/localStorage.js Normal file
View File

@ -0,0 +1,63 @@
let isLocalStorageEnabled = null
try {
window.localStorage.setItem('test', 'test')
window.localStorage.removeItem('test')
isLocalStorageEnabled = true
} catch (e) {
isLocalStorageEnabled = false
}
const setItem = (key, value) => {
if (isLocalStorageEnabled) {
window.localStorage.setItem(key, JSON.stringify(value))
}
}
const getItem = (key) => {
if (isLocalStorageEnabled) {
const value = window.localStorage.getItem(key)
try {
return JSON.parse(String(value))
} catch (err) {
return value
}
}
return undefined
}
const removeItem = (key) => {
if (isLocalStorageEnabled) {
return window.localStorage.removeItem(key)
}
}
const clear = () => {
if (isLocalStorageEnabled) {
window.localStorage.clear()
}
}
const subscribe = (key, originalListener) => {
const listener = (event) => {
if (event.storageArea === window.localStorage && event.key === key) {
originalListener(event.newValue, event.oldValue)
}
}
window.addEventListener('storage', listener, false)
return listener
}
const unsubscribe = (listener) => {
window.removeEventListener('storage', listener, false)
}
export const localStorage = {
setItem,
getItem,
removeItem,
clear,
subscribe,
unsubscribe,
}