Commit 2f031c25 authored by Douwe Maan's avatar Douwe Maan

Merge branch '2501-trial-and-license-ee-frontend' into...

Merge branch '2501-trial-and-license-ee-frontend' into '2501-trial-and-license-purchases-inside-gitlab-ee'

Frontend for trial and license purchases inside GitLab EE

See merge request !2301
parents 6562dfb8 3cb2c12b
import Cookies from 'js-cookie';
export default class EETrialBanner {
constructor($trialBanner) {
this.COOKIE_KEY = 'show_ee_trial_banner';
this.$trialBanner = $trialBanner;
this.$mainNavbar = this.$trialBanner.siblings('.js-navbar-gitlab');
this.$secondaryNavbar = this.$mainNavbar.siblings('.js-page-with-sidebar');
this.licenseExpiresOn = new Date(this.$trialBanner.data('license-expiry'));
}
init() {
// Wait for navbars to render before querying
this.setCookies();
this.$trialBanner.on('close.bs.alert', e => this.handleTrialBannerDismiss(e));
}
/**
* Trial Expiring/Expired Banner has two stages;
* 1. Show banner when user enters last 7 days of trial
* 2. Show banner again when last 7 days are over and license has expired
*
* Stage 1:
* Banner is showed when `trial_license_message` is sent by backend
* for the first time (in `app/views/layouts/header/_default.html.haml`).
* Here, we perform following steps;
*
* 1. Set cookie `show_ee_trial_banner` with expiry same as license
* 2. Set cookie value to `true`
* 3. Show banner using `toggleBanner(true)`
*
* At this stage, if user dismisses banner, we set cookie value to `false`
* and everytime page is initialized, we check for cookie existence as
* well as its value, and decide show/hide status of banner
*
* Stage 2:
* At this point, Cookie we had set earlier will be expired and
* backend will now send updated message in `trial_license_message`.
* Here, we perform following steps;
*
* 1. Check if cookie is defined (it'll not be defined as it is expired now)
* 2. If cookie is gone, we re-set `show_ee_trial_banner` cookie but with
* expiry of 20 years
* 3. Set cookie value to `true`
* 4. Show banner using `toggleBanner(true)`, which now has updated message
*
* At this stage, if user dismisses banner, we set cookie value to `false`
* and our existing logic of show/hide banner based on cookie value continues
* to work. And since, cookie is set to expire after 20 years, user won't be
* seeing banner again.
*/
setCookies() {
const today = new Date();
// Check if Cookie is defined
if (!Cookies.get(this.COOKIE_KEY)) {
// Cookie was not defined, let's define with default value
// Check if License is yet to expire
if (today < this.licenseExpiresOn) {
// License has not expired yet, we show initial banner of 7 days
// with cookie set to validity same as license expiry
Cookies.set(this.COOKIE_KEY, 'true', { expires: this.licenseExpiresOn });
} else {
// License is already expired so we show final Banner with cookie set to 20 years validity.
Cookies.set(this.COOKIE_KEY, 'true', { expires: 7300 });
}
this.toggleBanner(true);
} else {
// Cookie was defined, let's read value and show/hide banner
this.toggleBanner(Cookies.get(this.COOKIE_KEY) === 'true');
}
}
toggleMainNavbarMargin(state) {
if (this.$mainNavbar.length) {
this.$mainNavbar.toggleClass('has-trial-banner', state);
}
}
toggleSecondaryNavbarMargin(state) {
if (this.$secondaryNavbar.length) {
this.$secondaryNavbar.toggleClass('has-trial-banner', state);
}
}
toggleBanner(state) {
this.$trialBanner.toggleClass('hidden', !state);
this.toggleMainNavbarMargin(state);
this.toggleSecondaryNavbarMargin(state);
}
handleTrialBannerDismiss() {
this.toggleMainNavbarMargin(false);
this.toggleSecondaryNavbarMargin(false);
if (Cookies.get(this.COOKIE_KEY)) {
Cookies.set(this.COOKIE_KEY, 'false');
}
}
}
import EETrialBanner from './ee_trial_banner';
$(() => {
const $trialBanner = $('.js-gitlab-ee-trial-banner');
if ($trialBanner.length) {
const eeTrialBanner = new EETrialBanner($trialBanner);
eeTrialBanner.init();
}
});
......@@ -168,6 +168,7 @@ import './zen_mode';
import './admin_email_select';
import './application_settings';
import './approvals';
import './ee_trial_banner';
import './ldap_groups_select';
import './path_locks';
import './weight_select';
......
.blank-state-parent-container {
display: flex;
.section-container {
display: flex;
flex: 1;
padding: 10px;
}
.section-body {
width: 100%;
height: 100%;
border: 1px solid $border-color;
border-radius: $border-radius-default;
&.section-ee-trial {
display: flex;
align-items: center;
justify-content: center;
}
}
}
.blank-state-welcome {
text-align: center;
border-bottom: 1px solid $border-color;
.blank-state-text {
margin-bottom: 0;
......@@ -10,6 +32,10 @@
.blank-state {
padding-top: 20px;
padding-bottom: 20px;
}
.blank-state.ee-trial {
padding: 20px;
text-align: center;
}
......@@ -20,20 +46,32 @@
.blank-state-icon {
padding-bottom: 20px;
color: $gray-darkest;
font-size: 56px;
path,
polygon {
fill: currentColor;
svg {
display: block;
margin: auto;
}
}
.section-admin-welcome {
/**
* This is slight increase over 25% of col-md-offset-3 for
* admin welcome page
*/
.blank-state-icon.col-md-offset-3 {
margin-left: 30%;
@media (max-width: $screen-md-min) {
margin-left: auto;
}
}
}
.blank-state-title {
margin-top: 0;
margin-bottom: 5px;
margin-bottom: 10px;
font-size: 18px;
font-weight: normal;
}
.blank-state-text {
......@@ -49,3 +87,24 @@
.blank-state-welcome-title {
font-size: 24px;
}
@media (max-width: $screen-md-min) {
.blank-state-parent-container {
&,
.section-container {
display: block;
}
}
.blank-state {
text-align: center;
}
.blank-state-icon {
padding-bottom: 0;
}
.blank-state-body {
margin-top: 15px;
}
}
......@@ -9,6 +9,7 @@
.prepend-top-0 { margin-top: 0; }
.prepend-top-5 { margin-top: 5px; }
.prepend-top-10 { margin-top: 10px; }
.prepend-top-15 { margin-top: 15px; }
.prepend-top-default { margin-top: $gl-padding !important; }
.prepend-top-20 { margin-top: 20px; }
.prepend-left-5 { margin-left: 5px; }
......
.trial-form-container {
.start-trial-header,
.start-trial-body {
margin-top: 30px;
}
.start-trial-header {
.trial-description {
color: $gl-gray-light;
}
}
}
.start-trial-body {
.ee-features {
border: 1px solid $border-color;
border-radius: $border-radius-default;
padding: 20px 40px;
}
}
.start-trial-body {
.trial-form {
label {
font-weight: normal;
}
}
}
.start-trial-body {
.feature-list li {
margin-top: 35px;
svg {
display: block;
margin: auto;
}
.feature-item-description {
h4 {
margin-top: 0;
}
p {
color: $gl-gray-light;
}
}
}
}
@media (max-width: $screen-md-min) {
.start-trial-body {
.feature-item-description {
margin-top: 15px;
h4,
p {
text-align: center;
}
}
.trial-form {
margin-top: 25px;
}
}
}
/* EE Trial Banner Styles */
/* Main Nav Overrides */
.navbar-gitlab.has-trial-banner {
top: 52px;
}
/* Secondary Nav Overrides - Old Nav */
.page-with-sidebar.has-trial-banner {
margin-top: 102px;
}
/* Sidebar Nav Overrides - New Nav */
.page-with-sidebar.has-trial-banner .nav-sidebar {
top: 102px;
}
/* Trial Banner */
.gitlab-ee-trial-banner.alert {
position: fixed;
top: 0;
width: 100%;
background: $white-light;
text-align: center;
z-index: 400;
p a {
color: $gl-link-color;
text-decoration: none;
font-weight: bold;
&:hover {
color: $gl-link-hover-color;
text-decoration: underline;
}
}
}
\ No newline at end of file
.blank-state-container {
margin-top: 35px;
.trial-description {
color: $gl-gray-light;
}
}
\ No newline at end of file
......@@ -286,8 +286,7 @@ table.u2f-registrations {
}
.user-callout {
margin: 0 auto;
max-width: $screen-lg-min;
margin: 20px -5px 0;
.bordered-box {
border: 1px solid $blue-300;
......
= link_to 'Buy License', "#{Gitlab::SUBSCRIPTIONS_URL}/plans", target: '_blank', rel: 'noopener noreferrer nofollow', class: "btn btn-new btn-inverted pull-right btn-buy-license"
= link_to 'Upload New License', new_admin_license_path, class: "btn pull-right btn-upload-license append-right-10"
......@@ -2,14 +2,13 @@
%h3.page-title
Your License
= link_to 'Buy License', "#{Gitlab::SUBSCRIPTIONS_URL}/plans", target: '_blank', class: "btn btn-new pull-right"
= link_to 'Upload New License', new_admin_license_path, class: "btn pull-right"
= render "upload_buy_license"
%hr
%h4 You do not have a license.
%p You can start a free trial of GitLab Enterprise Edition without any obligation or payment details.
= link_to 'Start free trial', new_admin_trials_url, class: "btn btn-new"
.container.blank-state-container
.text-center
= custom_icon("missing_license")
%h4 You do not have a license.
%p.trial-description You can start a free trial of GitLab Enterprise Edition without any obligation or payment details.
= link_to 'Start free trial', new_admin_trials_url, class: "btn btn-new btn-start-trial prepend-top-10"
......@@ -2,8 +2,7 @@
%h3.page-title
Your License
- if current_license.trial?
= link_to 'Buy License', "#{Gitlab::SUBSCRIPTIONS_URL}/plans", target: '_blank', class: "btn btn-new pull-right"
= link_to 'Upload New License', new_admin_license_path, class: "btn pull-right"
= render "upload_buy_license"
- else
= link_to 'Upload New License', new_admin_license_path, class: "btn btn-new pull-right"
......@@ -39,7 +38,7 @@
- if @license.will_expire?
%strong= time_ago_with_tooltip(@license.expires_at)
- if @license.trial?
%span= "(Free trial will expire in #{pluralize(@license.remaining_days, 'day')})"
%span Free trial will expire in #{pluralize(@license.remaining_days, 'day')}
- else
%strong Never
......
- page_title 'Trial license'
%h3.page-title Trial License
.container-fluid.trial-form-container
.text-center.start-trial-header
%h2 Free Trial of GitLab Enterprise Edition
%p.lead.trial-description No credit card required. 30 days free trial of all premium features.
%main{ :role => "main" }
.actions
= form_tag admin_trials_path, method: :post do
.form-group
= label_tag :first_name
= text_field_tag :first_name, params[:first_name], class: "form-control", required: true
.form-group
= label_tag :last_name
= text_field_tag :last_name, params[:last_name], class: "form-control", required: true
.form-group
= label_tag :work_email
= text_field_tag :work_email, params[:work_email], class: "form-control", required: true
.form-group
= label_tag :company_name
= text_field_tag :company_name, params[:company_name], class: "form-control", required: true
.form-group
= label_tag :phone_number
= text_field_tag :phone_number, params[:phone_number], class: "form-control", required: true
.form-group
= label_tag :number_of_developers
= text_field_tag :number_of_developers, params[:number_of_developers], class: "form-control", required: true
.form-group
= label_tag :number_of_users
= text_field_tag :number_of_users, params[:number_of_users], class: "form-control", required: true
.form-group
= label_tag :country
= select_tag :country, options_for_select(CountryCodes.for_select, params[:country]), prompt: '- Select One -', class: "form-control", required: true
.form-group
= submit_tag 'Start your free trial', class: "btn btn-default"
.row.start-trial-body
.col-md-6
.section-body.ee-features
%ul.list-unstyled.feature-list
%li.row
.col-md-4
= custom_icon("ee_ldap_sync")
.col-md-8.feature-item-description
%h4 LDAP Group Sync
%p
Automatically sync groups and manage SSH-keys, permissions,
and authentication.
%li.row
.col-md-4
= custom_icon("ee_mr_approvals")
.col-md-8.feature-item-description
%h4 Merge Request Approval
%p
Make sure every merge request is approved by one or more people.
%li.row
.col-md-4
= custom_icon("ee_audit_events")
.col-md-8.feature-item-description
%h4 Project Audit Events
%p
View any modifications made within the GitLab server in an
advanced audit log system.
%li.row
.col-md-4
= custom_icon("ee_file_locking")
.col-md-8.feature-item-description
%h4 File Locking
%p
Scan or modify the code to meet your security and development needs.
%hr
%p.text-center
= link_to 'More premium features', '#'
.col-md-6
.section-body.trial-form
= form_tag admin_trials_path, method: :post do
.form-group
= label_tag :first_name
= text_field_tag :first_name, params[:first_name], class: "form-control", required: true
.form-group
= label_tag :last_name
= text_field_tag :last_name, params[:last_name], class: "form-control", required: true
.form-group
= label_tag :work_email
= text_field_tag :work_email, params[:work_email], class: "form-control", required: true
.form-group
= label_tag :company_name
= text_field_tag :company_name, params[:company_name], class: "form-control", required: true
.form-group
= label_tag :phone_number
= text_field_tag :phone_number, params[:phone_number], class: "form-control", required: true
%hr
.form-group
= label_tag :number_of_developers
= text_field_tag :number_of_developers, params[:number_of_developers], class: "form-control", required: true
.form-group
= label_tag :number_of_users
= text_field_tag :number_of_users, params[:number_of_users], class: "form-control", required: true
.form-group
= label_tag :country
= select_tag :country, options_for_select(CountryCodes.for_select, params[:country]), prompt: '- Select One -', class: "form-control", required: true
.form-group
= submit_tag 'Start your free trial', class: "btn btn-primary"
- state_offset_class = current_license&.trial? ? 'col-md-offset-3' : 'col-md-offset-1'
- state_icon_class = current_license&.trial? ? 'col-md-1' : 'col-md-2'
- state_body_class = current_license&.trial? ? 'col-md-5' : 'col-md-8'
.row.blank-state.clearfix
.blank-state-icon{ class: "#{state_icon_class} #{state_offset_class}" }
= custom_icon("add_new_user", size: 50)
.blank-state-body{ class: state_body_class }
%h3.blank-state-title
Add user
%p.blank-state-text
Add your team members and others to GitLab.
= link_to new_admin_user_path, class: "btn btn-new" do
New user
.row.blank-state.clearfix
.blank-state-icon{ class: "#{state_icon_class} #{state_offset_class}" }
= custom_icon("configure_server", size: 50)
.blank-state-body{ class: state_body_class }
%h3.blank-state-title
Configure GitLab
%p.blank-state-text
Make adjustments to how your GitLab instance is set up.
= link_to admin_root_path, class: "btn btn-new" do
Configure
- if current_user.can_create_group?
.row.blank-state.clearfix
.blank-state-icon{ class: "#{state_icon_class} #{state_offset_class}" }
= custom_icon("add_new_group", size: 50)
.blank-state-body{ class: state_body_class }
%h3.blank-state-title
Create a group
%p.blank-state-text
Groups are a great way to organise projects and people.
= link_to new_group_path, class: "btn btn-new" do
New group
.blank-state.ee-trial.clearfix
.blank-state-icon
= custom_icon("ee_trial", size: 50)
.blank-state-body
%h3.blank-state-title
Unlock more features with GitLab Enterprise Edition
%p.blank-state-text
GitLab is free to use.
Many features for larger teams are part of
our paid
= succeed "." do
= link_to "Enterprise Edition products", "https://about.gitlab.com/products/", target: "_blank", rel: "noopener noreferrer nofollow"
You can try these out for free without
any obligation or payment details.
= link_to new_trial_path, class: "btn btn-new" do
Start free trial
- public_project_count = ProjectsFinder.new(current_user: current_user).execute.count
- if current_user.can_create_group?
.blank-state.clearfix
.col-md-1.col-md-offset-3.blank-state-icon
= custom_icon("add_new_group", size: 50)
.col-md-5.blank-state-body
%h3.blank-state-title
Create a group for several dependent projects.
%p.blank-state-text
Groups are the best way to manage projects and members.
= link_to new_group_path, class: "btn btn-new" do
New group
.blank-state.clearfix
.col-md-1.col-md-offset-3.blank-state-icon
= custom_icon("add_new_project", size: 50)
.col-md-5.blank-state-body
%h3.blank-state-title
Create a project
%p.blank-state-text
- if current_user.can_create_project?
You don't have access to any projects right now.
You can create up to
%strong= number_with_delimiter(current_user.projects_limit)
= succeed "." do
= "project".pluralize(current_user.projects_limit)
- else
If you are added to a project, it will be displayed here.
- if current_user.can_create_project?
= link_to new_project_path, class: "btn btn-new" do
New project
- if public_project_count > 0
.blank-state.clearfix
.col-md-1.col-md-offset-3.blank-state-icon
= custom_icon("globe", size: 50)
.col-md-5.blank-state-body
%h3.blank-state-title
Explore public projects
%p.blank-state-text
There are
= number_with_delimiter(public_project_count)
public projects on this server.
Public projects are an easy way to allow
everyone to have read-only access.
= link_to trending_explore_projects_path, class: "btn btn-new" do
Browse projects
- publicish_project_count = ProjectsFinder.new(current_user: current_user).execute.count
.blank-state.blank-state-welcome
%h2.blank-state-welcome-title
Welcome to GitLab
%p.blank-state-text
Code, test, and deploy together
- if current_user.can_create_group?
.blank-state
.blank-state-icon
= custom_icon("group", size: 50)
%h3.blank-state-title
You can create a group for several dependent projects.
%p.blank-state-text
Groups are the best way to manage projects and members.
= link_to new_group_path, class: "btn btn-new" do
New group
.blank-state
.blank-state-icon
= custom_icon("project", size: 50)
%h3.blank-state-title
You don't have access to any projects right now
%p.blank-state-text
- if current_user.can_create_project?
You can create up to
%strong= number_with_delimiter(current_user.projects_limit)
= succeed "." do
= "project".pluralize(current_user.projects_limit)
- else
If you are added to a project, it will be displayed here.
- if current_user.can_create_project?
= link_to new_project_path, class: "btn btn-new" do
New project
- if publicish_project_count > 0
.blank-state
.blank-state-icon
= icon("globe")
%h3.blank-state-title
There are
= number_with_delimiter(publicish_project_count)
public projects on this server.
%p.blank-state-text
Public projects are an easy way to allow everyone to have read-only access.
= link_to trending_explore_projects_path, class: "btn btn-new" do
Browse projects
.row.blank-state-parent-container
.col-md-6.section-container
.section-body.section-welcome{ class: "#{ 'section-admin-welcome' if current_user.admin? }" }
.blank-state.blank-state-welcome
%h2.blank-state-welcome-title
Welcome to GitLab
%p.blank-state-text
Code, test, and deploy together
- if current_user.admin?
= render "blank_state_admin_welcome"
- else
= render "blank_state_welcome"
- if !current_license&.trial? && current_user.admin?
.col-md-6.section-container
.section-body.section-ee-trial
= render "blank_state_ee_trial"
.page-with-sidebar{ class: "#{('page-with-new-sidebar' if defined?(@new_sidebar) && @new_sidebar)} #{page_gutter_class}" }
.page-with-sidebar.js-page-with-sidebar{ class: "#{('page-with-new-sidebar' if defined?(@new_sidebar) && @new_sidebar)} #{page_gutter_class}" }
- if show_new_nav?
- if defined?(nav) && nav
= render "layouts/nav/#{nav}"
......
%header.navbar.navbar-gitlab{ class: nav_header_class }
- if current_user.admin? && license_message.present?
.alert.alert-dismissible.gitlab-ee-trial-banner.hidden.js-gitlab-ee-trial-banner{ role: 'alert', 'data-license-expiry' => current_license.expires_at }
%button.close{ type: 'button', 'data-dismiss' => 'alert', 'aria-label' => 'Dismiss banner' }
= icon('times', 'aria-hidden' => 'true')
%p
= license_message
%header.navbar.navbar-gitlab.js-navbar-gitlab{ class: nav_header_class }
.navbar-border
%a.sr-only.gl-accessibility{ href: "#content-body", tabindex: "1" } Skip to content
.container-fluid
- if current_license&.trial? && license_message.present?
%p.text-center= license_message
.header-content
.dropdown.global-dropdown
%button.global-dropdown-toggle{ type: 'button', 'data-toggle' => 'dropdown' }
......
%header.navbar.navbar-gitlab.navbar-gitlab-new{ class: nav_header_class }
- if current_user.admin? && license_message.present?
.alert.alert-dismissible.gitlab-ee-trial-banner.hidden.js-gitlab-ee-trial-banner{ role: 'alert', 'data-license-expiry' => current_license.expires_at }
%button.close{ type: 'button', 'data-dismiss' => 'alert', 'aria-label' => 'Dismiss banner' }
= icon('times', 'aria-hidden' => 'true')
%p
= license_message
%header.navbar.navbar-gitlab.navbar-gitlab-new.js-navbar-gitlab{ class: nav_header_class }
%a.sr-only.gl-accessibility{ href: "#content-body", tabindex: "1" } Skip to content
.container-fluid
.header-content
......
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82">
<g fill="none" fill-rule="evenodd">
<path fill="#000" fill-opacity=".03" d="M2.12 42C2.04 43 2 44 2 45c0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3C74.35 61.03 58.42 76 39 76S3.65 61.03 2.12 42z"/>
<path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M59.65 32.65H60l-2-2.42-2 2.4-2-2.4-2 2.4-2-2.4-2 2.4-2-2.4-2 2.42h.77C45.57 34.6 46 36.75 46 39c0 2.84-.7 5.5-1.92 7.86 1.97 2.28 4.83 3.64 7.92 3.64 5.8 0 10.5-4.74 10.5-10.6 0-2.8-1.08-5.36-2.85-7.25zM43.18 29.6c2.4-2.1 5.52-3.3 8.82-3.3 7.46 0 13.5 6.1 13.5 13.6S59.46 53.5 52 53.5c-3.68 0-7.1-1.5-9.6-4.04C39.3 53.44 34.44 56 29 56c-9.4 0-17-7.6-17-17s7.6-17 17-17c3.22 0 6.23.9 8.8 2.45 2.13 1.3 3.97 3.05 5.38 5.16zM17 34c-.65 1.54-1 3.23-1 5 0 7.18 5.82 13 13 13s13-5.82 13-13c0-1.77-.35-3.46-1-5h-9c-.53 0-1.04-.2-1.4-.6L29 31.84l-1.6 1.58c-.36.4-.87.6-1.4.6h-9zm21.38-4c-2.4-2.5-5.76-4-9.38-4-3.62 0-6.98 1.5-9.38 4h5.55l2.42-2.4c.74-.8 2-.8 2.8 0l2.4 2.4h5.54z"/>
<path fill="#6B4FBB" d="M47.6 42.32c-.66 0-1.2-.54-1.2-1.2 0-.68.54-1.22 1.2-1.22.66 0 1.2.54 1.2 1.2 0 .68-.54 1.22-1.2 1.22zm8.8 0c-.66 0-1.2-.54-1.2-1.2 0-.68.54-1.22 1.2-1.22.66 0 1.2.54 1.2 1.2 0 .68-.54 1.22-1.2 1.22zM25 44h8c0 2.2-1.8 4-4 4s-4-1.8-4-4zm-1.5-1c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M2.12 42c-.08.99-.12 1.99-.12 3 0 20.435 16.565 37 37 37s37-16.565 37-37c0-1.01-.04-2.01-.12-3C74.353 61.032 58.425 76 39 76 19.575 76 3.647 61.032 2.12 42z"/><path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/><path fill="#FEE1D3" fill-rule="nonzero" d="M30 24a4 4 0 0 0-4 4v22a4 4 0 0 0 4 4h18a4 4 0 0 0 4-4V28a4 4 0 0 0-4-4H30zm0-4h18a8 8 0 0 1 8 8v22a8 8 0 0 1-8 8H30a8 8 0 0 1-8-8V28a8 8 0 0 1 8-8z"/><path fill="#FC6D26" d="M33 30h8a2 2 0 1 1 0 4h-8a2 2 0 1 1 0-4zm0 7h12a2 2 0 1 1 0 4H33a2 2 0 1 1 0-4zm0 7h12a2 2 0 1 1 0 4H33a2 2 0 1 1 0-4z"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82">
<g fill="none" fill-rule="evenodd">
<path fill="#000" fill-opacity=".03" d="M2.12 42C2.04 43 2 44 2 45c0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3C74.35 61.03 58.42 76 39 76S3.65 61.03 2.12 42z"/>
<path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/>
<path fill="#E1DBF2" d="M44 31l-2.5-3-2.5 3-2.5-3-2.5 3-2.5-3-2.5 3h-2.72c2.65-4.2 7.36-7 12.72-7s10.07 2.8 12.72 7H49l-2.5-3-2.5 3z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M39 57c-9.4 0-17-7.6-17-17s7.6-17 17-17 17 7.6 17 17-7.6 17-17 17zm0-4c7.18 0 13-5.82 13-13s-5.82-13-13-13-13 5.82-13 13 5.82 13 13 13z"/>
<path fill="#6B4FBB" d="M35 45h8c0 2.2-1.8 4-4 4s-4-1.8-4-4zm-1.5-2c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82">
<g fill="none" fill-rule="evenodd">
<path fill="#000" fill-opacity=".03" d="M2.12 42C2.04 43 2 44 2 45c0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3C74.35 61.03 58.42 76 39 76S3.65 61.03 2.12 42z"/>
<path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/>
<path fill="#FEE1D3" fill-rule="nonzero" d="M24.92 35.15c-1.72-1.4-1.98-3.9-.6-5.63l1.26-1.55c1.4-1.72 3.9-2 5.63-.6l.7.56c.7-.4 1.4-.73 2.1-1V26c0-2.2 1.8-4 4-4h2c2.2 0 4 1.8 4 4v.92c.8.28 1.5.62 2.1 1l.7-.55c1.7-1.4 4.3-1.12 5.7.6l1.3 1.55c1.4 1.72 1.2 4.23-.6 5.63l-.7.6c.3.74.4 1.5.5 2.3l.9.2c2.2.5 3.5 2.64 3 4.8L56.4 45c-.5 2.15-2.64 3.5-4.8 3l-.88-.2c-.44.63-.92 1.24-1.46 1.8l.4.82c.9 1.98.1 4.38-1.9 5.35l-1.8.87c-2 .97-4.37.15-5.34-1.84l-.46-.85c-.34.03-.74.05-1.13.05-.4 0-.8-.02-1.2-.05l-.4.85c-.95 2-3.34 2.8-5.33 1.84l-1.8-.87c-1.97-.97-2.8-3.37-1.83-5.35l.4-.8c-.54-.58-1.02-1.2-1.46-1.83l-.8.2c-2.2.5-4.3-.9-4.8-3l-.4-2c-.5-2.2.85-4.3 3-4.8l.9-.2c.1-.8.3-1.6.5-2.3l-.7-.6zm4.95.77c-.53 1.2-.83 2.47-.87 3.8-.02.9-.66 1.68-1.55 1.9l-2.32.53.45 1.94 2.3-.6c.9-.2 1.8.2 2.23 1 .7 1.1 1.5 2.2 2.5 3 .7.6.9 1.6.5 2.4l-1 2.1 1.8.9 1.1-2.1c.4-.8 1.3-1.3 2.2-1.1.7.1 1.3.2 2 .2s1.3-.1 2-.2c.9-.2 1.8.3 2.2 1.1l1 2.1 1.8-.9-1.2-2c-.4-.8-.2-1.8.5-2.4 1-.85 1.84-1.88 2.45-3.05.4-.82 1.33-1.24 2.2-1.04l2.33.54.45-1.95-2.32-.54c-.9-.2-1.52-.97-1.54-1.88-.03-1.4-.33-2.6-.86-3.8-.4-.9-.2-1.8.5-2.4l1.9-1.5-1.3-1.6-1.8 1.5c-.8.5-1.8.6-2.5 0-1.1-.8-2.3-1.4-3.5-1.7-.9-.2-1.5-1-1.5-1.9V26h-2v2.38c0 .9-.6 1.7-1.5 1.93-1.3.4-2.5 1-3.5 1.7-.8.6-1.8.6-2.5 0l-1.9-1.5-1.26 1.6 1.8 1.5c.7.6.94 1.6.6 2.4z"/>
<path fill="#FC6D26" fill-rule="nonzero" d="M39 46c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="74" height="78" viewBox="0 0 74 78"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M.053 39A37.599 37.599 0 0 0 0 41c0 20.435 16.565 37 37 37s37-16.565 37-37c0-.671-.018-1.338-.053-2C72.907 58.505 56.764 74 37 74 17.236 74 1.092 58.505.053 39z"/><path fill="#EEE" fill-rule="nonzero" d="M37 70c18.225 0 33-14.775 33-33S55.225 4 37 4 4 18.775 4 37s14.775 33 33 33zm0 4C16.565 74 0 57.435 0 37S16.565 0 37 0s37 16.565 37 37-16.565 37-37 37z"/><g fill-rule="nonzero"><path fill="#E1DBF2" d="M37 49c-6.406 0-12.228-2.843-17.38-8.412a4 4 0 0 1-.267-5.113C24.53 28.559 30.434 25 37 25c6.566 0 12.47 3.56 17.647 10.475a4 4 0 0 1-.266 5.113C49.228 46.158 43.406 49 37 49zm0-4c5.225 0 10.012-2.337 14.445-7.128C46.966 31.89 42.173 29 37 29s-9.966 2.89-14.445 8.872C26.988 42.662 31.775 45 37 45z"/><path fill="#6B4FBB" d="M37 45a8 8 0 1 1 0-16 8 8 0 0 1 0 16zm0-4a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0-1a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></g></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M2.12 42c-.08.99-.12 1.99-.12 3 0 20.435 16.565 37 37 37s37-16.565 37-37c0-1.01-.04-2.01-.12-3C74.353 61.032 58.425 76 39 76 19.575 76 3.647 61.032 2.12 42z"/><path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/><path fill="#6B4FBB" fill-rule="nonzero" d="M48 31h-4a5 5 0 0 0-10 0h-4a9 9 0 1 1 18 0zm-18 0h4v3h-4v-3zm14 0h4v3h-4v-3z"/><path fill="#E1DBF2" fill-rule="nonzero" d="M30 37a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V38a1 1 0 0 0-1-1H30zm0-4h18a5 5 0 0 1 5 5v12a5 5 0 0 1-5 5H30a5 5 0 0 1-5-5V38a5 5 0 0 1 5-5z"/><path fill="#6B4FBB" d="M38 43.732a2 2 0 1 1 2 0V45a1 1 0 0 1-2 0v-1.268z"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M2.12 42c-.08.99-.12 1.99-.12 3 0 20.435 16.565 37 37 37s37-16.565 37-37c0-1.01-.04-2.01-.12-3C74.353 61.032 58.425 76 39 76 19.575 76 3.647 61.032 2.12 42z"/><path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/><path fill="#6B4BBE" fill-rule="nonzero" d="M40 28c5.523 0 10 4.477 10 10 0 2.279-.76 4.434-2.141 6.184A3 3 0 0 0 52.57 47.9C54.778 45.1 56 41.64 56 38c0-8.837-7.163-16-16-16v-3.131a1 1 0 0 0-1.555-.833l-9.197 6.132a1 1 0 0 0 0 1.664l9.197 6.132A1 1 0 0 0 40 31.13V28z"/><path fill="#E1DBF2" fill-rule="nonzero" d="M38 50c-5.523 0-10-4.477-10-10 0-2.25.742-4.38 2.09-6.12a3 3 0 0 0-4.742-3.675A15.941 15.941 0 0 0 22 40c0 8.837 7.163 16 16 16v3.131a1 1 0 0 0 1.555.833l9.197-6.132a1 1 0 0 0 0-1.664l-9.197-6.132A1 1 0 0 0 38 46.87V50z"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="74" height="78" viewBox="0 0 74 78"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M.053 39A37.599 37.599 0 0 1 0 37C0 16.565 16.565 0 37 0s37 16.565 37 37c0 .671-.018 1.338-.053 2 .035.662.053 1.329.053 2 0 20.435-16.565 37-37 37S0 61.435 0 41c0-.671.018-1.338.053-2zM37 74c20.435 0 37-16.565 37-37S57.435 0 37 0 0 16.565 0 37s16.565 37 37 37z"/><path fill="#EEE" fill-rule="nonzero" d="M37 70c18.225 0 33-14.775 33-33S55.225 4 37 4 4 18.775 4 37s14.775 33 33 33zm0 4C16.565 74 0 57.435 0 37S16.565 0 37 0s37 16.565 37 37-16.565 37-37 37z"/><path fill="#E1DBF2" fill-rule="nonzero" d="M40 23c5.523 0 10 4.477 10 10v12h-4V33a6 6 0 0 0-6-6v1.826a1 1 0 0 1-1.65.759l-4.464-3.826a1 1 0 0 1 0-1.518l4.463-3.826a1 1 0 0 1 1.651.76V23z"/><path fill="#E1DBF2" d="M28 43.341a6 6 0 1 1-4 0V29h4v14.341zM26 51a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/><circle cx="26" cy="25" r="4" stroke="#6B4FBB" stroke-width="4"/><path fill="#6B4FBB" fill-rule="nonzero" d="M48 55a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-4a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="330" height="132" viewBox="0 0 330 132">
<g fill="none" fill-rule="evenodd">
<path fill="#000" fill-opacity=".03" d="M174.12 42c-.08 1-.12 2-.12 3 0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3-1.53 19.03-17.46 34-36.88 34s-35.35-14.97-36.88-34z"/>
<path fill="#EEE" fill-rule="nonzero" d="M211 78c-21.54 0-39-17.46-39-39s17.46-39 39-39 39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S230.33 4 211 4s-35 15.67-35 35 15.67 35 35 35z"/>
<g fill-rule="nonzero">
<path fill="#FEE1D3" d="M211.5 51c-6.42 0-12.26-2.84-17.43-8.4-1.32-1.43-1.43-3.58-.27-5.13C199 30.57 204.92 27 211.5 27s12.5 3.56 17.7 10.47c1.16 1.55 1.05 3.7-.27 5.12-5.17 5.53-11 8.4-17.43 8.4zm0-4c5.25 0 10.05-2.34 14.5-7.13-4.5-5.98-9.3-8.87-14.5-8.87-5.2 0-10 2.9-14.5 8.87 4.45 4.8 9.25 7.13 14.5 7.13z"/>
<path fill="#FC6D26" d="M211 47c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm0-4c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4zm0-1c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"/>
</g>
<path fill="#000" fill-opacity=".03" d="M88.12 83c-.08 1-.12 2-.12 3 0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3-1.53 19.03-17.46 34-36.88 34s-35.35-14.97-36.88-34z"/>
<path fill="#EEE" fill-rule="nonzero" d="M125 119c-21.54 0-39-17.46-39-39s17.46-39 39-39 39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35s-15.67-35-35-35-35 15.67-35 35 15.67 35 35 35z"/>
<path fill="#FEE1D3" fill-rule="nonzero" d="M116 86.34c2.33.83 4 3.05 4 5.66 0 3.3-2.7 6-6 6s-6-2.7-6-6c0-2.6 1.67-4.83 4-5.66V72h4v14.34zM128 66c5.52 0 10 4.48 10 10v12h-4V76c0-3.3-2.7-6-6-6v1.83c0 .55-.45 1-1 1-.24 0-.47-.1-.65-.24l-4.46-3.87c-.46-.36-.5-1-.15-1.4.03-.05.07-.1.1-.12l4.47-3.82c.42-.35 1.05-.3 1.4.1.16.2.25.43.25.66V66zm-14 28c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/>
<path fill="#FC6D26" fill-rule="nonzero" d="M114 74c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm22 28c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm0-4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/>
<path fill="#000" fill-opacity=".03" d="M2.12 52C2.04 53 2 54 2 55c0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3C74.35 71.03 58.42 86 39 86S3.65 71.03 2.12 52z"/>
<path fill="#EEE" fill-rule="nonzero" d="M39 88C17.46 88 0 70.54 0 49s17.46-39 39-39 39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 14 39 14 4 29.67 4 49s15.67 35 35 35z"/>
<path fill="#6B4FBB" fill-rule="nonzero" d="M48 41h-4c0-2.76-2.24-5-5-5s-5 2.24-5 5h-4c0-4.97 4.03-9 9-9s9 4.03 9 9zm-18 0h4v3h-4v-3zm14 0h4v3h-4v-3z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M30 47c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V48c0-.55-.45-1-1-1H30zm0-4h18c2.76 0 5 2.24 5 5v12c0 2.76-2.24 5-5 5H30c-2.76 0-5-2.24-5-5V48c0-2.76 2.24-5 5-5z"/>
<path fill="#6B4FBB" d="M38 53.73c-.6-.34-1-1-1-1.73 0-1.1.9-2 2-2s2 .9 2 2c0 .74-.4 1.4-1 1.73V55c0 .55-.45 1-1 1s-1-.45-1-1v-1.27z"/>
<path fill="#000" fill-opacity=".03" d="M254.12 92c-.08 1-.12 2-.12 3 0 20.43 16.57 37 37 37s37-16.57 37-37c0-1-.04-2-.12-3-1.53 19.03-17.46 34-36.88 34s-35.35-14.97-36.88-34z"/>
<path fill="#EEE" fill-rule="nonzero" d="M291 128c-21.54 0-39-17.46-39-39s17.46-39 39-39 39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35s-15.67-35-35-35-35 15.67-35 35 15.67 35 35 35z"/>
<path fill="#6B4BBE" fill-rule="nonzero" d="M292 78c5.52 0 10 4.48 10 10 0 2.28-.76 4.43-2.14 6.18-1.03 1.3-.8 3.2.5 4.22 1.3 1.02 3.2.8 4.2-.5 2.22-2.8 3.44-6.26 3.44-9.9 0-8.84-7.16-16-16-16v-3.13c0-.2-.06-.4-.17-.56-.3-.42-.93-.54-1.38-.23l-9.2 6.13c-.1.06-.2.16-.28.27-.3.45-.18 1.08.28 1.38l9.2 6.13c.16.1.35.17.55.17.55 0 1-.45 1-1V78z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M290 100c-5.52 0-10-4.48-10-10 0-2.25.74-4.38 2.1-6.12 1-1.3.77-3.2-.54-4.2-1.3-1.02-3.2-.78-4.2.53C275.18 83 274 86.4 274 90c0 8.84 7.16 16 16 16v3.13c0 .55.45 1 1 1 .2 0 .4-.06.55-.17l9.2-6.13c.46-.3.6-.93.28-1.38-.07-.1-.17-.2-.28-.28l-9.2-6.13c-.45-.3-1.08-.2-1.38.27-.1.2-.17.4-.17.6v3.1z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M2.12 42c-.08.99-.12 1.99-.12 3 0 20.435 16.565 37 37 37s37-16.565 37-37c0-1.01-.04-2.01-.12-3C74.353 61.032 58.425 76 39 76 19.575 76 3.647 61.032 2.12 42z"/><path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/><path fill="#E1DBF2" d="M30.24 27.823A14.98 14.98 0 0 0 24 40c0 2.549.636 4.949 1.757 7.051-.297-2.684.644-4.026 2.823-4.026 3.707 0 2.462 5.365 4.473 5.761 2.01.396 4.175.396 4.267 3.29.04 1.257-.265 2.157-.917 2.7a15.095 15.095 0 0 0 8.555-1.006c.035-1.91.303-4.941 2.21-5.61 2.373-.833-.55-1.431.734-3.368 1.17-1.762-3.297-5.2 0-4.832 3.477.388 5.044-.816 6.024-1.456a14.903 14.903 0 0 0-1.373-4.94c-.873.4-2.19.465-3.702-.538-.757-.502-1.084-3.944-2.107-3.944-3.823 0-4.065 3.17-5.994 3.944-1.076.431-4.193 3.773-5.614 3.596-1.126-.14-1.071-4.417-2.45-5.166-1.359-.738-2.174-1.948-2.447-3.633zM39 59c-10.493 0-19-8.507-19-19s8.507-19 19-19 19 8.507 19 19-8.507 19-19 19z"/></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="418" height="260" viewBox="0 0 418 260">
<g fill="none" fill-rule="evenodd">
<g transform="translate(120 123)">
<path fill="#E5E5E5" fill-rule="nonzero" d="M149.583956 3L152.24163 3C160.152584 3 166.875974 8.78143126 168.061078 16.6031139L172.666667 47 168.621014 47 164.106216 17.2023354C163.217388 11.3360734 158.174845 7 152.24163 7L150 7 150 5C150 4.28889529 149.851552 3.61246235 149.583956 3zM126.416044 3L51.5839563 3C51.8515525 3.61246235 52 4.28889529 52 5L52 7 126 7 126 5C126 4.28889529 126.148448 3.61246235 126.416044 3zM5.33333333 47L9.93892213 16.6031139C11.1240256 8.78143126 17.8474164 3 25.7583702 3L28.4160437 3C28.1484475 3.61246235 28 4.28889529 28 5L28 5 28 7 25.7583702 7C19.8251549 7 14.7826117 11.3360734 13.8937841 17.2023354L9.37898649 47 5.33333333 47zM173 71L173 127C173 132.522847 168.522847 137 163 137L15 137C9.4771525 137 5 132.522847 5 127L5 71 9 71 9 127C9 130.313708 11.6862915 133 15 133L163 133C166.313708 133 169 130.313708 169 127L169 71 173 71z"/>
<g transform="translate(126 67)">
<path fill="#E5E5E5" fill-rule="nonzero" d="M5,0 C4.44771525,0 4,0.44771525 4,1 L4,65 C4,65.5522847 4.44771525,66 5,66 L19,66 C19.5522847,66 20,65.5522847 20,65 L20,1 C20,0.44771525 19.5522847,0 19,0 L5,0 Z M24,4 L24,65 C24,67.7614237 21.7614237,70 19,70 L5,70 C2.23857625,70 1.2263553e-15,67.7614237 8.8817842e-16,65 L4.16333634e-17,4 L24,4 Z"/>
<circle cx="12" cy="12" r="3" fill="#FC6D26"/>
<circle cx="12" cy="26" r="3" fill="#FDC4A8"/>
<circle cx="12" cy="40" r="3" fill="#FEE1D3"/>
<circle cx="12" cy="54" r="3" fill="#FEF0E8"/>
</g>
<g transform="translate(126)">
<path fill="#E5E5E5" fill-rule="nonzero" d="M24,47 L24,5 C24,2.23857625 21.7614237,-5.07265313e-16 19,0 L5,0 C2.23857625,5.07265313e-16 -3.38176876e-16,2.23857625 0,5 L6.90805438e-16,47 L4,47 L4,5 C4,4.44771525 4.44771525,4 5,4 L19,4 C19.5522847,4 20,4.44771525 20,5 L20,47 L24,47 Z"/>
<circle cx="12" cy="12" r="3" fill="#FEF0E8"/>
<circle cx="12" cy="26" r="3" fill="#FEE1D3"/>
<circle cx="12" cy="40" r="3" fill="#FDC4A8"/>
</g>
<g transform="translate(28)">
<path fill="#E5E5E5" fill-rule="nonzero" d="M24,47 L24,5 C24,2.23857625 21.7614237,-5.07265313e-16 19,0 L5,0 C2.23857625,5.07265313e-16 -3.38176876e-16,2.23857625 0,5 L6.90805438e-16,47 L4,47 L4,5 C4,4.44771525 4.44771525,4 5,4 L19,4 C19.5522847,4 20,4.44771525 20,5 L20,47 L24,47 Z"/>
<circle cx="12" cy="12" r="3" fill="#FEE1D3"/>
<circle cx="12" cy="26" r="3" fill="#FDC4A8"/>
<circle cx="12" cy="40" r="3" fill="#FC6D26"/>
</g>
<g transform="translate(28 67)">
<path fill="#E5E5E5" fill-rule="nonzero" d="M5,0 C4.44771525,0 4,0.44771525 4,1 L4,65 C4,65.5522847 4.44771525,66 5,66 L19,66 C19.5522847,66 20,65.5522847 20,65 L20,1 C20,0.44771525 19.5522847,0 19,0 L5,0 Z M24,4 L24,65 C24,67.7614237 21.7614237,70 19,70 L5,70 C2.23857625,70 1.2263553e-15,67.7614237 8.8817842e-16,65 L4.16333634e-17,4 L24,4 Z"/>
<circle cx="12" cy="12" r="3" fill="#FDC4A8"/>
<circle cx="12" cy="26" r="3" fill="#FEE1D3"/>
<circle cx="12" cy="40" r="3" fill="#FEF0E8"/>
<circle cx="12" cy="54" r="3" fill="#FC6D26"/>
</g>
<path fill="#E5E5E5" fill-rule="nonzero" d="M81,47 L5,47 C2.23857625,47 -3.38176876e-16,49.2385763 0,52 L0,66 C3.38176876e-16,68.7614237 2.23857625,71 5,71 L81,71 L81,67 L5,67 C4.44771525,67 4,66.5522847 4,66 L4,52 C4,51.4477153 4.44771525,51 5,51 L81,51 L81,47 Z M97,47 L173,47 C175.761424,47 178,49.2385763 178,52 L178,66 C178,68.7614237 175.761424,71 173,71 L97,71 L97,67 L173,67 C173.552285,67 174,66.5522847 174,66 L174,52 C174,51.4477153 173.552285,51 173,51 L97,51 L97,47 Z"/>
<path fill="#C3B8E3" fill-rule="nonzero" d="M105,79.1000181 L105,71 C105,65.077743 101.782413,59.9069937 97.0000045,57.1405177 L97,64.9990251 C98.255821,66.6705132 99,68.7483504 99,71 L99,79 L104,79 C104.342466,79 104.67689,79.0344303 105,79.1000181 Z M73,79.1000181 L73,71 C73,65.077743 76.217587,59.9069937 80.9999955,57.1405177 L81,64.9990251 C79.744179,66.6705132 79,68.7483504 79,71 L79,79 L74,79 L74,79 C73.6575342,79 73.3231099,79.0344303 73,79.1000181 Z"/>
<g transform="matrix(1 0 0 -1 69 115)">
<path fill="#E1DBF1" fill-rule="nonzero" d="M18,4 C10.2680135,4 4,10.2680135 4,18 L4,31 C4,31.5522847 4.44771525,32 5,32 L35,32 C35.5522847,32 36,31.5522847 36,31 L36,18 C36,10.2680135 29.7319865,4 22,4 L18,4 Z M18,-1.2888887e-14 L22,-1.2888887e-14 C31.9411255,-1.24842628e-14 40,8.0588745 40,18 L40,31 C40,33.7614237 37.7614237,36 35,36 L5,36 C2.23857625,36 -9.43169154e-15,33.7614237 -9.76996262e-15,31 L-6.02859776e-15,18 C-8.32276956e-15,8.0588745 8.0588745,-1.2384733e-14 18,-1.2888887e-14 Z"/>
<path fill="#6B4FBB" d="M18,19.4648712 C16.8043973,18.7732524 16,17.4805647 16,16 C16,13.790861 17.790861,12 20,12 C22.209139,12 24,13.790861 24,16 C24,17.4805647 23.1956027,18.7732524 22,19.4648712 L22,22 C22,23.1045695 21.1045695,24 20,24 C18.8954305,24 18,23.1045695 18,22 L18,19.4648712 Z" transform="matrix(1 0 0 -1 0 36)"/>
</g>
<path fill="#E5E5E5" fill-rule="nonzero" d="M86,45 C85.4477153,45 85,45.4477153 85,46 L85,72 C85,72.5522847 85.4477153,73 86,73 L92,73 C92.5522847,73 93,72.5522847 93,72 L93,46 C93,45.4477153 92.5522847,45 92,45 L86,45 Z M86,41 L92,41 C94.7614237,41 97,43.2385763 97,46 L97,72 C97,74.7614237 94.7614237,77 92,77 L86,77 C83.2385763,77 81,74.7614237 81,72 L81,46 C81,43.2385763 83.2385763,41 86,41 Z"/>
</g>
<g transform="translate(259 23)">
<path fill="#F9F9F9" d="M2.11986346,42 C2.04046544,42.9895269 2,43.9900378 2,45 C2,65.4345357 18.5654643,82 39,82 C59.4345357,82 76,65.4345357 76,45 C76,43.9900378 75.9595346,42.9895269 75.8801365,42 C74.3530766,61.0315425 58.4245736,76 39,76 C19.5754264,76 3.64692341,61.0315425 2.11986346,42 Z"/>
<path fill="#EEEEEE" fill-rule="nonzero" d="M39,78 C17.4608948,78 0,60.5391052 0,39 C0,17.4608948 17.4608948,0 39,0 C60.5391052,0 78,17.4608948 78,39 C78,60.5391052 60.5391052,78 39,78 Z M39,74 C58.3299662,74 74,58.3299662 74,39 C74,19.6700338 58.3299662,4 39,4 C19.6700338,4 4,19.6700338 4,39 C4,58.3299662 19.6700338,74 39,74 Z"/>
<g fill-rule="nonzero" transform="translate(21 27)">
<path fill="#FEE1D3" d="M18.5,24 C12.0765212,24 6.23859593,21.1594661 1.07030642,15.5932931 C-0.246808341,14.1747796 -0.3591904,12.016684 0.803462625,10.4690375 C5.99618499,3.55683003 11.9169941,0 18.5,0 C25.0830059,0 31.003815,3.55683003 36.1965373,10.4690375 C37.3591903,12.016684 37.2468083,14.1747794 35.9296936,15.5932931 C30.7614041,21.1594661 24.9234788,24 18.5,24 Z M18.5,20 C23.7455145,20 28.5503007,17.6621561 32.9984408,12.8715735 C28.5048777,6.8900403 23.6940274,4 18.5,4 C13.3059726,4 8.49512227,6.8900403 4.00155907,12.8715735 C8.44969929,17.6621561 13.2544855,20 18.5,20 Z"/>
<path fill="#FC6D26" d="M18,20 C13.581722,20 10,16.418278 10,12 C10,7.581722 13.581722,4 18,4 C22.418278,4 26,7.581722 26,12 C26,16.418278 22.418278,20 18,20 Z M18,16 C20.209139,16 22,14.209139 22,12 C22,9.790861 20.209139,8 18,8 C15.790861,8 14,9.790861 14,12 C14,14.209139 15.790861,16 18,16 Z M18,15 C16.3431458,15 15,13.6568542 15,12 C15,10.3431458 16.3431458,9 18,9 C19.6568542,9 21,10.3431458 21,12 C21,13.6568542 19.6568542,15 18,15 Z"/>
</g>
</g>
<g transform="translate(0 113)">
<path fill="#F9F9F9" d="M2.11986346,42 C2.04046544,42.9895269 2,43.9900378 2,45 C2,65.4345357 18.5654643,82 39,82 C59.4345357,82 76,65.4345357 76,45 C76,43.9900378 75.9595346,42.9895269 75.8801365,42 C74.3530766,61.0315425 58.4245736,76 39,76 C19.5754264,76 3.64692341,61.0315425 2.11986346,42 Z"/>
<path fill="#EEEEEE" fill-rule="nonzero" d="M39,78 C17.4608948,78 0,60.5391052 0,39 C0,17.4608948 17.4608948,0 39,0 C60.5391052,0 78,17.4608948 78,39 C78,60.5391052 60.5391052,78 39,78 Z M39,74 C58.3299662,74 74,58.3299662 74,39 C74,19.6700338 58.3299662,4 39,4 C19.6700338,4 4,19.6700338 4,39 C4,58.3299662 19.6700338,74 39,74 Z"/>
<path fill="#FEE1D3" fill-rule="nonzero" d="M42,25 C47.5228475,25 52,29.4771525 52,35 L52,47 L48,47 L48,35 C48,31.6862915 45.3137085,29 42,29 L42,30.8257794 L42,30.8257794 C42,31.3780641 41.5522847,31.8257794 41,31.8257794 C40.7612887,31.8257794 40.5304517,31.7403872 40.3492086,31.585036 L35.8857994,27.7592566 L35.8857994,27.7592566 C35.4664735,27.3998345 35.417912,26.7685345 35.7773341,26.3492086 C35.8106588,26.3103298 35.8469206,26.2740681 35.8857994,26.2407434 L35.8857994,26.2407434 L40.3492086,22.414964 L40.3492086,22.414964 C40.7685345,22.0555419 41.3998345,22.1041034 41.7592566,22.5234293 C41.9146078,22.7046724 42,22.9355094 42,23.1742206 L42,25 Z"/>
<path fill="#FEE1D3" d="M30,45.3414114 C32.3303847,46.1650842 34,48.3875623 34,51 C34,54.3137085 31.3137085,57 28,57 C24.6862915,57 22,54.3137085 22,51 C22,48.3875623 23.6696153,46.1650842 26,45.3414114 L26,31 L30,31 L30,45.3414114 Z M28,53 C29.1045695,53 30,52.1045695 30,51 C30,49.8954305 29.1045695,49 28,49 C26.8954305,49 26,49.8954305 26,51 C26,52.1045695 26.8954305,53 28,53 Z"/>
<path fill="#FC6D26" fill-rule="nonzero" d="M28 33C24.6862915 33 22 30.3137085 22 27 22 23.6862915 24.6862915 21 28 21 31.3137085 21 34 23.6862915 34 27 34 30.3137085 31.3137085 33 28 33zM28 29C29.1045695 29 30 28.1045695 30 27 30 25.8954305 29.1045695 25 28 25 26.8954305 25 26 25.8954305 26 27 26 28.1045695 26.8954305 29 28 29zM50 57C46.6862915 57 44 54.3137085 44 51 44 47.6862915 46.6862915 45 50 45 53.3137085 45 56 47.6862915 56 51 56 54.3137085 53.3137085 57 50 57zM50 53C51.1045695 53 52 52.1045695 52 51 52 49.8954305 51.1045695 49 50 49 48.8954305 49 48 49.8954305 48 51 48 52.1045695 48.8954305 53 50 53z"/>
</g>
<g transform="translate(104)">
<path fill="#F9F9F9" d="M2.11986346,42 C2.04046544,42.9895269 2,43.9900378 2,45 C2,65.4345357 18.5654643,82 39,82 C59.4345357,82 76,65.4345357 76,45 C76,43.9900378 75.9595346,42.9895269 75.8801365,42 C74.3530766,61.0315425 58.4245736,76 39,76 C19.5754264,76 3.64692341,61.0315425 2.11986346,42 Z"/>
<path fill="#EEEEEE" fill-rule="nonzero" d="M39,78 C17.4608948,78 0,60.5391052 0,39 C0,17.4608948 17.4608948,0 39,0 C60.5391052,0 78,17.4608948 78,39 C78,60.5391052 60.5391052,78 39,78 Z M39,74 C58.3299662,74 74,58.3299662 74,39 C74,19.6700338 58.3299662,4 39,4 C19.6700338,4 4,19.6700338 4,39 C4,58.3299662 19.6700338,74 39,74 Z"/>
<g transform="translate(25 22)">
<path fill="#6B4FBB" fill-rule="nonzero" d="M23,9 L19,9 C19,6.23857625 16.7614237,4 14,4 C11.2385763,4 9,6.23857625 9,9 L5,9 C5,4.02943725 9.02943725,0 14,0 C18.9705627,0 23,4.02943725 23,9 Z M5,9 L9,9 L9,12 L5,12 L5,9 Z M19,9 L23,9 L23,12 L19,12 L19,9 Z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M5,15 C4.44771525,15 4,15.4477153 4,16 L4,28 C4,28.5522847 4.44771525,29 5,29 L23,29 C23.5522847,29 24,28.5522847 24,28 L24,16 C24,15.4477153 23.5522847,15 23,15 L5,15 Z M5,11 L23,11 C25.7614237,11 28,13.2385763 28,16 L28,28 C28,30.7614237 25.7614237,33 23,33 L5,33 C2.23857625,33 3.38176876e-16,30.7614237 0,28 L0,16 C-3.38176876e-16,13.2385763 2.23857625,11 5,11 Z"/>
<path fill="#6B4FBB" d="M13,21.7324356 C12.4021986,21.3866262 12,20.7402824 12,20 C12,18.8954305 12.8954305,18 14,18 C15.1045695,18 16,18.8954305 16,20 C16,20.7402824 15.5978014,21.3866262 15,21.7324356 L15,23 C15,23.5522847 14.5522847,24 14,24 C13.4477153,24 13,23.5522847 13,23 L13,21.7324356 Z"/>
</g>
</g>
<g transform="translate(340 138)">
<path fill="#F9F9F9" d="M2.11986346,42 C2.04046544,42.9895269 2,43.9900378 2,45 C2,65.4345357 18.5654643,82 39,82 C59.4345357,82 76,65.4345357 76,45 C76,43.9900378 75.9595346,42.9895269 75.8801365,42 C74.3530766,61.0315425 58.4245736,76 39,76 C19.5754264,76 3.64692341,61.0315425 2.11986346,42 Z"/>
<path fill="#EEEEEE" fill-rule="nonzero" d="M39,78 C17.4608948,78 0,60.5391052 0,39 C0,17.4608948 17.4608948,0 39,0 C60.5391052,0 78,17.4608948 78,39 C78,60.5391052 60.5391052,78 39,78 Z M39,74 C58.3299662,74 74,58.3299662 74,39 C74,19.6700338 58.3299662,4 39,4 C19.6700338,4 4,19.6700338 4,39 C4,58.3299662 19.6700338,74 39,74 Z"/>
<path fill="#6B4BBE" fill-rule="nonzero" d="M40,28 C45.5228475,28 50,32.4771525 50,38 C50,40.2789647 49.2390936,42.433801 47.8589333,44.1844992 C46.8331752,45.4856473 47.0564228,47.3719774 48.3575709,48.3977356 C49.658719,49.4234937 51.5450491,49.200246 52.5708072,47.899098 C54.7780762,45.0992335 56,41.6388267 56,38 C56,29.163444 48.836556,22 40,22 L40,18.8685171 C40,18.6710921 39.941562,18.4780844 39.8320503,18.3138169 C39.5256978,17.8542882 38.9048285,17.7301143 38.4452998,18.0364668 L38.4452998,18.0364668 L29.2480754,24.1679497 L29.2480754,24.1679497 C29.1382232,24.2411846 29.0439602,24.3354475 28.9707253,24.4452998 C28.6643729,24.9048285 28.7885468,25.5256978 29.2480754,25.8320503 L29.2480754,25.8320503 L38.4452998,31.9635332 C38.6095673,32.0730449 38.802575,32.1314829 39,32.1314829 C39.5522847,32.1314829 40,31.6837677 40,31.1314829 L40,28 Z"/>
<path fill="#E1DBF2" fill-rule="nonzero" d="M38,50 C32.4771525,50 28,45.5228475 28,40 C28,37.7497044 28.7417573,35.6203161 30.0900571,33.8807561 C31.1050652,32.5712049 30.8662909,30.6867771 29.5567397,29.671769 C28.2471884,28.6567608 26.3627607,28.8955351 25.3477525,30.2050864 C23.1912083,32.9874336 22,36.4070765 22,40 C22,48.836556 29.163444,56 38,56 L38,59.1314829 C38,59.6837677 38.4477153,60.1314829 39,60.1314829 C39.197425,60.1314829 39.3904327,60.0730449 39.5547002,59.9635332 L48.7519246,53.8320503 C49.2114532,53.5256978 49.3356271,52.9048285 49.0292747,52.4452998 C48.9560398,52.3354475 48.8617768,52.2411846 48.7519246,52.1679497 L39.5547002,46.0364668 L39.5547002,46.0364668 C39.0951715,45.7301143 38.4743022,45.8542882 38.1679497,46.3138169 C38.058438,46.4780844 38,46.6710921 38,46.8685171 L38,50 Z"/>
</g>
</g>
</svg>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment