This commit is contained in:
Ty Clifford
2026-06-24 09:19:08 -04:00
commit 5f7c62f8a7
151 changed files with 18705 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
/blog/
/bg/
/embed/
/inspect/
/media/
/onboard/
/index_config/api_keys.txt
/index_config/updates.json
db.class.php
+23
View File
@@ -0,0 +1,23 @@
# License
MIT License
Copyright (c) 2023 Ty Clifford
Copyright (c) 2018 Painted Sky Studios
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+38
View File
@@ -0,0 +1,38 @@
# Landing page
This repository is what's under the hood at tyclifford.com.
# /i/
`i` directory is a simple blog system. Content is produced via Markdown.
Place content in date format in `/content/`.
## To-do
```
- Media page
```
# License
MIT License
Copyright (c) 2023-2024 Ty Clifford
Copyright (c) 2018 Painted Sky Studios
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+1
View File
@@ -0,0 +1 @@
[]
+98
View File
@@ -0,0 +1,98 @@
<?php
/**
* admanager/config.php
* ─────────────────────────────────────────────────────────────────────────────
* Central configuration for the ad management system.
* Both admanager/index.php and live/index.php read from here.
*/
// ── Data store ────────────────────────────────────────────────────────────────
// Absolute path to the ads JSON file.
define('ADS_JSON_PATH', __DIR__ . '/ads.json');
// ── Authentication ────────────────────────────────────────────────────────────
// Plain string key — change this before deploying.
// Used by save.php to gate all write operations.
define('ADS_ADMIN_KEY', 'change-me-before-deploy');
// ── Site identity (used in manager UI) ───────────────────────────────────────
define('ADS_SITE_NAME', 'TyClifford.com');
define('ADS_MANAGER_TITLE', 'Ad Manager');
// ── Placement labels ──────────────────────────────────────────────────────────
// These map to the 'placement' field on each ad.
define('ADS_PLACEMENTS', serialize([
'above' => 'Above stream',
'below' => 'Below stream',
]));
// ── Standard ad sizes ─────────────────────────────────────────────────────────
// Each size has:
// key — internal identifier (used as CSS class suffix)
// label — human-readable name shown in the manager
// width — px width of the creative
// height — px height of the creative
// min_screen — minimum viewport width (px) at which this size is shown
// max_screen — maximum viewport width (px) at which this size is shown
// (null = no upper limit)
//
// An ad can have multiple sizes. The live page renders ALL size variants
// for each ad and uses CSS media queries to show exactly one at a time.
define('ADS_SIZES', serialize([
[
'key' => 'mobile-banner',
'label' => 'Mobile Banner (320×50)',
'width' => 320,
'height' => 50,
'min_screen' => 0,
'max_screen' => 479,
],
[
'key' => 'mobile-rect',
'label' => 'Mobile Rectangle (300×250)',
'width' => 300,
'height' => 250,
'min_screen' => 0,
'max_screen' => 599,
],
[
'key' => 'tablet-banner',
'label' => 'Tablet Banner (468×60)',
'width' => 468,
'height' => 60,
'min_screen' => 480,
'max_screen' => 767,
],
[
'key' => 'leaderboard',
'label' => 'Leaderboard (728×90)',
'width' => 728,
'height' => 90,
'min_screen' => 768,
'max_screen' => 1023,
],
[
'key' => 'billboard',
'label' => 'Billboard (970×90)',
'width' => 970,
'height' => 90,
'min_screen' => 1024,
'max_screen' => null,
],
[
'key' => 'large-rect',
'label' => 'Large Rectangle (336×280)',
'width' => 336,
'height' => 280,
'min_screen' => 600,
'max_screen' => null,
],
[
'key' => 'custom',
'label' => 'Custom size',
'width' => null,
'height' => null,
'min_screen' => 0,
'max_screen' => null,
],
]));
+684
View File
@@ -0,0 +1,684 @@
<?php
require_once __DIR__ . '/config.php';
$all_ads = [];
if (file_exists(ADS_JSON_PATH)) {
$raw = json_decode(file_get_contents(ADS_JSON_PATH), true);
if (is_array($raw)) $all_ads = $raw;
}
$placements = unserialize(ADS_PLACEMENTS);
$sizes = unserialize(ADS_SIZES);
$sizes_map = array_column($sizes, null, 'key');
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= htmlspecialchars(ADS_MANAGER_TITLE) ?> — <?= htmlspecialchars(ADS_SITE_NAME) ?></title>
<meta name="robots" content="noindex, nofollow">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Share+Tech+Mono&display=swap" rel="stylesheet">
<style>
/* ── Design tokens — gate.php exact match ─────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #09090f;
--surface: #0f0f1a;
--surface-2: #141425;
--border: #1e1e38;
--border-2: #2a2a48;
--text: #e8e8f8;
--text-2: #9898c0;
--text-3: #58587a;
--green: #00e87a;
--blue: #00c8ff;
--purple: #b060ff;
--red: #ff3355;
--orange: #ff8800;
--pink: #ff50a0;
--pat: #ff424d;
--pat-glow: rgba(255,66,77,.18);
--r: 6px;
}
html { font-size: 16px; -webkit-text-size-adjust: 100%; }
body {
min-height: 100dvh;
background: var(--bg);
background-image:
radial-gradient(ellipse 70% 50% at 20% 10%, rgba(176,96,255,.05) 0%, transparent 60%),
radial-gradient(ellipse 60% 40% at 80% 80%, rgba(0,200,255,.04) 0%, transparent 60%),
radial-gradient(ellipse 50% 60% at 50% 50%, rgba(255,66,77,.03) 0%, transparent 70%);
font-family: 'Inter', system-ui, sans-serif;
color: var(--text);
display: flex; flex-direction: column; align-items: center;
padding: 1.5rem 1rem 3rem;
}
body::after {
content: ''; position: fixed; inset: 0; pointer-events: none; z-index: 999;
background: repeating-linear-gradient(0deg, transparent 0px, transparent 3px, rgba(0,0,0,.07) 3px, rgba(0,0,0,.07) 4px);
}
@keyframes rise { from{opacity:0;transform:translateY(14px) scale(.98)} to{opacity:1;transform:translateY(0) scale(1)} }
@keyframes shimmer { from{background-position:0% 50%} to{background-position:200% 50%} }
@keyframes spin { to{transform:rotate(360deg)} }
@keyframes shake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-5px)} 75%{transform:translateX(5px)} }
@keyframes fade-in { from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:translateY(0)} }
.page { width:100%; max-width:860px; display:flex; flex-direction:column; gap:1.25rem; animation:rise .4s cubic-bezier(.22,.68,0,1.2) both; position:relative; z-index:1; }
/* ── Card ─────────────────────────────────────────────────────────────── */
.card {
background: rgba(15,15,26,.9); border:1px solid var(--border);
border-radius: calc(var(--r)+4px); overflow:hidden; position:relative;
backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
box-shadow: 0 0 0 1px rgba(255,255,255,.03), 0 6px 40px rgba(0,0,0,.6);
}
.card::before {
content:''; position:absolute; top:0; left:0; right:0; height:2px; z-index:2;
background:linear-gradient(90deg,var(--pat),var(--purple),var(--blue),var(--green),var(--blue),var(--purple),var(--pat));
background-size:300% 100%; animation:shimmer 5s linear infinite;
}
.card::after {
content:''; position:absolute; bottom:-1px; right:-1px; width:14px; height:14px;
border-bottom:2px solid var(--purple); border-right:2px solid var(--purple);
border-radius:0 0 calc(var(--r)+4px) 0; opacity:.5;
}
/* ── Topbar ───────────────────────────────────────────────────────────── */
.topbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.75rem; padding:1rem 1.25rem; }
.topbar-brand { display:flex; flex-direction:column; gap:.15rem; }
.topbar-eyebrow { font-family:'Share Tech Mono',monospace; font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; color:var(--green); text-shadow:0 0 10px rgba(0,232,122,.5); }
.topbar-eyebrow::before { content:'> '; opacity:.5; }
.topbar-title { font-size:1.05rem; font-weight:700; letter-spacing:-.01em; }
/* ── Auth bar ─────────────────────────────────────────────────────────── */
.auth-bar { padding:.75rem 1.25rem; display:flex; align-items:center; gap:.75rem; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.auth-bar label { font-family:'Share Tech Mono',monospace; font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:var(--blue); white-space:nowrap; }
.auth-bar input { flex:1; min-width:180px; padding:.5rem .85rem; font-family:'Share Tech Mono',monospace; font-size:.82rem; color:var(--text); background:rgba(255,255,255,.03); border:1px solid var(--border-2); border-radius:var(--r); outline:none; transition:border-color .2s,box-shadow .2s; }
.auth-bar input:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(0,200,255,.1); }
.key-badge { display:inline-flex; align-items:center; gap:.35rem; padding:.22rem .6rem; background:rgba(0,232,122,.07); border:1px solid rgba(0,232,122,.2); border-radius:99px; font-family:'Share Tech Mono',monospace; font-size:.6rem; color:var(--green); }
.key-dot { width:6px; height:6px; border-radius:50%; background:var(--green); box-shadow:0 0 5px var(--green); }
/* ── Section head ─────────────────────────────────────────────────────── */
.section-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.5rem; padding:.85rem 1.25rem .7rem; border-bottom:1px solid var(--border); }
.section-title { font-family:'Share Tech Mono',monospace; font-size:.62rem; letter-spacing:.2em; text-transform:uppercase; color:var(--green); text-shadow:0 0 10px rgba(0,232,122,.5); }
.section-title::before { content:'> '; opacity:.5; }
/* ── Form fields ──────────────────────────────────────────────────────── */
.form-wrap { padding:1.1rem 1.25rem 1.25rem; display:flex; flex-direction:column; gap:.85rem; }
.field { display:flex; flex-direction:column; gap:.4rem; }
.field label { font-family:'Share Tech Mono',monospace; font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:var(--blue); text-shadow:0 0 8px rgba(0,200,255,.35); }
.field input, .field select, .field textarea {
width:100%; padding:.68rem .9rem; font-family:'Share Tech Mono',monospace; font-size:.85rem;
color:var(--text); background:rgba(255,255,255,.03); border:1px solid var(--border-2);
border-radius:var(--r); outline:none; transition:border-color .2s,box-shadow .2s,background .2s;
}
.field select { cursor:pointer; }
.field input:focus,.field select:focus,.field textarea:focus { border-color:var(--blue); background:rgba(0,200,255,.04); box-shadow:0 0 0 3px rgba(0,200,255,.1); }
.field input::placeholder,.field textarea::placeholder { color:var(--text-3); }
.field-row { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; }
@media(max-width:520px){.field-row{grid-template-columns:1fr}}
.field-hint { font-family:'Share Tech Mono',monospace; font-size:.6rem; color:var(--text-3); }
/* ── Size entries ─────────────────────────────────────────────────────── */
.sizes-label { font-family:'Share Tech Mono',monospace; font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:var(--blue); }
.size-list { display:flex; flex-direction:column; gap:.55rem; }
.size-entry {
background:rgba(255,255,255,.025); border:1px solid var(--border-2);
border-radius:var(--r); padding:.75rem .9rem;
display:flex; flex-direction:column; gap:.55rem; position:relative;
}
.size-entry-head { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.size-entry-label { font-family:'Share Tech Mono',monospace; font-size:.68rem; color:var(--green); letter-spacing:.06em; }
.size-entry-grid { display:grid; grid-template-columns:1fr 1fr; gap:.55rem; }
@media(max-width:520px){.size-entry-grid{grid-template-columns:1fr}}
.size-add-btn {
display:inline-flex; align-items:center; gap:.4rem; padding:.45rem .9rem;
border:1px dashed var(--border-2); border-radius:var(--r);
background:rgba(255,255,255,.02); font-family:'Share Tech Mono',monospace;
font-size:.65rem; color:var(--text-3); cursor:pointer;
transition:border-color .15s,color .15s;
}
.size-add-btn:hover { border-color:var(--green); color:var(--green); }
/* ── Buttons ──────────────────────────────────────────────────────────── */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; padding:.6rem 1.1rem; border-radius:var(--r); font-family:'Inter',sans-serif; font-size:.84rem; font-weight:600; border:none; cursor:pointer; text-decoration:none; white-space:nowrap; transition:transform .15s,filter .15s; min-height:36px; position:relative; overflow:hidden; }
.btn::before { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(255,255,255,.09) 0%,transparent 60%); pointer-events:none; }
.btn:hover { transform:translateY(-1px); filter:brightness(1.08); }
.btn:active { transform:scale(.97); }
.btn:disabled { opacity:.4; cursor:not-allowed; transform:none; filter:none; }
.btn-green { background:var(--green); color:#050510; box-shadow:0 4px 16px rgba(0,232,122,.25); }
.btn-blue { background:var(--blue); color:#050510; box-shadow:0 4px 14px rgba(0,200,255,.2); }
.btn-red { background:var(--red); color:#fff; box-shadow:0 4px 14px rgba(255,51,85,.25); }
.btn-orange { background:var(--orange); color:#050510; box-shadow:0 4px 14px rgba(255,136,0,.2); }
.btn-ghost { background:rgba(255,255,255,.04); color:var(--text-2); border:1px solid var(--border-2); }
.btn-ghost:hover { border-color:var(--green); color:var(--text); }
.btn-sm { padding:.3rem .7rem; font-size:.74rem; min-height:28px; }
.btn .spinner { width:12px; height:12px; border-radius:50%; border:2px solid rgba(0,0,0,.2); border-top-color:currentColor; animation:spin .6s linear infinite; }
/* ── Alerts ───────────────────────────────────────────────────────────── */
.alert { display:flex; align-items:flex-start; gap:.6rem; border-radius:var(--r); padding:.7rem 1rem; font-family:'Share Tech Mono',monospace; font-size:.78rem; line-height:1.55; }
.alert-error { background:rgba(255,51,85,.08); border:1px solid rgba(255,51,85,.3); color:var(--red); animation:shake .35s ease; }
.alert-success { background:rgba(0,232,122,.07); border:1px solid rgba(0,232,122,.25); color:var(--green); }
.alert-info { background:rgba(0,200,255,.07); border:1px solid rgba(0,200,255,.25); color:var(--blue); }
/* ── Ad list ──────────────────────────────────────────────────────────── */
#ad-list { list-style:none; }
.ad-item { border-bottom:1px solid var(--border); padding:1rem 1.25rem; display:flex; flex-direction:column; gap:.6rem; animation:fade-in .25s ease both; }
.ad-item:last-child { border-bottom:none; }
.ad-item-head { display:flex; align-items:flex-start; justify-content:space-between; gap:.75rem; flex-wrap:wrap; }
.ad-item-title { font-size:.9rem; font-weight:600; color:var(--text); }
.ad-item-meta { display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; }
.ad-badge {
font-family:'Share Tech Mono',monospace; font-size:.58rem; letter-spacing:.08em; text-transform:uppercase;
padding:.1em .45em; border-radius:3px; border:1px solid; white-space:nowrap;
}
.ad-badge-placement { color:var(--blue); border-color:rgba(0,200,255,.3); background:rgba(0,200,255,.07); }
.ad-badge-active { color:var(--green); border-color:rgba(0,232,122,.3); background:rgba(0,232,122,.07); }
.ad-badge-inactive { color:var(--text-3); border-color:var(--border-2); background:rgba(255,255,255,.02); }
.ad-badge-sizes { color:var(--purple); border-color:rgba(176,96,255,.3); background:rgba(176,96,255,.07); }
.ad-item-actions { display:flex; align-items:center; gap:.35rem; }
/* size thumb previews in list */
.ad-size-previews { display:flex; flex-wrap:wrap; gap:.35rem; }
.ad-size-pill {
display:inline-flex; align-items:center; gap:.35rem;
font-family:'Share Tech Mono',monospace; font-size:.58rem; letter-spacing:.05em;
color:var(--text-3); border:1px solid var(--border-2); border-radius:3px;
padding:.1em .45em; background:rgba(255,255,255,.02);
}
.ad-size-pill .media-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.ad-size-pill .media-dot.img-dot { background:var(--blue); box-shadow:0 0 4px var(--blue); }
.ad-size-pill .media-dot.vid-dot { background:var(--orange); box-shadow:0 0 4px var(--orange); }
/* ── Edit form inline ─────────────────────────────────────────────────── */
.edit-form { display:none; flex-direction:column; gap:.75rem; padding-top:.75rem; border-top:1px solid var(--border); margin-top:.25rem; }
.edit-form.open { display:flex; animation:fade-in .2s ease; }
/* ── Feed status / loading ────────────────────────────────────────────── */
.feed-status { padding:2.5rem 1.25rem; font-family:'Share Tech Mono',monospace; font-size:.72rem; color:var(--text-3); text-align:center; letter-spacing:.06em; }
.feed-status::before { content:'// '; opacity:.4; }
.loading-row { display:flex; align-items:center; justify-content:center; gap:.6rem; padding:2rem; }
.big-spinner { width:20px; height:20px; border-radius:50%; border:2px solid var(--border-2); border-top-color:var(--green); animation:spin .7s linear infinite; }
.loading-row span { font-family:'Share Tech Mono',monospace; font-size:.7rem; color:var(--text-3); }
/* ── Toggle switch ────────────────────────────────────────────────────── */
.toggle-wrap { display:inline-flex; align-items:center; gap:.5rem; cursor:pointer; }
.toggle { position:relative; width:36px; height:20px; }
.toggle input { opacity:0; width:0; height:0; }
.toggle-track { position:absolute; inset:0; background:var(--border-2); border-radius:99px; transition:background .2s; }
.toggle input:checked + .toggle-track { background:var(--green); }
.toggle-thumb { position:absolute; width:14px; height:14px; border-radius:50%; background:#fff; top:3px; left:3px; transition:transform .2s; }
.toggle input:checked ~ .toggle-thumb { transform:translateX(16px); }
.toggle-label { font-family:'Share Tech Mono',monospace; font-size:.65rem; color:var(--text-3); letter-spacing:.06em; }
/* ── Section divider ──────────────────────────────────────────────────── */
.divider { display:flex; align-items:center; gap:.6rem; font-family:'Share Tech Mono',monospace; font-size:.58rem; letter-spacing:.14em; text-transform:uppercase; color:var(--text-3); margin:.25rem 0; }
.divider::before,.divider::after { content:''; flex:1; height:1px; background:var(--border); }
</style>
</head>
<body>
<div class="page">
<!-- Topbar -->
<div class="card">
<div class="topbar">
<div class="topbar-brand">
<span class="topbar-eyebrow">Ad Manager</span>
<span class="topbar-title"><?= htmlspecialchars(ADS_SITE_NAME) ?> — <?= htmlspecialchars(ADS_MANAGER_TITLE) ?></span>
</div>
<span class="key-badge" id="key-indicator" style="display:none">
<span class="key-dot"></span>authenticated
</span>
</div>
<!-- Auth key input -->
<div class="auth-bar">
<label for="admin-key">Admin Key</label>
<input type="password" id="admin-key" placeholder="Enter admin key…" autocomplete="current-password">
<button class="btn btn-green btn-sm" onclick="setKey()">
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
Unlock
</button>
</div>
<div id="auth-alert" style="padding:0 1.25rem .75rem"></div>
</div>
<!-- Create new ad -->
<div class="card">
<div class="section-head">
<span class="section-title">New Ad</span>
</div>
<div class="form-wrap" id="create-form">
<div id="create-alert"></div>
<div class="field-row">
<div class="field">
<label for="c-title">Ad Title / Label <span style="color:var(--red)">*</span></label>
<input type="text" id="c-title" placeholder="e.g. Stream sponsor banner">
</div>
<div class="field">
<label for="c-placement">Placement <span style="color:var(--red)">*</span></label>
<select id="c-placement">
<?php foreach ($placements as $val => $label): ?>
<option value="<?= htmlspecialchars($val) ?>"><?= htmlspecialchars($label) ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="field">
<label for="c-click-url">Click-through URL</label>
<input type="url" id="c-click-url" placeholder="https://…">
<span class="field-hint">Where clicking the ad takes the visitor. Leave blank for no link.</span>
</div>
<div class="field">
<label for="c-note">Internal note</label>
<input type="text" id="c-note" placeholder="Optional — campaign name, dates, etc.">
</div>
<div class="divider">Size variants</div>
<span class="field-hint" style="margin-top:-.4rem">Add one entry per screen size. The live page shows the best-fitting variant.</span>
<div class="sizes-label">Creative sizes</div>
<div class="size-list" id="c-size-list"></div>
<button class="size-add-btn" onclick="addSizeEntry('c-size-list')">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Add size variant
</button>
<div style="display:flex;gap:.5rem;flex-wrap:wrap;padding-top:.25rem">
<button class="btn btn-green" id="create-btn" onclick="submitAd()">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Save ad
</button>
<button class="btn btn-ghost btn-sm" onclick="clearCreate()">Clear</button>
</div>
</div>
</div>
<!-- Ad list -->
<div class="card">
<div class="section-head">
<span class="section-title">All Ads</span>
<span id="ad-count" style="font-family:'Share Tech Mono',monospace;font-size:.58rem;color:var(--text-3)">
<?= count($all_ads) ?> ad<?= count($all_ads) !== 1 ? 's' : '' ?>
</span>
</div>
<ul id="ad-list">
<?php if (empty($all_ads)): ?>
<li class="feed-status">No ads yet — create one above.</li>
<?php else: ?>
<?php foreach ($all_ads as $ad): ?>
<li class="ad-item" id="ai-<?= htmlspecialchars($ad['id']) ?>">
<?php
$is_active = $ad['active'] ?? true;
$pl_label = $placements[$ad['placement'] ?? 'above'] ?? ($ad['placement'] ?? '');
$size_count = count($ad['sizes'] ?? []);
?>
<div class="ad-item-head">
<div>
<div class="ad-item-title"><?= htmlspecialchars($ad['title'] ?? 'Untitled') ?></div>
<?php if (!empty($ad['note'])): ?>
<div style="font-family:'Share Tech Mono',monospace;font-size:.62rem;color:var(--text-3);margin-top:.2rem"><?= htmlspecialchars($ad['note']) ?></div>
<?php endif; ?>
</div>
<div class="ad-item-actions">
<button class="btn btn-ghost btn-sm" onclick="toggleEdit('<?= htmlspecialchars($ad['id']) ?>')">Edit</button>
<button class="btn btn-red btn-sm" onclick="deleteAd('<?= htmlspecialchars($ad['id']) ?>')">Delete</button>
</div>
</div>
<div class="ad-item-meta">
<span class="ad-badge ad-badge-placement"><?= htmlspecialchars($pl_label) ?></span>
<span class="ad-badge <?= $is_active ? 'ad-badge-active' : 'ad-badge-inactive' ?>" id="badge-active-<?= htmlspecialchars($ad['id']) ?>">
<?= $is_active ? 'Active' : 'Paused' ?>
</span>
<?php if ($size_count > 0): ?>
<span class="ad-badge ad-badge-sizes"><?= $size_count ?> size<?= $size_count !== 1 ? 's' : '' ?></span>
<?php endif; ?>
<label class="toggle-wrap" title="Toggle active">
<span class="toggle">
<input type="checkbox" <?= $is_active ? 'checked' : '' ?>
onchange="toggleActive('<?= htmlspecialchars($ad['id']) ?>', this.checked)">
<span class="toggle-track"></span>
<span class="toggle-thumb"></span>
</span>
<span class="toggle-label">Active</span>
</label>
</div>
<?php if (!empty($ad['sizes'])): ?>
<div class="ad-size-previews">
<?php foreach ($ad['sizes'] as $s): ?>
<?php
$sk = $s['size_key'] ?? '';
$sm = $sizes_map[$sk] ?? null;
$sz_label = $sm ? $sm['label'] : $sk;
$sz_type = $s['media_type'] ?? 'image';
?>
<span class="ad-size-pill">
<span class="media-dot <?= $sz_type === 'image' ? 'img-dot' : 'vid-dot' ?>"></span>
<?= htmlspecialchars($sz_label) ?>
</span>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- Inline edit form -->
<div class="edit-form" id="ef-<?= htmlspecialchars($ad['id']) ?>">
<div class="field-row">
<div class="field">
<label>Title</label>
<input type="text" id="ef-title-<?= htmlspecialchars($ad['id']) ?>"
value="<?= htmlspecialchars($ad['title'] ?? '') ?>">
</div>
<div class="field">
<label>Placement</label>
<select id="ef-placement-<?= htmlspecialchars($ad['id']) ?>">
<?php foreach ($placements as $val => $label): ?>
<option value="<?= htmlspecialchars($val) ?>" <?= ($ad['placement'] ?? '') === $val ? 'selected' : '' ?>>
<?= htmlspecialchars($label) ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="field">
<label>Click-through URL</label>
<input type="url" id="ef-click-url-<?= htmlspecialchars($ad['id']) ?>"
value="<?= htmlspecialchars($ad['click_url'] ?? '') ?>">
</div>
<div class="field">
<label>Internal note</label>
<input type="text" id="ef-note-<?= htmlspecialchars($ad['id']) ?>"
value="<?= htmlspecialchars($ad['note'] ?? '') ?>">
</div>
<div class="divider">Size variants</div>
<div class="sizes-label">Creative sizes</div>
<div class="size-list" id="ef-size-list-<?= htmlspecialchars($ad['id']) ?>">
<?php foreach (($ad['sizes'] ?? []) as $si => $s): ?>
<?php $this_key = htmlspecialchars($ad['id']) . '-' . $si; ?>
<div class="size-entry" data-idx="<?= $si ?>">
<div class="size-entry-head">
<span class="size-entry-label">Variant <?= $si + 1 ?></span>
<button class="btn btn-ghost btn-sm" onclick="this.closest('.size-entry').remove()">✕ Remove</button>
</div>
<div class="size-entry-grid">
<div class="field">
<label>Size preset</label>
<select class="size-key-sel">
<?php foreach ($sizes as $sz): ?>
<option value="<?= htmlspecialchars($sz['key']) ?>"
<?= ($s['size_key'] ?? '') === $sz['key'] ? 'selected' : '' ?>>
<?= htmlspecialchars($sz['label']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="field">
<label>Media type</label>
<select class="size-mtype-sel">
<option value="image" <?= ($s['media_type'] ?? 'image') === 'image' ? 'selected' : '' ?>>Image</option>
<option value="video" <?= ($s['media_type'] ?? '') === 'video' ? 'selected' : '' ?>>Video</option>
</select>
</div>
</div>
<div class="field">
<label>Media URL (image or video)</label>
<input type="url" class="size-url-inp" placeholder="https://…"
value="<?= htmlspecialchars($s['media_url'] ?? '') ?>">
<span class="field-hint">Paste a full URL. For local files: /media/filename.jpg</span>
</div>
<div class="size-entry-grid custom-dims" style="<?= ($s['size_key'] ?? '') !== 'custom' ? 'display:none' : '' ?>">
<div class="field">
<label>Custom width (px)</label>
<input type="number" class="size-cw-inp" placeholder="728"
value="<?= htmlspecialchars((string)($s['custom_w'] ?? '')) ?>">
</div>
<div class="field">
<label>Custom height (px)</label>
<input type="number" class="size-ch-inp" placeholder="90"
value="<?= htmlspecialchars((string)($s['custom_h'] ?? '')) ?>">
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<button class="size-add-btn" onclick="addSizeEntry('ef-size-list-<?= htmlspecialchars($ad['id']) ?>')">
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Add size variant
</button>
<div style="display:flex;gap:.5rem;flex-wrap:wrap;">
<button class="btn btn-blue btn-sm" onclick="saveEdit('<?= htmlspecialchars($ad['id']) ?>')">
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>
Save changes
</button>
<button class="btn btn-ghost btn-sm" onclick="toggleEdit('<?= htmlspecialchars($ad['id']) ?>')">Cancel</button>
</div>
<div id="ef-alert-<?= htmlspecialchars($ad['id']) ?>"></div>
</div>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div>
</div><!-- /page -->
<script>
/* ── Ad size presets (from PHP config) ───────────────────────────────────── */
const SIZE_PRESETS = <?= json_encode($sizes) ?>;
const SAVE_URL = './save.php';
const STORE_KEY = 'tc_admanager_key';
let adminKey = '';
/* ── Helpers ────────────────────────────────────────────────────────────── */
function esc(s) {
return String(s??'').replace(/&/g,'&amp;').replace(/</g,'&lt;')
.replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}
function showAlert(id, type, msg) {
const el = document.getElementById(id);
if (!el) return;
el.innerHTML = `<div class="alert alert-${type}">${esc(msg)}</div>`;
setTimeout(() => el.innerHTML = '', 6000);
}
function setLoading(id, on) {
const b = document.getElementById(id); if (!b) return;
b.disabled = on;
const sp = b.querySelector('.spinner');
if (on && !sp) b.insertAdjacentHTML('afterbegin','<span class="spinner"></span>');
if (!on && sp) sp.remove();
}
async function apiFetch(qs, opts={}) {
const res = await fetch(SAVE_URL + (qs?'?'+qs:''), {
...opts, headers: {'Content-Type':'application/json','X-Ad-Key':adminKey,...(opts.headers||{})}
});
const j = await res.json();
if (!j.ok) throw new Error(j.error||'API error');
return j.data;
}
/* ── Auth ───────────────────────────────────────────────────────────────── */
function setKey() {
const k = document.getElementById('admin-key').value.trim();
if (!k) { showAlert('auth-alert','error','Enter the admin key.'); return; }
adminKey = k;
// Test with a harmless fetch (try to load list)
fetch(SAVE_URL + '?_test=1', {method:'DELETE', headers:{'X-Ad-Key':k}})
.then(r => r.json()).then(j => {
if (j.error && j.error.includes('id')) {
// Got a real API response → key accepted
sessionStorage.setItem(STORE_KEY, k);
document.getElementById('key-indicator').style.display = '';
showAlert('auth-alert','success','Authenticated successfully.');
} else if (!j.ok && j.error && j.error.includes('Invalid')) {
adminKey = '';
showAlert('auth-alert','error','Invalid key.');
} else {
sessionStorage.setItem(STORE_KEY, k);
document.getElementById('key-indicator').style.display = '';
showAlert('auth-alert','success','Authenticated.');
}
}).catch(() => showAlert('auth-alert','error','Could not reach save.php.'));
}
document.getElementById('admin-key').addEventListener('keydown', e => { if(e.key==='Enter') setKey(); });
(function() {
const saved = sessionStorage.getItem(STORE_KEY);
if (saved) {
document.getElementById('admin-key').value = saved;
adminKey = saved;
document.getElementById('key-indicator').style.display = '';
}
})();
/* ── Size entry builder ─────────────────────────────────────────────────── */
function addSizeEntry(listId) {
const list = document.getElementById(listId);
const idx = list.querySelectorAll('.size-entry').length;
const presetOpts = SIZE_PRESETS.map(s =>
`<option value="${esc(s.key)}">${esc(s.label)}</option>`).join('');
const div = document.createElement('div');
div.className = 'size-entry';
div.innerHTML = `
<div class="size-entry-head">
<span class="size-entry-label">Variant ${idx + 1}</span>
<button class="btn btn-ghost btn-sm" onclick="this.closest('.size-entry').remove()">✕ Remove</button>
</div>
<div class="size-entry-grid">
<div class="field">
<label>Size preset</label>
<select class="size-key-sel" onchange="toggleCustomDims(this)">${presetOpts}</select>
</div>
<div class="field">
<label>Media type</label>
<select class="size-mtype-sel">
<option value="image">Image</option>
<option value="video">Video</option>
</select>
</div>
</div>
<div class="field">
<label>Media URL (image or video)</label>
<input type="url" class="size-url-inp" placeholder="https://… or /media/file.jpg">
<span class="field-hint">Full URL or server-relative path. Supports JPEG, PNG, GIF, WEBP, MP4, WEBM.</span>
</div>
<div class="size-entry-grid custom-dims" style="display:none">
<div class="field">
<label>Custom width (px)</label>
<input type="number" class="size-cw-inp" placeholder="728">
</div>
<div class="field">
<label>Custom height (px)</label>
<input type="number" class="size-ch-inp" placeholder="90">
</div>
</div>`;
list.appendChild(div);
}
function toggleCustomDims(sel) {
const entry = sel.closest('.size-entry');
const dims = entry.querySelector('.custom-dims');
if (dims) dims.style.display = sel.value === 'custom' ? '' : 'none';
}
function collectSizes(listId) {
const entries = document.querySelectorAll('#' + listId + ' .size-entry');
const sizes = [];
entries.forEach(e => {
const key = e.querySelector('.size-key-sel')?.value || '';
const url = e.querySelector('.size-url-inp')?.value.trim() || '';
const type = e.querySelector('.size-mtype-sel')?.value || 'image';
const cw = e.querySelector('.size-cw-inp')?.value || null;
const ch = e.querySelector('.size-ch-inp')?.value || null;
if (key && url) sizes.push({ size_key: key, media_url: url, media_type: type,
custom_w: cw ? parseInt(cw) : null, custom_h: ch ? parseInt(ch) : null });
});
return sizes;
}
/* ── Create ─────────────────────────────────────────────────────────────── */
function clearCreate() {
document.getElementById('c-title').value = '';
document.getElementById('c-click-url').value = '';
document.getElementById('c-note').value = '';
document.getElementById('c-size-list').innerHTML = '';
}
function submitAd() {
if (!adminKey) { showAlert('create-alert','error','Enter admin key first.'); return; }
const body = {
title: document.getElementById('c-title').value.trim(),
placement: document.getElementById('c-placement').value,
click_url: document.getElementById('c-click-url').value.trim(),
note: document.getElementById('c-note').value.trim(),
active: true,
sizes: collectSizes('c-size-list'),
};
if (!body.title) { showAlert('create-alert','error','Title is required.'); return; }
setLoading('create-btn', true);
apiFetch('', { method:'POST', body: JSON.stringify(body) })
.then(() => { clearCreate(); setLoading('create-btn',false); showAlert('create-alert','success','Ad saved — reload to see it in the list.'); })
.catch(e => { setLoading('create-btn',false); showAlert('create-alert','error',e.message); });
}
/* ── Edit / save ────────────────────────────────────────────────────────── */
function toggleEdit(id) {
const ef = document.getElementById('ef-' + id);
ef.classList.toggle('open');
// Wire custom-dims toggles on existing selects when form opens
ef.querySelectorAll('.size-key-sel').forEach(sel => {
sel.onchange = () => toggleCustomDims(sel);
});
}
function saveEdit(id) {
if (!adminKey) { showAlert('ef-alert-'+id,'error','Enter admin key first.'); return; }
const body = {
title: document.getElementById('ef-title-'+id).value.trim(),
placement: document.getElementById('ef-placement-'+id).value,
click_url: document.getElementById('ef-click-url-'+id).value.trim(),
note: document.getElementById('ef-note-'+id).value.trim(),
sizes: collectSizes('ef-size-list-'+id),
};
apiFetch('id='+encodeURIComponent(id), { method:'PUT', body: JSON.stringify(body) })
.then(() => { showAlert('ef-alert-'+id,'success','Saved — reload to refresh the list.'); })
.catch(e => showAlert('ef-alert-'+id,'error',e.message));
}
/* ── Toggle active ──────────────────────────────────────────────────────── */
function toggleActive(id, active) {
if (!adminKey) return;
const badge = document.getElementById('badge-active-'+id);
apiFetch('action=toggle', { method:'POST', body: JSON.stringify({id, active}) })
.then(() => {
if (badge) { badge.textContent = active ? 'Active' : 'Paused'; badge.className = 'ad-badge ' + (active ? 'ad-badge-active' : 'ad-badge-inactive'); }
})
.catch(e => alert('Toggle failed: ' + e.message));
}
/* ── Delete ─────────────────────────────────────────────────────────────── */
function deleteAd(id) {
if (!adminKey) { alert('Enter admin key first.'); return; }
if (!confirm('Delete this ad? This cannot be undone.')) return;
apiFetch('id='+encodeURIComponent(id), { method:'DELETE' })
.then(() => {
const li = document.getElementById('ai-'+id);
li.style.transition='opacity .2s,transform .2s'; li.style.opacity='0'; li.style.transform='translateX(8px)';
setTimeout(() => { li.remove(); const cnt=document.getElementById('ad-count'); if(cnt){const n=document.querySelectorAll('.ad-item').length;cnt.textContent=n+' ad'+(n!==1?'s':'')} }, 220);
})
.catch(e => alert('Delete failed: ' + e.message));
}
</script>
</body>
</html>
+184
View File
@@ -0,0 +1,184 @@
<?php
/**
* admanager/save.php — Authenticated ad CRUD API
* ─────────────────────────────────────────────────────────────────────────────
* All requests require the X-Ad-Key header matching ADS_ADMIN_KEY in config.php.
*
* POST save.php body: ad object → create
* PUT save.php?id=<id> body: partial ad fields → update
* DELETE save.php?id=<id> → delete
* POST save.php?action=reorder body: {ids:[…]} → reorder
* POST save.php?action=toggle body: {id,active} → toggle active
*/
require_once __DIR__ . '/config.php';
header('Content-Type: application/json; charset=utf-8');
header('X-Content-Type-Options: nosniff');
function ad_ok(mixed $data, int $code = 200): never {
http_response_code($code);
echo json_encode(['ok' => true, 'data' => $data], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
exit;
}
function ad_err(string $msg, int $code = 400): never {
http_response_code($code);
echo json_encode(['ok' => false, 'error' => $msg]);
exit;
}
// ── Auth ──────────────────────────────────────────────────────────────────────
$supplied = trim($_SERVER['HTTP_X_AD_KEY'] ?? $_SERVER['HTTP_X_Ad_Key'] ?? ($_GET['ad_key'] ?? ''));
if ($supplied === '') ad_err('Missing X-Ad-Key header.', 401);
if (!hash_equals(ADS_ADMIN_KEY, $supplied)) ad_err('Invalid key.', 403);
// ── Data helpers ──────────────────────────────────────────────────────────────
function load_ads(): array {
if (!file_exists(ADS_JSON_PATH)) return [];
$raw = json_decode(file_get_contents(ADS_JSON_PATH), true);
return is_array($raw) ? $raw : [];
}
function save_ads(array $ads): void {
$json = json_encode(array_values($ads), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
$tmp = ADS_JSON_PATH . '.tmp.' . getmypid();
if (file_put_contents($tmp, $json, LOCK_EX) === false) ad_err('Write failed.', 500);
if (!rename($tmp, ADS_JSON_PATH)) { @unlink($tmp); ad_err('Rename failed.', 500); }
}
function find_ad(array $ads, string $id): int|false {
foreach ($ads as $i => $a) { if (($a['id'] ?? '') === $id) return $i; }
return false;
}
function new_id(array $ads): string {
$existing = array_column($ads, 'id');
do { $id = 'ad_' . strtolower(bin2hex(random_bytes(4))); } while (in_array($id, $existing));
return $id;
}
function read_body(): array {
$raw = file_get_contents('php://input');
if (!$raw) return [];
$d = json_decode($raw, true);
if (!is_array($d)) ad_err('Body must be valid JSON.');
return $d;
}
function sanitise_ad(array $in, bool $require_fields = true): array {
$errors = [];
if ($require_fields) {
if (trim($in['title'] ?? '') === '') $errors[] = '"title" is required.';
if (trim($in['placement'] ?? '') === '') $errors[] = '"placement" is required.';
$valid_placements = array_keys(unserialize(ADS_PLACEMENTS));
if (!in_array($in['placement'] ?? '', $valid_placements)) $errors[] = 'Invalid placement.';
}
if ($errors) ad_err(implode(' ', $errors));
$out = [];
if (isset($in['title'])) $out['title'] = trim((string)$in['title']);
if (isset($in['placement'])) $out['placement'] = trim((string)$in['placement']);
if (isset($in['click_url'])) $out['click_url'] = trim((string)$in['click_url']);
if (isset($in['active'])) $out['active'] = (bool)$in['active'];
if (isset($in['note'])) $out['note'] = trim((string)$in['note']);
// sizes: array of {size_key, media_url, media_type, custom_w, custom_h}
if (isset($in['sizes']) && is_array($in['sizes'])) {
$clean_sizes = [];
foreach ($in['sizes'] as $s) {
if (empty($s['size_key']) || empty($s['media_url'])) continue;
$clean_sizes[] = [
'size_key' => trim((string)$s['size_key']),
'media_url' => trim((string)$s['media_url']),
'media_type' => in_array($s['media_type'] ?? '', ['image','video']) ? $s['media_type'] : 'image',
'custom_w' => isset($s['custom_w']) ? (int)$s['custom_w'] : null,
'custom_h' => isset($s['custom_h']) ? (int)$s['custom_h'] : null,
];
}
$out['sizes'] = $clean_sizes;
}
return $out;
}
// ── Routing ───────────────────────────────────────────────────────────────────
$method = $_SERVER['REQUEST_METHOD'];
$id = trim($_GET['id'] ?? '');
$action = trim($_GET['action'] ?? '');
// Toggle active
if ($method === 'POST' && $action === 'toggle') {
$body = read_body();
$tid = trim((string)($body['id'] ?? ''));
$ads = load_ads();
$idx = find_ad($ads, $tid);
if ($idx === false) ad_err("Ad \"$tid\" not found.", 404);
$ads[$idx]['active'] = (bool)($body['active'] ?? !$ads[$idx]['active']);
save_ads($ads);
ad_ok($ads[$idx]);
}
// Reorder
if ($method === 'POST' && $action === 'reorder') {
$body = read_body();
if (!isset($body['ids']) || !is_array($body['ids'])) ad_err('"ids" required.');
$ads = load_ads();
$indexed = [];
foreach ($ads as $a) $indexed[$a['id']] = $a;
$reordered = [];
foreach ($body['ids'] as $rid) {
if (!isset($indexed[$rid])) ad_err("Unknown id \"$rid\".");
$reordered[] = $indexed[$rid];
unset($indexed[$rid]);
}
foreach ($indexed as $a) $reordered[] = $a;
save_ads($reordered);
ad_ok(['reordered' => count($reordered)]);
}
// Create
if ($method === 'POST') {
$body = read_body();
$clean = sanitise_ad($body, true);
$ads = load_ads();
$ad = array_merge([
'id' => new_id($ads),
'title' => '',
'placement' => 'above',
'click_url' => '',
'active' => true,
'note' => '',
'sizes' => [],
'created' => (new DateTime('now', new DateTimeZone('UTC')))->format(DateTime::ATOM),
], $clean);
array_unshift($ads, $ad);
save_ads($ads);
ad_ok($ad, 201);
}
// Update
if ($method === 'PUT') {
if ($id === '') ad_err('?id= required for PUT.');
$ads = load_ads();
$idx = find_ad($ads, $id);
if ($idx === false) ad_err("Ad \"$id\" not found.", 404);
$body = read_body();
$clean = sanitise_ad($body, false);
$ads[$idx] = array_merge($ads[$idx], $clean);
$ads[$idx]['id'] = $id;
save_ads($ads);
ad_ok($ads[$idx]);
}
// Delete
if ($method === 'DELETE') {
if ($id === '') ad_err('?id= required for DELETE.');
$ads = load_ads();
$idx = find_ad($ads, $id);
if ($idx === false) ad_err("Ad \"$id\" not found.", 404);
$deleted = $ads[$idx];
array_splice($ads, $idx, 1);
save_ads($ads);
ad_ok($deleted);
}
ad_err('Method not allowed.', 405);
+1
View File
@@ -0,0 +1 @@
google.com, pub-3329298426058645, DIRECT, f08c47fec0942fa0
+358
View File
@@ -0,0 +1,358 @@
<?php
/**
* api.php — REST API for updates.json
* ─────────────────────────────────────────────────────────────────────────────
* Drop alongside index.php. The JSON store and API key path are configured
* in the CONFIG block below.
*
* Authentication
* Pass the key in the X-API-Key header or the ?api_key= query parameter.
*
* Endpoints
* GET api.php List posts (?limit=N &offset=N &tag=foo)
* GET api.php?id=<id> Get one post
* POST api.php Create post (JSON body)
* PUT api.php?id=<id> Update post (JSON body, partial)
* DELETE api.php?id=<id> Delete post
* POST api.php?action=reorder Reorder (JSON body: {"ids":["003","001",…]})
* POST api.php?action=bulk_delete Bulk delete (JSON body: {"ids":["001","002"]})
*
* Post schema
* id string auto-generated if omitted on create
* text string required
* date string ISO-8601; defaults to now() on create
* tags string[] optional
* link string optional URL
* link_label string optional
*/
// ══════════════════════════════════════════════════════════════════════════════
// CONFIG — edit this block only
// ══════════════════════════════════════════════════════════════════════════════
// Path to updates.json (relative to this file or absolute)
define('API_JSON_PATH', __DIR__ . '/index_config/updates.json');
// Path to api_key.txt — one key per line; lines starting with # are ignored.
// Generate a key: php -r "echo bin2hex(random_bytes(32));"
define('API_KEY_FILE', __DIR__ . '/index_config/api_keys.txt');
// Allowed CORS origin. '*' opens to all; set to 'https://tyclifford.com' to lock.
define('API_CORS_ORIGIN', 'https:/tyclifford.com');
// Maximum posts returned by a single list request (hard ceiling).
define('API_MAX_LIMIT', 100);
// ══════════════════════════════════════════════════════════════════════════════
// BOOTSTRAP
// ══════════════════════════════════════════════════════════════════════════════
header('Content-Type: application/json; charset=utf-8');
header('X-Content-Type-Options: nosniff');
if (API_CORS_ORIGIN !== '') {
header('Access-Control-Allow-Origin: ' . API_CORS_ORIGIN);
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-API-Key, Content-Type');
}
// Handle CORS preflight
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(204);
exit;
}
// ── Helpers ───────────────────────────────────────────────────────────────────
function api_ok(mixed $data, int $code = 200): never {
http_response_code($code);
echo json_encode(['ok' => true, 'data' => $data], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
exit;
}
function api_err(string $message, int $code = 400): never {
http_response_code($code);
echo json_encode(['ok' => false, 'error' => $message], JSON_UNESCAPED_UNICODE);
exit;
}
// ── Auth ──────────────────────────────────────────────────────────────────────
function api_auth(): void {
if (!file_exists(API_KEY_FILE)) {
api_err('API key file not configured. Create index_config/api_keys.txt with at least one key.', 503);
}
$supplied = trim(
$_SERVER['HTTP_X_API_KEY']
?? $_SERVER['HTTP_X_Api_Key']
?? ($_GET['api_key'] ?? '')
);
if ($supplied === '') {
api_err('Missing API key. Supply X-API-Key header or ?api_key= parameter.', 401);
}
$valid_keys = array_filter(
array_map('trim', file(API_KEY_FILE)),
fn($line) => $line !== '' && !str_starts_with($line, '#')
);
foreach ($valid_keys as $key) {
if (hash_equals($key, $supplied)) return; // constant-time compare
}
api_err('Invalid API key.', 403);
}
// ── JSON store ────────────────────────────────────────────────────────────────
function load_posts(): array {
if (!file_exists(API_JSON_PATH)) return [];
$raw = file_get_contents(API_JSON_PATH);
$data = json_decode($raw, true);
return is_array($data) ? $data : [];
}
function save_posts(array $posts): void {
$dir = dirname(API_JSON_PATH);
if (!is_dir($dir)) {
if (!mkdir($dir, 0755, true)) {
api_err('Cannot create data directory.', 500);
}
}
$json = json_encode(
array_values($posts), // reindex
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT
);
// Atomic write with exclusive lock
$tmp = API_JSON_PATH . '.tmp.' . getmypid();
if (file_put_contents($tmp, $json, LOCK_EX) === false) {
api_err('Failed to write data file.', 500);
}
if (!rename($tmp, API_JSON_PATH)) {
@unlink($tmp);
api_err('Failed to replace data file.', 500);
}
}
function find_post(array $posts, string $id): int|false {
foreach ($posts as $i => $p) {
if (($p['id'] ?? '') === $id) return $i;
}
return false;
}
function generate_id(array $posts): string {
$existing = array_column($posts, 'id');
do {
$id = strtolower(bin2hex(random_bytes(4)));
} while (in_array($id, $existing, true));
return $id;
}
function validate_post(array $input, bool $require_text = true): array {
$errors = [];
if ($require_text && trim($input['text'] ?? '') === '') {
$errors[] = '"text" is required and cannot be empty.';
}
if (isset($input['text']) && mb_strlen($input['text']) > 4000) {
$errors[] = '"text" exceeds 4000 characters.';
}
if (isset($input['date'])) {
$dt = DateTime::createFromFormat(DateTime::ATOM, $input['date'])
?: DateTime::createFromFormat('Y-m-d\TH:i:s\Z', $input['date'])
?: DateTime::createFromFormat('Y-m-d', $input['date']);
if ($dt === false) {
$errors[] = '"date" must be ISO-8601 (e.g. 2025-08-14T21:30:00Z).';
}
}
if (isset($input['tags'])) {
if (!is_array($input['tags'])) {
$errors[] = '"tags" must be an array of strings.';
} else {
foreach ($input['tags'] as $t) {
if (!is_string($t) || mb_strlen($t) > 50) {
$errors[] = 'Each tag must be a string ≤ 50 characters.';
break;
}
}
}
}
if (isset($input['link']) && $input['link'] !== '') {
if (!filter_var($input['link'], FILTER_VALIDATE_URL)) {
$errors[] = '"link" must be a valid URL or empty string.';
}
}
return $errors;
}
function sanitise_post(array $input): array {
$out = [];
if (isset($input['text'])) $out['text'] = trim((string)$input['text']);
if (isset($input['date'])) $out['date'] = trim((string)$input['date']);
if (isset($input['tags'])) $out['tags'] = array_values(array_map('trim', (array)$input['tags']));
if (array_key_exists('link', $input)) $out['link'] = trim((string)$input['link']);
if (array_key_exists('link_label', $input)) $out['link_label'] = trim((string)$input['link_label']);
return $out;
}
// ── Request body ──────────────────────────────────────────────────────────────
function read_body(): array {
$raw = file_get_contents('php://input');
if ($raw === '' || $raw === false) return [];
$data = json_decode($raw, true);
if (!is_array($data)) api_err('Request body must be valid JSON.', 400);
return $data;
}
// ══════════════════════════════════════════════════════════════════════════════
// ROUTING
// ══════════════════════════════════════════════════════════════════════════════
api_auth();
$method = $_SERVER['REQUEST_METHOD'];
$id = trim($_GET['id'] ?? '');
$action = trim($_GET['action'] ?? '');
// ── POST ?action=reorder ──────────────────────────────────────────────────────
if ($method === 'POST' && $action === 'reorder') {
$body = read_body();
if (!isset($body['ids']) || !is_array($body['ids'])) {
api_err('"ids" array is required.');
}
$posts = load_posts();
$indexed = [];
foreach ($posts as $p) $indexed[$p['id']] = $p;
$reordered = [];
foreach ($body['ids'] as $eid) {
if (!is_string($eid) || !isset($indexed[$eid])) {
api_err("Unknown id \"$eid\" in reorder list.");
}
$reordered[] = $indexed[$eid];
unset($indexed[$eid]);
}
// Append any posts not mentioned in the ids list at the end
foreach ($indexed as $p) $reordered[] = $p;
save_posts($reordered);
api_ok(['reordered' => count($reordered)]);
}
// ── POST ?action=bulk_delete ──────────────────────────────────────────────────
if ($method === 'POST' && $action === 'bulk_delete') {
$body = read_body();
if (!isset($body['ids']) || !is_array($body['ids'])) {
api_err('"ids" array is required.');
}
$posts = load_posts();
$del_set = array_flip($body['ids']);
$kept = array_values(array_filter($posts, fn($p) => !isset($del_set[$p['id'] ?? ''])));
$deleted = count($posts) - count($kept);
save_posts($kept);
api_ok(['deleted' => $deleted]);
}
// ── GET — list or single ──────────────────────────────────────────────────────
if ($method === 'GET') {
$posts = load_posts();
if ($id !== '') {
$idx = find_post($posts, $id);
if ($idx === false) api_err("Post \"$id\" not found.", 404);
api_ok($posts[$idx]);
}
// Filtering
$tag = trim($_GET['tag'] ?? '');
if ($tag !== '') {
$posts = array_values(array_filter($posts, fn($p) => in_array($tag, (array)($p['tags'] ?? []), true)));
}
// Pagination
$total = count($posts);
$limit = min(max(1, (int)($_GET['limit'] ?? $total)), API_MAX_LIMIT);
$offset = max(0, (int)($_GET['offset'] ?? 0));
$page = array_slice($posts, $offset, $limit);
api_ok([
'total' => $total,
'limit' => $limit,
'offset' => $offset,
'items' => $page,
]);
}
// ── POST — create ─────────────────────────────────────────────────────────────
if ($method === 'POST' && $action === '') {
$body = read_body();
$errors = validate_post($body, require_text: true);
if ($errors) api_err(implode(' ', $errors));
$posts = load_posts();
// Allow caller to supply id; generate one if missing or already taken
$new_id = trim((string)($body['id'] ?? ''));
if ($new_id === '' || find_post($posts, $new_id) !== false) {
$new_id = generate_id($posts);
}
$safe = sanitise_post($body);
$post = [
'id' => $new_id,
'text' => $safe['text'],
'date' => $safe['date'] ?? (new DateTime('now', new DateTimeZone('UTC')))->format(DateTime::ATOM),
'tags' => $safe['tags'] ?? [],
'link' => $safe['link'] ?? '',
'link_label' => $safe['link_label'] ?? '',
];
array_unshift($posts, $post); // newest first
save_posts($posts);
api_ok($post, 201);
}
// ── PUT — update ──────────────────────────────────────────────────────────────
if ($method === 'PUT') {
if ($id === '') api_err('?id= is required for PUT.');
$posts = load_posts();
$idx = find_post($posts, $id);
if ($idx === false) api_err("Post \"$id\" not found.", 404);
$body = read_body();
$errors = validate_post($body, require_text: false);
if ($errors) api_err(implode(' ', $errors));
$safe = sanitise_post($body);
$posts[$idx] = array_merge($posts[$idx], $safe);
$posts[$idx]['id'] = $id; // id is immutable
save_posts($posts);
api_ok($posts[$idx]);
}
// ── DELETE — single ───────────────────────────────────────────────────────────
if ($method === 'DELETE') {
if ($id === '') api_err('?id= is required for DELETE.');
$posts = load_posts();
$idx = find_post($posts, $id);
if ($idx === false) api_err("Post \"$id\" not found.", 404);
$deleted = $posts[$idx];
array_splice($posts, $idx, 1);
save_posts($posts);
api_ok($deleted);
}
api_err('Method not allowed.', 405);
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="main.css" server="ftp.populerdunya.com/lazyguy/" local="131387013542778043" remote="131386726800000000" Dst="0" />
<file name="main.css" server="ftp.populerdunya.com/lazyguy/demo/" local="131359779052126602" remote="131362965000000000" Dst="0" />
</dwsync>
+93
View File
@@ -0,0 +1,93 @@
Font license info
## Font Awesome
Copyright (C) 2016 by Dave Gandy
Author: Dave Gandy
License: SIL ()
Homepage: http://fortawesome.github.com/Font-Awesome/
## Iconic
Copyright (C) 2012 by P.J. Onori
Author: P.J. Onori
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://somerandomdude.com/work/iconic/
## Linecons
Copyright (C) 2013 by Designmodo
Author: Designmodo for Smashing Magazine
License: CC BY ()
Homepage: http://designmodo.com/linecons-free/
## Typicons
(c) Stephen Hutchings 2012
Author: Stephen Hutchings
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://typicons.com/
## Maki
Copyright (C) Mapbox, LCC
Author: Mapbox
License: BSD (https://github.com/mapbox/maki/blob/gh-pages/LICENSE.txt)
Homepage: http://mapbox.com/maki/
## Entypo
Copyright (C) 2012 by Daniel Bruce
Author: Daniel Bruce
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://www.entypo.com
## Elusive
Copyright (C) 2013 by Aristeides Stathopoulos
Author: Aristeides Stathopoulos
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://aristeides.com/
## Zocial
Copyright (C) 2012 by Sam Collins
Author: Sam Collins
License: MIT (http://opensource.org/licenses/mit-license.php)
Homepage: http://zocial.smcllns.com/
## Modern Pictograms
Copyright (c) 2012 by John Caserta. All rights reserved.
Author: John Caserta
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://thedesignoffice.org/project/modern-pictograms/
## Brandico
(C) 2012 by Vitaly Puzrin
Author: Crowdsourced, for Fontello project
License: SIL (http://scripts.sil.org/OFL)
Homepage:
+75
View File
@@ -0,0 +1,75 @@
This webfont is generated by http://fontello.com open source project.
================================================================================
Please, note, that you should obey original font licenses, used to make this
webfont pack. Details available in LICENSE.txt file.
- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
site in "About" section.
- If your project is open-source, usually, it will be ok to make LICENSE.txt
file publicly available in your repository.
- Fonts, used in Fontello, don't require a clickable link on your site.
But any kind of additional authors crediting is welcome.
================================================================================
Comments on archive content
---------------------------
- /font/* - fonts in different formats
- /css/* - different kinds of css, for all situations. Should be ok with
twitter bootstrap. Also, you can skip <i> style and assign icon classes
directly to text elements, if you don't mind about IE7.
- demo.html - demo file, to show your webfont content
- LICENSE.txt - license info about source fonts, used to build your one.
- config.json - keeps your settings. You can import it back into fontello
anytime, to continue your work
Why so many CSS files ?
-----------------------
Because we like to fit all your needs :)
- basic file, <your_font_name>.css - is usually enough, it contains @font-face
and character code definitions
- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
directly into html
- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
rules, but still wish to benefit from css generation. That can be very
convenient for automated asset build systems. When you need to update font -
no need to manually edit files, just override old version with archive
content. See fontello source code for examples.
- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
server headers. But if you ok with dirty hack - this file is for you. Note,
that data url moved to separate @font-face to avoid problems with <IE9, when
string is too long.
- animate.css - use it to get ideas about spinner rotation animation.
Attention for server setup
--------------------------
You MUST setup server to reply with proper `mime-types` for font files -
otherwise some browsers will fail to show fonts.
Usually, `apache` already has necessary settings, but `nginx` and other
webservers should be tuned. Here is list of mime types for our file extensions:
- `application/vnd.ms-fontobject` - eot
- `application/x-font-woff` - woff
- `application/x-font-ttf` - ttf
- `image/svg+xml` - svg
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="config.json" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="demo.html" server="ftp.populerdunya.com/lazyguy/" local="131363380240000000" remote="131386726200000000" Dst="0" />
<file name="LICENSE.txt" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="README.txt" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
</dwsync>
+692
View File
@@ -0,0 +1,692 @@
{
"name": "",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "5408be43f7c42bccee419c6be53fdef5",
"css": "doc-text",
"code": 59394,
"src": "fontawesome"
},
{
"uid": "e9fa538fd5913046497ac148e27cd8ea",
"css": "apple",
"code": 59401,
"src": "fontawesome"
},
{
"uid": "a32d12927584e3c8a3dff23eb816d360",
"css": "foursquare",
"code": 59453,
"src": "fontawesome"
},
{
"uid": "0f6a2573a7b6df911ed199bb63717e27",
"css": "github-circled",
"code": 59434,
"src": "fontawesome"
},
{
"uid": "1145676a91138011729fa2909997af66",
"css": "linkedin-squared",
"code": 59431,
"src": "fontawesome"
},
{
"uid": "da851b7c1f84ee83f93b29ae613558dc",
"css": "pinterest-circled",
"code": 59433,
"src": "fontawesome"
},
{
"uid": "43fcf807461234935e65261328e1dff6",
"css": "tumblr",
"code": 59446,
"src": "fontawesome"
},
{
"uid": "1f66490bf24c99e2c56b866d8fbd0372",
"css": "vimeo-squared",
"code": 59440,
"src": "fontawesome"
},
{
"uid": "676cf66256441f09e4934ae6378b3e2d",
"css": "vine",
"code": 59491,
"src": "fontawesome"
},
{
"uid": "f3d95e13eb43f3f6b8efe1eb424a1e3b",
"css": "vkontakte",
"code": 59462,
"src": "fontawesome"
},
{
"uid": "8aff323697468c4a63993cde00386ec6",
"css": "windows",
"code": 59461,
"src": "fontawesome"
},
{
"uid": "11ebb30e17efcd988a228ade5d3e8c74",
"css": "xing",
"code": 59454,
"src": "fontawesome"
},
{
"uid": "47a1f80457068fbeab69fdb83d7d0817",
"css": "youtube-play",
"code": 59444,
"src": "fontawesome"
},
{
"uid": "d090355c31f497b61d676416c1fd39fb",
"css": "twitter",
"code": 59430,
"src": "entypo"
},
{
"uid": "bc50457410acf467b8b5721240768742",
"css": "facebook",
"code": 59429,
"src": "entypo"
},
{
"uid": "e3606432570e59d4d852727bad063cd1",
"css": "stumbleupon-circled",
"code": 59467,
"src": "entypo"
},
{
"uid": "d1945696d6bbbf84e388df9961f26a37",
"css": "sina-weibo",
"code": 59455,
"src": "entypo"
},
{
"uid": "b86600decaba538aca184421752cd640",
"css": "soundcloud",
"code": 59456,
"src": "entypo"
},
{
"uid": "f5b8e78b48e3028969a964e002daf745",
"css": "skype",
"code": 59442,
"src": "typicons"
},
{
"uid": "33iuue66u2628uv4kz3vnmh8uee8o7rw",
"css": "rss",
"code": 59439,
"src": "modernpics"
},
{
"uid": "1e2035b7cbaeb3d902cf9849e456069d",
"css": "delicious",
"code": 59448,
"src": "zocial"
},
{
"uid": "aaf371ab44841e9aaffebd179d324ce4",
"css": "android",
"code": 59459,
"src": "zocial"
},
{
"uid": "d089814548af1441aa00ecec47851f38",
"css": "fivehundredpx",
"code": 59457,
"src": "zocial"
},
{
"uid": "c9829449672245d22b3d43d7d1a7cc90",
"css": "grooveshark",
"code": 59473,
"src": "zocial"
},
{
"uid": "2f6ed771cf99f6826343c31ed0b08026",
"css": "forrst",
"code": 59441,
"src": "zocial"
},
{
"uid": "8625d6e45fba1219638069e21eedbce8",
"css": "digg",
"code": 59449,
"src": "zocial"
},
{
"uid": "b3a537446285bb3510bba57d20374818",
"css": "reddit",
"code": 59466,
"src": "zocial"
},
{
"uid": "2dd7e3046b63beb19616dce63c5782a6",
"css": "blogger",
"code": 59447,
"src": "zocial"
},
{
"uid": "003ba8187d6b00ec3e1ba75d00f1246a",
"css": "dribbble",
"code": 59436,
"src": "zocial"
},
{
"uid": "231eeeedfdda9dd5d03dc8d03060007d",
"css": "flickr",
"code": 59445,
"src": "zocial"
},
{
"uid": "3da502d7bf60ce54298aafe7b6dca55f",
"css": "meetup",
"code": 59464,
"src": "zocial"
},
{
"uid": "916eba314d66dee45c9859d2fd146d36",
"css": "myspace",
"code": 59463,
"src": "zocial"
},
{
"uid": "785a9b232e86ae750516adc5228a5aa7",
"css": "steam",
"code": 59475,
"src": "zocial"
},
{
"uid": "d0ce443b8d7376716584f5f660a6bf72",
"css": "dropbox",
"code": 59469,
"src": "zocial"
},
{
"uid": "f3d8d921ab15972d3a29da321c5c0558",
"css": "lastfm",
"code": 59438,
"src": "zocial"
},
{
"uid": "6a85bc0b09a4f21d2a3ced2bdffbc770",
"css": "quora",
"code": 59476,
"src": "zocial"
},
{
"uid": "0636c283a9822288a767609062bbf4a4",
"css": "wordpress",
"code": 59451,
"src": "zocial"
},
{
"uid": "bdaca8aa91638109e25d72f1dcbb58c1",
"css": "angellist",
"code": 59477,
"src": "zocial"
},
{
"uid": "01f67de2dc0137389f1c3aced6273acd",
"css": "icq",
"code": 59478,
"src": "brandico"
},
{
"uid": "a0b54315916e54beb4737562e203f674",
"css": "behance",
"code": 59435,
"src": "elusive"
},
{
"uid": "aec2c281c91ca07d01e47f444545036f",
"css": "deviantart",
"code": 59472,
"src": "elusive"
},
{
"uid": "c37b15dbb7b146c359d45b577fba6c0e",
"css": "path",
"code": 59468,
"src": "elusive"
},
{
"uid": "326b529aa8b8913d3bc4a632f3dcec69",
"css": "slideshare",
"code": 59458,
"src": "elusive"
},
{
"uid": "a5e7f5574a71d31bdf2012f0c2acb2a3",
"css": "stackoverflow",
"code": 59452,
"src": "elusive"
},
{
"uid": "220d0de4840e78031c5e7d583902d25c",
"css": "gplus",
"code": 59393,
"src": "custom_icons",
"selected": true,
"svg": {
"path": "M525.8 434.1C525.7 479.5 525.8 525 526 570.4 602 572.9 678.2 571.8 754.2 572.9 720.7 742 491.4 796.8 370 686.4 245.3 589.6 251.2 377.1 380.9 287.2 471.6 214.6 600.5 232.5 691.2 295.4 726.8 262.3 760.1 227 792.3 190.3 716.9 130 624.3 87 525.8 91.6 320.3 84.7 131.4 265.2 127.9 471.3 114.8 639.8 225.3 805 381.3 864.6 536.7 924.6 735.9 883.7 835.2 743.7 900.7 655.3 914.8 541.4 907.2 434.4 779.9 433.5 652.9 433.7 525.8 434.1ZM1269.1 433.5C1268.7 395.5 1268.5 357.3 1268.3 319.3 1230.4 319.3 1192.7 319.3 1155 319.3 1154.6 357.3 1154.2 395.3 1154 433.5 1116 433.7 1078 433.9 1040.1 434.3 1040.1 472.3 1040.1 510.1 1040.1 547.9 1078 548.3 1116.1 548.7 1154 549.1 1154.4 587.1 1154.4 625.1 1154.8 663.1 1192.7 663.1 1230.4 663.1 1268.3 663.1 1268.5 625.1 1268.7 587.1 1269.1 548.9 1307.2 548.5 1345.1 548.3 1383 547.9 1383 510.1 1383 472.1 1383 434.3 1345.1 433.9 1307 433.9 1269.1 433.5Z",
"width": 1497
},
"search": [
"google plus"
]
},
{
"uid": "fb4794d89b77ab712ad56c0dc4c76c6b",
"css": "spotify",
"code": 59395,
"src": "fontawesome"
},
{
"uid": "1b1a592d33fa26c37926cbe840eb60b8",
"css": "snapchat",
"code": 62124,
"src": "fontawesome"
},
{
"uid": "eea8064584ca4397576380d9de87bfc3",
"css": "imdb",
"code": 62168,
"src": "fontawesome"
},
{
"uid": "559647a6f430b3aeadbecd67194451dd",
"css": "menu",
"code": 59392,
"src": "fontawesome"
},
{
"uid": "fbc6facd27f744438410cbcad545bf52",
"css": "tripadvisor",
"code": 62050,
"src": "fontawesome"
},
{
"uid": "3d8b20949cd6f782067f9e652967f8a8",
"css": "videocam-outline",
"code": 59414,
"src": "typicons"
},
{
"uid": "b1c81b3df9f4a9b8c393f405bb5293d8",
"css": "music-outline",
"code": 59525,
"src": "typicons"
},
{
"uid": "155970c9f52b23f31026bab7163caa63",
"css": "codepen",
"code": 62252,
"src": "brandico"
},
{
"uid": "572c9ded6a688698dc275b30ff30fefa",
"css": "music",
"code": 59542,
"src": "linecons"
},
{
"uid": "9725db89b610135dc76cd8a21afffa83",
"css": "search",
"code": 59582,
"src": "linecons"
},
{
"uid": "b59cc4d390a6df564a055f43c03a6af5",
"css": "camera",
"code": 59536,
"src": "linecons"
},
{
"uid": "8573943a49ed6dd8f7819070445baa46",
"css": "photo",
"code": 59543,
"src": "linecons"
},
{
"uid": "359f380b2113cb40259269aed843e33d",
"css": "attach",
"code": 59482,
"src": "linecons"
},
{
"uid": "a58c05a8a3ba59ababd4860a30892560",
"css": "eye",
"code": 59537,
"src": "linecons"
},
{
"uid": "06a2fbb04dffecdb444936073cae9123",
"css": "thumbs-up",
"code": 59483,
"src": "linecons"
},
{
"uid": "2aeb4987b469d22fcb8b471b6d2cdfff",
"css": "pencil",
"code": 59571,
"src": "linecons"
},
{
"uid": "1ea8ad6dbe1ae9a73565ad16cf88de19",
"css": "location",
"code": 59569,
"src": "linecons"
},
{
"uid": "c2958cfd1eed4434ab6e4bd6ab337af9",
"css": "cup",
"code": 59572,
"src": "linecons"
},
{
"uid": "f978da58836f23373882916f05fb70b4",
"css": "doc",
"code": 59573,
"src": "linecons"
},
{
"uid": "29f4bce4a60650057c5248e30baa15a6",
"css": "note",
"code": 59586,
"src": "linecons"
},
{
"uid": "143d93c9abdee0f4a7a2a810acc62b91",
"css": "sound",
"code": 59587,
"src": "linecons"
},
{
"uid": "cc5e3696cf6c3ad8c32daaea05355a99",
"css": "tv",
"code": 59588,
"src": "linecons"
},
{
"uid": "7697f1734d53461137f05faab3f79cf0",
"css": "desktop",
"code": 59589,
"src": "linecons"
},
{
"uid": "6a9f3405aba67bcaee81e7ea38946b27",
"css": "mobile",
"code": 59590,
"src": "linecons"
},
{
"uid": "52cde78d270e411ccf22c9ec02910d69",
"css": "cd",
"code": 59591,
"src": "linecons"
},
{
"uid": "1e89103762be72b0720eda0468e62b90",
"css": "globe",
"code": 59559,
"src": "linecons"
},
{
"uid": "6fbd93c0d220507921015a15575009e5",
"css": "paper-plane",
"code": 59470,
"src": "linecons"
},
{
"uid": "4b7f817f780705a5d267ad59e855da91",
"css": "graduation-cap",
"code": 59535,
"src": "linecons"
},
{
"uid": "02ad0683eaa9826f396fa7ccf1f1fb25",
"css": "database",
"code": 59555,
"src": "linecons"
},
{
"uid": "6cc796276697d8a75ae21bb2df4badc9",
"css": "beaker",
"code": 59538,
"src": "linecons"
},
{
"uid": "f5053e43ef8be31afb905801449ae26d",
"css": "truck",
"code": 59547,
"src": "linecons"
},
{
"uid": "b08f8c33777cd6b512d9576fc6e7f405",
"css": "food",
"code": 59397,
"src": "linecons"
},
{
"uid": "f8e8b267a9b949804f0c9dd7fed8e477",
"css": "diamond",
"code": 59551,
"src": "linecons"
},
{
"uid": "d58dc0a0927a7dea2992f615f2fbf400",
"css": "wallet",
"code": 59553,
"src": "linecons"
},
{
"uid": "862d4faacb164c0412cb3249d43d5d39",
"css": "t-shirt",
"code": 59576,
"src": "linecons"
},
{
"uid": "fb3ee9c192c946342e0cdd12f06d7774",
"css": "lightbulb",
"code": 59565,
"src": "linecons"
},
{
"uid": "ee22dc89481ea63f27654f59dcace804",
"css": "clock",
"code": 59566,
"src": "linecons"
},
{
"uid": "d6944e1d9af302093d43b299bbecbbbe02",
"css": "home",
"code": 59398,
"src": "iconic"
},
{
"uid": "05de65980bb8a3711da037c2cc25f4f8",
"css": "camera-outline",
"code": 59498,
"src": "typicons"
},
{
"uid": "933f454f9d3342a055217fd695475d44",
"css": "vcard",
"code": 59399,
"src": "typicons"
},
{
"uid": "eae068bed86aca956cdd10edcaaf24ee",
"css": "phone-outline",
"code": 59560,
"src": "typicons"
},
{
"uid": "b7bd78e163801889af145e513d6c5383",
"css": "mic-outline",
"code": 59497,
"src": "typicons"
},
{
"uid": "eea1af32a01c5e7a9ce5675bcff64a7b",
"css": "laptop",
"code": 59402,
"src": "typicons"
},
{
"uid": "c710cda53f5e1f8705865d453b7f323f",
"css": "tablet",
"code": 59583,
"src": "typicons"
},
{
"uid": "bb310a229d0d33a1cbe8aa151a7a8fcb",
"css": "briefcase",
"code": 59584,
"src": "typicons"
},
{
"uid": "610efad3150b6959e1b3fc863f39c60c",
"css": "gift",
"code": 59404,
"src": "typicons"
},
{
"uid": "935dd4069330896913745bbdd9699b0e",
"css": "wine",
"code": 59405,
"src": "typicons"
},
{
"uid": "8f73806c205d38d9412c340f93ed0c7a",
"css": "coffee",
"code": 59531,
"src": "typicons"
},
{
"uid": "2b8ea04aa0e500ae056f9c7934af18e6",
"css": "tree",
"code": 59563,
"src": "typicons"
},
{
"uid": "51727ca007aa35ceabcaffc28934faee",
"css": "book-open",
"code": 59406,
"src": "entypo"
},
{
"uid": "5d27926667773d186de09fda4312af27",
"css": "shop",
"code": 59550,
"src": "linecons"
},
{
"uid": "4c1ef492f1d2c39a2250ae457cee2a6e",
"css": "instagram",
"code": 59596,
"src": "fontawesome"
},
{
"uid": "679d36f8485f05180a2719c91b3f621e",
"css": "comment",
"code": 59396,
"src": "iconic"
},
{
"uid": "aab7e7622e6ee1ed8166fb73f20e8c9a",
"css": "bicycle",
"code": 59400,
"src": "maki"
},
{
"uid": "bf882b30900da12fca090d9796bc3030",
"css": "mail",
"code": 59518,
"src": "fontawesome"
},
{
"uid": "bf09b1c6561dc0ced707476e2cd83d29",
"css": "medium",
"code": 62010,
"src": "fontawesome"
},
{
"uid": "457c8e2b305e7af74c1be4f07a01ca92",
"css": "vcard-1",
"code": 59524,
"src": "entypo"
},
{
"uid": "bcb868184ff9c35f8aef564f50c0d649",
"css": "feather",
"code": 59500,
"src": "entypo"
},
{
"uid": "64f5a50cf7ac972a56a9a511acb5d28e",
"css": "map",
"code": 59403,
"src": "entypo"
},
{
"uid": "540b6a4262be769515c79700618b4aea",
"css": "address",
"code": 59407,
"src": "entypo"
},
{
"uid": "366c3c56b79031deacc953d7f92085e5",
"css": "eye-outline",
"code": 59496,
"src": "typicons"
},
{
"uid": "2cfac2c1a9eb4552af0eba34def4b010",
"css": "skype-outline",
"code": 59408,
"src": "typicons"
},
{
"uid": "gruasbs60jlu9us53csv9q7nnwy4d990",
"css": "address-1",
"code": 59437,
"src": "typicons"
},
{
"uid": "13289e807e02b1d46f2fe10d81d6fba6",
"css": "location-outline",
"code": 59528,
"src": "typicons"
},
{
"uid": "05a2f4c4839012434774cc1ceb4c0f9b",
"css": "download-alt",
"code": 59409,
"src": "elusive"
},
{
"uid": "4e41b9df5bb73b7a245cfefdea685495",
"css": "instagram",
"code": 59396,
"src": "custom_icons",
"selected": false,
"svg": {
"path": "M500 0C364.2 0 347.2 0.6 293.9 3 240.6 5.4 204.3 13.9 172.5 26.2 139.6 39 111.7 56.1 83.9 83.9 56.1 111.7 39 139.6 26.2 172.5 13.9 204.3 5.4 240.6 3 293.8 0.6 347.2 0 364.2 0 500 0 635.8 0.6 652.8 3 706.1 5.4 759.4 13.9 795.7 26.2 827.5 39 860.4 56.1 888.3 83.9 916.1 111.7 943.9 139.6 961 172.5 973.8 204.3 986.1 240.6 994.6 293.9 997 347.2 999.4 364.2 1000 500 1000 635.8 1000 652.8 999.4 706.2 997 759.4 994.6 795.7 986.1 827.5 973.8 860.4 961 888.3 943.9 916.1 916.1 943.9 888.3 961 860.4 973.8 827.5 986.1 795.7 994.6 759.4 997 706.1 999.4 652.8 1000 635.8 1000 500 1000 364.2 999.4 347.2 997 293.8 994.6 240.6 986.1 204.3 973.8 172.5 961 139.6 943.9 111.7 916.1 83.9 888.3 56.1 860.4 39 827.5 26.2 795.7 13.9 759.4 5.4 706.2 3 652.8 0.6 635.8 0 500 0ZM500 90.1C633.5 90.1 649.3 90.6 702 93 750.8 95.2 777.3 103.4 794.9 110.2 818.2 119.3 834.9 130.1 852.4 147.6 869.9 165.1 880.7 181.8 889.8 205.1 896.6 222.7 904.8 249.2 907 298 909.4 350.7 909.9 366.5 909.9 500 909.9 633.5 909.4 649.3 907 702 904.8 750.8 896.6 777.3 889.8 794.9 880.7 818.2 869.9 834.9 852.4 852.4 834.9 869.9 818.2 880.7 794.9 889.8 777.3 896.6 750.8 904.8 702 907 649.3 909.4 633.5 909.9 500 909.9 366.5 909.9 350.7 909.4 298 907 249.2 904.8 222.7 896.6 205.1 889.8 181.8 880.7 165.1 869.9 147.6 852.4 130.1 834.9 119.3 818.2 110.2 794.9 103.4 777.3 95.2 750.8 93 702 90.6 649.3 90.1 633.5 90.1 500 90.1 366.5 90.6 350.7 93 298 95.2 249.2 103.4 222.7 110.2 205.1 119.3 181.8 130.1 165.1 147.6 147.6 165.1 130.1 181.8 119.3 205.1 110.2 222.7 103.4 249.2 95.2 298 93 350.7 90.6 366.5 90.1 500 90.1M500 666.7C408 666.7 333.3 592 333.3 500 333.3 408 408 333.3 500 333.3 592 333.3 666.7 408 666.7 500 666.7 592 592 666.7 500 666.7ZM500 243.2C358.2 243.2 243.2 358.2 243.2 500 243.2 641.8 358.2 756.8 500 756.8 641.8 756.8 756.8 641.8 756.8 500 756.8 358.2 641.8 243.2 500 243.2M826.9 233.1C826.9 266.2 800 293.1 766.9 293.1 733.8 293.1 706.9 266.2 706.9 233.1 706.9 200 733.8 173.1 766.9 173.1 800 173.1 826.9 200 826.9 233.1",
"width": 1000
},
"search": [
"instagram"
]
}
]
}
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="fontello-codes.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="animation.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello-ie7-codes.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello-ie7.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello-embedded.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello.css" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
</dwsync>
+85
View File
@@ -0,0 +1,85 @@
/*
Animation example, for spinners
*/
.animate-spin {
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
-webkit-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
display: inline-block;
}
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-webkit-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-o-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-ms-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
+111
View File
@@ -0,0 +1,111 @@
.icon-menu:before { content: '\e800'; } /* '' */
.icon-gplus:before { content: '\e801'; } /* '' */
.icon-doc-text:before { content: '\e802'; } /* '' */
.icon-spotify:before { content: '\e803'; } /* '' */
.icon-comment:before { content: '\e804'; } /* '' */
.icon-food:before { content: '\e805'; } /* '' */
.icon-home:before { content: '\e806'; } /* '' */
.icon-vcard:before { content: '\e807'; } /* '' */
.icon-bicycle:before { content: '\e808'; } /* '' */
.icon-apple:before { content: '\e809'; } /* '' */
.icon-laptop:before { content: '\e80a'; } /* '' */
.icon-map:before { content: '\e80b'; } /* '' */
.icon-gift:before { content: '\e80c'; } /* '' */
.icon-wine:before { content: '\e80d'; } /* '' */
.icon-book-open:before { content: '\e80e'; } /* '' */
.icon-address:before { content: '\e80f'; } /* '' */
.icon-skype-outline:before { content: '\e810'; } /* '' */
.icon-download-alt:before { content: '\e811'; } /* '' */
.icon-videocam-outline:before { content: '\e816'; } /* '' */
.icon-facebook:before { content: '\e825'; } /* '' */
.icon-twitter:before { content: '\e826'; } /* '' */
.icon-linkedin-squared:before { content: '\e827'; } /* '' */
.icon-pinterest-circled:before { content: '\e829'; } /* '' */
.icon-github-circled:before { content: '\e82a'; } /* '' */
.icon-behance:before { content: '\e82b'; } /* '' */
.icon-dribbble:before { content: '\e82c'; } /* '' */
.icon-address-1:before { content: '\e82d'; } /* '' */
.icon-lastfm:before { content: '\e82e'; } /* '' */
.icon-rss:before { content: '\e82f'; } /* '' */
.icon-vimeo-squared:before { content: '\e830'; } /* '' */
.icon-forrst:before { content: '\e831'; } /* '' */
.icon-skype:before { content: '\e832'; } /* '' */
.icon-youtube-play:before { content: '\e834'; } /* '' */
.icon-flickr:before { content: '\e835'; } /* '' */
.icon-tumblr:before { content: '\e836'; } /* '' */
.icon-blogger:before { content: '\e837'; } /* '' */
.icon-delicious:before { content: '\e838'; } /* '' */
.icon-digg:before { content: '\e839'; } /* '' */
.icon-wordpress:before { content: '\e83b'; } /* '' */
.icon-stackoverflow:before { content: '\e83c'; } /* '' */
.icon-foursquare:before { content: '\e83d'; } /* '' */
.icon-xing:before { content: '\e83e'; } /* '' */
.icon-sina-weibo:before { content: '\e83f'; } /* '' */
.icon-soundcloud:before { content: '\e840'; } /* '' */
.icon-fivehundredpx:before { content: '\e841'; } /* '' */
.icon-slideshare:before { content: '\e842'; } /* '' */
.icon-android:before { content: '\e843'; } /* '' */
.icon-windows:before { content: '\e845'; } /* '' */
.icon-vkontakte:before { content: '\e846'; } /* '' */
.icon-myspace:before { content: '\e847'; } /* '' */
.icon-meetup:before { content: '\e848'; } /* '' */
.icon-reddit:before { content: '\e84a'; } /* '' */
.icon-stumbleupon-circled:before { content: '\e84b'; } /* '' */
.icon-path:before { content: '\e84c'; } /* '' */
.icon-dropbox:before { content: '\e84d'; } /* '' */
.icon-paper-plane:before { content: '\e84e'; } /* '' */
.icon-deviantart:before { content: '\e850'; } /* '' */
.icon-grooveshark:before { content: '\e851'; } /* '' */
.icon-steam:before { content: '\e853'; } /* '' */
.icon-quora:before { content: '\e854'; } /* '' */
.icon-angellist:before { content: '\e855'; } /* '' */
.icon-icq:before { content: '\e856'; } /* '' */
.icon-attach:before { content: '\e85a'; } /* '' */
.icon-thumbs-up:before { content: '\e85b'; } /* '' */
.icon-vine:before { content: '\e863'; } /* '' */
.icon-eye-outline:before { content: '\e868'; } /* '' */
.icon-mic-outline:before { content: '\e869'; } /* '' */
.icon-camera-outline:before { content: '\e86a'; } /* '' */
.icon-feather:before { content: '\e86c'; } /* '' */
.icon-mail:before { content: '\e87e'; } /* '' */
.icon-vcard-1:before { content: '\e884'; } /* '' */
.icon-music-outline:before { content: '\e885'; } /* '' */
.icon-location-outline:before { content: '\e888'; } /* '' */
.icon-coffee:before { content: '\e88b'; } /* '' */
.icon-graduation-cap:before { content: '\e88f'; } /* '' */
.icon-camera:before { content: '\e890'; } /* '' */
.icon-eye:before { content: '\e891'; } /* '' */
.icon-beaker:before { content: '\e892'; } /* '' */
.icon-music:before { content: '\e896'; } /* '' */
.icon-photo:before { content: '\e897'; } /* '' */
.icon-truck:before { content: '\e89b'; } /* '' */
.icon-shop:before { content: '\e89e'; } /* '' */
.icon-diamond:before { content: '\e89f'; } /* '' */
.icon-wallet:before { content: '\e8a1'; } /* '' */
.icon-database:before { content: '\e8a3'; } /* '' */
.icon-globe:before { content: '\e8a7'; } /* '' */
.icon-phone-outline:before { content: '\e8a8'; } /* '' */
.icon-tree:before { content: '\e8ab'; } /* '' */
.icon-lightbulb:before { content: '\e8ad'; } /* '' */
.icon-clock:before { content: '\e8ae'; } /* '' */
.icon-location:before { content: '\e8b1'; } /* '' */
.icon-pencil:before { content: '\e8b3'; } /* '' */
.icon-cup:before { content: '\e8b4'; } /* '' */
.icon-doc:before { content: '\e8b5'; } /* '' */
.icon-t-shirt:before { content: '\e8b8'; } /* '' */
.icon-search:before { content: '\e8be'; } /* '' */
.icon-tablet:before { content: '\e8bf'; } /* '' */
.icon-briefcase:before { content: '\e8c0'; } /* '' */
.icon-note:before { content: '\e8c2'; } /* '' */
.icon-sound:before { content: '\e8c3'; } /* '' */
.icon-tv:before { content: '\e8c4'; } /* '' */
.icon-desktop:before { content: '\e8c5'; } /* '' */
.icon-mobile:before { content: '\e8c6'; } /* '' */
.icon-cd:before { content: '\e8c7'; } /* '' */
.icon-instagram:before { content: '\e8cc'; } /* '' */
.icon-medium:before { content: '\f23a'; } /* '' */
.icon-tripadvisor:before { content: '\f262'; } /* '' */
.icon-snapchat:before { content: '\f2ac'; } /* '' */
.icon-imdb:before { content: '\f2d8'; } /* '' */
.icon-codepen:before { content: '\f32c'; } /* '' */
File diff suppressed because one or more lines are too long
+111
View File
@@ -0,0 +1,111 @@
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
.icon-gplus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
.icon-doc-text { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
.icon-spotify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-vcard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-bicycle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-apple { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
.icon-laptop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
.icon-map { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
.icon-gift { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
.icon-wine { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
.icon-book-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
.icon-address { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
.icon-skype-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
.icon-download-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
.icon-videocam-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
.icon-facebook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe825;&nbsp;'); }
.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe826;&nbsp;'); }
.icon-linkedin-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe827;&nbsp;'); }
.icon-pinterest-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe829;&nbsp;'); }
.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82a;&nbsp;'); }
.icon-behance { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82b;&nbsp;'); }
.icon-dribbble { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82c;&nbsp;'); }
.icon-address-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82d;&nbsp;'); }
.icon-lastfm { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82e;&nbsp;'); }
.icon-rss { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82f;&nbsp;'); }
.icon-vimeo-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe830;&nbsp;'); }
.icon-forrst { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe831;&nbsp;'); }
.icon-skype { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
.icon-youtube-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
.icon-flickr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe835;&nbsp;'); }
.icon-tumblr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe836;&nbsp;'); }
.icon-blogger { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe837;&nbsp;'); }
.icon-delicious { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe838;&nbsp;'); }
.icon-digg { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-wordpress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83b;&nbsp;'); }
.icon-stackoverflow { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83c;&nbsp;'); }
.icon-foursquare { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83d;&nbsp;'); }
.icon-xing { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83e;&nbsp;'); }
.icon-sina-weibo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83f;&nbsp;'); }
.icon-soundcloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe840;&nbsp;'); }
.icon-fivehundredpx { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe841;&nbsp;'); }
.icon-slideshare { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe842;&nbsp;'); }
.icon-android { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe843;&nbsp;'); }
.icon-windows { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe845;&nbsp;'); }
.icon-vkontakte { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe846;&nbsp;'); }
.icon-myspace { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe847;&nbsp;'); }
.icon-meetup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe848;&nbsp;'); }
.icon-reddit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84a;&nbsp;'); }
.icon-stumbleupon-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84b;&nbsp;'); }
.icon-path { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84c;&nbsp;'); }
.icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84d;&nbsp;'); }
.icon-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84e;&nbsp;'); }
.icon-deviantart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe850;&nbsp;'); }
.icon-grooveshark { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe851;&nbsp;'); }
.icon-steam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe853;&nbsp;'); }
.icon-quora { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe854;&nbsp;'); }
.icon-angellist { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe855;&nbsp;'); }
.icon-icq { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe856;&nbsp;'); }
.icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe85a;&nbsp;'); }
.icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe85b;&nbsp;'); }
.icon-vine { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe863;&nbsp;'); }
.icon-eye-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe868;&nbsp;'); }
.icon-mic-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe869;&nbsp;'); }
.icon-camera-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe86a;&nbsp;'); }
.icon-feather { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe86c;&nbsp;'); }
.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe87e;&nbsp;'); }
.icon-vcard-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe884;&nbsp;'); }
.icon-music-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe885;&nbsp;'); }
.icon-location-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe888;&nbsp;'); }
.icon-coffee { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe88b;&nbsp;'); }
.icon-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe88f;&nbsp;'); }
.icon-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe890;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe891;&nbsp;'); }
.icon-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe892;&nbsp;'); }
.icon-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe896;&nbsp;'); }
.icon-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe897;&nbsp;'); }
.icon-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89b;&nbsp;'); }
.icon-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89e;&nbsp;'); }
.icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89f;&nbsp;'); }
.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a1;&nbsp;'); }
.icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a3;&nbsp;'); }
.icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a7;&nbsp;'); }
.icon-phone-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a8;&nbsp;'); }
.icon-tree { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ab;&nbsp;'); }
.icon-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ad;&nbsp;'); }
.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ae;&nbsp;'); }
.icon-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b1;&nbsp;'); }
.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b3;&nbsp;'); }
.icon-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b4;&nbsp;'); }
.icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b5;&nbsp;'); }
.icon-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b8;&nbsp;'); }
.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8be;&nbsp;'); }
.icon-tablet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8bf;&nbsp;'); }
.icon-briefcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c0;&nbsp;'); }
.icon-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c2;&nbsp;'); }
.icon-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c3;&nbsp;'); }
.icon-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c4;&nbsp;'); }
.icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c5;&nbsp;'); }
.icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c6;&nbsp;'); }
.icon-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c7;&nbsp;'); }
.icon-instagram { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8cc;&nbsp;'); }
.icon-medium { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf23a;&nbsp;'); }
.icon-tripadvisor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf262;&nbsp;'); }
.icon-snapchat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2ac;&nbsp;'); }
.icon-imdb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2d8;&nbsp;'); }
.icon-codepen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf32c;&nbsp;'); }
+122
View File
@@ -0,0 +1,122 @@
[class^="icon-"], [class*=" icon-"] {
font-family: 'fontello';
font-style: normal;
font-weight: normal;
/* fix buttons height */
line-height: 1em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
}
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe800;&nbsp;'); }
.icon-gplus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe801;&nbsp;'); }
.icon-doc-text { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe802;&nbsp;'); }
.icon-spotify { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-food { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe805;&nbsp;'); }
.icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe806;&nbsp;'); }
.icon-vcard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-bicycle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-apple { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe809;&nbsp;'); }
.icon-laptop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80a;&nbsp;'); }
.icon-map { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80b;&nbsp;'); }
.icon-gift { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80c;&nbsp;'); }
.icon-wine { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80d;&nbsp;'); }
.icon-book-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80e;&nbsp;'); }
.icon-address { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe80f;&nbsp;'); }
.icon-skype-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe810;&nbsp;'); }
.icon-download-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe811;&nbsp;'); }
.icon-videocam-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe816;&nbsp;'); }
.icon-facebook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe825;&nbsp;'); }
.icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe826;&nbsp;'); }
.icon-linkedin-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe827;&nbsp;'); }
.icon-pinterest-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe829;&nbsp;'); }
.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82a;&nbsp;'); }
.icon-behance { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82b;&nbsp;'); }
.icon-dribbble { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82c;&nbsp;'); }
.icon-address-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82d;&nbsp;'); }
.icon-lastfm { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82e;&nbsp;'); }
.icon-rss { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe82f;&nbsp;'); }
.icon-vimeo-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe830;&nbsp;'); }
.icon-forrst { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe831;&nbsp;'); }
.icon-skype { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe832;&nbsp;'); }
.icon-youtube-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe834;&nbsp;'); }
.icon-flickr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe835;&nbsp;'); }
.icon-tumblr { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe836;&nbsp;'); }
.icon-blogger { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe837;&nbsp;'); }
.icon-delicious { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe838;&nbsp;'); }
.icon-digg { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-wordpress { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83b;&nbsp;'); }
.icon-stackoverflow { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83c;&nbsp;'); }
.icon-foursquare { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83d;&nbsp;'); }
.icon-xing { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83e;&nbsp;'); }
.icon-sina-weibo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe83f;&nbsp;'); }
.icon-soundcloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe840;&nbsp;'); }
.icon-fivehundredpx { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe841;&nbsp;'); }
.icon-slideshare { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe842;&nbsp;'); }
.icon-android { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe843;&nbsp;'); }
.icon-windows { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe845;&nbsp;'); }
.icon-vkontakte { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe846;&nbsp;'); }
.icon-myspace { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe847;&nbsp;'); }
.icon-meetup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe848;&nbsp;'); }
.icon-reddit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84a;&nbsp;'); }
.icon-stumbleupon-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84b;&nbsp;'); }
.icon-path { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84c;&nbsp;'); }
.icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84d;&nbsp;'); }
.icon-paper-plane { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe84e;&nbsp;'); }
.icon-deviantart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe850;&nbsp;'); }
.icon-grooveshark { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe851;&nbsp;'); }
.icon-steam { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe853;&nbsp;'); }
.icon-quora { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe854;&nbsp;'); }
.icon-angellist { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe855;&nbsp;'); }
.icon-icq { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe856;&nbsp;'); }
.icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe85a;&nbsp;'); }
.icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe85b;&nbsp;'); }
.icon-vine { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe863;&nbsp;'); }
.icon-eye-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe868;&nbsp;'); }
.icon-mic-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe869;&nbsp;'); }
.icon-camera-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe86a;&nbsp;'); }
.icon-feather { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe86c;&nbsp;'); }
.icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe87e;&nbsp;'); }
.icon-vcard-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe884;&nbsp;'); }
.icon-music-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe885;&nbsp;'); }
.icon-location-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe888;&nbsp;'); }
.icon-coffee { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe88b;&nbsp;'); }
.icon-graduation-cap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe88f;&nbsp;'); }
.icon-camera { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe890;&nbsp;'); }
.icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe891;&nbsp;'); }
.icon-beaker { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe892;&nbsp;'); }
.icon-music { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe896;&nbsp;'); }
.icon-photo { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe897;&nbsp;'); }
.icon-truck { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89b;&nbsp;'); }
.icon-shop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89e;&nbsp;'); }
.icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe89f;&nbsp;'); }
.icon-wallet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a1;&nbsp;'); }
.icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a3;&nbsp;'); }
.icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a7;&nbsp;'); }
.icon-phone-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8a8;&nbsp;'); }
.icon-tree { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ab;&nbsp;'); }
.icon-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ad;&nbsp;'); }
.icon-clock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8ae;&nbsp;'); }
.icon-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b1;&nbsp;'); }
.icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b3;&nbsp;'); }
.icon-cup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b4;&nbsp;'); }
.icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b5;&nbsp;'); }
.icon-t-shirt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8b8;&nbsp;'); }
.icon-search { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8be;&nbsp;'); }
.icon-tablet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8bf;&nbsp;'); }
.icon-briefcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c0;&nbsp;'); }
.icon-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c2;&nbsp;'); }
.icon-sound { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c3;&nbsp;'); }
.icon-tv { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c4;&nbsp;'); }
.icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c5;&nbsp;'); }
.icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c6;&nbsp;'); }
.icon-cd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8c7;&nbsp;'); }
.icon-instagram { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe8cc;&nbsp;'); }
.icon-medium { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf23a;&nbsp;'); }
.icon-tripadvisor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf262;&nbsp;'); }
.icon-snapchat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2ac;&nbsp;'); }
.icon-imdb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf2d8;&nbsp;'); }
.icon-codepen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf32c;&nbsp;'); }
+167
View File
@@ -0,0 +1,167 @@
@font-face {
font-family: 'fontello';
src: url('../font/fontello.eot?29896784');
src: url('../font/fontello.eot?29896784#iefix') format('embedded-opentype'),
url('../font/fontello.woff2?29896784') format('woff2'),
url('../font/fontello.woff?29896784') format('woff'),
url('../font/fontello.ttf?29896784') format('truetype'),
url('../font/fontello.svg?29896784#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'fontello';
src: url('../font/fontello.svg?29896784#fontello') format('svg');
}
}
*/
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: "fontello";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
.icon-menu:before { content: '\e800'; } /* '' */
.icon-gplus:before { content: '\e801'; } /* '' */
.icon-doc-text:before { content: '\e802'; } /* '' */
.icon-spotify:before { content: '\e803'; } /* '' */
.icon-comment:before { content: '\e804'; } /* '' */
.icon-food:before { content: '\e805'; } /* '' */
.icon-home:before { content: '\e806'; } /* '' */
.icon-vcard:before { content: '\e807'; } /* '' */
.icon-bicycle:before { content: '\e808'; } /* '' */
.icon-apple:before { content: '\e809'; } /* '' */
.icon-laptop:before { content: '\e80a'; } /* '' */
.icon-map:before { content: '\e80b'; } /* '' */
.icon-gift:before { content: '\e80c'; } /* '' */
.icon-wine:before { content: '\e80d'; } /* '' */
.icon-book-open:before { content: '\e80e'; } /* '' */
.icon-address:before { content: '\e80f'; } /* '' */
.icon-skype-outline:before { content: '\e810'; } /* '' */
.icon-download-alt:before { content: '\e811'; } /* '' */
.icon-videocam-outline:before { content: '\e816'; } /* '' */
.icon-facebook:before { content: '\e825'; } /* '' */
.icon-twitter:before { content: '\e826'; } /* '' */
.icon-linkedin-squared:before { content: '\e827'; } /* '' */
.icon-pinterest-circled:before { content: '\e829'; } /* '' */
.icon-github-circled:before { content: '\e82a'; } /* '' */
.icon-behance:before { content: '\e82b'; } /* '' */
.icon-dribbble:before { content: '\e82c'; } /* '' */
.icon-address-1:before { content: '\e82d'; } /* '' */
.icon-lastfm:before { content: '\e82e'; } /* '' */
.icon-rss:before { content: '\e82f'; } /* '' */
.icon-vimeo-squared:before { content: '\e830'; } /* '' */
.icon-forrst:before { content: '\e831'; } /* '' */
.icon-skype:before { content: '\e832'; } /* '' */
.icon-youtube-play:before { content: '\e834'; } /* '' */
.icon-flickr:before { content: '\e835'; } /* '' */
.icon-tumblr:before { content: '\e836'; } /* '' */
.icon-blogger:before { content: '\e837'; } /* '' */
.icon-delicious:before { content: '\e838'; } /* '' */
.icon-digg:before { content: '\e839'; } /* '' */
.icon-wordpress:before { content: '\e83b'; } /* '' */
.icon-stackoverflow:before { content: '\e83c'; } /* '' */
.icon-foursquare:before { content: '\e83d'; } /* '' */
.icon-xing:before { content: '\e83e'; } /* '' */
.icon-sina-weibo:before { content: '\e83f'; } /* '' */
.icon-soundcloud:before { content: '\e840'; } /* '' */
.icon-fivehundredpx:before { content: '\e841'; } /* '' */
.icon-slideshare:before { content: '\e842'; } /* '' */
.icon-android:before { content: '\e843'; } /* '' */
.icon-windows:before { content: '\e845'; } /* '' */
.icon-vkontakte:before { content: '\e846'; } /* '' */
.icon-myspace:before { content: '\e847'; } /* '' */
.icon-meetup:before { content: '\e848'; } /* '' */
.icon-reddit:before { content: '\e84a'; } /* '' */
.icon-stumbleupon-circled:before { content: '\e84b'; } /* '' */
.icon-path:before { content: '\e84c'; } /* '' */
.icon-dropbox:before { content: '\e84d'; } /* '' */
.icon-paper-plane:before { content: '\e84e'; } /* '' */
.icon-deviantart:before { content: '\e850'; } /* '' */
.icon-grooveshark:before { content: '\e851'; } /* '' */
.icon-steam:before { content: '\e853'; } /* '' */
.icon-quora:before { content: '\e854'; } /* '' */
.icon-angellist:before { content: '\e855'; } /* '' */
.icon-icq:before { content: '\e856'; } /* '' */
.icon-attach:before { content: '\e85a'; } /* '' */
.icon-thumbs-up:before { content: '\e85b'; } /* '' */
.icon-vine:before { content: '\e863'; } /* '' */
.icon-eye-outline:before { content: '\e868'; } /* '' */
.icon-mic-outline:before { content: '\e869'; } /* '' */
.icon-camera-outline:before { content: '\e86a'; } /* '' */
.icon-feather:before { content: '\e86c'; } /* '' */
.icon-mail:before { content: '\e87e'; } /* '' */
.icon-vcard-1:before { content: '\e884'; } /* '' */
.icon-music-outline:before { content: '\e885'; } /* '' */
.icon-location-outline:before { content: '\e888'; } /* '' */
.icon-coffee:before { content: '\e88b'; } /* '' */
.icon-graduation-cap:before { content: '\e88f'; } /* '' */
.icon-camera:before { content: '\e890'; } /* '' */
.icon-eye:before { content: '\e891'; } /* '' */
.icon-beaker:before { content: '\e892'; } /* '' */
.icon-music:before { content: '\e896'; } /* '' */
.icon-photo:before { content: '\e897'; } /* '' */
.icon-truck:before { content: '\e89b'; } /* '' */
.icon-shop:before { content: '\e89e'; } /* '' */
.icon-diamond:before { content: '\e89f'; } /* '' */
.icon-wallet:before { content: '\e8a1'; } /* '' */
.icon-database:before { content: '\e8a3'; } /* '' */
.icon-globe:before { content: '\e8a7'; } /* '' */
.icon-phone-outline:before { content: '\e8a8'; } /* '' */
.icon-tree:before { content: '\e8ab'; } /* '' */
.icon-lightbulb:before { content: '\e8ad'; } /* '' */
.icon-clock:before { content: '\e8ae'; } /* '' */
.icon-location:before { content: '\e8b1'; } /* '' */
.icon-pencil:before { content: '\e8b3'; } /* '' */
.icon-cup:before { content: '\e8b4'; } /* '' */
.icon-doc:before { content: '\e8b5'; } /* '' */
.icon-t-shirt:before { content: '\e8b8'; } /* '' */
.icon-search:before { content: '\e8be'; } /* '' */
.icon-tablet:before { content: '\e8bf'; } /* '' */
.icon-briefcase:before { content: '\e8c0'; } /* '' */
.icon-note:before { content: '\e8c2'; } /* '' */
.icon-sound:before { content: '\e8c3'; } /* '' */
.icon-tv:before { content: '\e8c4'; } /* '' */
.icon-desktop:before { content: '\e8c5'; } /* '' */
.icon-mobile:before { content: '\e8c6'; } /* '' */
.icon-cd:before { content: '\e8c7'; } /* '' */
.icon-instagram:before { content: '\e8cc'; } /* '' */
.icon-medium:before { content: '\f23a'; } /* '' */
.icon-tripadvisor:before { content: '\f262'; } /* '' */
.icon-snapchat:before { content: '\f2ac'; } /* '' */
.icon-imdb:before { content: '\f2d8'; } /* '' */
.icon-codepen:before { content: '\f32c'; } /* '' */
+473
View File
@@ -0,0 +1,473 @@
<!DOCTYPE html>
<html>
<head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<meta charset="UTF-8"><style>/*
* Bootstrap v2.2.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
*zoom: 1;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
line-height: 0;
}
.clearfix:after {
clear: both;
}
html {
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
a:focus {
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
a:hover,
a:active {
outline: 0;
}
button,
input,
select,
textarea {
margin: 0;
font-size: 100%;
vertical-align: middle;
}
button,
input {
*overflow: visible;
line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
body {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
color: #333;
background-color: #fff;
}
a {
color: #08c;
text-decoration: none;
}
a:hover {
color: #005580;
text-decoration: underline;
}
.row {
margin-left: -20px;
*zoom: 1;
}
.row:before,
.row:after {
display: table;
content: "";
line-height: 0;
}
.row:after {
clear: both;
}
[class*="span"] {
float: left;
min-height: 1px;
margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
width: 940px;
}
.span12 {
width: 940px;
}
.span11 {
width: 860px;
}
.span10 {
width: 780px;
}
.span9 {
width: 700px;
}
.span8 {
width: 620px;
}
.span7 {
width: 540px;
}
.span6 {
width: 460px;
}
.span5 {
width: 380px;
}
.span4 {
width: 300px;
}
.span3 {
width: 220px;
}
.span2 {
width: 140px;
}
.span1 {
width: 60px;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
float: right;
}
.container {
margin-right: auto;
margin-left: auto;
*zoom: 1;
}
.container:before,
.container:after {
display: table;
content: "";
line-height: 0;
}
.container:after {
clear: both;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 21px;
font-weight: 200;
line-height: 30px;
}
small {
font-size: 85%;
}
h1 {
margin: 10px 0;
font-family: inherit;
font-weight: bold;
line-height: 20px;
color: inherit;
text-rendering: optimizelegibility;
}
h1 small {
font-weight: normal;
line-height: 1;
color: #999;
}
h1 {
line-height: 40px;
}
h1 {
font-size: 38.5px;
}
h1 small {
font-size: 24.5px;
}
body {
margin-top: 90px;
}
.header {
position: fixed;
top: 0;
left: 50%;
margin-left: -480px;
background-color: #fff;
border-bottom: 1px solid #ddd;
padding-top: 10px;
z-index: 10;
}
.footer {
color: #ddd;
font-size: 12px;
text-align: center;
margin-top: 20px;
}
.footer a {
color: #ccc;
text-decoration: underline;
}
.the-icons {
font-size: 14px;
line-height: 24px;
}
.switch {
position: absolute;
right: 0;
bottom: 10px;
color: #666;
}
.switch input {
margin-right: 0.3em;
}
.codesOn .i-name {
display: none;
}
.codesOn .i-code {
display: inline;
}
.i-code {
display: none;
}
@font-face {
font-family: 'fontello';
src: url('./font/fontello.eot?58116598');
src: url('./font/fontello.eot?58116598#iefix') format('embedded-opentype'),
url('./font/fontello.woff?58116598') format('woff'),
url('./font/fontello.ttf?58116598') format('truetype'),
url('./font/fontello.svg?58116598#fontello') format('svg');
font-weight: normal;
font-style: normal;
}
.demo-icon
{
font-family: "fontello";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* You can be more comfortable with increased icons size */
font-size: 220%; padding: 20px 0;
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
</style>
<link rel="stylesheet" href="<?php echo $mainURL; ?>/css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="<?php echo $mainURL; ?>/css/fontello-ie7.css"><![endif]-->
<script>
function toggleCodes(on) {
var obj = document.getElementById('icons');
if (on) {
obj.className += ' codesOn';
} else {
obj.className = obj.className.replace(' codesOn', '');
}
}
</script>
</head>
<body>
<div class="container header">
<h1>
fontello
<small>font demo</small>
</h1>
<label class="switch">
<input type="checkbox" onclick="toggleCodes(this.checked)">show codes
</label>
</div>
<div id="icons" class="container">
<div class="row">
<div title="Code: 0xe800" class="the-icons span3"><i class="demo-icon icon-menu">&#xe800;</i> <span class="i-name">icon-menu</span><span class="i-code">0xe800</span></div>
<div title="Code: 0xe801" class="the-icons span3"><i class="demo-icon icon-gplus">&#xe801;</i> <span class="i-name">icon-gplus</span><span class="i-code">0xe801</span></div>
<div title="Code: 0xe802" class="the-icons span3"><i class="demo-icon icon-doc-text">&#xe802;</i> <span class="i-name">icon-doc-text</span><span class="i-code">0xe802</span></div>
<div title="Code: 0xe803" class="the-icons span3"><i class="demo-icon icon-spotify">&#xe803;</i> <span class="i-name">icon-spotify</span><span class="i-code">0xe803</span></div>
</div>
<div class="row">
<div title="Code: 0xe804" class="the-icons span3"><i class="demo-icon icon-comment">&#xe804;</i> <span class="i-name">icon-comment</span><span class="i-code">0xe804</span></div>
<div title="Code: 0xe805" class="the-icons span3"><i class="demo-icon icon-food">&#xe805;</i> <span class="i-name">icon-food</span><span class="i-code">0xe805</span></div>
<div title="Code: 0xe806" class="the-icons span3"><i class="demo-icon icon-home">&#xe806;</i> <span class="i-name">icon-home</span><span class="i-code">0xe806</span></div>
<div title="Code: 0xe807" class="the-icons span3"><i class="demo-icon icon-vcard">&#xe807;</i> <span class="i-name">icon-vcard</span><span class="i-code">0xe807</span></div>
</div>
<div class="row">
<div title="Code: 0xe808" class="the-icons span3"><i class="demo-icon icon-bicycle">&#xe808;</i> <span class="i-name">icon-bicycle</span><span class="i-code">0xe808</span></div>
<div title="Code: 0xe809" class="the-icons span3"><i class="demo-icon icon-apple">&#xe809;</i> <span class="i-name">icon-apple</span><span class="i-code">0xe809</span></div>
<div title="Code: 0xe80a" class="the-icons span3"><i class="demo-icon icon-laptop">&#xe80a;</i> <span class="i-name">icon-laptop</span><span class="i-code">0xe80a</span></div>
<div title="Code: 0xe80b" class="the-icons span3"><i class="demo-icon icon-map">&#xe80b;</i> <span class="i-name">icon-map</span><span class="i-code">0xe80b</span></div>
</div>
<div class="row">
<div title="Code: 0xe80c" class="the-icons span3"><i class="demo-icon icon-gift">&#xe80c;</i> <span class="i-name">icon-gift</span><span class="i-code">0xe80c</span></div>
<div title="Code: 0xe80d" class="the-icons span3"><i class="demo-icon icon-wine">&#xe80d;</i> <span class="i-name">icon-wine</span><span class="i-code">0xe80d</span></div>
<div title="Code: 0xe80e" class="the-icons span3"><i class="demo-icon icon-book-open">&#xe80e;</i> <span class="i-name">icon-book-open</span><span class="i-code">0xe80e</span></div>
<div title="Code: 0xe80f" class="the-icons span3"><i class="demo-icon icon-address">&#xe80f;</i> <span class="i-name">icon-address</span><span class="i-code">0xe80f</span></div>
</div>
<div class="row">
<div title="Code: 0xe810" class="the-icons span3"><i class="demo-icon icon-skype-outline">&#xe810;</i> <span class="i-name">icon-skype-outline</span><span class="i-code">0xe810</span></div>
<div title="Code: 0xe811" class="the-icons span3"><i class="demo-icon icon-download-alt">&#xe811;</i> <span class="i-name">icon-download-alt</span><span class="i-code">0xe811</span></div>
<div title="Code: 0xe816" class="the-icons span3"><i class="demo-icon icon-videocam-outline">&#xe816;</i> <span class="i-name">icon-videocam-outline</span><span class="i-code">0xe816</span></div>
<div title="Code: 0xe825" class="the-icons span3"><i class="demo-icon icon-facebook">&#xe825;</i> <span class="i-name">icon-facebook</span><span class="i-code">0xe825</span></div>
</div>
<div class="row">
<div title="Code: 0xe826" class="the-icons span3"><i class="demo-icon icon-twitter">&#xe826;</i> <span class="i-name">icon-twitter</span><span class="i-code">0xe826</span></div>
<div title="Code: 0xe827" class="the-icons span3"><i class="demo-icon icon-linkedin-squared">&#xe827;</i> <span class="i-name">icon-linkedin-squared</span><span class="i-code">0xe827</span></div>
<div title="Code: 0xe829" class="the-icons span3"><i class="demo-icon icon-pinterest-circled">&#xe829;</i> <span class="i-name">icon-pinterest-circled</span><span class="i-code">0xe829</span></div>
<div title="Code: 0xe82a" class="the-icons span3"><i class="demo-icon icon-github-circled">&#xe82a;</i> <span class="i-name">icon-github-circled</span><span class="i-code">0xe82a</span></div>
</div>
<div class="row">
<div title="Code: 0xe82b" class="the-icons span3"><i class="demo-icon icon-behance">&#xe82b;</i> <span class="i-name">icon-behance</span><span class="i-code">0xe82b</span></div>
<div title="Code: 0xe82c" class="the-icons span3"><i class="demo-icon icon-dribbble">&#xe82c;</i> <span class="i-name">icon-dribbble</span><span class="i-code">0xe82c</span></div>
<div title="Code: 0xe82d" class="the-icons span3"><i class="demo-icon icon-address-1">&#xe82d;</i> <span class="i-name">icon-address-1</span><span class="i-code">0xe82d</span></div>
<div title="Code: 0xe82e" class="the-icons span3"><i class="demo-icon icon-lastfm">&#xe82e;</i> <span class="i-name">icon-lastfm</span><span class="i-code">0xe82e</span></div>
</div>
<div class="row">
<div title="Code: 0xe82f" class="the-icons span3"><i class="demo-icon icon-rss">&#xe82f;</i> <span class="i-name">icon-rss</span><span class="i-code">0xe82f</span></div>
<div title="Code: 0xe830" class="the-icons span3"><i class="demo-icon icon-vimeo-squared">&#xe830;</i> <span class="i-name">icon-vimeo-squared</span><span class="i-code">0xe830</span></div>
<div title="Code: 0xe831" class="the-icons span3"><i class="demo-icon icon-forrst">&#xe831;</i> <span class="i-name">icon-forrst</span><span class="i-code">0xe831</span></div>
<div title="Code: 0xe832" class="the-icons span3"><i class="demo-icon icon-skype">&#xe832;</i> <span class="i-name">icon-skype</span><span class="i-code">0xe832</span></div>
</div>
<div class="row">
<div title="Code: 0xe834" class="the-icons span3"><i class="demo-icon icon-youtube-play">&#xe834;</i> <span class="i-name">icon-youtube-play</span><span class="i-code">0xe834</span></div>
<div title="Code: 0xe835" class="the-icons span3"><i class="demo-icon icon-flickr">&#xe835;</i> <span class="i-name">icon-flickr</span><span class="i-code">0xe835</span></div>
<div title="Code: 0xe836" class="the-icons span3"><i class="demo-icon icon-tumblr">&#xe836;</i> <span class="i-name">icon-tumblr</span><span class="i-code">0xe836</span></div>
<div title="Code: 0xe837" class="the-icons span3"><i class="demo-icon icon-blogger">&#xe837;</i> <span class="i-name">icon-blogger</span><span class="i-code">0xe837</span></div>
</div>
<div class="row">
<div title="Code: 0xe838" class="the-icons span3"><i class="demo-icon icon-delicious">&#xe838;</i> <span class="i-name">icon-delicious</span><span class="i-code">0xe838</span></div>
<div title="Code: 0xe839" class="the-icons span3"><i class="demo-icon icon-digg">&#xe839;</i> <span class="i-name">icon-digg</span><span class="i-code">0xe839</span></div>
<div title="Code: 0xe83b" class="the-icons span3"><i class="demo-icon icon-wordpress">&#xe83b;</i> <span class="i-name">icon-wordpress</span><span class="i-code">0xe83b</span></div>
<div title="Code: 0xe83c" class="the-icons span3"><i class="demo-icon icon-stackoverflow">&#xe83c;</i> <span class="i-name">icon-stackoverflow</span><span class="i-code">0xe83c</span></div>
</div>
<div class="row">
<div title="Code: 0xe83d" class="the-icons span3"><i class="demo-icon icon-foursquare">&#xe83d;</i> <span class="i-name">icon-foursquare</span><span class="i-code">0xe83d</span></div>
<div title="Code: 0xe83e" class="the-icons span3"><i class="demo-icon icon-xing">&#xe83e;</i> <span class="i-name">icon-xing</span><span class="i-code">0xe83e</span></div>
<div title="Code: 0xe83f" class="the-icons span3"><i class="demo-icon icon-sina-weibo">&#xe83f;</i> <span class="i-name">icon-sina-weibo</span><span class="i-code">0xe83f</span></div>
<div title="Code: 0xe840" class="the-icons span3"><i class="demo-icon icon-soundcloud">&#xe840;</i> <span class="i-name">icon-soundcloud</span><span class="i-code">0xe840</span></div>
</div>
<div class="row">
<div title="Code: 0xe841" class="the-icons span3"><i class="demo-icon icon-fivehundredpx">&#xe841;</i> <span class="i-name">icon-fivehundredpx</span><span class="i-code">0xe841</span></div>
<div title="Code: 0xe842" class="the-icons span3"><i class="demo-icon icon-slideshare">&#xe842;</i> <span class="i-name">icon-slideshare</span><span class="i-code">0xe842</span></div>
<div title="Code: 0xe843" class="the-icons span3"><i class="demo-icon icon-android">&#xe843;</i> <span class="i-name">icon-android</span><span class="i-code">0xe843</span></div>
<div title="Code: 0xe845" class="the-icons span3"><i class="demo-icon icon-windows">&#xe845;</i> <span class="i-name">icon-windows</span><span class="i-code">0xe845</span></div>
</div>
<div class="row">
<div title="Code: 0xe846" class="the-icons span3"><i class="demo-icon icon-vkontakte">&#xe846;</i> <span class="i-name">icon-vkontakte</span><span class="i-code">0xe846</span></div>
<div title="Code: 0xe847" class="the-icons span3"><i class="demo-icon icon-myspace">&#xe847;</i> <span class="i-name">icon-myspace</span><span class="i-code">0xe847</span></div>
<div title="Code: 0xe848" class="the-icons span3"><i class="demo-icon icon-meetup">&#xe848;</i> <span class="i-name">icon-meetup</span><span class="i-code">0xe848</span></div>
<div title="Code: 0xe84a" class="the-icons span3"><i class="demo-icon icon-reddit">&#xe84a;</i> <span class="i-name">icon-reddit</span><span class="i-code">0xe84a</span></div>
</div>
<div class="row">
<div title="Code: 0xe84b" class="the-icons span3"><i class="demo-icon icon-stumbleupon-circled">&#xe84b;</i> <span class="i-name">icon-stumbleupon-circled</span><span class="i-code">0xe84b</span></div>
<div title="Code: 0xe84c" class="the-icons span3"><i class="demo-icon icon-path">&#xe84c;</i> <span class="i-name">icon-path</span><span class="i-code">0xe84c</span></div>
<div title="Code: 0xe84d" class="the-icons span3"><i class="demo-icon icon-dropbox">&#xe84d;</i> <span class="i-name">icon-dropbox</span><span class="i-code">0xe84d</span></div>
<div title="Code: 0xe84e" class="the-icons span3"><i class="demo-icon icon-paper-plane">&#xe84e;</i> <span class="i-name">icon-paper-plane</span><span class="i-code">0xe84e</span></div>
</div>
<div class="row">
<div title="Code: 0xe850" class="the-icons span3"><i class="demo-icon icon-deviantart">&#xe850;</i> <span class="i-name">icon-deviantart</span><span class="i-code">0xe850</span></div>
<div title="Code: 0xe851" class="the-icons span3"><i class="demo-icon icon-grooveshark">&#xe851;</i> <span class="i-name">icon-grooveshark</span><span class="i-code">0xe851</span></div>
<div title="Code: 0xe853" class="the-icons span3"><i class="demo-icon icon-steam">&#xe853;</i> <span class="i-name">icon-steam</span><span class="i-code">0xe853</span></div>
<div title="Code: 0xe854" class="the-icons span3"><i class="demo-icon icon-quora">&#xe854;</i> <span class="i-name">icon-quora</span><span class="i-code">0xe854</span></div>
</div>
<div class="row">
<div title="Code: 0xe855" class="the-icons span3"><i class="demo-icon icon-angellist">&#xe855;</i> <span class="i-name">icon-angellist</span><span class="i-code">0xe855</span></div>
<div title="Code: 0xe856" class="the-icons span3"><i class="demo-icon icon-icq">&#xe856;</i> <span class="i-name">icon-icq</span><span class="i-code">0xe856</span></div>
<div title="Code: 0xe85a" class="the-icons span3"><i class="demo-icon icon-attach">&#xe85a;</i> <span class="i-name">icon-attach</span><span class="i-code">0xe85a</span></div>
<div title="Code: 0xe85b" class="the-icons span3"><i class="demo-icon icon-thumbs-up">&#xe85b;</i> <span class="i-name">icon-thumbs-up</span><span class="i-code">0xe85b</span></div>
</div>
<div class="row">
<div title="Code: 0xe863" class="the-icons span3"><i class="demo-icon icon-vine">&#xe863;</i> <span class="i-name">icon-vine</span><span class="i-code">0xe863</span></div>
<div title="Code: 0xe868" class="the-icons span3"><i class="demo-icon icon-eye-outline">&#xe868;</i> <span class="i-name">icon-eye-outline</span><span class="i-code">0xe868</span></div>
<div title="Code: 0xe869" class="the-icons span3"><i class="demo-icon icon-mic-outline">&#xe869;</i> <span class="i-name">icon-mic-outline</span><span class="i-code">0xe869</span></div>
<div title="Code: 0xe86a" class="the-icons span3"><i class="demo-icon icon-camera-outline">&#xe86a;</i> <span class="i-name">icon-camera-outline</span><span class="i-code">0xe86a</span></div>
</div>
<div class="row">
<div title="Code: 0xe86c" class="the-icons span3"><i class="demo-icon icon-feather">&#xe86c;</i> <span class="i-name">icon-feather</span><span class="i-code">0xe86c</span></div>
<div title="Code: 0xe87e" class="the-icons span3"><i class="demo-icon icon-mail">&#xe87e;</i> <span class="i-name">icon-mail</span><span class="i-code">0xe87e</span></div>
<div title="Code: 0xe884" class="the-icons span3"><i class="demo-icon icon-vcard-1">&#xe884;</i> <span class="i-name">icon-vcard-1</span><span class="i-code">0xe884</span></div>
<div title="Code: 0xe885" class="the-icons span3"><i class="demo-icon icon-music-outline">&#xe885;</i> <span class="i-name">icon-music-outline</span><span class="i-code">0xe885</span></div>
</div>
<div class="row">
<div title="Code: 0xe888" class="the-icons span3"><i class="demo-icon icon-location-outline">&#xe888;</i> <span class="i-name">icon-location-outline</span><span class="i-code">0xe888</span></div>
<div title="Code: 0xe88b" class="the-icons span3"><i class="demo-icon icon-coffee">&#xe88b;</i> <span class="i-name">icon-coffee</span><span class="i-code">0xe88b</span></div>
<div title="Code: 0xe88f" class="the-icons span3"><i class="demo-icon icon-graduation-cap">&#xe88f;</i> <span class="i-name">icon-graduation-cap</span><span class="i-code">0xe88f</span></div>
<div title="Code: 0xe890" class="the-icons span3"><i class="demo-icon icon-camera">&#xe890;</i> <span class="i-name">icon-camera</span><span class="i-code">0xe890</span></div>
</div>
<div class="row">
<div title="Code: 0xe891" class="the-icons span3"><i class="demo-icon icon-eye">&#xe891;</i> <span class="i-name">icon-eye</span><span class="i-code">0xe891</span></div>
<div title="Code: 0xe892" class="the-icons span3"><i class="demo-icon icon-beaker">&#xe892;</i> <span class="i-name">icon-beaker</span><span class="i-code">0xe892</span></div>
<div title="Code: 0xe896" class="the-icons span3"><i class="demo-icon icon-music">&#xe896;</i> <span class="i-name">icon-music</span><span class="i-code">0xe896</span></div>
<div title="Code: 0xe897" class="the-icons span3"><i class="demo-icon icon-photo">&#xe897;</i> <span class="i-name">icon-photo</span><span class="i-code">0xe897</span></div>
</div>
<div class="row">
<div title="Code: 0xe89b" class="the-icons span3"><i class="demo-icon icon-truck">&#xe89b;</i> <span class="i-name">icon-truck</span><span class="i-code">0xe89b</span></div>
<div title="Code: 0xe89e" class="the-icons span3"><i class="demo-icon icon-shop">&#xe89e;</i> <span class="i-name">icon-shop</span><span class="i-code">0xe89e</span></div>
<div title="Code: 0xe89f" class="the-icons span3"><i class="demo-icon icon-diamond">&#xe89f;</i> <span class="i-name">icon-diamond</span><span class="i-code">0xe89f</span></div>
<div title="Code: 0xe8a1" class="the-icons span3"><i class="demo-icon icon-wallet">&#xe8a1;</i> <span class="i-name">icon-wallet</span><span class="i-code">0xe8a1</span></div>
</div>
<div class="row">
<div title="Code: 0xe8a3" class="the-icons span3"><i class="demo-icon icon-database">&#xe8a3;</i> <span class="i-name">icon-database</span><span class="i-code">0xe8a3</span></div>
<div title="Code: 0xe8a7" class="the-icons span3"><i class="demo-icon icon-globe">&#xe8a7;</i> <span class="i-name">icon-globe</span><span class="i-code">0xe8a7</span></div>
<div title="Code: 0xe8a8" class="the-icons span3"><i class="demo-icon icon-phone-outline">&#xe8a8;</i> <span class="i-name">icon-phone-outline</span><span class="i-code">0xe8a8</span></div>
<div title="Code: 0xe8ab" class="the-icons span3"><i class="demo-icon icon-tree">&#xe8ab;</i> <span class="i-name">icon-tree</span><span class="i-code">0xe8ab</span></div>
</div>
<div class="row">
<div title="Code: 0xe8ad" class="the-icons span3"><i class="demo-icon icon-lightbulb">&#xe8ad;</i> <span class="i-name">icon-lightbulb</span><span class="i-code">0xe8ad</span></div>
<div title="Code: 0xe8ae" class="the-icons span3"><i class="demo-icon icon-clock">&#xe8ae;</i> <span class="i-name">icon-clock</span><span class="i-code">0xe8ae</span></div>
<div title="Code: 0xe8b1" class="the-icons span3"><i class="demo-icon icon-location">&#xe8b1;</i> <span class="i-name">icon-location</span><span class="i-code">0xe8b1</span></div>
<div title="Code: 0xe8b3" class="the-icons span3"><i class="demo-icon icon-pencil">&#xe8b3;</i> <span class="i-name">icon-pencil</span><span class="i-code">0xe8b3</span></div>
</div>
<div class="row">
<div title="Code: 0xe8b4" class="the-icons span3"><i class="demo-icon icon-cup">&#xe8b4;</i> <span class="i-name">icon-cup</span><span class="i-code">0xe8b4</span></div>
<div title="Code: 0xe8b5" class="the-icons span3"><i class="demo-icon icon-doc">&#xe8b5;</i> <span class="i-name">icon-doc</span><span class="i-code">0xe8b5</span></div>
<div title="Code: 0xe8b8" class="the-icons span3"><i class="demo-icon icon-t-shirt">&#xe8b8;</i> <span class="i-name">icon-t-shirt</span><span class="i-code">0xe8b8</span></div>
<div title="Code: 0xe8be" class="the-icons span3"><i class="demo-icon icon-search">&#xe8be;</i> <span class="i-name">icon-search</span><span class="i-code">0xe8be</span></div>
</div>
<div class="row">
<div title="Code: 0xe8bf" class="the-icons span3"><i class="demo-icon icon-tablet">&#xe8bf;</i> <span class="i-name">icon-tablet</span><span class="i-code">0xe8bf</span></div>
<div title="Code: 0xe8c0" class="the-icons span3"><i class="demo-icon icon-briefcase">&#xe8c0;</i> <span class="i-name">icon-briefcase</span><span class="i-code">0xe8c0</span></div>
<div title="Code: 0xe8c2" class="the-icons span3"><i class="demo-icon icon-note">&#xe8c2;</i> <span class="i-name">icon-note</span><span class="i-code">0xe8c2</span></div>
<div title="Code: 0xe8c3" class="the-icons span3"><i class="demo-icon icon-sound">&#xe8c3;</i> <span class="i-name">icon-sound</span><span class="i-code">0xe8c3</span></div>
</div>
<div class="row">
<div title="Code: 0xe8c4" class="the-icons span3"><i class="demo-icon icon-tv">&#xe8c4;</i> <span class="i-name">icon-tv</span><span class="i-code">0xe8c4</span></div>
<div title="Code: 0xe8c5" class="the-icons span3"><i class="demo-icon icon-desktop">&#xe8c5;</i> <span class="i-name">icon-desktop</span><span class="i-code">0xe8c5</span></div>
<div title="Code: 0xe8c6" class="the-icons span3"><i class="demo-icon icon-mobile">&#xe8c6;</i> <span class="i-name">icon-mobile</span><span class="i-code">0xe8c6</span></div>
<div title="Code: 0xe8c7" class="the-icons span3"><i class="demo-icon icon-cd">&#xe8c7;</i> <span class="i-name">icon-cd</span><span class="i-code">0xe8c7</span></div>
</div>
<div class="row">
<div title="Code: 0xe8cc" class="the-icons span3"><i class="demo-icon icon-instagram">&#xe8cc;</i> <span class="i-name">icon-instagram</span><span class="i-code">0xe8cc</span></div>
<div title="Code: 0xf23a" class="the-icons span3"><i class="demo-icon icon-medium">&#xf23a;</i> <span class="i-name">icon-medium</span><span class="i-code">0xf23a</span></div>
<div title="Code: 0xf262" class="the-icons span3"><i class="demo-icon icon-tripadvisor">&#xf262;</i> <span class="i-name">icon-tripadvisor</span><span class="i-code">0xf262</span></div>
<div title="Code: 0xf2ac" class="the-icons span3"><i class="demo-icon icon-snapchat">&#xf2ac;</i> <span class="i-name">icon-snapchat</span><span class="i-code">0xf2ac</span></div>
</div>
<div class="row">
<div title="Code: 0xf2d8" class="the-icons span3"><i class="demo-icon icon-imdb">&#xf2d8;</i> <span class="i-name">icon-imdb</span><span class="i-code">0xf2d8</span></div>
<div title="Code: 0xf32c" class="the-icons span3"><i class="demo-icon icon-codepen">&#xf32c;</i> <span class="i-name">icon-codepen</span><span class="i-code">0xf32c</span></div>
</div>
</div>
<div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
</body>
</html>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="fontello.eot" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello.svg" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello.ttf" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello.woff" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
<file name="fontello.woff2" server="ftp.populerdunya.com/lazyguy/" local="131363270960000000" remote="131386726200000000" Dst="0" />
</dwsync>
Binary file not shown.
+230
View File
@@ -0,0 +1,230 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
<defs>
<font id="fontello" horiz-adv-x="1000" >
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="menu" unicode="&#xe800;" d="M857 100v-71q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 25t25 11h785q15 0 26-11t10-25z m0 286v-72q0-14-10-25t-26-10h-785q-15 0-25 10t-11 25v72q0 14 11 25t25 10h785q15 0 26-10t10-25z m0 285v-71q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v71q0 15 11 26t25 10h785q15 0 26-10t10-26z" horiz-adv-x="857.1" />
<glyph glyph-name="gplus" unicode="&#xe801;" d="M526 416c0-45 0-91 0-136 76-3 152-2 228-3-33-169-263-224-384-113-125 96-119 309 11 399 91 72 220 55 310-8 36 33 69 68 101 105-75 60-168 103-266 98-206 7-395-173-398-379-13-169 97-334 253-394 156-60 355-19 454 121 66 89 80 203 72 310-127 1-254 0-381 0z m743 1c0 38 0 76-1 114-38 0-75 0-113 0 0-38-1-76-1-114-38-1-76-1-114-1 0-38 0-76 0-114 38 0 76-1 114-1 0-38 0-76 1-114 38 0 75 0 113 0 1 38 1 76 1 114 38 1 76 1 114 1 0 38 0 76 0 114-38 0-76 0-114 1z" horiz-adv-x="1497" />
<glyph glyph-name="doc-text" unicode="&#xe802;" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0 13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z" horiz-adv-x="857.1" />
<glyph glyph-name="spotify" unicode="&#xe803;" d="M629 175q0 18-17 28-107 64-249 64-74 0-160-19-24-5-24-29 0-11 8-19t20-8q2 0 20 5 74 15 136 15 126 0 221-58 11-6 19-6 10 0 18 8t8 19z m54 120q0 22-20 34-132 79-306 79-85 0-169-24-27-7-27-36 0-14 10-23t24-10q4 0 20 4 69 19 141 19 155 0 272-69 13-8 21-8 14 0 24 10t10 24z m60 138q0 26-23 39-70 41-163 62t-191 21q-114 0-204-26-12-4-21-15t-9-27q0-17 12-29t28-11q7 0 23 4 74 21 171 21 89 0 173-19t141-53q12-7 23-7 16 0 28 11t12 29z m114-83q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="comment" unicode="&#xe804;" d="M576 629l-278 0q-70 0-119-49t-49-119l0-278q0-58 44-90 68 90 179 90l223 0q92 0 158 65t65 158-65 157-158 66z m0 112q139 0 237-99t98-236-98-237-237-98l-223 0q-46 0-79-33t-33-79q-92 0-157 66t-66 158l0 278q0 115 82 197t198 83l278 0z" horiz-adv-x="928" />
<glyph glyph-name="food" unicode="&#xe805;" d="M0 116q0 33 23 55t55 23l84 0q22 121 117 201t221 80q102 0 186-55t126-144l143 70q12 6 24 2t17-16 2-23-16-18l-150-76q4-11 6-21l84 0q33 0 56-23t22-55q0-24-16-41l-109-123 0-24q0-33-22-56t-56-22l-594 0q-33 0-55 22t-23 56l0 24-109 123q-16 17-16 41z m63 0l125-141 0-47q0-16 15-16l594 0q15 0 15 16l0 47 125 141q0 15-15 15l-844 0q-15 0-15-15z m130 78l34 0q21 95 97 157t176 62q84 0 153-46t103-120l27 15q-37 82-113 132t-170 50q-111 0-198-72t-109-178z m55 291q-16 39 16 113 25 61 13 90l-2 0 0 6q0 15 16 15 10 0 14-9 17-41-14-114-25-62-12-91l0-4q0-16-15-16-10 0-14 8l0 2-2 0z m10-291l33 0q20 68 77 112t132 44q66 0 120-36t79-95l30 14q-32 66-93 107t-136 41q-86 0-153-52t-89-135z m66 0l33 0q18 43 57 68t86 26 86-26 57-68l5 0 24 11q-22 51-68 83t-104 31q-61 0-108-35t-68-90z m69 0l37 0q29 31 70 31t68-31l39 0q-37 62-107 62t-107-62z m76 429l0 2q-16 39 13 114 28 60 14 90l0 5q0 16 14 16 12 0 15-10 18-41-13-113-26-63-14-92 2-2 2-4 0-15-16-15-9 0-15 7z m160-134l0 2q-16 39 16 111 25 62 11 90l0 6q0 15 16 15 10 0 14-9 17-40-14-114-26-60-14-90l0-2q2-2 2-3 0-16-15-16-10 0-14 10l-2 0z m160-295l18 0q0 2-1 4t-1 4z" horiz-adv-x="1000" />
<glyph glyph-name="home" unicode="&#xe806;" d="M464 797l447-446-112 0 0-448-669 0 0 448-112 0z m224-781l0 401-224 157-223-157 0-401 168 0 0 168 112 0 0-168 167 0z" horiz-adv-x="928" />
<glyph glyph-name="vcard" unicode="&#xe807;" d="M990-66l-834 0q-65 0-110 46t-46 110l0 520q0 65 46 111t110 46l834 0q65 0 111-46t45-111l0-520q0-65-45-110t-111-46z m-834 729q-21 0-37-16t-15-37l0-520q0-21 15-37t37-15l834 0q21 0 36 15t15 37l0 520q0 22-15 37t-36 16l-834 0z m313-469l-209 0q-21 0-36 16t-15 37 15 36 36 15l209 0q21 0 37-15t15-36-15-37-37-16z m0 209l-209 0q-21 0-36 15t-15 36 15 37 36 16l209 0q21 0 37-16t15-37-15-36-37-15z m209 25q0 105 103 105t104-105q0-104-104-104t-103 104z m103-148q57 0 93-22t37-53q0-15-37-26t-93-11q-58 0-94 11t-36 26q0 30 36 53t94 22z" horiz-adv-x="1146" />
<glyph glyph-name="bicycle" unicode="&#xe808;" d="M625 700l-25-50 100-37 0-113-350 0 0 50 50 0 0 25c0 12-13 25-25 25l-125 0c-25 0-25-25-25-25l0-25 75 0 0-50-53-106c-15 3-31 6-47 6-110 0-200-89-200-200s90-200 200-200 200 90 200 200c0 0 50 0 75 0s25 25 25 25c5 74 43 131 92 169 34 26 71 42 108 50l0-52c-86-22-150-99-150-192 0-110 90-200 200-200s200 90 200 200c0 91-62 167-145 191l-55 109 0 125c0 15-12 31-25 36z m-275-250l225 0c-50-25-125-150-125-200l-58 0c-12 49-41 90-83 117z m-150-125c69 0 125-56 125-125s-56-125-125-125-125 56-125 125 56 125 125 125z m550 0c69 0 125-56 125-125s-56-125-125-125-125 56-125 125 56 125 125 125z" horiz-adv-x="950" />
<glyph glyph-name="apple" unicode="&#xe809;" d="M777 172q-21-70-68-139-72-110-144-110-27 0-78 18-48 18-84 18-34 0-79-19-45-19-74-19-85 0-168 145-82 146-82 281 0 127 63 208 63 81 159 81 40 0 98-17 58-17 77-17 25 0 80 19 57 19 97 19 66 0 119-36 29-20 58-56-44-37-64-66-36-52-36-115 0-69 38-125t88-70z m-209 655q0-34-17-76-16-42-52-77-30-30-60-40-20-7-58-10 2 83 44 143 41 60 139 83 1-2 2-6t1-6q0-2 0-6t1-5z" horiz-adv-x="785.7" />
<glyph glyph-name="laptop" unicode="&#xe80a;" d="M1145 139q45-10 75-46t30-81q0-54-38-92t-92-39l-990 0q-54 0-92 39t-38 92q0 46 30 81t75 46q0 8-1 26t0 29l0 469q0 65 45 110t111 46l730 0q65 0 111-46t45-110l0-469q0-10 0-29t-1-26z m-936 524l0-469q0-11 0-29t1-23l50 0 0 468q0 22 16 37t37 16l625 0q21 0 36-16t16-37l0-468 51 0 0 521q0 21-15 37t-36 15l-730 0q-21 0-36-15t-15-37z m729-521l0 468-625 0 0-468 625 0z m182-157q10 0 18 8t8 19-8 18-18 8l-990 0q-10 0-18-8t-8-18 8-19 18-8l990 0z" horiz-adv-x="1250" />
<glyph glyph-name="map" unicode="&#xe80b;" d="M984 600q16-10 16-30l0-584q0-20-16-30-8-6-16-6t-18 6l-216 136-216-136q-18-10-34 0l-218 136-216-136q-16-10-34 0-16 10-16 30l0 584q0 20 16 30l234 146q18 10 34 0l216-136 218 136q16 10 32 0z m-750-450l0 506-168-104 0-506z m234-104l0 506-168 104 0-506z m234 104l0 506-170-104 0-506z m232-104l0 506-168 104 0-506z" horiz-adv-x="1000" />
<glyph glyph-name="gift" unicode="&#xe80c;" d="M885 585q21 0 37-16t16-36l0-209q0-21-16-36t-37-15l0-262q0-65-46-110t-110-46l-520 0q-65 0-111 46t-45 110l0 262q-22 0-37 15t-16 36l0 209q0 21 16 36t37 16l122 0q-19 40-19 78 0 75 54 128t129 54q77 0 130-55 52 55 130 55 75 0 129-54t53-128q0-38-18-78l122 0z m-51-209l0 104-261 0 0-104 261 0z m-418 260l0-51 105 0 0 51-105 0z m105-156l-105 0 0-104 105 0 0 104z m78 261q-25 0-46-15t-28-38q20-3 34-17t14-35l0-46q15-5 26-5 32 0 55 23t24 55-24 55-55 23z m-339-78q0-32 23-55t56-23q11 0 26 5l0 46q0 20 14 35t34 17q-8 23-29 38t-45 15q-31 0-55-23t-24-55z m105-183l-261 0 0-104 261 0 0 104z m-156-520l156 0 0 364-209 0 0-313q0-21 16-36t37-15z m207 0l105 0 0 364-105 0 0-364z m313 0q21 0 37 15t15 36l0 313-208 0 0-364 156 0z" horiz-adv-x="938" />
<glyph glyph-name="wine" unicode="&#xe80d;" d="M580 484q0-106-68-187t-171-98q0-1 1-2t1-3l0-209 51 0q21 0 37-15t15-36-15-37-37-16l-208 0q-21 0-37 16t-15 37 15 36 37 15l52 0 0 209q0 1 0 3t1 2q-103 18-171 98t-68 187q0 59 13 133t22 115 14 50q5 16 19 26t31 11l382 0q18 0 32-11t18-26q4-9 14-50t23-115 12-133z m-290-186q69 0 121 44t62 112l-365 0q10-67 61-112t121-44z m-185 209l370 0q-5 98-34 208l-302 0q-29-110-34-208z" horiz-adv-x="580" />
<glyph glyph-name="book-open" unicode="&#xe80e;" d="M340 238l0-68-200 80 0 68z m0 208l0-68-200 80 0 68z m538 346q22-12 22-42l0-640q0-34-32-46l-398-160q-8-2-10-2t-5-1-5-1-5 1-5 1l-10 2-398 160q-32 12-32 46l0 640q0 30 22 42 22 16 46 6l382-154 382 154q24 10 46-6z m-478-788l0 560-320 128 0-560z m420 128l0 560-320-128 0-560z m-60 186l0-68-200-80 0 68z m0 208l0-68-200-80 0 68z" horiz-adv-x="900" />
<glyph glyph-name="address" unicode="&#xe80f;" d="M426 800q20 0 20-20l0-860q0-20-20-20l-46 0q-20 0-20 20l0 440-176 0q-16 0-28 6-12 2-26 12l-120 82q-10 6-10 16t10 16l120 82q14 10 26 12 8 4 28 4l176 0 0 190q0 20 20 20l46 0z m564-208q10-6 10-16t-10-16l-118-82q-22-12-26-12-14-6-28-6l-302 0-40 230 342 0q18 0 28-4t26-12z" horiz-adv-x="1000" />
<glyph glyph-name="skype-outline" unicode="&#xe810;" d="M633-31q82 0 141 62t60 146q0 45-21 94 7 39 7 76 0 149-101 254-100 104-245 104-31 0-60-7-50 33-109 33-84 0-142-61t-59-145q0-59 29-107-8-37-8-71 0-147 103-254 101-105 246-105 17 0 64 6 42-25 95-25z m-365 277q0 20 14 34t36 13q36 0 51-43 5-5 21-37 23-31 79-31 39 0 67 16t29 48q0 14-4 24t-18 16-19 10-26 9-24 6q-20 6-23 6-52 11-92 29-34 14-58 43t-23 72q0 69 55 103t137 34q88 0 140-41 44-41 44-79 0-20-15-35t-35-16q-14 0-24 6t-14 12-13 21q-23 54-89 54-33 0-58-14t-25-35q0-44 105-61 10-2 77-20 75-27 100-72 12-26 12-63 0-75-57-115t-145-39q-130 0-183 80-22 35-22 65z m37 589q68 0 126-28 28 3 43 3 187 0 320-137 131-137 131-326 0-20-5-65 18-52 18-105 0-127-89-219-90-92-216-92-62 0-113 21-19-3-46-3-188 0-321 137-133 136-133 326 0 26 4 55-24 55-24 123 0 127 88 217 90 93 217 93z" horiz-adv-x="938" />
<glyph glyph-name="download-alt" unicode="&#xe811;" d="M0-150l0 135 1000 0 0-135-1000 0z m88 586l228 0 0 414 370 0 0-414 228 0-414-385z" horiz-adv-x="1000" />
<glyph glyph-name="videocam-outline" unicode="&#xe816;" d="M209 455q0 51 51 51 53 0 53-51 0-53-53-53-51 0-51 53z m520 312q60 0 104-40t51-96l89 29q25 8 46-8t22-41l0-313q0-25-21-42t-47-8l-89 30q-8-56-51-96t-104-40l-104 0 0-54q0-62-46-109t-110-46-107 43-49 107l0 59-157 0q-63 0-110 46t-46 110l0 313q0 64 46 110t110 46l573 0z m-260-730q20 0 36 16t16 35l0 105-105 0 0-105q3-21 17-36t36-15z m260 209q22 0 37 15t15 37l0 313q0 21-15 36t-37 15l-573 0q-21 0-37-15t-15-36l0-313q0-21 15-37t37-15l573 0z m209 125l0 167-104-31 0-105q6 0 104-31z" horiz-adv-x="1041" />
<glyph glyph-name="facebook" unicode="&#xe825;" d="M500 644l-142 0q-14 0-25-15t-11-37l0-102 178 0 0-148-178 0 0-442-170 0 0 442-152 0 0 148 152 0 0 86q0 94 59 159t147 65l142 0 0-156z" horiz-adv-x="500" />
<glyph glyph-name="twitter" unicode="&#xe826;" d="M920 636q-36-54-94-98l0-24q0-130-60-250t-186-203-290-83q-160 0-290 84 14-2 46-2 132 0 234 80-62 2-110 38t-66 94q10-4 34-4 26 0 50 6-66 14-108 66t-42 120l0 2q36-20 84-24-84 58-84 158 0 48 26 94 154-188 390-196-6 18-6 42 0 78 55 133t135 55q82 0 136-58 60 12 120 44-20-66-82-104 56 8 108 30z" horiz-adv-x="920" />
<glyph glyph-name="linkedin-squared" unicode="&#xe827;" d="M132 61h129v387h-129v-387z m138 507q-1 29-21 48t-51 19-53-19-21-48q0-29 20-48t52-19h0q33 0 53 19t21 48z m326-507h129v222q0 86-41 130t-107 44q-76 0-117-65h1v56h-129q2-37 0-387h129v217q0 21 4 31 8 19 25 33t41 14q65 0 65-88v-207z m261 557v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="pinterest-circled" unicode="&#xe829;" d="M857 350q0-117-57-215t-156-156-215-58q-62 0-122 18 33 52 43 92 6 19 31 118 11-22 40-38t64-16q68 0 121 38t82 105 29 151q0 64-34 120t-96 90-142 36q-59 0-110-17t-86-43-61-61-37-72-12-75q0-58 22-102t66-62q16-7 21 11 1 4 4 17t5 17q3 13-6 24-29 34-29 84 0 84 58 145t153 61q84 0 132-46t47-119q0-95-39-161t-98-67q-34 0-54 25t-13 58q4 19 15 52t17 57 6 43q0 28-15 46t-43 18q-35 0-59-31t-24-80q0-40 14-68l-55-233q-9-39-7-99-115 51-186 157t-71 236q0 117 58 215t155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="github-circled" unicode="&#xe82a;" d="M429 779q116 0 215-58t156-156 57-215q0-140-82-252t-211-155q-15-3-22 4t-7 17q0 1 0 43t0 75q0 54-29 79 32 3 57 10t53 22 45 37 30 58 11 84q0 67-44 115 21 51-4 114-16 5-46-6t-51-25l-21-13q-52 15-107 15t-108-15q-8 6-23 15t-47 22-47 7q-25-63-5-114-44-48-44-115 0-47 12-83t29-59 45-37 52-22 57-10q-21-20-27-58-12-5-25-8t-32-3-36 12-31 35q-11 18-27 29t-28 14l-11 1q-12 0-16-2t-3-7 5-8 7-6l4-3q12-6 24-21t18-29l6-13q7-21 24-34t37-17 39-3 31 1l13 3q0-22 0-50t1-30q0-10-8-17t-22-4q-129 43-211 155t-82 252q0 117 58 215t155 156 216 58z m-267-616q2 4-3 7-6 1-8-1-1-4 4-7 5-3 7 1z m18-19q4 3-1 9-6 5-9 2-4-3 1-9 5-6 9-2z m16-25q6 4 0 11-4 7-9 3-5-3 0-10t9-4z m24-23q4 4-2 10-7 7-11 2-5-5 2-11 6-6 11-1z m32-14q1 6-8 9-8 2-10-4t7-9q8-3 11 4z m35-3q0 7-10 6-9 0-9-6 0-7 10-6 9 0 9 6z m32 5q-1 7-10 5-9-1-8-8t10-4 8 7z" horiz-adv-x="857.1" />
<glyph glyph-name="behance" unicode="&#xe82b;" d="M0-150l0 1000 1000 0 0-1000-1000 0z m156 158l256 0q49 2 80 32 31 33 31 84 0 46-21 74-18 23-51 31l0 4q29 10 45 29 20 28 20 71-2 44-32 74-31 29-74 29l-254 0 0-428z m121 100l0 74 94 0q14-2 20-10 9-9 9-23l0-8q0-14-9-23-8-10-20-10l-94 0z m0 162l0 72 86 0q12 0 20-9t8-24l0-6q0-13-8-23t-20-10l-86 0z m250-98q0-43 12-76 12-31 34-53t54-32 72-11q78 2 117 36 41 33 41 91l-107 0q0-9-4-17-10-29-51-29-31 0-45 18t-13 54l220 0q0 62-11 97-10 32-32 53t-52 31-71 10q-37 0-67-11t-52-32-33-52-12-77z m75 194l189 0 0 70-189 0 0-70z m37-155q2 26 15 40t41 15q24 0 37-15t14-40l-107 0z" horiz-adv-x="1000" />
<glyph glyph-name="dribbble" unicode="&#xe82c;" d="M0 350q0 136 67 251t182 182 251 67 251-67 182-182 67-251-67-251-182-182-251-67-251 67-182 182-67 251z m83 0q0-156 105-275 48 94 152 179t203 107q-15 35-29 63-172-55-372-55-39 0-58 1 0-4 0-10t-1-10z m13 103q22-2 65-2 167 0 317 45-76 135-167 225-79-40-135-111t-80-157z m149-432q113-88 255-88 74 0 147 28-20 171-78 331-92-20-185-101t-139-170z m153 732q88-91 163-227 136 57 205 145-116 96-266 96-51 0-102-14z m199-298q15-32 34-81 74 7 161 7 62 0 123-3-8 136-98 242-65-97-220-165z m59-151q51-148 69-304 79 51 129 131t60 173q-73 5-133 5-55 0-125-5z" horiz-adv-x="1000" />
<glyph glyph-name="address-1" unicode="&#xe82d;" d="M933 533l-143-135-4-4q48-54 48-121 0-75-54-129t-129-54l-141 0-41-209-53 0-41 209-115 0q-69 0-117 49l-134 134 96 96q-47 21-76 66t-29 98q0 75 54 129t129 53l182 0 0 27q0 31 23 54t55 23 55-23 23-54l0-27 152 0q67 0 116-46z m-282-339q32 0 55 23t23 56-23 55-55 22l-391 0q-26 0-44-17l-60-60 60-60q19-19 44-19l391 0z m67 279l63 60-63 60q-19 19-45 19l-490 0q-33 0-56-24t-23-55q0-31 23-55t56-23l490 0q27 0 45 18z" horiz-adv-x="933" />
<glyph glyph-name="lastfm" unicode="&#xe82e;" d="M0 350q0 164 116 280t280 116q124 0 220-63t146-181q15-36 129-300 21-48 38-73t49-45 79-22l7 0q67 0 111 36 46 38 47 96 0 27-8 45t-29 32-41 22-59 20q-125 41-180 90t-55 135q0 91 58 146t156 54q127 0 191-115l-84-43q-45 62-112 62-46 0-76-28t-31-73q0-13 2-24t9-21 12-16 17-14 20-12 25-10 27-10 31-10 33-10q108-36 155-84t46-140q0-100-76-166-75-65-186-65l-3 0q-100 0-161 47t-103 140l-14 33-127 288q-33 77-104 124t-159 47q-119 0-203-84t-85-204 85-203 203-85q82 0 150 43t105 112l51-118q-55-68-135-107t-171-38q-164 0-280 116t-116 280z" horiz-adv-x="1329" />
<glyph glyph-name="rss" unicode="&#xe82f;" d="M184 93c0-51-43-91-93-91s-91 40-91 91c0 50 41 91 91 91s93-41 93-91z m261-85l-125 0c0 174-140 323-315 323l0 118c231 0 440-163 440-441z m259 0l-136 0c0 300-262 561-563 561l0 129c370 0 699-281 699-690z" horiz-adv-x="704" />
<glyph glyph-name="vimeo-squared" unicode="&#xe830;" d="M721 494q6 121-90 124-129 4-174-146 25 11 46 11 47 0 41-54-2-32-41-93t-59-61q-24 0-46 94-7 30-25 142-16 106-89 99-33-4-91-56l-46-40-45-40 29-37q43 29 49 29 32 0 59-100 9-31 26-92t25-92q38-100 91-100 88 0 214 164 123 158 126 248z m136 124v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" />
<glyph glyph-name="forrst" unicode="&#xe831;" d="M0-150l417 1000 417-1000-369 0 0 135 170 85-13 55-157-79 0 67 98 52-14 57-84-45 0 87-92 0 0-157-86 59-16-64 102-70 0-182-373 0z" horiz-adv-x="834" />
<glyph glyph-name="skype" unicode="&#xe832;" d="M920 281q18-52 18-103 0-129-89-221-90-92-216-92-58 0-113 22-19-2-46-2-188 0-321 135-133 136-133 326 0 29 4 57-24 55-24 122 0 128 88 218 90 92 217 92 68 0 126-27 14 1 43 1 187 0 320-136 131-138 131-327 0-20-5-65z m-447-180q88 0 145 40t57 114q0 69-52 106-32 19-60 29-7 1-104 26-53 13-69 34-9 9-9 20 0 23 26 36t57 14q66 0 89-54 10-16 13-21t13-11 25-6q20 0 35 15t15 36q0 40-44 79-52 41-140 41-82 0-137-35t-55-103q0-42 23-72t58-44q40-17 92-29 30-6 64-15 50-18 50-56 0-30-29-46t-67-16q-56 0-79 31-16 31-21 36-14 43-51 43-22 0-36-14t-14-34q0-35 23-67t55-49q53-28 127-28z" horiz-adv-x="938" />
<glyph glyph-name="youtube-play" unicode="&#xe834;" d="M397 221l270 139-270 141v-280z m103 481q94 0 181-3t128-5l41-2q0 0 9-1t13-2 13-2 16-5 16-7 17-11 16-15q4-3 9-10t16-33 15-56q4-36 7-76t3-64v-98q1-81-10-162-4-30-14-55t-18-35l-8-9q-7-8-16-15t-17-10-16-7-16-5-13-2-13-2-9-1q-140-11-350-11-115 2-201 4t-111 4l-28 3-20 2q-20 3-30 5t-29 12-31 23q-4 3-9 10t-16 33-15 56q-4 36-7 76t-3 64v98q-1 81 10 162 4 31 14 55t18 35l8 9q8 9 16 15t17 11 16 7 16 5 13 2 13 2 9 1q140 10 350 10z" horiz-adv-x="1000" />
<glyph glyph-name="flickr" unicode="&#xe835;" d="M0 350q0 104 73 177t177 73 177-73 73-177-73-177-177-73-177 73-73 177z m552 0q0 104 73 177t177 73 177-73 73-177-73-177-177-73-177 73-73 177z" horiz-adv-x="1052" />
<glyph glyph-name="tumblr" unicode="&#xe836;" d="M527 108l44-132q-12-19-61-37t-99-18q-58-1-107 15t-79 41-53 59-31 67-9 66v304h-94v120q40 14 72 39t51 50 32 57 19 55 8 49q1 3 3 5t4 2h136v-237h186v-140h-186v-289q0-17 3-31t13-30 28-23 45-8q44 1 75 16z" horiz-adv-x="571.4" />
<glyph glyph-name="blogger" unicode="&#xe837;" d="M0 165l0 369q0 130 93 223t223 93l221 0q65-8 139-57t104-115q1-2 5-9t5-10 4-10 4-12 3-16 4-22 4-29q9-70 26-85 14-13 71-14t65-8l14-11 8-17 3-14-2-256q-1-130-93-223t-222-92l-363 0q-130 0-223 92t-93 223z m259 5q0-25 18-42t43-18l356 0q25 0 43 18t17 42-17 43-43 17l-356 0q-25 0-43-17t-18-43z m0 362q0-25 18-43t43-18l175 0q25 0 43 18t17 43-17 43-43 17l-175 0q-25 0-43-17t-18-43z" horiz-adv-x="996" />
<glyph glyph-name="delicious" unicode="&#xe838;" d="M0-150l0 501 501 0 0-501-501 0z m509 499l0 501 500 0 0-501-500 0z" horiz-adv-x="1009" />
<glyph glyph-name="digg" unicode="&#xe839;" d="M0 152l0 372q0 13 13 13l176 0 0 129q0 14 13 14l98 0 0-514q0-14-12-14l-288 0z m109 83l67 0q13 0 13 14l0 206-67 0q-13 0-13-14l0-206z m225-83l0 372q0 13 13 13l98 0 0-371q0-14-12-14l-99 0z m0 445l0 69q0 14 12 14l99 0 0-69q0-14-12-14l-99 0z m149-445l0 372q0 13 13 13l288 0 0-504q0-13-13-13l-288 0 1 69q0 14 12 14l176 0 0 49-189 0z m110 83l67 0q12 0 12 14l0 206-67 0q-12 0-12-14l0-206z m229-146q0 14 13 14l176 0 0 49-189 0 0 372q0 13 13 13l287 0 0-504q0-13-12-13l-288 0 0 69z m109 146l67 0q13 0 13 14l0 206-67 0q-13 0-13-14l0-206z" horiz-adv-x="1122" />
<glyph glyph-name="wordpress" unicode="&#xe83b;" d="M0 350q0 136 67 251t182 182 251 67 251-67 182-182 67-251-67-251-182-182-251-67-251 67-182 182-67 251z m39 0q0-135 72-247t188-168l-220 603q-40-89-40-188z m75 253l30 0q48 0 123 6 12 1 18-8t1-19-16-11l-53-5 168-499 101 302-72 197q-24 3-48 5-12 1-16 11t2 19 17 8l121-6q49 0 123 6 12 1 18-8t1-19-16-11l-52-5 166-496 46 154q36 117 36 149 0 64-39 128-2 3-12 21t-14 24-9 19-8 23-2 21q0 33 23 58t55 24q1 0 3 0t3-1q-131 121-312 121-119 0-221-56t-165-152z m256-696q62-18 130-18 80 0 153 26l-3 6-142 389z m362 44q105 61 167 168t62 231q0 120-56 221 3-21 3-47 0-63-35-165z" horiz-adv-x="1000" />
<glyph glyph-name="stackoverflow" unicode="&#xe83c;" d="M0-150l0 395 64 0 0-329 493 0 0 329 66 0 0-395-623 0z m113 133l0 80 395 0 0-80-395 0z m2 146l6 80 393-27-6-80z m16 176l19 78 383-93-19-81z m62 205l41 71 340-200-41-70z m182 213l66 45 221-326-68-45z m250 117l82 10 47-391-80-9z" horiz-adv-x="754" />
<glyph glyph-name="foursquare" unicode="&#xe83d;" d="M558 608l21 108q3 13-5 22t-20 10h-397q-13 0-22-10t-8-20v-615q0-4 3 0l162 196q13 15 22 19t26 4h134q12 0 20 8t11 17q13 72 20 106 2 12-6 23t-21 10h-164q-16 0-26 11t-11 27v23q0 16 11 27t26 10h193q10 0 20 7t11 17z m127 124q-9-41-30-149t-39-195-19-97q-4-12-5-18t-8-18-14-19-21-12-33-5h-151q-7 0-12-6-5-5-238-275-12-14-33-16t-27 3q-30 12-30 54v787q0 31 21 58t67 26h495q53 0 71-30t6-88z m0 0l-88-441q2 9 19 97t39 195 30 149z" horiz-adv-x="714.3" />
<glyph glyph-name="xing" unicode="&#xe83e;" d="M333 478q-5-10-143-255-15-25-36-25h-134q-12 0-17 9t0 20l141 250q1 0 0 1l-90 156q-7 12 0 20 5 9 17 9h134q22 0 37-26z m450 358q6-9 0-21l-295-521v0l188-344q6-11 0-20-5-9-17-9h-134q-23 0-37 25l-189 348q10 18 296 525 14 25 36 25h135q12 0 17-8z" horiz-adv-x="785.7" />
<glyph glyph-name="sina-weibo" unicode="&#xe83f;" d="M732 348q118-38 118-136 0-102-127-197t-313-95q-160 0-285 78t-125 196q0 130 146 280 92 92 186 129t134-3q36-36 10-116-4-14 8-14l16 2q74 34 134 34t84-34q24-36-2-100-6-18 16-24z m-322-354q122 12 202 77t72 145q-10 80-100 128t-212 36-202-77-70-145q8-80 98-128t212-36z m586 488l0-2q0-14-11-24t-25-10-24 10-10 24q0 96-68 163t-162 67q-16 0-26 10t-10 26q0 34 36 34 124 0 212-87t88-211z m-140 4q4-14-4-27t-22-15q-34-4-42 28-8 38-36 66t-66 36q-34 8-26 40 8 36 42 28 58-12 100-55t54-101z m-528-210q48 10 88-12t48-62q10-40-19-77t-79-45q-48-10-88 12t-48 62 20 76 78 46z" horiz-adv-x="996" />
<glyph glyph-name="soundcloud" unicode="&#xe840;" d="M34 178q0-4-10-4-6 0-10 4l-14 70 14 72q4 4 10 4 10 0 10-4l16-72z m102-38q0-8-12-8t-12 8l-12 108 12 166q0 8 12 8t12-8l14-166z m102 2q0-10-14-10t-14 8l-10 108 10 222q0 10 14 10t14-10l12-222z m102 0q0-10-16-10t-16 10l-8 106 8 224q0 10 16 10t16-10l10-224z m102 2q0-12-18-12-16 0-18 12l-6 104 6 256q4 14 18 14 18 0 18-14l8-256z m72-12q-14 0-14 14l0 396q0 10 12 14 36 14 84 14 88 0 153-58t73-142q24 10 50 10 52 0 90-37t38-87q0-52-38-89t-90-37z" horiz-adv-x="1000" />
<glyph glyph-name="fivehundredpx" unicode="&#xe841;" d="M0 236l119 0q5-40 30-64t64-24q48 0 77 33t28 81q0 48-28 79t-75 31q-38 0-65-24t-51-25q-53 0-80 2 9 52 29 161t28 164l330 0 0-98-243 0q-14-71-24-134l3 0q17 21 51 32t65 11q113 0 160-103 24 60 72 94t111 34q49 0 91-19t66-42 63-66q3-3 5-5t4-4l4-5q35 40 50 56t46 40 62 35 70 9q90 0 145-60t55-152q0-93-55-156t-147-63q-116 0-226 131-7-7-39-38t-42-40-37-25-52-23-58-6q-63 0-111 33t-74 92q-62-128-203-128-95 0-156 48t-62 138z m515 30q0-42 26-68t67-26q75 0 155 95-34 35-48 49t-47 33-64 19q-39 0-64-31t-25-71z m389 0q27-29 46-45t49-33 61-16q43 0 68 28t24 70q0 42-25 70t-68 28q-25 0-49-11t-36-22-38-36-32-33z" horiz-adv-x="1262" />
<glyph glyph-name="slideshare" unicode="&#xe842;" d="M2 374q16 11 43-6l0 482 893 0 0-482q16 11 33 11t16-13q-6-18-21-37t-29-34-43-30-42-24-46-24-38-17q25-82 18-162-10-77-56-129t-120-55q-57 0-90 47-10 15-10 37l0 197q-6 0-19 5t-16 5l0-211q0-35-31-60t-69-24q-72 0-119 55t-56 131q-8 82 17 160-119 53-205 138-17 32-10 40z m94-40q8-3 25-12t26-13l699 8q29 14 39 19l0 461-789 0 0-463z m143 100q0 49 35 84t84 35 83-35 34-84-34-83-83-34-84 34-35 83z m279 0q0 49 35 84t84 35 83-35 34-84-34-83-83-34-84 34-35 83z" horiz-adv-x="987" />
<glyph glyph-name="android" unicode="&#xe843;" d="M0 201l0 269q0 26 19 45t44 18q26 0 45-18t18-45l0-269q0-26-18-44t-45-19-44 19-19 44z m173-100l0 418 574 0 0-418q0-26-18-44t-45-19l-448 0q-26 0-44 19t-19 44z m0 465l574 0q0 115-85 189t-202 74-202-74-85-189z m101 316q0 8 7 8 3 0 7-2l49-89-15-8q-48 88-48 91z m15-807q0 27 19 45t47 18q25 0 44-19t19-44l0-202q0-28-19-46t-47-17q-26 0-44 18t-19 45l0 202z m5 620q0 16 12 28t28 11 28-11 11-28q0-17-11-28t-29-12q-16 0-27 12t-12 28z m208-620q0 27 20 45t46 18q26 0 45-18t18-45l0-202q0-28-19-46t-47-17q-26 0-44 18t-19 45l0 202z m45 620q0 16 12 28t28 11 28-11 11-28q0-17-12-28t-28-12-27 12-12 28z m36 104q2 3 14 29t24 44 18 18 7-9l0-2-48-89z m211-598l0 268q0 26 19 45t44 19 45-19 18-45l0-268q0-26-18-44t-45-19-45 19-18 44z" horiz-adv-x="920" />
<glyph glyph-name="windows" unicode="&#xe845;" d="M381 289v-364l-381 53v311h381z m0 414v-367h-381v315z m548-414v-439l-507 70v369h507z m0 490v-443h-507v373z" horiz-adv-x="928.6" />
<glyph glyph-name="vkontakte" unicode="&#xe846;" d="M1070 560q13-36-84-164-13-18-36-48-22-28-31-40t-17-27-7-24 8-19 18-24 32-30q2-1 2-2 79-73 107-123 2-3 4-7t4-15-1-19-14-15-33-7l-142-3q-14-2-32 3t-29 13l-11 6q-17 12-39 36t-38 43-34 33-32 8q-1 0-4-2t-10-8-12-16-9-29-4-44q0-8-2-15t-4-10l-2-3q-10-11-30-12h-64q-40-3-81 9t-74 29-57 37-40 32l-14 14q-5 5-15 17t-40 50-59 85-68 117-73 152q-4 9-4 15t2 9l2 3q9 11 32 11l153 1q7-1 13-3t9-5l3-2q9-6 13-18 11-28 26-57t23-46l9-16q16-34 31-58t27-38 23-22 19-8 15 3q1 1 3 3t7 12 7 26 5 46 0 69q-1 23-5 41t-7 26l-4 6q-14 19-47 24-8 2 3 14 8 10 21 17 29 14 133 13 46-1 75-7 12-3 19-8t12-13 5-18 2-25 0-31-2-40 0-46q0-6-1-23t0-27 2-22 6-22 13-14q4-1 9-2t15 6 21 19 29 38 38 60q33 58 60 125 2 6 5 10t6 6l3 2 2 1t8 2 11 0l160 1q22 3 36-1t17-10z" horiz-adv-x="1071.4" />
<glyph glyph-name="myspace" unicode="&#xe847;" d="M0 175l0 350 140 0 0-207 805 0 0 207 141 0 0-350-1086 0z" horiz-adv-x="1086" />
<glyph glyph-name="meetup" unicode="&#xe848;" d="M0 390q0 35 2 105 24 8 48 8l18 0q17-23 40-70t31-61q2 7 8 37t10 42 11 37 16 40 19 31q28-5 46-5 6 0 11 1 24-54 46-163t38-155q-1 0-4 1l-3 1q-9 0-26-5t-22-7q-40 101-62 203-15-26-15-89t-11-88l-5 2q-8 0-22-2t-21-2l-18 0q-27 48-57 89-3-6-3-15t3-26 2-25l-1-12q-30-15-52-15-7 0-10 1-17 56-17 142z m355-76q0 27 8 58t28 57 47 26q10 0 28-5t23-6q9-40 9-81 0-28-6-55-12 4-38 5t-37 3q-5-20-5-37 0-21 10-37t30-16q9 0 26 5t26 5q17 0 23-14-42-16-82-16-46 0-68 30t-22 78z m58 28l8 1q3 0 8-2t7-2l7 3q2 14 2 22 0 18-5 40-22-25-27-62z m110-54q0 123 78 182 32-3 60-23-1-17-8-67-5-39-5-65l0-14q-20-2-29-2-8 0-43 5-5-12-5-23 0-22 17-37t39-16q26 0 41 23 18-6 21-17-22-21-63-21-37 0-70 20t-33 55z m56 43q4-6 14-6l9 0q9 19 9 49 0 13-6 39-3-8-10-25t-11-30-5-27z m99 19q-2 26 23 26 6 0 18-1t17-1q3 15 3 31 0 29-7 87t-8 86q0 43 10 72 5-3 27-5t40-25q-6-26-6-67 0-20 4-81 2-35 2-61 0-20-1-34l6 0q7 0 9 6t2 13 4 6q8 0 19-8t22-22 15-16q-9-7-40-9t-39-4q-1-12-1-36 0-16 1-33t1-38 1-33q-8-1-23-2t-22-2l0 20q0 21-3 57-4 44-4 61-6 2-32 4t-38 9z m215 8q0 20 2 58 11-1 20-5t21-10 18-10l-1-27q0-59 9-116 19 7 31 23t17 42 5 42 2 44l0 11q3-1 9-1 20-2 49-25 0-3 1-9t0-10q0-15-4-30t-7-22-15-25-14-23q-15-12-34-42-21-7-38-7-71 0-71 142z m200-108q7 6 24 10 0 3 1 9 4 35 7 57t13 59 22 59 35 40 53 17q34 0 76-24 17-37 17-75 0-66-46-119t-113-68q-2-32-2-48 0-73 18-117-8 2-37 2-15 0-22 2-9 21-16 96t-30 100z m90 25q39 10 66 48t26 79q0 30-15 56-23-21-39-55t-23-60-15-68z" horiz-adv-x="1341" />
<glyph glyph-name="reddit" unicode="&#xe84a;" d="M0 353q0 62 50 106t112 44q62 0 105-36l5 0q134 82 335 82l5 4 70 267 242-36q0-1 2-1 1 0 0 1 2 1 12 16t14 18q34 32 82 32 49 0 83-32t33-82-33-84-83-35q-57 0-87 39t-30 96q-2-1-97 13t-110 17l-3 0q-2-2-16-53t-30-109-18-64l0-3 5-4q72 0 148-20t130-58l3-2q1 1 2 1t2 1q25 18 36 25t29 13 43 6q68 0 116-48t48-117q0-47-26-86t-70-60q0-195-260-303-41-18-56-23-32-10-91-19t-93-9q-120 0-231 35-2 2-72 38-95 51-152 116t-58 156l-5 0q-33 17-59 50l-9 12q-15 27-19 46t-4 50z m34-12q0-66 57-112 5 59 48 116t101 101q-37 26-82 26-49 0-86-40t-38-91z m102-146q0-54 31-104t80-85 102-60 105-34q75-14 146-14 123 0 233 39t185 123l-3 0q30 38 43 69t13 72q0 54-26 103t-70 84-92 61-100 38q-85 23-181 23-74 0-151-18t-150-54-119-99-46-144z m186 73q0 37 23 60t59 22 62-22 25-60q0-36-25-60t-62-24-59 24-23 60z m36-164l44 0q25-45 80-68t111-24q58 0 110 24t84 68l41 0q-25-62-93-96t-142-34q-72 0-141 35t-94 95z m336 164q0 38 23 60t61 22q34 0 58-24t24-58-24-59-58-25q-37 0-60 24t-24 60z m255 468q0-35 25-60t60-25q36 0 59 25t23 60q0 34-24 58t-58 24-59-24-26-58z m14-281q55-36 95-92t56-120q59 43 59 96 0 58-35 100t-93 42q-45 0-82-26z" horiz-adv-x="1205" />
<glyph glyph-name="stumbleupon-circled" unicode="&#xe84b;" d="M480 830q198 0 339-140t141-340q0-198-141-339t-339-141q-200 0-340 141t-140 339q0 200 140 340t340 140z m0-368q26 0 26-26l0-30 34-18 52 18 0 30q0 46-33 79t-79 33-80-33-34-79l0-160q0-26-26-26t-26 26l0 68-88 0 0-68q0-46 34-79t80-33 79 33 33 79l0 160q0 26 28 26z m252-186l0 68-86 0 0-68q0-26-26-26-28 0-28 26l0 68-52-16-34 16 0-68q0-46 33-79t81-33q46 0 79 33t33 79z" horiz-adv-x="960" />
<glyph glyph-name="path" unicode="&#xe84c;" d="M0 465q4 172 131 278 135 105 334 107 209-4 336-105 62-53 95-127t34-153q-4-164-125-263-127-100-330-102l0-60q-2-57-34-104t-80-70q-33-16-72-16-47 0-94 23l0 174q41-29 77-19 33 14 33 49l0 480 170 0 0-299q58 0 111 12 80 20 125 59 59 56 59 136 0 116-96 176-88 51-209 51-127-4-211-55-45-29-69-75t-25-97q8-105 47-142l-107-115q-47 46-75 121-23 78-25 136z" horiz-adv-x="930" />
<glyph glyph-name="dropbox" unicode="&#xe84d;" d="M0 311l214 163-214 162 311 203 203-174 208 174 302-193-198-165 198-170-307-185-203 156-203-156z m213-251l0 57 94-55 203 155 1-1 0-355z m5 416l294-185 296 196-294 169z m293-615l1 355 2 1 202-155 100 60 0-63z" horiz-adv-x="1024" />
<glyph glyph-name="paper-plane" unicode="&#xe84e;" d="M0 191q-2 18 14 28l937 625q8 6 18 6t18-6q15-10 13-31l-156-938q-4-13-16-21-7-4-15-4-6 0-12 2l-303 121-64-107q-10-16-28-16t-27 16l-115 201-244 97q-18 8-20 27z m98 11l189-77q2-2 5-3l3-2 527 564z m221-104l87-152 504 787z m183-62q12-2 20-4l265-108 125 748z" horiz-adv-x="1000" />
<glyph glyph-name="deviantart" unicode="&#xe850;" d="M0 143q2 49 19 94t52 92 112 81 178 47l2-43q-93-13-138-64t-65-133l207 0-6 340 114 0 0-84q248 4 386-79t135-251l-471 0 2 230q63 4 106-7l0-145 211-2q-12 49-34 87t-51 60-64 36-72 18-75 7-73-1l0-283-475 0z" horiz-adv-x="996" />
<glyph glyph-name="grooveshark" unicode="&#xe851;" d="M0 350q0 136 67 251t182 182 251 67 251-67 182-182 67-251-67-251-182-182-251-67-251 67-182 182-67 251z m129 0q0-65 36-77 5-2 17-4 42-1 85 40 41 36 58 90 25 77 10 200-2 12-2 17-3 6 0 9 1 3 13-1 38-10 78-29 46-21 102-70 45-39 87-89 33-39 80-104 41-57 88-77 29-10 48-7t29 20 15 37 4 45q0 48-12 96-3 12-8 28-14 43-41 84-52 79-135 124t-178 45q-66 0-125-22-80-28-140-89t-89-142q-1-5-4-14t-5-14q-12-50-11-96z" horiz-adv-x="1000" />
<glyph glyph-name="steam" unicode="&#xe853;" d="M0 470q0 55 39 94t93 39q47 0 84-29t46-75l502-202q32 19 68 19 2 0 7 0t7-1l110 159q1 73 53 125t125 51q74 0 126-52t52-126-52-126-126-52l-170-124q-5-51-43-85t-89-35q-48 0-84 30t-46 75l-502 201q-32-19-68-19-55 0-93 39t-39 94z m35 0q0-40 29-68t68-29q9 0 21 2l-41 16 0 1q-28 13-40 42-6 14-6 28 0 15 6 30 12 30 40 42 15 7 31 6 13 0 27-5l0 1 49-20q-29 52-87 52-40 0-68-28t-29-70z m710-333q29-52 87-52 40 0 69 29t29 69q0 40-28 69t-70 28q-14 0-21-2l40-16q30-12 43-42 7-15 7-30 0-14-6-29-12-31-42-43-15-6-30-6-14 0-29 6-8 3-24 10t-25 9z m270 335q0-49 35-84t84-35q50 0 85 35t35 84-35 84-85 35q-49 0-84-35t-35-84z m25 1q0-40 28-68t67-28q39 0 67 28t28 68q0 39-28 67t-67 28q-40 0-67-28t-28-67z" horiz-adv-x="1312" />
<glyph glyph-name="quora" unicode="&#xe854;" d="M0 399q0 122 60 226t161 165 223 60q184 0 315-132t130-319q0-119-57-220t-154-163q1-2 4-6t11-17 21-22 33-21 45-17l0-76q-36-7-67-7-50 0-85 18-56 29-91 94-48-13-105-13-120 0-222 61t-162 164-60 225z m221-59q0-116 67-198t160-83q26 0 52 8-2 3-5 9t-15 18-23 24-31 19-37 10l0 88q10 1 20 1 119 0 203-90 63 81 63 194l0 116q0 116-66 199t-161 82-160-82-67-199l0-116z" horiz-adv-x="889" />
<glyph glyph-name="angellist" unicode="&#xe855;" d="M0 136q0 63 28 98 23 31 74 45-16 40-16 59 0 33 35 70 37 35 69 35 17 0 40-9-48 137-69 208-24 81-24 115 0 48 24 75 25 28 67 28 72 0 173-295l17-49q6 15 12 33 100 292 180 292 40 0 63-27 24-27 24-70 0-28-24-113-21-73-66-200 57-14 82-54 27-43 27-133 0-178-106-291-108-113-274-113-66 0-127 24-59 21-107 66-51 48-76 99-26 54-26 107z m65 5q0-25 14-59 13-32 39-67 41-53 97-81 57-28 129-28 129 0 217 97 87 96 87 243 0 46-6 71-5 22-19 34-27 23-106 40-79 18-168 18-22 0-28-6-7-3-7-20 0-41 46-58 50-21 165-21l28 0q16 0 23-11 8-8 11-31-17-17-55-31-36-13-53-26-40-29-64-69-23-39-23-74 0-21 10-51 11-33 11-43l0-6-4-15q-44 3-64 41-17 32-19 82-3-1-12-1l-11 0q1-5 1-12 0-30-23-51t-54-21q-47 0-95 45-48 46-48 90 0 8 3 16 1 7 16 22 25-31 34-43 42-59 76-59 9 0 17 6 6 6 6 10 0 8-12 29-8 15-37 53-28 36-45 50-15 14-22 14-19 0-37-22t-18-55z m90 191q0-13 16-45 14-27 45-68 31-40 56-62 24-20 36-20 7 0 14 7 7 8 7 16 0 12-18 58-21 51-46 92-22 35-39 49-16 15-31 15-11 0-25-15-15-15-15-27z m45 432q0-34 24-107 22-71 66-190 10 6 28 6 1 0 7 0t10-1q4 0 26-2l-69 200q-28 80-44 104-13 21-26 21-9 0-15-8-7-9-7-23z m166-510q9-23 19-50 20 23 40 38-5 1-15 3t-15 2q-20 4-29 7z m105 204l67-12q45 124 69 199 25 81 25 96 0 16-7 25-4 7-15 7-14 0-31-27-19-29-43-101z" horiz-adv-x="716" />
<glyph glyph-name="icq" unicode="&#xe856;" d="M355 823c-31 7-57 4-84-10-29-18-46-47-53-86-7-41 0-80 21-120l10-14-34 11c-42 10-82 4-121-17-41-21-66-50-83-91-16-40-15-78 5-113 9-16 21-28 33-37 17-17 38-27 63-31l10-3-21-18c-20-17-31-38-38-59-7-26-4-51 10-75 7-11 14-21 25-28 11-10 25-17 42-18 31-7 64-7 99 4l-25-42-7-19c-15-45-10-84 11-125 10-16 21-30 32-43 17-15 38-25 64-32 42-11 84-10 125 11 40 21 65 55 78 98l1 8c27-30 52-49 80-56 29-9 57-7 82 9 24 15 41 39 50 68 7 31 7 62 0 97 14-9 28-16 45-21 45-14 84-12 124 9 38 21 63 55 76 99 11 42 8 83-13 122l-7 11c-11 17-22 34-39 46-14 9-31 16-47 24 44 21 75 50 89 88 10 31 7 57-7 82l0 3c-17 28-40 46-75 56-21 5-45 5-66 3l-47-10 16 36c14 45 10 88-14 129l-4 7c-22 36-53 57-95 68-44 11-84 7-124-14-39-21-68-54-80-96l0-3-2-10-5 10-14 26c-23 35-51 56-86 66z m359-85c7-14 11-31 11-49l-4-31c-5-16-13-30-21-42l-127-156c-13 10-27 17-41 24l-14 160-1 56 1 14c7 28 27 50 52 64 26 14 54 17 81 7 29-7 50-23 63-47z m-437-28c1 25 11 42 28 52 9 7 21 7 33 2 25-8 46-26 63-61 7-14 14-28 17-45l28-167-21-7-125 137-7 14c-12 26-19 50-16 75z m-76-165l38-15 124-91c-11-14-18-28-22-42l-204-25-14 2c-25 5-42 16-53 37-11 21-11 42-3 64 10 26 28 47 55 59 25 14 51 18 79 11z m134-230l10-28 4-10c-21-18-37-35-54-51l-42-35-11-7c-27-13-50-17-74-14-21 1-38 8-45 21l-4 16 3 12c7 21 25 43 58 58 17 7 31 14 42 17l113 21z m440 229c25 11 49 14 74 11 24-3 41-14 50-31l5-18-2-15c-10-25-31-45-67-60-14-7-29-10-46-13l-174-21-2 10-3 4 5 7 143 119 17 7z m-360-134c17 15 40 25 66 25 26 0 50-10 65-25 20-20 29-41 29-67s-9-49-29-66c-18-18-39-28-65-28-26 0-49 10-66 28-18 17-28 41-28 66s10 47 28 67z m33-205c2-48 7-98 14-153l0-57-2-14c-10-25-26-47-52-58-25-14-52-17-77-10-29 7-50 24-61 47-7 14-13 31-13 48l7 32c3 14 10 28 22 40l118 141c14-7 28-14 44-16z m108 19l59-61 37-45 7-14c13-24 20-47 17-74-3-25-11-43-28-50-10-8-21-8-33-6-26 7-48 28-63 62l-17 47-21 122 24 9 18 10z m64 87l159 14 56 1 14-1c22-7 41-20 53-41 14-15 21-36 21-60l-4-29c-7-28-24-49-48-60-26-14-51-17-79-7-17 4-29 11-38 22l-148 123 9 21 5 17z" horiz-adv-x="981" />
<glyph glyph-name="attach" unicode="&#xe85a;" d="M0 99q0 91 64 155l456 451q82 82 199 82t199-82 82-199-82-199l-344-342q-21-23-44-1t1 44l338 340q65 63 65 153t-65 156-155 64-153-64l-454-448q-44-45-44-109t45-110 111-46 109 45l457 451q27 27 27 66t-27 67-66 27-67-27l-341-344q-24-22-45 1t0 44l341 344q47 44 112 44t110-45 46-111-45-111l-457-449q-64-65-155-65t-154 64-64 154z" horiz-adv-x="1000" />
<glyph glyph-name="thumbs-up" unicode="&#xe85b;" d="M0-56l0 500q0 39 27 66t67 28l94 0q32 0 60-24 12 6 33 16 123 64 125 226 0 39 28 67t66 27q57 0 105-64t49-147q0-66-8-103 237-6 266-14 43-12 66-43t22-63l0-23q-2-39-27-68 17-34 11-75-7-54-41-86 16-37 0-83-17-59-52-83 7-27 0-54-6-18-14-34-33-60-111-60l-172 0q-92 0-186 21-92 22-127 30l-2 0q0 2-3 2l-4 0 0 2q-28-55-84-55l-94 0q-39 0-67 27t-27 67z m63 0q0-14 8-23t23-9l94 0q13 0 22 9t9 23l0 500q0 13-9 22t-22 9l-94 0q-14 0-23-9t-8-22l0-500z m31 47q0 19 13 33t34 14 33-14 14-33-14-34-33-13-34 13-13 34z m31 0q0-16 16-16t15 16-15 15-16-15z m125 3q0-23 27-27 22-6 145-35 88-20 172-20l172 0q41 0 56 28 6 15 8 23 6 12-2 28t-29 15l-49 0q-16 0-16 16t16 16l51 0q31 0 49 10t22 20 11 30q21 65-39 65l-63 0q-15 0-15 15t15 16l74 0q57 0 69 66 2 22-9 40t-42 19l-61 0q-15 0-15 15t15 16l63 0q61 0 62 45l0 21q0 38-37 47-45 12-337 12 19 59 24 84t5 80q0 57-32 103t-60 45q-31 0-31-31-2-92-46-173t-142-122q-2 0-4-1l-2-1q-25-7-25-33l0-432z" horiz-adv-x="1000" />
<glyph glyph-name="vine" unicode="&#xe863;" d="M835 389v-111q-56-13-110-13-36-76-92-151t-102-120-71-60q-45-25-91 2-15 9-33 24t-48 47-57 72-60 102-59 136-51 176-39 218h158q14-122 39-223t58-177 68-131 78-109q94 94 160 227-79 40-124 122t-45 186q0 107 58 176t158 68q99 0 152-59t53-166q0-89-32-159-4-1-11-2t-25-1-36 3-34 14-28 29q17 58 17 103 0 48-16 73t-44 26q-30 0-48-28t-18-78q0-104 59-164t149-60q35 0 67 8z" horiz-adv-x="857.1" />
<glyph glyph-name="eye-outline" unicode="&#xe868;" d="M469 559q-98 0-171-53-78-55-165-156 85-99 165-155 73-52 171-52t171 52q80 56 165 155-87 101-165 156-74 53-171 53z m0 104q132 0 231-72 60-42 119-103t89-99l30-39q-12-16-32-43t-83-91-123-107q-99-71-231-71-134 0-233 71-60 42-119 103t-88 99l-29 39q11 16 32 43t82 91 122 107q99 72 233 72z m0-260q21 0 37-16t15-37-15-36-37-15-37 15-16 36 16 37 37 16z m0-209q-65 0-111 45t-45 111 45 111 111 45 110-45 46-111-46-111-110-45z m0 261q-43 0-73-31t-31-74q0-42 30-73t74-31 74 31 30 73q0 44-31 74t-73 31z" horiz-adv-x="938" />
<glyph glyph-name="mic-outline" unicode="&#xe869;" d="M365 142q-86 0-147 61t-62 147l0 313q0 86 62 147t147 62 147-62 61-147l0-313q0-86-61-147t-147-61z m0 625q-44 0-74-31t-31-73l0-313q0-42 31-73t74-30q43 0 73 30t31 73l0 313q0 42-31 73t-73 31z m364-417q0-136-90-238t-223-122l0-56 157 0q21 0 36-16t16-37-16-36-36-16l-417 0q-21 0-37 16t-15 36 15 37 37 16l157 0 0 56q-134 19-224 122t-89 238l0 104q0 21 16 37t37 16 36-16 15-37l0-104q0-107 77-183t184-77 184 77 76 183l0 104q0 21 16 37t37 16 36-16 15-37l0-104z" horiz-adv-x="729" />
<glyph glyph-name="camera-outline" unicode="&#xe86a;" d="M885-66l-729 0q-65 0-110 46t-46 110l0 417q0 65 46 110t110 46l83 0 52 52q23 23 58 37t67 15l209 0q33 0 68-15t58-37l52-52 82 0q65 0 111-46t45-110l0-417q0-65-45-110t-111-46z m-729 625q-21 0-37-16t-15-36l0-417q0-21 15-37t37-15l729 0q21 0 37 15t16 37l0 417q0 21-16 36t-37 16l-104 0q-21 0-36 15l-67 68q-22 21-53 21l-209 0q-30 0-51-21l-67-68q-15-15-38-15l-104 0z m365-105q-53 0-92-38t-39-92 39-92 92-38 92 38 38 92-38 92-92 38z m0 53q77 0 129-54t53-129q0-75-54-129t-128-53q-76 0-129 53t-53 129q0 76 53 129t129 54z m313 16q27 0 47-20t20-49-19-48-48-19-49 20-20 47q0 29 20 49t49 20z" horiz-adv-x="1041" />
<glyph glyph-name="feather" unicode="&#xe86c;" d="M60-138q-6-20-26-8-18 8-16 34 4 100 50 226-100 154-52 316 10-32 32-78t44-80 32-30q8 4 0 83t-11 166 25 157q22 44 80 94t104 70q-24-46-33-94t-4-78 21-32q12 0 84 120t106 122q46 4 114-29t82-65q12-24 0-79t-40-83q-44-44-146-62t-114-24q-16-10 12-34 54-48 176-20-56-80-136-114t-132-38-54-10q-4-24 49-54t101-14q-30-56-63-84t-54-35-76-11-85-8z" horiz-adv-x="698" />
<glyph glyph-name="mail" unicode="&#xe87e;" d="M929 11v428q-18-20-39-36-149-115-238-189-28-24-46-37t-48-28-57-13h-2q-26 0-57 13t-48 28-46 37q-88 74-238 189-21 16-39 36v-428q0-7 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 83-159 107-84 223-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
<glyph glyph-name="vcard-1" unicode="&#xe884;" d="M900 750q42 0 71-29t29-71l0-600q0-40-29-70t-71-30l-800 0q-40 0-70 30t-30 70l0 600q0 42 30 71t70 29l800 0z m0-700l0 600-800 0 0-600 800 0z m-450 196l0-90-250 0 0 90 250 0z m0 150l0-90-250 0 0 90 250 0z m0 150l0-90-250 0 0 90 250 0z m346-320l4-70-250 0q0 70 6 70 84 22 84 66 0 16-27 56t-27 88q0 110 90 110t90-110q0-48-28-88t-28-56q0-20 21-36t43-22z" horiz-adv-x="1000" />
<glyph glyph-name="music-outline" unicode="&#xe885;" d="M729 797q42 0 74-31t31-73l0-529q0-86-70-147t-165-61q-93 0-159 57-30-50-85-80t-120-29q-96 0-166 61t-69 148q0 66 44 120t112 76l0 318q0 40 27 69t65 34l468 65q2 0 7 1t6 1z m-313-633q0 59 45 103t112 52l0 90-157-22 0-223z m313 0l0 529-469-66 0-413q-17 3-25 3-55 0-93-31t-38-73q0-44 39-75t92-30 92 30 38 75l0 319 260 38 0-203q-17 2-26 2-54 0-92-31t-38-74 38-74 92-30 92 30 38 74z" horiz-adv-x="834" />
<glyph glyph-name="location-outline" unicode="&#xe888;" d="M416 741q-128 0-221-90-91-88-91-216 0-126 91-215l221-219 223 219q90 88 90 215 0 129-90 216-93 90-223 90z m0 104q174 0 295-120t122-290-122-290l-295-290-293 290q-123 120-123 290t123 290 293 120z m0-286q-52 0-91-39t-39-92 39-92q38-37 91-37 55 0 93 37 39 39 39 92t-39 92-93 39z m0 52q75 0 129-53t54-129-54-129-129-54-128 54-54 129 54 129 128 53z" horiz-adv-x="833" />
<glyph glyph-name="coffee" unicode="&#xe88b;" d="M678-15l-625 0q-22 0-37 16t-16 37 16 36 37 16l625 0q21 0 36-16t15-36-15-37-36-16z m25 730q75 0 128-54t54-128-54-129-128-54l-25 0 0-104q0-43-32-74t-73-31l-417 0q-42 0-73 31t-30 74l0 469 650 0z m-130-469l0 364-417 0 0-364 417 0z m130 208q32 0 55 23t23 56q0 31-23 54t-55 23l-78 0 0-156 78 0z" horiz-adv-x="885" />
<glyph glyph-name="graduation-cap" unicode="&#xe88f;" d="M0 600q0 33 21 59t51 33l407 94q11 1 21 1t22-1l406-94q31-8 51-33t21-59-21-59-51-33l-84-19 0-264q0-68-84-112t-260-44-260 44-84 112l0 264-84 19q-31 8-51 33t-21 59z m63 0q0-25 23-31l406-94 16 0 406 94q23 6 23 31t-23 31l-406 94-16 0-406-94q-23-6-23-31z m156-375q0-20 29-40t97-37 155-17 155 17 97 37 29 40l0 250-259-61q-12-1-22-1t-21 1l-260 61 0-250z m656-250q0 31 20 78t42 47 43-47 20-78q0-25-19-44t-44-19-43 19-19 44z m31 188l0 281q0 13 9 22t22 9 23-9 9-22l0-281q0-14-9-23t-23-9-22 9-9 23z" horiz-adv-x="1000" />
<glyph glyph-name="camera" unicode="&#xe890;" d="M0 6l0 469q0 35 23 61t55 31l135 23 43 108q12 27 35 43t53 15l312 0q30 0 53-15t35-43l43-108 135-23q33-6 56-31t22-61l0-469q0-39-27-66t-67-28l-812 0q-39 0-67 28t-27 66z m63 0q0-13 8-22t23-9l812 0q14 0 23 9t8 22l0 469q0 27-25 31l-170 28-56 140q-8 20-30 20l-312 0q-22 0-30-20l-56-140-170-28q-25-4-25-31l0-469z m187 282q0 103 73 176t177 74 177-74 73-176-73-177-177-73-177 73-73 177z m63-15q5-77 65-128t137-45 128 65 45 137-66 128-137 45-128-65-44-137z m62 15q0 50 36 87t89 38q16 0 16-16t-16-16q-39 0-66-27t-28-66q0-16-15-16t-16 16z" horiz-adv-x="1000" />
<glyph glyph-name="eye" unicode="&#xe891;" d="M0 341l0 18q0 1 2 3l0 4q70 130 206 213t290 83 291-83 205-215l1-1 1-1 0-4q2-6 2-8t-2-8l0-4-1-1-1-1q-68-132-205-215t-291-83-290 83-206 215l0 2q-2 2-2 3z m66 9q65-113 183-182t250-68 250 68 183 182q-65 113-183 182t-250 68-250-68-183-182z m213 0q0 90 65 154t154 65 154-65 65-154-65-154-154-65-154 65-65 154z m32 0q0-78 54-133t133-54 133 54 55 133-55 133-133 55-133-55-54-133z m62 0q0 53 37 89t88 36q16 0 16-16t-16-15q-37 0-65-28t-29-66q0-16-15-16t-16 16z" horiz-adv-x="998" />
<glyph glyph-name="beaker" unicode="&#xe892;" d="M2 354q10 49 55 68l424 170q-12 20-12 41 0 33 23 57l43 43q24 23 56 23t56-23l240-240q23-24 23-56t-23-56l-43-45q-24-21-55-21-23 0-43 12l-168-418q-17-47-68-57-8-2-18-2l-4 0q-37 0-62 27l-398 393q-36 35-26 84z m62-11q-3-16 8-28l397-393q10-10 21-10l8 0q16 4 24 20l146 371q-58 61-123 85t-146 33-123 23l-194-78q-15-6-18-23z m186-24q0 25 19 44t44 18 44-18 18-44-18-44-44-19-44 19-19 44z m31 0q0-14 9-23t23-8 22 8 9 23-9 22-22 9-23-9-9-22z m43 144q30-6 80-13 59-6 93-13t87-33 98-70l41 102 55-55q11-11 21 0l45 45q12 10 0 22l-242 242q-10 10-22 0l-45-45q-9-12 0-22l55-54z m51-332q0 14 9 23t22 9 23-9 9-23-9-22-23-9-22 9-9 22z m63 141q0 33 22 56t56 22 55-22 23-56-23-56-55-22-56 22-22 56z m31 0q0-20 14-33t33-14 33 14 14 33-14 33-33 14-33-14-14-33z m375 500q0 33 22 56t56 22 56-22 22-56-22-56-56-22-56 22-22 56z m31-172q0 14 9 22t22 9 23-9 9-22-9-22-23-9-22 9-9 22z m0 172q0-20 14-33t33-14 33 14 14 33-14 33-33 14-33-14-14-33z" horiz-adv-x="1000" />
<glyph glyph-name="music" unicode="&#xe896;" d="M10-45q-22 57 5 118 37 76 131 107 39 14 78 14 69 0 119-37l0 537q0 23 15 40t36 22l531 94 12 0q24 0 41-16 22-17 22-47l0-656q0-35-16-66-37-76-131-108-39-13-78-13-60 0-107 28t-65 77q-21 57 6 117 37 77 131 108 39 14 78 14 68 0 119-38l0 379-519-91-12 0 0-500q0-36-16-67-37-76-131-107-39-14-78-14-60 0-107 28t-64 77z m57 22q15-41 66-58t107 3 85 62 13 83-66 57-106-2-85-62-14-83z m337 623l531 94 0 93-531-93 0-94z m256-529q15-41 66-58t107 3 85 62 13 83-66 57-107-3-84-61-14-83z" horiz-adv-x="1000" />
<glyph glyph-name="photo" unicode="&#xe897;" d="M0-25l0 750q0 53 36 89t89 36l687 0q53 0 89-36t36-89l0-750q0-53-36-89t-89-36l-687 0q-53 0-89 36t-36 89z m63 0q0-25 18-44t44-19l687 0q26 0 44 19t19 44l0 750q0 25-19 44t-44 18l-687 0q-25 0-44-18t-18-44l0-750z m62 156l0 563q0 13 9 22t22 9l625 0q14 0 23-9t9-22l0-563q0-13-9-22t-23-9l-625 0q-13 0-22 9t-9 22z m31 0l483 0-88 100-18 21-252 286-125-145 0-262z m0 311l102 117q10 10 23 10t24-10l246-281 82 94q10 9 23 9t24-9l101-112 0 434-625 0 0-252z m344 96q0 39 27 66t67 27 66-27 28-66-28-67-66-27-67 27-27 67z m31 0q0-26 19-44t44-19 44 19 18 44-18 43-44 19-44-19-19-43z m41-284l108-123 101 0 0 82-125 137z" horiz-adv-x="937" />
<glyph glyph-name="truck" unicode="&#xe89b;" d="M0 319l0 343q0 40 27 67t67 27l469 0q39 0 66-27t27-67l0-62 125 0q51 0 78-41l125-187q16-24 16-53l0-188q0-39-27-66t-67-27l-35 0q-12-42-45-68t-76-26-76 26-45 68l-164 0q-12-42-45-68t-76-26-76 26-45 68l-35 0q-40 0-67 27t-27 66l0 94q-39 0-67 27t-27 67z m63 0q0-14 8-23t23-8l469 0q13 0 22 8t9 23l0 343q0 14-9 23t-22 9l-469 0q-14 0-23-9t-8-23l0-343z m93-188q0-13 9-22t23-9l35 0q11 41 45 67t76 27 76-27 45-67l164 0q12 41 45 67t76 27 76-27 45-67l35 0q14 0 23 9t8 22l0 188q0 10-5 17l-125 188q-8 14-26 14l-125 0 0-219q0-39-27-67t-66-27l-407 0 0-94z m125-62q0-26 19-44t44-19 44 19 18 44-18 44-44 18-44-18-19-44z m407 0q0-26 18-44t44-19 44 19 18 44-18 44-44 18-44-18-18-44z m0 219l0 187q0 14 8 22t23 9l31 0q18 0 25-13l94-141q6-8 6-18l0-46q0-14-9-23t-22-9l-125 0q-14 0-23 9t-8 23z m31 0l125 0 0 46-94 141-31 0 0-187z" horiz-adv-x="1000" />
<glyph glyph-name="shop" unicode="&#xe89e;" d="M0 413l0 31q0 31 20 56l93 125q4 6 12 14l0 148q0 26 19 44t44 19l624 0q26 0 44-19t19-44l0-148q8-8 12-14l93-125q20-25 20-56l0-31q0-40-27-67t-67-27l0-407q0-25-18-43t-44-19l-688 0q-25 0-44 19t-18 43l0 407q-39 0-67 27t-27 67z m63 0q0-14 8-23t23-9l58 0 125 219-89 0q-16 0-26-12l-94-125q-5-9-5-19l0-31z m93-501l203 0 0 313q0 14 9 22t23 9l234 0q14 0 22-9t9-22l0-313 188 0 0 407-688 0 0-407z m32 469l130 0 63 219-68 0z m0 281l624 0 0 125-624 0 0-125z m164-281l132 0 0 219-70 0z m39-469l234 0 0 313-234 0 0-313z m125 469l132 0-62 219-70 0 0-219z m103 219l63-219 130 0-124 219-69 0z m104 0l125-219 58 0q14 0 23 9t8 23l0 31q0 10-5 19l-94 125q-10 12-26 12l-89 0z" horiz-adv-x="1000" />
<glyph glyph-name="diamond" unicode="&#xe89f;" d="M0 502q0 28 18 45l160 158q17 20 43 20l558 0q26 0 43-20l160-158q18-17 18-43 0-23-16-43l-437-465q-20-21-47-21t-47 21l-437 465q-16 18-16 41z m63 4l134 0 84 84-72 61z m27-31l307-328-196 328-111 0z m146 0l231-383-76 383-155 0z m4 31l143 0-78 65z m2 156l61-50 51 50-112 0z m84-70l80-66 71 58-86 71z m96-117l78-389 78 389-156 0z m8 31l140 0-70 57z m0 156l70-58 68 58-138 0z m95-78l69-58 80 66-65 63z m8-492l231 383-155 0z m71 55l306 328-111 0z m13 359l143 0-65 65z m29 156l51-50 61 50-112 0z m73-72l84-84 133 0-145 145z" horiz-adv-x="1000" />
<glyph glyph-name="wallet" unicode="&#xe8a1;" d="M0 22l0 625q0 70 51 121t121 51l640 0q40 0 67-28t27-66l0-281q94-71 94-188t-94-187l0-47q0-70-51-121t-121-51l-562 0q-70 0-121 51t-51 121z m63 0q0-45 32-77t77-33l562 0q45 0 78 33t32 77l0 47-281 0q-65 0-111 46t-46 110 46 110 111 46l281 0 0 63q0 13-9 22t-23 9l-640 0q-63 0-109 39l0-492z m0 625q0-45 31-76l0 123q0 13 9 22t22 9l656 0q14 0 23-9t9-22l0-156q15 0 31-6l0 193q0 14-9 22t-23 9l-640 0q-45 0-77-32t-32-77z m62-98q23-11 47-11l609 0 0 31-656 0 0-20z m0 51l656 0 0 31-656 0 0-31z m0 62l656 0 0 32-656 0 0-32z m344-437q0-39 27-66t67-28l320 0q54 51 54 125 0 59-35 104l0-2q-4-8-7-14-20-25-51-25l-281 0q-40 0-67-28t-27-66z m31 0q0 25 19 44t44 19 43-19 19-44-19-44-43-18-44 18-19 44z" horiz-adv-x="1000" />
<glyph glyph-name="database" unicode="&#xe8a3;" d="M0 53l0 594q0 98 131 150t307 53 306-53 131-150l0-594q0-98-131-150t-306-53-307 53-131 150z m63 0q0-59 109-100t266-41 265 41 109 100l0 117q-46-48-150-75t-224-26-225 26-150 75l0-117z m0 188q0-59 109-100t266-41 265 41 109 100l0 117q-46-49-150-75t-224-27-225 27-150 75l0-117z m0 187q0-58 109-99t266-41 265 41 109 99l0 108q-58-45-160-69t-214-23-215 23-160 69l0-108z m0 219q0-59 109-100t266-41 265 41 109 100-109 99-265 41-266-41-109-99z m625-609q0 13 8 22t23 9 22-9 9-22-9-23-22-9-23 9-8 23z m0 187q0 14 8 22t23 9 22-9 9-22-9-22-22-9-23 9-8 22z m0 188q0 13 8 22t23 9 22-9 9-22-9-23-22-9-23 9-8 23z" horiz-adv-x="875" />
<glyph glyph-name="globe" unicode="&#xe8a7;" d="M0 366q0 201 142 342t342 142 343-142 142-342-142-343-343-142-342 142-142 343z m63-16q7-166 125-283 52 37 109 60-43 106-47 223l-187 0z m0 31l187 0q4 104 37 196-62 25-117 68-102-113-107-264z m128 287q51-39 108-62 43 101 117 176-131-22-225-114z m20-623q88-76 205-95-64 64-105 148-53-19-100-53z m70 305q4-111 45-213 69 22 143 26l0 187-188 0z m0 31l188 0 0 157q-78 3-153 29-31-88-35-186z m47 215q69-23 141-27l0 218-2 0q-90-76-139-191z m12-486q49-100 127-166l2 0 0 187q-69-4-129-21z m160-166l2 0q78 66 127 166-61 17-129 21l0-187z m0 219q74-4 143-26 41 102 45 213l-188 0 0-187z m0 218l188 0q-4 98-36 186-74-26-152-29l0-157z m0 188q72 4 141 27-49 115-139 191l-2 0 0-218z m53-619q117 19 205 95-47 34-100 53-41-84-105-148z m0 832q74-75 117-176 57 23 107 62-93 92-224 114z m119-655q57-23 109-60 117 117 125 283l-187 0q-4-117-47-223z m10 450q33-92 37-196l187 0q-6 151-107 264-55-43-117-68z" horiz-adv-x="969" />
<glyph glyph-name="phone-outline" unicode="&#xe8a8;" d="M964 733q31-31 52-74t27-109-12-137-74-163-149-185q-237-237-454-237-134 0-215 81l-93 93q-46 46-46 111t46 110l83 83q46 46 110 46t110-46l72-71 218 216-73 72q-46 47-46 111t46 111l83 82q45 45 111 45 65 0 110-45z m-324-62q-15-15-15-37t15-37l56-56 157 156-57 56q-15 15-36 15-22 0-37-15z m-521-595l57-56 157 156-58 56q-15 15-36 15t-36-15l-84-82q-15-15-15-37t15-37z m615 62q81 82 130 159t64 133 11 105-17 78-32 47l-156-157 15-15q15-15 15-37t-15-36l-291-292q-15-15-37-15-22 0-37 15l-15 17-156-158q50-50 141-50 174 0 380 206z" horiz-adv-x="1044" />
<glyph glyph-name="tree" unicode="&#xe8ab;" d="M927 96q21-28 5-56t-46-29l-364 0 0-156q0-22-16-37t-36-15-37 15-16 37l0 156-364 0q-30 0-46 29t5 56l141 176-48 0q-29 0-45 26t2 55q365 522 366 523 15 20 42 21t42-22l365-522q18-28 2-55t-44-26l-49 0z m-405 20l256 0-141 175q-21 27-5 56t46 29l57 0-265 377-265-377 56 0q30 0 46-29t-5-56l-141-175 256 0 0 260q0 21 16 37t37 15 36-15 16-37l0-260z" horiz-adv-x="939" />
<glyph glyph-name="lightbulb" unicode="&#xe8ad;" d="M0 506q0 143 101 243t243 101 243-101 101-243q0-54-30-121t-71-140-56-116q-15-39-31-94t-24-82-27-53-42-39-63-11-64 11-41 39-26 53-25 82-32 94q-13 43-55 117t-72 139-29 121z m63 0q0-64 82-213 37-64 52-99l293 0q16 35 53 99 82 151 82 213 0 117-82 199t-199 82-199-82-82-199z m93 0q0 78 55 133t133 55q15 0 15-16t-15-16q-65 0-111-45t-45-111q0-15-16-15t-16 15z m67-375q11-33 19-60l213 27q2 12 10 33l-242 0z m29-90q10-35 18-60l154 19q6 16 12 38 2 5 4 15t3 12z m29-89q12-26 25-33t38-7q29 0 43 10t27 45z" horiz-adv-x="687" />
<glyph glyph-name="clock" unicode="&#xe8ae;" d="M0 350q0 121 86 213l43 236q4 22 21 36t41 15l250 0q22 0 39-15t22-36l45-244q57-64 72-144l2 1q2 1 4 1 25 0 44-19t19-44-19-44-44-18q-2 0-4 0l-2 1q-17-84-76-148l-45-240q-4-22-20-36t-40-15l-250 0q-24 0-40 15t-21 36l-45 240q-82 90-82 209z m63 0q0-103 73-177t177-73 176 73 74 177-74 177-176 73-177-73-73-177z m31 0q0 14 9 22t22 9 23-9 8-22-8-22-23-9-22 9-9 22z m54-132q0 13 9 22t23 8 22-8 9-22-9-22-22-10-23 10-9 22z m0 265q0 13 9 22t23 9 22-9 9-22-9-23-22-8-23 8-9 23z m8-402l32-169 250 0 31 169q-74-43-156-43t-157 43z m4 539q74 42 156 42t157-42l-32 167-250 0z m121-457q0 13 9 22t23 9 22-9 9-22-9-23-22-9-23 9-9 23z m0 187q0 14 10 22l162 134q8 6 14-1t2-14l-76-94-59-70q-8-8-21-8t-23 9-9 22z m0 188q0 13 9 22t23 9 22-9 9-22-9-23-22-9-23 9-9 23z m133-320q0 13 9 22t21 8 23-8 10-23q0-12-10-21t-23-10-21 10-9 22z m55 132q0 14 9 22t22 9 22-9 9-22-9-22-22-9-22 9-9 22z" horiz-adv-x="687" />
<glyph glyph-name="location" unicode="&#xe8b1;" d="M0 475q0 156 109 266t266 109 266-109 109-266q0-78-28-160t-85-166-101-141-110-133q-20-25-49-25l-4 0q-29 0-49 25-66 77-110 133t-101 141-85 166-28 160z m63 0q0-72 28-150t85-161 95-128 100-120l2 0q2-2 2-4l4 4q62 73 100 120t94 128 86 161 29 150q0 129-92 221t-221 91-221-91-91-221z m125 8q0 78 54 133t133 54 133-54 55-133-55-133-133-55-133 55-54 133z m31 0q0-65 46-111t110-45 110 45 46 111-46 110-110 46-110-46-46-110z" horiz-adv-x="750" />
<glyph glyph-name="pencil" unicode="&#xe8b3;" d="M0-41q0 4 1 8t1 8 1 8 1 6l0 2 74 267q10 31 31 53l325 324 0 2 2 2 150 152q60 59 146 59 106 0 186-80 74-74 81-171t-58-161l-476-481q-24-23-55-31l-263-70-3-1q-3-1-7-2t-9-1-10-1-9-1q-45 0-77 32t-32 77z m63 0q0-19 13-33t33-14q6 0 22 4l115 32q4 58-43 105-45 45-105 43l-32-119q-3-14-3-18z m44 168q67-2 118-52t52-120l116 30 11 6q41 47 34 115t-61 121q-51 49-115 59t-112-24q-7-10-11-21z m131 225q45-2 90-20l295 295q-88 22-144-33z m119-35q38-20 65-45 21-22 41-55l297 299q-16 31-39 55-30 29-67 45z m122-129q17-41 21-82l0-24 242 245 0 2q61 60 31 156z m101 508q106 0 186-80 70-73 78-166l0-22 52 55q45 45 41 111-5 74-62 131-63 62-143 62-60 0-101-41z" horiz-adv-x="1000" />
<glyph glyph-name="cup" unicode="&#xe8b4;" d="M0 538l0 93q0 26 17 43t42 20l39 113q13 43 58 43l563 0q45 0 58-43l39-113q24-2 41-20t18-43l0-93q0-26-19-44t-44-19l-33 0 1-3q1-3 1-5l-62-562q-4-24-22-39t-41-16l-437 0q-24 0-41 16t-22 39l-62 562q0 2 1 5l1 3-33 0q-26 0-44 19t-19 44z m63 0l749 0 0 93-749 0 0-93z m62 156l625 0-31 93-563 0z m31-219l10-94 543 0 10 94-563 0z m14-125l35-312 465 0 35 312-535 0z m39-344l10-94 437 0 10 94-457 0z" horiz-adv-x="875" />
<glyph glyph-name="doc" unicode="&#xe8b5;" d="M0-25l0 625q0 39 27 66t67 28l31 0 0 62q0 39 27 67t67 27l687 0q39 0 67-27t27-67l0-781q0-53-36-89t-89-36l-750 0q-53 0-89 36t-36 89z m63 0q0-25 18-44t44-19l750 0q25 0 44 19t18 44l0 781q0 14-8 23t-23 8l-687 0q-14 0-23-8t-8-23l0-750q0-13-9-22t-23-9-22 9-9 22l0 625-31 0q-14 0-23-9t-8-22l0-625z m187 16q0 15 16 15l250 0q15 0 15-15t-15-16l-250 0q-16 0-16 16z m0 93q0 16 16 16l250 0q15 0 15-16t-15-15l-250 0q-16 0-16 15z m0 94q0 16 16 16l250 0q15 0 15-16 0-6-5-11t-10-4l-250 0q-16 0-16 15z m0 94q0 16 16 16l593 0q16 0 16-16t-16-16l-593 0q-16 0-16 16z m0 94q0 15 16 15l593 0q16 0 16-15t-16-16l-593 0q-16 0-16 16z m0 109l0 219q0 13 9 22t22 9l219 0q14 0 22-9t9-22l0-219q0-14-9-22t-22-9l-219 0q-13 0-22 9t-9 22z m63 31l156 0 0 156-156 0 0-156z m281-515q0 15 15 15l250 0q16 0 16-15t-16-16l-250 0q-15 0-15 16z m0 93q0 16 15 16l250 0q16 0 16-16t-16-15l-250 0q-15 0-15 15z m0 94q0 16 15 16l250 0q16 0 16-16 0-6-5-11t-11-4l-250 0q-15 0-15 15z m0 281q0 16 15 16l250 0q16 0 16-16t-16-15l-250 0q-15 0-15 15z m0 94q0 16 15 16l250 0q16 0 16-16t-16-15l-250 0q-15 0-15 15z m0 94q0 15 15 15l250 0q16 0 16-15t-16-16l-250 0q-15 0-15 16z" horiz-adv-x="1000" />
<glyph glyph-name="t-shirt" unicode="&#xe8b8;" d="M4 580q-14 41 20 69l156 125q17 13 39 13l562 0q22 0 39-13l157-125q33-28 19-69l-62-187q-10-29-39-39-10-4-20-4-18 0-31 8l0-383q0-25-19-44t-44-19l-562 0q-26 0-44 19t-19 44l0 383q-13-8-31-8-10 0-19 4-30 10-39 39z m59 20l62-187 94 62 0-500 562 0 0 500 94-62 63 187-157 125-131 0q-13-41-54-67t-96-27-96 27-54 67l-131 0z m320 125q14-27 45-45t72-18 72 18 45 45l-234 0z" horiz-adv-x="1000" />
<glyph glyph-name="search" unicode="&#xe8be;" d="M0-41q0 47 33 80l260 260q-43 82-43 176 0 154 109 265t266 110 266-110 109-266-109-265-266-109q-94 0-176 43l-260-260q-33-33-80-33-45 0-77 32t-32 77z m55 1q0-22 16-39t39-16 40 17l252 252q-45 33-78 78l-252-252q-17-17-17-40z m258 515q0-129 91-221t221-91 221 91 91 221-91 221-221 91-221-91-91-221z m93 0q0 90 65 154t154 65q16 0 16-16t-16-16q-78 0-133-54t-54-133q0-16-16-16t-16 16z" horiz-adv-x="1000" />
<glyph glyph-name="tablet" unicode="&#xe8bf;" d="M678 741q21 0 36-15t15-36l0-625q0-22-15-37t-36-16l-183 0q0-21-16-37t-36-16-37 16-16 37l-181 0q-21 0-37 16t-16 37l0 625q0 21 16 36t37 15l469 0z m0-676l0 625-469 0 0-625 469 0z m51 832q65 0 110-46t46-110l0-782q0-65-46-110t-110-46l-573 0q-65 0-110 46t-46 110l0 782q0 65 46 110t110 46l573 0z m52-938l0 782q0 21-15 37t-37 15l-573 0q-21 0-37-15t-15-37l0-782q0-21 15-36t37-15l573 0q21 0 37 15t15 36z" horiz-adv-x="885" />
<glyph glyph-name="briefcase" unicode="&#xe8c0;" d="M781 610q65 0 111-45t46-111l0-364q0-65-46-110t-111-46l-625 0q-65 0-110 46t-46 110l0 364q0 65 46 111t110 45q0 65 46 111t111 46l312 0q65 0 111-46t45-111z m-468 53q-22 0-37-16t-16-37l418 0q0 22-16 37t-37 16l-312 0z m521-573l0 52-730 0 0-52q0-21 15-37t37-15l625 0q22 0 37 15t16 37z m-730 104l730 0 0 260q0 21-16 37t-37 16l-625 0q-21 0-37-16t-15-37l0-260z m417 156q22 0 37-15t15-37-15-36-37-15l-105 0q-21 0-36 15t-15 36 15 37 36 15l105 0z" horiz-adv-x="938" />
<glyph glyph-name="note" unicode="&#xe8c2;" d="M0-25l0 750q0 39 27 66t67 28l656 0q25 0 45-18l187-187q18-20 18-45l0-594q0-39-27-66t-67-28l-812 0q-39 0-67 28t-27 66z m63 0q0-14 8-23t23-8l812 0q14 0 23 8t8 23l0 563-124 0q-40 0-67 27t-27 66l0 125-625 0q-14 0-23-9t-8-22l0-750z m62 78q0 16 16 16l718 0q16 0 16-16t-16-15l-718 0q-16 0-16 15z m0 94q0 16 16 16l718 0q16 0 16-16t-16-16l-718 0q-16 0-16 16z m0 94q0 15 16 15l718 0q16 0 16-15t-16-16l-718 0q-16 0-16 16z m0 93q0 16 16 16l718 0q16 0 16-16t-16-15l-718 0q-16 0-16 15z m0 110l0 187q0 14 9 23t22 8l219 0q14 0 22-8t9-23l0-187q0-14-9-23t-22-8l-219 0q-13 0-22 8t-9 23z m63 31l156 0 0 125-156 0 0-125z m281-47q0 16 15 16l375 0q16 0 16-16t-16-15l-375 0q-15 0-15 15z m0 94q0 16 15 16l157 0q15 0 15-16t-15-16l-157 0q-15 0-15 16z m0 94q0 15 15 15l157 0q15 0 15-15t-15-16l-157 0q-15 0-15 16z m281 15q0-25 19-44t43-18l125 0-187 187 0-125z" horiz-adv-x="1000" />
<glyph glyph-name="sound" unicode="&#xe8c3;" d="M0 163q0 39 27 66l98 98 0 429q0 30 16 53t43 33q15 8 35 8 39 0 66-27l688-688q45-45 19-101-10-28-33-43t-53-16l-429 0-98-98q-27-27-66-27t-67 27l-219 219q-27 27-27 67z m63 0q0-14 9-22l219-219q8-10 22-10t21 10l98 98 2 0-264 264 0-2-98-98q-9-8-9-21z m123 150l277-277q12 2 14 2l377 0-666 666 0-377q0-2-2-14z m2 433l708-708 10 0q22 0 30 19t-8 33l-688 688q-8 9-21 9-6 0-12-1-19-8-19-30l0-10z m343 73q0 13 9 22t23 9q181 0 309-128t128-309q0-14-9-23t-22-9-23 9-9 23q0 154-110 264t-264 110q-14 0-23 9t-9 23z m16-110q0 16 16 16 128 0 220-92t92-220q0-16-16-16t-15 16q0 117-82 199t-199 82q-16 0-16 15z" horiz-adv-x="1001" />
<glyph glyph-name="tv" unicode="&#xe8c4;" d="M36 47q-72 303 0 606 10 43 53 47 205 25 410 25t410-25q45-4 55-47 72-303 0-606-12-43-55-47-94-11-197-17 6-4 6-8 0-14-65-23t-154-8-154 8-65 23q0 4 6 8-103 6-197 17-43 4-53 47z m61 16q402-51 806 0 69 287 0 574-404 51-806 0-69-287 0-574z m60 84q-66 207 0 412 6 18 24 21 129 26 256 26t255-26q18-3 24-21 33-102 33-205t-33-207q-6-18-24-22-129-25-255-25t-256 25q-18 4-24 22z m32 10q248-51 498 0 64 197 0 392-250 53-498 0-65-195 0-392z m62 209l8 88q4 13 19 15l143 12q16 0 16-16t-16-15l-117-8q-16-2-18-18l-6-58q0-16-15-16t-14 16z m498-219q0 16 16 16l93 0q16 0 16-16t-16-16l-93 0q-16 0-16 16z m31 94q0 15 16 15l94 0q15 0 15-15t-15-16l-94 0q-16 0-16 16z m0 93q0 16 16 16l94 0q15 0 15-16t-15-15l-94 0q-16 0-16 15z m0 188q0 19 14 33t33 14 33-14 14-33-14-33-33-14-33 14-14 33z m32 0q0-16 15-16t16 16-16 16-15-16z" horiz-adv-x="1000" />
<glyph glyph-name="desktop" unicode="&#xe8c5;" d="M0 100l0 625q0 39 27 66t67 28l812 0q39 0 67-28t27-66l0-625q0-39-27-66t-67-28l-312 0 0-37 195-25q23-6 23-32 0-13-8-22t-23-9l-562 0q-14 0-23 9t-8 22q0 26 23 32l195 25 0 37-312 0q-39 0-67 28t-27 66z m63 0q0-14 8-22t23-9l812 0q14 0 23 9t8 22l0 625q0 14-8 22t-23 9l-812 0q-14 0-23-9t-8-22l0-625z m62 125l0 437q0 14 9 23t22 9l688 0q13 0 22-9t9-23l0-437q0-14-9-22t-22-9l-688 0q-13 0-22 9t-9 22z m31 0l688 0 0 437-688 0 0-437z" horiz-adv-x="1000" />
<glyph glyph-name="mobile" unicode="&#xe8c6;" d="M0-56l0 812q0 39 27 67t67 27l500 0q39 0 66-27t28-67l0-812q0-39-28-67t-66-27l-500 0q-39 0-67 27t-27 67z m63 0q0-14 8-23t23-9l500 0q13 0 22 9t9 23l0 62-562 0 0-62z m0 94l562 0 0 624-562 0 0-624z m0 656l562 0 0 62q0 14-9 23t-22 8l-500 0q-14 0-23-8t-8-23l0-62z m218 47q0 15 16 15l94 0q15 0 15-15t-15-16l-94 0q-16 0-16 16z m32-782q0 16 15 16l31 0q16 0 16-16t-16-15l-31 0q-15 0-15 15z" horiz-adv-x="687" />
<glyph glyph-name="cd" unicode="&#xe8c7;" d="M5 276q-18 127 29 260 51 126 158 209t234 99 258-29q127-51 210-158t100-234-30-259q-51-126-157-210t-234-99-260 30q-127 51-209 157t-99 234z m89 236q-68-168 4-335t239-233 335 5 233 239-5 334-239 233-334-4-233-239z m57-23q57 144 200 205 15 8 21-7t-8-21q-131-56-183-189-6-14-21-8t-9 20z m59-24q47 121 166 172 14 6 20-9t-8-20q-106-45-151-154-6-14-19-8t-8 19z m57-21q39 94 132 135l2 1q14 6 20-8t-8-21q-84-35-117-119-6-16-21-10t-8 22z m58-24q29 73 101 103t143 1 103-101 1-143-101-103-143-1-103 101-1 143z m58-24q-19-48 2-96t68-66 96 2 66 68-2 96-68 66-96-2-66-68z m57-23q10 24 35 35t47 1 35-35 1-47-35-35-47-1-35 35-1 47z m31-35q5-11 16-16t24 0 16 16 0 24-16 16-24 0-16-16 0-24z m106-210q-6 15 8 21 84 35 117 119 6 16 21 10t8-22q-39-95-132-136l-2 0q-14-6-20 8z m24-57q-6 13 9 21 108 45 151 153 6 15 20 9t9-21q-49-119-168-170-14-6-21 8z m25-58q-6 15 8 21 131 56 183 189 6 14 21 8t9-20q-57-144-200-205l0-2q-15-6-21 9z" horiz-adv-x="998" />
<glyph glyph-name="instagram" unicode="&#xe8cc;" d="M571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m77 0q0-91-64-156t-155-64-156 64-64 156 64 156 156 64 155-64 64-156z m61 229q0-21-15-36t-37-15-36 15-15 36 15 36 36 15 37-15 15-36z m-280 123q-4 0-43 0t-59 0-54-2-57-5-40-11q-28-11-49-32t-33-49q-6-16-10-40t-6-58-1-53 0-59 0-43 0-43 0-59 1-53 6-58 10-40q12-28 33-49t49-32q16-6 40-11t57-5 54-2 59 0 43 0 42 0 59 0 54 2 58 5 39 11q28 11 50 32t32 49q6 16 10 40t6 58 1 53 0 59 0 43 0 43 0 59-1 53-6 58-10 40q-11 28-32 49t-50 32q-16 6-39 11t-58 5-54 2-59 0-42 0z m428-352q0-128-3-177-5-116-69-180t-179-69q-50-3-177-3t-177 3q-116 6-180 69t-69 180q-3 49-3 177t3 177q5 116 69 180t180 69q49 3 177 3t177-3q116-6 179-69t69-180q3-49 3-177z" horiz-adv-x="857.1" />
<glyph glyph-name="medium" unicode="&#xf23a;" d="M333 615v-655q0-14-7-23t-20-10q-10 0-19 4l-259 131q-12 5-20 18t-8 26v636q0 12 6 19t16 8q8 0 24-8l286-143q1-2 1-3z m36-56l298-484-298 149v335z m631-10v-589q0-14-8-22t-21-9-26 7l-246 123z m-2 67q0-2-143-234t-167-272l-218 353 181 294q9 16 29 16 8 0 14-3l302-151q2-1 2-3z" horiz-adv-x="1000" />
<glyph glyph-name="tripadvisor" unicode="&#xf262;" d="M363 294q0-22-15-37t-37-16q-21 0-37 16t-15 37q0 21 15 36t37 16q22 0 37-16t15-36z m644 0q0-22-15-37t-37-15-37 15-16 37 16 37 37 15 37-15 15-37z m-580 0q0 44-32 76t-76 31-76-31-31-76 31-76 76-32 76 32 32 76z m643 0q0 45-31 76t-76 32q-44 0-76-32t-32-76 31-76 77-31 76 31 31 76z m-596 0q0-65-45-111t-110-45q-64 0-110 46t-45 110 45 109 110 46 110-46 45-109z m644 0q0-64-45-109t-110-46q-65 0-110 46t-45 109 45 110 110 45q64 0 110-45t45-110z m-538-1q0 106-75 182t-182 75q-70 0-129-34t-94-94-35-129 35-130 94-94 129-34q106 0 182 75t75 183z m373 319q-142 62-310 62-178 0-320-61 65 0 125-26t101-68 69-102 25-124q0 64 24 122t66 101 99 68 121 28z m267-319q0 106-75 182t-182 75-182-75-76-182 76-183 182-75 182 75 75 183z m-148 315h214q-25-28-42-63t-22-64q61-85 61-188 0-87-43-161t-117-116-160-43q-74 0-139 31t-109 87q-26-32-72-100-6 12-30 46t-42 54q-44-55-109-87t-139-31q-87 0-161 43t-116 116-43 161q0 103 61 188-5 28-22 64t-42 63h204q83 56 198 88t241 31q125 0 235-31t194-88z" horiz-adv-x="1285.7" />
<glyph glyph-name="snapchat" unicode="&#xf2ac;" d="M473 779q75 0 134-39t92-107q15-32 15-100 0-26-5-106 8-4 15-4 10 0 29 7t28 8q16 0 32-10t15-26q0-18-18-30t-38-18-39-16-18-26q0-9 7-24 21-46 57-84t81-57q16-6 45-12 15-4 15-20 0-39-122-57-4-6-6-22t-8-26-18-10q-11 0-35 3t-36 4q-20 0-34-3-18-3-35-13t-33-21-32-22-43-19-55-8q-29 0-54 8t-41 19-33 22-32 21-35 13q-14 3-35 3-13 0-36-4t-33-5q-14 0-19 11t-8 26-6 23q-123 18-123 57 0 16 16 20 29 6 45 12 43 18 80 57t58 84q6 15 6 24 0 15-17 26t-39 17-39 17-18 29q0 15 15 26t31 10q8 0 26-7t30-7q10 0 18 4-5 79-5 106 0 68 15 100 36 76 96 110t147 36z" horiz-adv-x="928.6" />
<glyph glyph-name="imdb" unicode="&#xf2d8;" d="M515 405v-101q0-2 0-9t0-8l-1-7t-2-6-4-4-6-3-9-1v172q5 0 9 0t6-3 4-3 2-5 1-6v-16z m176-53v-68q0 0 0-7t0-8-1-7-4-6-8-1q-5 0-8 5-2 5-2 92v13t1 5l2 4t3 3 4 1q3 0 6-1t3-2 3-4 1-4 0-5v-10z m-591-132h69v263h-69v-263z m243 0h59v263h-89l-16-123q-11 83-17 123h-89v-263h60v174l25-174h43l24 178v-178z m237 170q0 38-3 50-2 9-6 16t-10 12-14 8-14 4-18 3-16 0h-74v-263h32q94-1 109 14t14 100q0 35 0 56z m177-110v75q0 16-1 25t-6 18-13 14-26 4q-26 0-43-19v86h-65v-263h61l4 17q17-20 43-20 28 0 37 17t9 46z m100 409v-678q0-37-26-63t-63-27h-679q-36 0-63 27t-26 63v678q0 37 26 63t63 27h679q37 0 63-27t26-63z" horiz-adv-x="857.1" />
<glyph glyph-name="codepen" unicode="&#xf32c;" d="M988 506c0 1-1 1-1 2 0 1 0 2 0 4-1 0-1 1-1 2 0 1-1 2-1 3 0 0-1 1-1 2-1 1-1 2-2 3 0 0 0 1-1 2 0 0-1 1-2 2 0 1 0 1-1 2-1 1-1 2-2 2-1 1-1 1-2 2-1 1-1 1-2 2-1 0-1 1-2 1 0 1-1 1-1 1l-451 301c-15 9-33 9-47 0l-452-301c0 0 0 0-1-1 0 0-1-1-2-1 0-1-1-1-2-2-1-1-1-1-2-2 0 0-1-1-2-2 0-1-1-1-1-2-1-1-2-2-2-2-1-1-1-2-1-2-1-1-1-2-2-3 0-1 0-2-1-2 0-1 0-2-1-3 0-1 0-2 0-2-1-2-1-3-1-4 0-1 0-1-1-2 0-2 0-4 0-5l0-301c0-2 0-4 0-6 1-1 1-1 1-2 0-1 0-2 1-3 0-1 0-2 0-2 1-1 1-3 1-4 1 0 1-1 1-2 1-1 1-2 2-2 0-1 0-2 1-2 0-1 1-2 2-3 0-1 1-1 1-2 1-1 2-1 2-2 1-1 1-1 2-2 1 0 2-1 2-2 1 0 2-1 2-1 1 0 1-1 1-1l452-301c7-5 15-7 23-7 8 0 16 2 24 7l451 301c0 0 1 1 1 1 1 0 1 1 2 1 1 1 1 2 2 2 1 1 1 1 2 2 1 1 1 1 2 2 1 1 1 1 1 2 1 1 2 2 2 3 1 0 1 1 1 2 1 0 1 1 2 2 0 1 1 2 1 2 0 1 1 3 1 4 0 0 0 1 1 2 0 1 0 2 0 3 0 1 1 1 1 2 0 2 0 4 0 6l0 301c0 1 0 3 0 5z m-451 216l332-221-148-100-184 123 0 198z m-85 0l0-198-184-123-149 100 333 221z m-367-301l106-71-106-71 0 142z m367-443l-333 222 149 99 184-123 0-198z m42 272l-150 100 150 100 150-100-150-100z m43-272l0 198 184 123 148-99-332-222z m366 301l-106 71 106 71 0-142z" horiz-adv-x="988" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="style.css" server="ftp.populerdunya.com/lazyguy/" local="131339125130000000" remote="131386726800000000" Dst="0" />
<file name="style.css" server="ftp.populerdunya.com/lazyguy/demo/" local="131339125136634234" remote="131362965000000000" Dst="0" />
</dwsync>
@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8" ?>
<dwsync>
<file name="hkgrotesk-bold-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808080000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-bolditalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808160000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-bold-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808100000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-bolditalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808180000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-italic-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808140000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-italic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808160000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-light-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808140000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-light-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808140000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-lightitalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808120000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-lightitalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808120000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-medium-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808160000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-medium-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808160000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-mediumitalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808100000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-regular-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808100000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-mediumitalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808100000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-regular-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808120000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-semibold-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808180000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-semibold-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808180000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-semibolditalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/" local="131326808120000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-semibolditalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/" local="131326808140000000" remote="131386726800000000" Dst="0" />
<file name="hkgrotesk-bold-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808080000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-bolditalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808160000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-bold-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808100000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-bolditalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808180000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-italic-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808140000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-italic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808160000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-light-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808140000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-light-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808140000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-lightitalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808120000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-medium-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808160000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-medium-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808160000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-mediumitalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808100000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-lightitalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808120000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-mediumitalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808100000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-regular-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808100000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-regular-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808120000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-semibold-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808180000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-semibold-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808180000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-semibolditalic-webfont.woff" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808120000000" remote="131362965000000000" Dst="0" />
<file name="hkgrotesk-semibolditalic-webfont.woff2" server="ftp.populerdunya.com/lazyguy/demo/" local="131326808140000000" remote="131362965000000000" Dst="0" />
</dwsync>
+85
View File
@@ -0,0 +1,85 @@
/*
HK Grotesk Font Free by Hanken Design Co.
License : OFL (SIL Open Font License)
downloaded from : https://fontlibrary.org/en/font/hk-grotesk
*/
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-light-webfont.woff2') format('woff2'),
url('font/hkgrotesk-light-webfont.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-lightitalic-webfont.woff2') format('woff2'),
url('font/hkgrotesk-lightitalic-webfont.woff') format('woff');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-regular-webfont.woff2') format('woff2'),
url('font/hkgrotesk-regular-webfont.woff') format('woff');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-italic-webfont.woff2') format('woff2'),
url('font/hkgrotesk-italic-webfont.woff') format('woff');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-medium-webfont.woff2') format('woff2'),
url('font/hkgrotesk-medium-webfont.woff') format('woff');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-mediumitalic-webfont.woff2') format('woff2'),
url('font/hkgrotesk-mediumitalic-webfont.woff') format('woff');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-semibold-webfont.woff2') format('woff2'),
url('font/hkgrotesk-semibold-webfont.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-semibolditalic-webfont.woff2') format('woff2'),
url('font/hkgrotesk-semibolditalic-webfont.woff') format('woff');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-bold-webfont.woff2') format('woff2'),
url('font/hkgrotesk-bold-webfont.woff') format('woff');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'HK Grotesk';
src: url('font/hkgrotesk-bolditalic-webfont.woff2') format('woff2'),
url('font/hkgrotesk-bolditalic-webfont.woff') format('woff');
font-weight: 700;
font-style: italic;
}
+1080
View File
File diff suppressed because it is too large Load Diff
+27
View File
@@ -0,0 +1,27 @@
<?php
/**
Bland configuration/functions n such
- Configuration for URLs to be directed locally or CDN. 4.26 pm, 8-19-24
*/
// CDN on or off
$setURL = "2";
if ($setURL == 1) {
// CDN URL
$mainURL = "https://clifford.nyc3.cdn.digitaloceanspaces.com/public/tyclifford.com";
//echo $mainURL;
} else {
// local/server URL
$mainURL = "https://tyclifford.com";
//echo $mainURL;
}
?>
+1
View File
@@ -0,0 +1 @@
config-custom.php
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Painted Sky Studios
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+1712
View File
File diff suppressed because it is too large Load Diff
+60
View File
@@ -0,0 +1,60 @@
# Dead Simple Blog
Version 1.1 (2022-11-15)
- [Installation](#installation)
- [Usage](#usage)
- [Changelog](#changelog)
- [Other Versions](#other-versions)
- [Attributions](#attributions)
I've wanted for a long time to create a simple way of blogging that eschews basically all bells and whistles. Many "flat file" Content Management Systems exist already, as well as "static site generators", but none of these that I looked at were simple enough for my liking.
I don't want to have to install Ruby, or Python, or Composer, or whatever else on a server to run a blog. On the other hand, installing WordPress or one of the other popular PHP-based CMSes for this use case is like hammering in a nail with a sledgehammer.
Many people dislike PHP, and while it has its warts, I like it. I like using (vanilla) PHP simply because it is nearly ubiquitous. Having to install or configure it is often unnecessary because it is usually *already* installed, configured, and running.
I wanted to use plain text files, but some formatting is nice -- Markdown was the obvious solution for this, since it offers quite a lot of options in terms of text formatting, without sacrificing the readability of the plain text itself. I was not keen on adding dependencies but I found [Parsedown](http://parsedown.org) which offers Markdown parsing by including a single PHP file. I can deal with that.
That's really all there is to it -- dead simple PHP-based templating, and Markdown-formatted plain text content.
I know I'm probably forgetting about a million edge cases, but I want to keep it simple. So, we'll roll with this for now and add features as they become necessary.
## Installation
Download the files and upload them to a webserver somewhere. That's it!
## Usage
1. Duplicate `config-default.php` as `config-custom.php`, and change the config variables to your liking.
2. Create text files with a NUMERIC file name, I use YYYY-MM-DD date-based names (e.g. 2018-10-30.md).
3. Format text files with Markdown, or not. Whatever. ;)
4. If you need to link to image/video/audio/etc. files, you can upload them to the media folder.
4. Upload text files to the `content` directory.
5. You're done!!
## Changelog
### Version 1.1
- Updated Parsedown to 1.7.4
- Config has now been moved to `config-default.php`, added support for `config-custom.php`
- Added dark mode! Adjust the `APPEARANCE` constant to enable
- Change default file type to .md files instead of .txt. Adjust `FILE_EXT` constant if needed
- Reorganize folder structure (CSS and fonts are now in `/src`)
- Small text update to `/content/drafts/AboutDrafts.md`
- Defined `$content` in global scope to avoid PHP errors in some configurations
- Added default favicon at `/img/favicon.png`
- Including `fonts.css` in `<head>` instead of using @import for better caching behaviour
- Added file hash query strings to `<link>` tags in `<head>` for better caching behaviour
- `index.php` now uses `<main>` for content on list view and `<article>` on single post view
- List view now explicitly sorts posts using `sortPosts()` function - default is sorting by filename, descending
## Other Versions
User @shoaiyb has a fork going with additional features that I didn't think were "absolutely necessary" but if you want some extra bells and whistles, I recommend checking out [his fork](https://github.com/shoaiyb/dead-simple-blog).
## Attributions
- [Parsedown](https://github.com/erusev/parsedown) by Emanuil Rusev
- [Blog Icon](https://thenounproject.com/icon/blog-3557350/) by Gregor Cresnar from [Noun Project](https://thenounproject.com)
+20
View File
@@ -0,0 +1,20 @@
<?php
// WARNING: This file is provided for convenience, not security.
// This file is NOT meant to keep secret information or credentials of any kind.
// The settings below are benign, but please don't add custom variables in here
// unless you know what you're doing.
define('BLOG_TITLE', 'Ty\'s List (of blurbs)');
// URL of the homepage. Can be absolute or relative.
define('BASE_URL', '/i/');
// Contact email is shown as a link in the footer.
define('CONTACT_EMAIL', 'ty@tyclifford.com');
// The type of files used for your content. Usually 'md' or 'txt'
define('FILE_EXT', 'md');
// light or dark mode
define('APPEARANCE', 'dark');
+3
View File
@@ -0,0 +1,3 @@
# Statements
Bold. Direct.
+8
View File
@@ -0,0 +1,8 @@
# Hm?
Still working on things.
<video width="320" height="240" controls>
<source src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
+13
View File
@@ -0,0 +1,13 @@
# Moving along
This is NOW the new website look! It'll grow over time of course, and *maybe* more functionality. So far:
- Still no advertisements
- Reduced footprint
And... reduced footprint in itself makes a huge difference. I used to think the previous website was a good way to go for layouts, but nope. I eventually wanted even *less*.
Previous posts will slowly be migrated over.
Thank you for reading... if you do.
+4
View File
@@ -0,0 +1,4 @@
# It's Always Sunny In...
https://isnick.nyc3.digitaloceanspaces.com/public/yt/Frank%20Reynolds%20and%20his%20gun%20-%20It%27s%20Always%20Sunny%20in%20Philadelphia.mp4
+3
View File
@@ -0,0 +1,3 @@
# Mitch Hedberg
<iframe width="649" height="490" src="https://www.youtube.com/embed/cF8MpK-yK5o" title="MITCH HEDBERG - HILARIOUS STAND-UP" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
+3
View File
@@ -0,0 +1,3 @@
# Foggy morning
<blockquote class="tiktok-embed" cite="https://www.tiktok.com/@_tyclifford/video/7376952386113277230" data-video-id="7376952386113277230" style="max-width: 605px;min-width: 325px;" > <section> <a target="_blank" title="@_tyclifford" href="https://www.tiktok.com/@_tyclifford?refer=embed">@_tyclifford</a> E-ride. <a title="back" target="_blank" href="https://www.tiktok.com/tag/back?refer=embed">#back</a> <a title="fog" target="_blank" href="https://www.tiktok.com/tag/fog?refer=embed">#fog</a> <a title="morning" target="_blank" href="https://www.tiktok.com/tag/morning?refer=embed">#morning</a> <a target="_blank" title="♬ In the Forest - Lesfm &#38; Olexy" href="https://www.tiktok.com/music/In-the-Forest-7099184916964837377?refer=embed">♬ In the Forest - Lesfm &#38; Olexy</a> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script>
+74
View File
@@ -0,0 +1,74 @@
# Use AI or it'll use you!
![](https://cdn.buymeacoffee.com/uploads/project_updates/2024/08/d411324c7963565d2b370e87d5ea2346.png)
So, out of all artificial intelligent conversations, what I hear the most is *will it take jobs,* or *it will take jobs.* Yes, AI will take jobs, but I believe it'll be the jobs of those *not* using AI. While I'm not immune and also not trying to proceed biasedly, it's trivial to me in the usage of where AI belongs in my daily Life.
There are several times I go to AI for summaries or quick History searches, with a little spice. "Top 10 songs with a Halloween story." Crazy, but AI can put together something, even if it's a little off - and with tuning, it can become even better.
I can train AI on projects, and then draft policies for me to add human touch to, or outright correct (because it may be heading in the wrong direction or misunderstand completely) bits as I go on. And this is exactly my point, in a secretarial manner, AI has helped progress a lot of my projects, and I firmly believe I wouldn't have the outside of the box thinking as I do now if I didn't use it - sure, I could talk with people, and I do, but AI offers a pressing feature: Privacy
Providing you have the resources (hardware) to do so, you may run models "offline" or on your network to compute privacy focused tasks - and I take great advantage of this. Yes, it doesn't have real-time information, but it has *enough* information, and if you're aware of its shortage of information you can fill in the blanks, and or update it as you go with new bits.
If you're interested, here is a Github link: [nomic-ai/gpt4all: GPT4All: Chat with Local LLMs on Any Device (github.com)](https://github.com/nomic-ai/gpt4all)
Don't hesitate to reach out for guidance to launch the program. Keep in mind your computer must have at least 16 GB of RAM, and a moderately recent CPU (se, 2019 and onwards) to make effective use of it. There *are* setups to run on tiny devices such as Raspberry Pi, but I am unfamiliar with those.
A chatter pointed out open-source software to help with subtitling and I have yet to explore the Raspberry Pi method.
## We're likely better off fusing with technology
Back to 2008 for a short minute: I was the privacy nut. The kid you didn't want to discuss privacy with because I'd go off on many subjects, going against many companies--sometimes with little insight as to *why* something may have been executed the way it was - of course! I was young and naïve. and I'm still naïve, but with more experience.
I'd push the mission of not using smartphones for everything, not using payments on smartphones, and not using cards in general, especially tied to smartphones - and some of this changed in incredible ways, for me anyway. You'll rarely see me *not* using my smartphone to checkout with Apple Pay or tap to pay.
Not to bore you too much, but I should include some back History here for you to understand how I've changed some of my opinions. It's only fair.
**My view of the web in 2010**:
> *Title: # [How the Web Works and How it Could Work](https://snick512.wordpress.com/2010/12/29/how-the-web-works-and-how-it-could-work/)*
>
> *Forever web pages have been improving. Dont say they havent either. Remember messy ol HTML? Now theres CSS to go with that, and Javascript too.*
>
> *The traditional sense in going to a webstie is you load it, and click on links Its just that simple. What if this was a little more complex, but still easy?*
>
> *Imagine a web page that could be organised in any manner according to the person behind the browser. No specific edits, no specific alignments, no specific anything. One could add pictures, video, music, and share these edits with their friends. More-so these edits would automatically be visible to anyone who was “following.” Is this confusing? I hope not. Just think of it as a Status / Twitter on steroids. A way for people to manipulate web pages as they see fit.*
>
> *I would assume that every web page would look normal  But would then be manipulated by each visitor (if they wanted to). Of course these edits would be locked to said user.*
>
> *In-depth*
>
> *If youve ever used Google Docs, or Etherpad, you should understand exactly where Im going with this. Multiple people could edit a page, and have a deeper interaction with the website/online service. Eh? Sure, a comments box, Social buttons, and so on arent bad. (But) What if these changes stuck, and could be de/centralised as needed. Similar to the diaspora model, cept a little more intense.*
>
> *Though I could be jumping the line here. Maybe the web isnt ready for a such thing, yet. Wh*o knows.
### and a small step into what I believe about Privacy
We should be afforded individual privacy, and this layer should encompass these spots (and more, but don't take this concrete, I'm just flying my thoughts here):
- Right to disconnect
- Right to be forgotten
- Non-intrusive DRM, and outright no DRM
Digital Rights Management is naturally a thorn in privacy due to its call home aspects. If you're on Windows Media Player or iTunes, the service must occasionally dial home to see if you're "allowed" to play the requested files. The same rings true for video games - there are certain games refusing to play offline without first checking on Internet connectivity and licensing, despite the individual only wanting to play offline.
This is another reason disc-less systems are a bad idea. It erodes tangible copies from being used and makes the user dependent on DRM completely.
After awhile, services start to learn when you're awake, as a very tiny example. Imagine AI calculating your schedule.
## Bringing it together
Kinda confusing but bringing it together; We are likely better off fusing with technology in a privacy-first manner. Meaning, anything to do with AI should always be executed with the individual's privacy in mind. We can surely have a wonderful time on the Internet, and with technology but I don't believe it'll be possible if it's not checked in regard to privacy.
Thoughts on future use is artificial intelligence will become more accessible to the everyday person *without* third party service, and I don't believe it'll be effective until then.
AI is still expensive, financially and privacy wise.
I believe you should become aware of AI and learn how to make use of it to help understand how it's using your data, and how you can use it to better your own Life.
I want the web to be fun and free and use all its fruits, but we need to take grip of it now before we don't know how to.
Be safe and thank you for reading!
+5
View File
@@ -0,0 +1,5 @@
# Airbnb fails when it comes to hidden cameras
"[...] Airbnb employee also revealed that when a guest complains of a hidden camera, the company doesnt as a matter of practice notify law enforcement, not even when a child is involved. The company may, however, reach out to hosts about complaints as part of internal inquiries a move law enforcement experts say could hinder criminal investigations because it gives suspects time to destroy evidence."
[https://www.cnn.com/2024/07/09/business/airbnb-hidden-camera-invs/index.html](https://www.cnn.com/2024/07/09/business/airbnb-hidden-camera-invs/index.html)
+30
View File
@@ -0,0 +1,30 @@
<head>
<link href="https://vjs.zencdn.net/8.16.1/video-js.css" rel="stylesheet" />
<!-- If you'd like to support IE8 (for Video.js versions prior to v7) -->
<!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> -->
</head>
<body>
<video
id="my-video"
class="video-js"
controls
preload="auto"
width="640"
height="264"
poster="MY_VIDEO_POSTER.jpg"
data-setup="{}"
>
<source src="https://clifford.nyc3.cdn.digitaloceanspaces.com/public2/2A-Captions_Sun-6-23-24_0623.mp4" type="video/mp4" />
<p class="vjs-no-js">
To view this video please enable JavaScript, and consider upgrading to a
web browser that
<a href="https://videojs.com/html5-video-support/" target="_blank"
>supports HTML5 video</a
>
</p>
</video>
<script src="https://vjs.zencdn.net/8.16.1/video.min.js"></script>
</body>
+9
View File
@@ -0,0 +1,9 @@
# Draft Posts
Draft posts can be put in this folder, they will not be included in the listing of posts until they are moved up into the parent folder.
## Warning!
Permissions on this folder are set to User Read/Write ONLY, which will prevent the general public from accessing the text files directly. But beware, if these folder permissions are overwritten then those files will be viewable.
I will probably do up some Apache and nginx configurations that will secure this in a more reliable way, but in the meantime if you're not sure, you can always save your drafts offline.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

+134
View File
@@ -0,0 +1,134 @@
<?php
require_once('Parsedown.php');
//require_once('../cfip.php');
// Default config is now found in 'config-default.php', but it's best not to edit that directly.
// Instead, duplicate it and rename the new version 'config-custom.php' (no quotes).
// If you're using Git for version control, add config-custom.php to your .gitignore.
// Then you can do pull/fetch/rebase in Git and it won't overwrite your config.
if (file_exists('config-custom.php')) {
require_once('config-custom.php');
} else {
require_once('config-default.php');
}
$content = '';
$is_post = !empty($_GET['post']); // Whether we're viewing the main list or a single post
function sortPosts($a, $b) {
$a_value = $a->getFilename();
$b_value = $b->getFilename();
return strcmp($b_value, $a_value); // Reversed to get descending
}
if ( $is_post ) {
// Single post page
$post_name = filter_var($_GET['post'], FILTER_SANITIZE_NUMBER_INT);
$file_path = __DIR__.'/content/'.$post_name.'.'.FILE_EXT;
if ( file_exists($file_path) ) {
$file = fopen($file_path, 'r');
$post_title = trim(fgets($file),'#');
fclose($file);
// Process the Markdown
$parsedown = new Parsedown();
$content = $parsedown->text(file_get_contents($file_path));
} else {
$content = '
<h2>Not Found</h2>
<p>Sorry, couldn\'t find a post with that name. Please try again, or go to the
<a href="'.BASE_URL.'">home page</a> to select a different post.</p>';
}
} else {
// Blog main page - list all posts
$files = new DirectoryIterator(__DIR__.'/content/');
$files_array = [];
foreach ($files as $file) {
if ( $file->isFile() && $file->getExtension() == FILE_EXT ) {
array_push($files_array, $file->getFileInfo());
}
}
usort($files_array, 'sortPosts'); // See sortPosts() function above
foreach ($files_array as $file) {
$filename_no_ext = $file->getBasename('.'.FILE_EXT);
$file_pointer = $file->openFile();
$post_title = trim($file_pointer->fgets(),'#');
$content .= '<p class="is-social-minimal-light"><a class="link-1 aqua" href="'.BASE_URL.'?post='.$filename_no_ext.'">'.$post_title.'</a> '.$filename_no_ext.'</p>';
}
}
// Appending file hashes to the <link> hrefs allows us to cache the files indefinitely,
// but immediately serve a new version once the file changes.
$style_hash = hash('md5', file_get_contents(__DIR__.'/src/css/style-'.APPEARANCE.'.css'));
$fonts_hash = hash('md5', file_get_contents(__DIR__.'/src/css/fonts.css'));
$icon_hash = hash('md5', file_get_contents(__DIR__.'/img/favicon.png'));
?>
<!DOCTYPE html>
<html>
<head>
<title><?php if ( !empty($_GET['post']) ) { echo $post_title.' - '; } ?><?php echo BLOG_TITLE; ?></title>
<meta charset="utf-8">
<meta name="description" content="The web space of Ty Clifford" />
<meta name="author" content="Ty Clifford">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="keywords" content="Ty Clifford, Keyser, West Virginia, United States, Nerd, Ty on TikTok, Ty's web space, Freedom of Expression">
<meta property="og:url" content="https://tyclifford.com/?mtm_campaign=homepage" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Ty Clifford - Hobbies are my hobby." />
<meta property="og:title" content="Ty Clifford - Hobbies are my hobby." />
<meta property="og:image" content="https://tyclifford.com/images/fa2.jpg" />
<meta property="og:image:alt" content="Profile image of Ty Clifford. Making a funny face squinting, Eye everything." />
<meta name="twitter:site" content="@_tyclifford" />
<meta name="twitter:title" content="Ty Clifford" />
<meta name="twitter:description" content="Ty's space" />
<!-- FAV and TOUCH ICONS -->
<link rel="shortcut icon" href="<?php echo $mainURL; ?>/images/ico/fa-bl.ico">
<link rel="apple-touch-icon" href="<?php echo $mainURL; ?>/images/ico/fa-bl.jpg"/>
<!-- FONTS -->
<link rel="stylesheet" type="text/css" href="<?php echo $mainURL; ?>/css/fonts/hk-grotesk/style.css">
<link rel="stylesheet" type="text/css" href="<?php echo $mainURL; ?>/css/fonts/fontello/css/fontello.css">
<!-- STYLES -->
<link rel="stylesheet" type="text/css" href="<?php echo $mainURL; ?>/css/main.css">
<!-- Video -->
</head>
<body class="is-text-align-left is-masked-dark is-text-light" style="background-color:black;">
<!-- CONTENT-WRAP -->
<div class="content-wrap">
<!-- CONTENT -->
<div class="content">
<h4><a href="index.php"><span class="highlight purple">Blurbs</span></a></h4>
<?php
$tag = $is_post ? 'article' : 'main';
echo '<'.$tag.'>'.$content.'</'.$tag.'>';
?>
<hr />
<p class="is-social-minimal-light"><a class="social-link github" href="https://github.com/snick512/"></a> <a class="social-link email" href="mailto:ty@tyclifford.com"></a> <a class="social-link twitter" href="https://twitter.com/_tyclifford"></a></p>
</div>
<!-- CONTENT -->
</div>
<!-- CONTENT-WRAP -->
<!-- SCRIPTS -->
<script src="../js/main.js"></script>
</body>
</html>
+36
View File
@@ -0,0 +1,36 @@
@font-face {
font-family: 'lato';
src: url('../fonts/lato/lato-regular-webfont.woff2') format('woff2'),
url('../fonts/lato/lato-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'lato';
src: url('../fonts/lato/lato-italic-webfont.woff2') format('woff2'),
url('../fonts/lato/lato-italic-webfont.woff') format('woff');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'lato';
src: url('../fonts/lato/lato-bold-webfont.woff2') format('woff2'),
url('../fonts/lato/lato-bold-webfont.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'lato';
src: url('../fonts/lato/lato-bolditalic-webfont.woff2') format('woff2'),
url('../fonts/lato/lato-bolditalic-webfont.woff') format('woff');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'slabo_13px';
src: url('../fonts/slabo13px/slabo13px-regular-webfont.woff2') format('woff2'),
url('../fonts/slabo13px/slabo13px-regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
}
+83
View File
@@ -0,0 +1,83 @@
body {
color: #fff;
background: #333;
font: 18px 'lato', sans-serif;
line-height: 1.5;
}
body>* {
max-width: 40em;
margin: 0 auto;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'slabo_13px', 'lato', sans-serif;
}
a,
a:link,
a:visited {
color: #0bf;
transition: color .2s ease;
}
a:hover {
color: #09d;
}
a:active {
color: #057;
}
header {
border-bottom: 1px solid #555;
}
h1.blog-title a {
text-decoration: none;
}
h2.list-title a {
color: #fff;
text-decoration: none;
}
h1.blog-title a:hover,
h2.list-title a:hover {
text-decoration: underline;
}
h2.list-title a:hover {
color: #ddd;
}
code {
font: normal 1em 'Inconsolata', monospace;
color: #fb557e;
background: #222;
padding: 0 .33em;
border-radius: .33em;
}
hr {
border: none;
border-top: 1px solid #555;
}
footer {
color: #ddd;
padding: 0 1em;
margin: 2em auto 0;
background: #444;
box-sizing: border-box;
overflow: auto;
}
footer .postscript {
font-style: italic;
}
+82
View File
@@ -0,0 +1,82 @@
body {
color: #333;
background: #fff;
font: 18px 'lato', sans-serif;
line-height: 1.5;
}
body>* {
max-width: 40em;
margin: 0 auto;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'slabo_13px', 'lato', sans-serif;
}
a,
a:link,
a:visited {
color: #08c;
transition: color .2s ease;
}
a:hover {
color: #0bf;
}
a:active {
color: #046;
}
header {
border-bottom: 1px solid #ccc;
}
h1.blog-title a {
text-decoration: none;
}
h2.list-title a {
color: #000;
text-decoration: none;
}
h1.blog-title a:hover,
h2.list-title a:hover {
text-decoration: underline;
}
h2.list-title a:hover {
color: #ddd;
}
code {
font: normal 1em 'Inconsolata', monospace;
color: #fb557e;
background: #eee;
padding: 0 .33em;
border-radius: .33em;
}
hr {
border: none;
border-top: 1px solid #ccc;
}
footer {
color: #888;
padding: 1em;
margin: 2em auto 0;
background: #eee;
box-sizing: border-box;
}
footer .postscript {
font-style: italic;
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 522 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Some files were not shown because too many files have changed in this diff Show More