Initial commit.
@ -0,0 +1,30 @@
|
|||||||
|
Copyright (c) 2015-2016, Thomas Hintz
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
Neither the name of the author nor the names of its contributors may
|
||||||
|
be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -0,0 +1,33 @@
|
|||||||
|
build: news.scm global.scm macros.scm pre-generated-html.scm db.scm
|
||||||
|
csc -O3 -feature 'not-interactive' -lfa2 -local -clustering -C '-O3 -fomit-frame-pointer -fno-strict-aliasing' news.scm
|
||||||
|
|
||||||
|
profile: news.scm global.scm macros.scm pre-generated-html.scm
|
||||||
|
csc -O3 -profile -lfa2 -local -clustering -C \
|
||||||
|
'-O3 -fomit-frame-pointer -fno-strict-aliasing' news.scm
|
||||||
|
|
||||||
|
pre-generated-html.scm: res/scss/news.scss res/css/normalize.css \
|
||||||
|
res/css/foundation-all.min.css \
|
||||||
|
res/css/font-awesome.min.css widgets.scm \
|
||||||
|
build.scm res/js/news.js res/js/pre-jquery-news.js \
|
||||||
|
res/img/raster/logo-normal.png res/img/raster/icon.png macros.scm
|
||||||
|
csi -s build.scm
|
||||||
|
|
||||||
|
.PHONY: csi
|
||||||
|
csi: pre-generated-html.scm
|
||||||
|
news-csi-bin -:s1m -feature 'not-interactive' -s news.scm
|
||||||
|
|
||||||
|
run: build
|
||||||
|
./news -:s1m
|
||||||
|
|
||||||
|
.PHONY: kill
|
||||||
|
kill:
|
||||||
|
killall -s 9 news-csi-bin || true
|
||||||
|
|
||||||
|
.PHONY: restart
|
||||||
|
restart: kill csi
|
||||||
|
|
||||||
|
feeds: feeds.scm global.scm db.scm
|
||||||
|
csc -O3 -lfa2 -local -clustering feeds.scm
|
||||||
|
|
||||||
|
feedrunner: feed-runner.scm
|
||||||
|
csc -O5 feed-runner.scm
|
@ -0,0 +1,25 @@
|
|||||||
|
kabonky
|
||||||
|
============================
|
||||||
|
|
||||||
|
kabonky is a personalizable news aggregator that ranks and displays
|
||||||
|
articles from online newspapers and blogs and is being run at
|
||||||
|
<https://kabonky.com>.
|
||||||
|
|
||||||
|
The provided code is identical to what kabonky.com uses. Currently
|
||||||
|
though the build process is complicated and depends on patches to some
|
||||||
|
other libraries and hasn't been detailed yet. If you would like to
|
||||||
|
build kabonky for yourself please send me an email at t@thintz.com and
|
||||||
|
I'll work on getting it up and running for you and hopefully document
|
||||||
|
the process along the way.
|
||||||
|
|
||||||
|
Contributing, Bug Reports, Feature Requests, General Questions
|
||||||
|
============================
|
||||||
|
|
||||||
|
For any of the above send an email to Thomas Hintz at <t@thintz.com>.
|
||||||
|
|
||||||
|
License
|
||||||
|
============================
|
||||||
|
|
||||||
|
kabonky is currently released under the 3-clause BSD license. You can
|
||||||
|
find the full license in the LICENSE file in the same folder as the
|
||||||
|
README.
|
@ -0,0 +1,116 @@
|
|||||||
|
(import chicken scheme srfi-1)
|
||||||
|
(use general-utils (only waffle waffle-sxml->html add-widget widgets widget-rules) md5 message-digest scss)
|
||||||
|
|
||||||
|
(include "global.scm")
|
||||||
|
(include "widgets.scm")
|
||||||
|
|
||||||
|
(define (file-md5-hash path)
|
||||||
|
(message-digest-string (md5-primitive)
|
||||||
|
(with-input-from-file path (lambda () (read-string)))))
|
||||||
|
|
||||||
|
(define (hash-file->src-url file path)
|
||||||
|
(update-uri path query: `((v ,(file-md5-hash file)))))
|
||||||
|
|
||||||
|
(define (compile-scss in out)
|
||||||
|
(with-output-to-file out
|
||||||
|
(lambda () (write-css (with-input-from-file in (lambda () (eval (read))))))))
|
||||||
|
|
||||||
|
(for-each
|
||||||
|
(lambda (f)
|
||||||
|
(compile-scss (++ (filesystem-path-scss) "/" f ".scss")
|
||||||
|
(++ (filesystem-path-css) "/" f ".css")))
|
||||||
|
'("news"))
|
||||||
|
|
||||||
|
(define (concat-files files)
|
||||||
|
(with-output-to-string
|
||||||
|
(lambda ()
|
||||||
|
(for-each
|
||||||
|
(lambda (f)
|
||||||
|
(display (with-input-from-file f read-string)))
|
||||||
|
files))))
|
||||||
|
|
||||||
|
(define (concat-files-and-write resources output)
|
||||||
|
(let ((combined (with-output-to-string (lambda () (concat-files resources)))))
|
||||||
|
(with-output-to-file output (lambda () (display combined)))
|
||||||
|
combined))
|
||||||
|
|
||||||
|
(define (md5-hash str)
|
||||||
|
(message-digest-string (md5-primitive) str))
|
||||||
|
|
||||||
|
(define (md5-versioned-path path str)
|
||||||
|
(update-uri path query: `((v ,(md5-hash str)))))
|
||||||
|
|
||||||
|
(define (concat-files-and-version-path files output-file path)
|
||||||
|
(let ((s (concat-files files)))
|
||||||
|
(with-output-to-file output-file (lambda () (display s)))
|
||||||
|
(md5-versioned-path path s)))
|
||||||
|
|
||||||
|
(define (waffle-sxml->string sxml)
|
||||||
|
(with-output-to-string
|
||||||
|
(lambda ()
|
||||||
|
(parameterize ((widgets *widgets*) (widget-rules *widget-rules*))
|
||||||
|
(waffle-sxml->html sxml)))))
|
||||||
|
|
||||||
|
;; Takes a list of files, concatenates them together, outputs the
|
||||||
|
;; result to 'output-file', and returns a URL with an md5 hashed
|
||||||
|
;; version parameter.
|
||||||
|
(define (concat-files->html files output-file path proc)
|
||||||
|
(waffle-sxml->string
|
||||||
|
(proc (concat-files-and-version-path files output-file path))))
|
||||||
|
|
||||||
|
(define (make-javascript-html-proc)
|
||||||
|
(lambda (url) `(script (@ (type "text/javascript") (language "javascript")
|
||||||
|
(src ,(uri->string url))))))
|
||||||
|
|
||||||
|
(define (make-stylesheet-html-proc)
|
||||||
|
(lambda (url) `(stylesheet (@ (path ,(uri->string url))))))
|
||||||
|
|
||||||
|
(with-output-to-file "pre-generated-html.scm"
|
||||||
|
(lambda ()
|
||||||
|
(write `((news-stylesheet-html
|
||||||
|
. ,(++
|
||||||
|
(concat-files->html (map (lambda (f) (++ (filesystem-path-css) "/" f))
|
||||||
|
'("normalize.css" "foundation.min.css"
|
||||||
|
"font-awesome.min.css"))
|
||||||
|
(filesystem-path-css-lib)
|
||||||
|
(uri-css-lib)
|
||||||
|
(make-stylesheet-html-proc))
|
||||||
|
(waffle-sxml->string
|
||||||
|
`(stylesheet
|
||||||
|
(@ (path
|
||||||
|
,(uri->string (hash-file->src-url (filesystem-path-css-news)
|
||||||
|
(uri-css-news)))))))
|
||||||
|
(waffle-sxml->string
|
||||||
|
`(link (@ (rel "icon") (type "image/png")
|
||||||
|
(href ,(uri->string
|
||||||
|
(hash-file->src-url (filesystem-path-site-icon)
|
||||||
|
(uri-site-icon)))))))))
|
||||||
|
(news-javascript-html
|
||||||
|
. ,(begin (concat-files->html `(,(filesystem-path-js-jquery))
|
||||||
|
(filesystem-path-js-lib)
|
||||||
|
(uri-js-lib)
|
||||||
|
(make-javascript-html-proc))
|
||||||
|
(conc
|
||||||
|
"<script src='" (uri->string (hash-file->src-url
|
||||||
|
(filesystem-path-js-lib)
|
||||||
|
(uri-js-lib)))
|
||||||
|
"'></script>"
|
||||||
|
"<script src='" (uri->string (hash-file->src-url
|
||||||
|
(filesystem-path-js-news)
|
||||||
|
(uri-js-news)))
|
||||||
|
"'></script>")))
|
||||||
|
(news-logo-normal-uri
|
||||||
|
.
|
||||||
|
,(uri->string
|
||||||
|
(hash-file->src-url (filesystem-path-site-logo-normal)
|
||||||
|
(uri-site-logo-normal))))
|
||||||
|
(news-load-javascript
|
||||||
|
. ,(++
|
||||||
|
js-uri-var
|
||||||
|
" var jsFiles = ['"
|
||||||
|
(string-intersperse
|
||||||
|
`(,(uri->string (hash-file->src-url (filesystem-path-js-lib)
|
||||||
|
(uri-js-lib)))
|
||||||
|
,(uri->string (hash-file->src-url (filesystem-path-js-news)
|
||||||
|
(uri-js-news)))) "', '")
|
||||||
|
"']; "))))))
|
@ -0,0 +1,901 @@
|
|||||||
|
(module news-db
|
||||||
|
(;; parameters
|
||||||
|
connection-spec
|
||||||
|
|
||||||
|
;; functions
|
||||||
|
with-db with-db/transaction
|
||||||
|
get-sources refresh-article-view! refresh-tags-and-sources-view!
|
||||||
|
add-user! get-user-id-by-email
|
||||||
|
get-password-and-salt get-viewed-articles get-upvoted-articles
|
||||||
|
article-upvoted? set-article-for-user-upvoted!
|
||||||
|
session-delete! session-exists?
|
||||||
|
upsert-article! get-article-cover-path get-all-images-path-and-id
|
||||||
|
article-exists? get-article-by-id get-articles-by-tags
|
||||||
|
get-articles-by-popularity
|
||||||
|
get-article-points mark-article-viewed! increment-article-viewed!
|
||||||
|
upvote-article! get-user-subscriptions
|
||||||
|
user-tag-subscribe! user-tag-unsubscribe!
|
||||||
|
user-author-subscribe! user-author-unsubscribe!
|
||||||
|
get-article-id-by-guid
|
||||||
|
get-article-author-by-source-id insert-new-author! insert-author!
|
||||||
|
get-author-name-by-author-id get-articles-by-authors
|
||||||
|
get-authors get-articles-by-subscriptions
|
||||||
|
set-rank-by-tag-association set-rank-by-title set-rank-by-partial-uri
|
||||||
|
set-rank-by-uri set-rank-by-date-difference
|
||||||
|
set-rank-by-rank db-connection get-sources get-user-sources
|
||||||
|
set-user-sources! add-source! get-user-settings set-user-setting!
|
||||||
|
get-articles-viewed-by-user set-session-user-id!
|
||||||
|
get-session-user-id user-signed-in? create-account! account-exists?
|
||||||
|
user-has-subscriptions user-tags
|
||||||
|
account-exists-condition account-exists-condition-predicate
|
||||||
|
get-users-articles get-user-headers get-possible-user-sources-for-tag
|
||||||
|
get-user-sources-for-tag set-rank-by-guids get-tags-by-rank
|
||||||
|
add-to-breaking-news-email add-to-get-invited get-tag-groups
|
||||||
|
set-tags-by-text set-user-default-interests!
|
||||||
|
add-all-sources-for-tag-for-user! remove-tag-from-user
|
||||||
|
get-tags-and-sources get-tags-by-tag-group
|
||||||
|
add-user-source! remove-user-source! get-possible-user-sources
|
||||||
|
set-new-user-default-interests!)
|
||||||
|
|
||||||
|
(import chicken scheme data-structures ports)
|
||||||
|
|
||||||
|
(use postgresql sql-null srfi-19 srfi-1 matchable srfi-13)
|
||||||
|
|
||||||
|
;; (define (debug a . r)
|
||||||
|
;; (log-to (debug-log) (with-output-to-string (lambda () (apply print a
|
||||||
|
;; r)))))
|
||||||
|
|
||||||
|
(define account-exists-condition (make-property-condition 'account-exists))
|
||||||
|
(define account-exists-condition-predicate (condition-predicate 'account-exists))
|
||||||
|
|
||||||
|
;; Update postgres parsers to handle dates.
|
||||||
|
(default-type-unparsers
|
||||||
|
(append (default-type-unparsers)
|
||||||
|
`((,date? . ,(lambda (conn d) (date->string d "~Y-~m-~d ~H:~M:~S"))))))
|
||||||
|
|
||||||
|
(default-type-parsers
|
||||||
|
(append (default-type-parsers)
|
||||||
|
`(("timestamptz" . ,(lambda (d) (string->date d "~Y-~m-~d ~H:~M:~S"))))))
|
||||||
|
|
||||||
|
|
||||||
|
(define connection-spec (make-parameter '((dbname . "news"))))
|
||||||
|
(define db-connection (make-parameter #f))
|
||||||
|
|
||||||
|
(define (with-db proc)
|
||||||
|
(if (db-connection)
|
||||||
|
(begin (db-connection)
|
||||||
|
(proc (db-connection)))
|
||||||
|
(let ((conn #f))
|
||||||
|
(dynamic-wind
|
||||||
|
(lambda ()
|
||||||
|
(set! conn (connect (connection-spec))))
|
||||||
|
(lambda () (proc conn))
|
||||||
|
(lambda ()
|
||||||
|
(when (and (connection? conn) (connected? conn))
|
||||||
|
(disconnect conn)))))))
|
||||||
|
|
||||||
|
(define (with-db/transaction proc)
|
||||||
|
(with-db
|
||||||
|
(lambda (conn)
|
||||||
|
(with-transaction conn
|
||||||
|
(lambda () (proc conn))))))
|
||||||
|
|
||||||
|
(define (get-sources conn)
|
||||||
|
(row-map* (lambda (id name icon-path)
|
||||||
|
`((source-id . ,id) (name . ,name) (icon-path . ,icon-path)))
|
||||||
|
(query conn "select source_id, name, icon_path from article_source;")))
|
||||||
|
|
||||||
|
(define (get-user-sources conn user-id)
|
||||||
|
(row-map* (lambda (id name icon-path)
|
||||||
|
`((source-id . ,id) (name . ,name) (icon-path . ,icon-path)))
|
||||||
|
(query conn "select user_sources.source_id, name, icon_path
|
||||||
|
from user_sources
|
||||||
|
join article_source on article_source.source_id =
|
||||||
|
user_sources.source_id
|
||||||
|
where user_id=$1;" user-id)))
|
||||||
|
|
||||||
|
(define (get-user-sources-for-tag conn user-id tag)
|
||||||
|
(row-map* (lambda (id name icon-path)
|
||||||
|
`((source-id . ,id) (name . ,name) (icon-path . ,icon-path)))
|
||||||
|
(query conn
|
||||||
|
"select article_source.source_id, article_source.name,
|
||||||
|
article_source.icon_path from tag_subscriptions
|
||||||
|
join tags on tags.tag_id = tag_subscriptions.tag_id
|
||||||
|
join article_source on
|
||||||
|
article_source.source_id = tag_subscriptions.source_id
|
||||||
|
where user_id=$1 and tags.name = $2;"
|
||||||
|
user-id tag)))
|
||||||
|
|
||||||
|
(define (get-possible-user-sources-for-tag conn user-id tag)
|
||||||
|
(row-map* (lambda (id name icon-path)
|
||||||
|
`((source-id . ,id) (name . ,name) (icon-path . ,icon-path)))
|
||||||
|
(query conn
|
||||||
|
"select t1.source_id, name, icon_path from
|
||||||
|
(select distinct user_sources.source_id from user_sources
|
||||||
|
join article_view
|
||||||
|
on article_view.source_id = user_sources.source_id
|
||||||
|
where user_id=$1 and $2 = any(tags)) as t1
|
||||||
|
join article_source on article_source.source_id = t1.source_id;"
|
||||||
|
user-id tag)))
|
||||||
|
|
||||||
|
(define (get-possible-user-sources conn user-id)
|
||||||
|
(row-map* (lambda (id name icon-path)
|
||||||
|
`((source-id . ,id) (name . ,name) (icon-path . ,icon-path)))
|
||||||
|
(query conn
|
||||||
|
"select distinct tags_and_sources.source_id,
|
||||||
|
source_name, source_icon_path from tag_subscriptions
|
||||||
|
join tags_and_sources
|
||||||
|
on tags_and_sources.tag_id = tag_subscriptions.tag_id
|
||||||
|
where user_id=$1;"
|
||||||
|
user-id)))
|
||||||
|
|
||||||
|
(define (get-tags-and-sources conn)
|
||||||
|
(row-map*
|
||||||
|
(lambda (source-id source-name source-icon-path tag-id tag-name tag-rank
|
||||||
|
groups-ids groups-names)
|
||||||
|
`((source-id . ,source-id) (source-name . ,source-name)
|
||||||
|
(source-icon-path . ,source-icon-path) (tag-id . ,tag-id)
|
||||||
|
(tag-name . ,tag-name) (tag-rank . ,tag-rank)
|
||||||
|
(groups-ids . ,(vector->list groups-ids))
|
||||||
|
(groups-names . ,(vector->list groups-names))))
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select source_id, source_name, source_icon_path, tag_id, tag_name, tag_rank,
|
||||||
|
tag_groups_id::int[], tag_groups_name::text[]
|
||||||
|
from tags_and_sources where tag_rank < 100;")))
|
||||||
|
|
||||||
|
(define (get-tags-by-tag-group conn tag-group #!key exclude-user-id)
|
||||||
|
(row-map*
|
||||||
|
(lambda (tag-id tag-name)
|
||||||
|
`((tag-id . ,tag-id) (tag-name . ,tag-name)))
|
||||||
|
(if exclude-user-id
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags.tag_id, tags.name from
|
||||||
|
(select tag_id from tags_groups
|
||||||
|
join tag_group_names on tag_group_names.group_id = tags_groups.group_id
|
||||||
|
where group_name=$1
|
||||||
|
except select tag_subscriptions.tag_id from tag_subscriptions
|
||||||
|
where user_id=$2) as t join tags on tags.tag_id = t.tag_id;"
|
||||||
|
tag-group exclude-user-id)
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags.tag_id, tags.name from
|
||||||
|
(select tag_id from tags_groups
|
||||||
|
join tag_group_names on tag_group_names.group_id = tags_groups.group_id
|
||||||
|
where group_name=$1) as t join tags on tags.tag_id = t.tag_id;"
|
||||||
|
tag-group))))
|
||||||
|
|
||||||
|
(define (set-user-sources! conn user-id sources)
|
||||||
|
;; TODO should do all in one query?
|
||||||
|
(with-transaction conn
|
||||||
|
(lambda ()
|
||||||
|
(query conn "delete from user_sources where user_id=$1;" user-id)
|
||||||
|
;; TODO should do all in one query
|
||||||
|
(for-each
|
||||||
|
(lambda (src)
|
||||||
|
(query conn "insert into user_sources(user_id, source_id) values ($1, $2);"
|
||||||
|
user-id (alist-ref 'source-id src)))
|
||||||
|
sources))))
|
||||||
|
|
||||||
|
(define (remove-tag-from-user conn user-id tag)
|
||||||
|
(query conn "delete from tag_subscriptions
|
||||||
|
where user_id=$1 and tag_id=(select tag_id from tags where name=$2);"
|
||||||
|
user-id tag))
|
||||||
|
|
||||||
|
(define (add-all-sources-for-tag-for-user! conn user-id tag)
|
||||||
|
(let ((sources
|
||||||
|
(column-values
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select distinct source_id from article_view where $1 = any(tags);" tag))))
|
||||||
|
(for-each
|
||||||
|
(lambda (src)
|
||||||
|
(query conn "insert into user_sources(user_id, source_id) values ($1, $2);"
|
||||||
|
user-id src))
|
||||||
|
sources)))
|
||||||
|
|
||||||
|
(define (add-source! conn name icon-path)
|
||||||
|
(query conn "insert into article_source(name, icon_path) values ($1, $2);"
|
||||||
|
name icon-path))
|
||||||
|
|
||||||
|
(define (add-user-source! conn source-id user-id)
|
||||||
|
(let ((tag-ids
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags_and_sources.tag_id from tags_and_sources
|
||||||
|
where tag_id = any((select distinct tag_id from tag_subscriptions
|
||||||
|
where user_id=$1)) and source_id=$2;"
|
||||||
|
user-id source-id)))
|
||||||
|
(row-for-each*
|
||||||
|
(lambda (tag-id)
|
||||||
|
(query conn
|
||||||
|
"insert into tag_subscriptions(source_id, user_id, tag_id)
|
||||||
|
values($1, $2, $3);"
|
||||||
|
source-id user-id tag-id))
|
||||||
|
tag-ids)
|
||||||
|
(query conn "insert into user_sources(user_id, source_id)
|
||||||
|
values ($1, $2);"
|
||||||
|
user-id source-id)))
|
||||||
|
|
||||||
|
(define (remove-user-source! conn source-id user-id)
|
||||||
|
(query conn "delete from tag_subscriptions where source_id=$1 and user_id=$2;"
|
||||||
|
source-id user-id)
|
||||||
|
(query conn "delete from user_sources where source_id=$1 and user_id=$2;;"
|
||||||
|
source-id user-id))
|
||||||
|
|
||||||
|
(define (set-new-user-default-interests! conn user-id default-user-id)
|
||||||
|
(row-for-each*
|
||||||
|
(lambda (tag-id source-id)
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"insert into tag_subscriptions (user_id, tag_id, source_id) values ($1, $2, $3);"
|
||||||
|
user-id tag-id source-id))
|
||||||
|
(query conn "select tag_id, source_id from tag_subscriptions where user_id=$1"
|
||||||
|
default-user-id)))
|
||||||
|
|
||||||
|
(define (set-user-default-interests! conn user-id group-name)
|
||||||
|
(let ((tags (column-values
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags.name from tags_groups
|
||||||
|
join tag_group_names on tag_group_names.group_id = tags_groups.group_id
|
||||||
|
join tags on tags.tag_id = tags_groups.tag_id
|
||||||
|
where group_name=$1;" group-name))))
|
||||||
|
(for-each
|
||||||
|
(lambda (tag)
|
||||||
|
(let ((possible-sources (get-possible-user-sources-for-tag conn user-id tag)))
|
||||||
|
(for-each
|
||||||
|
(lambda (source-id)
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"insert into tag_subscriptions (user_id, tag_id, source_id)
|
||||||
|
values ($1, (select tag_id from tags where name=$2), $3);"
|
||||||
|
user-id tag source-id))
|
||||||
|
(map (lambda (s) (alist-ref 'source-id s)) possible-sources))))
|
||||||
|
tags)))
|
||||||
|
|
||||||
|
(define (get-articles-by-subscriptions conn source-id/tag-lists
|
||||||
|
#!key (limit 20) rank
|
||||||
|
(excludes '()))
|
||||||
|
(query* conn (conc "select article_id, title, author, date, description,
|
||||||
|
rank, content, original_path, original_height, original_width,
|
||||||
|
tags::text[], points,
|
||||||
|
uri, source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[]
|
||||||
|
from article_view where article_id <> all($1::int[]) and "
|
||||||
|
(string-intersperse
|
||||||
|
(map-in-order
|
||||||
|
(lambda (i)
|
||||||
|
(conc " source_id = $" i " and $" (+ i 1)
|
||||||
|
"::varchar[] && tags "))
|
||||||
|
(iota (length source-id/tag-lists) 2 2))
|
||||||
|
" or ")
|
||||||
|
" order by " (if rank "rank, " "")
|
||||||
|
"date desc limit " limit ";")
|
||||||
|
(append
|
||||||
|
(list (list->vector (or excludes '())))
|
||||||
|
(flatten
|
||||||
|
(map-in-order
|
||||||
|
(lambda (source-id/tag-list)
|
||||||
|
`(,(car source-id/tag-list) ,(list->vector (cadr source-id/tag-list))))
|
||||||
|
source-id/tag-lists)))))
|
||||||
|
|
||||||
|
;; postgres result processing.
|
||||||
|
(define (single-value/default pg-result . default)
|
||||||
|
(if (and (> (row-count pg-result) 0) (> (column-count pg-result) 0))
|
||||||
|
(value-at pg-result 0 0)
|
||||||
|
(optional default (error "no result"))))
|
||||||
|
|
||||||
|
(define (refresh-article-view! conn)
|
||||||
|
(query conn "refresh materialized view concurrently article_view;"))
|
||||||
|
|
||||||
|
(define (refresh-tags-and-sources-view! conn)
|
||||||
|
(query conn "refresh materialized view concurrently tags_and_sources;"))
|
||||||
|
|
||||||
|
(define (add-user! conn email #!key hash salt)
|
||||||
|
(let ((user-id (query conn "insert into user_account(password, salt, email)
|
||||||
|
values($1, $2, $3) returning user_id;"
|
||||||
|
(or hash "")
|
||||||
|
(or salt "")
|
||||||
|
email)))
|
||||||
|
(query conn "insert into user_settings(user_id) values($1);"
|
||||||
|
(car (row-values user-id)))
|
||||||
|
user-id))
|
||||||
|
|
||||||
|
(define (get-user-id-by-email conn email)
|
||||||
|
(and-let* ((_user-id
|
||||||
|
(query conn "select user_id from user_account where email=$1;" email))
|
||||||
|
(user-id (and (> (row-count _user-id) 0) (value-at _user-id 0 0))))
|
||||||
|
user-id))
|
||||||
|
|
||||||
|
(define (get-password-and-salt conn email)
|
||||||
|
(query conn "select password, salt from user_account where email=$1;" email))
|
||||||
|
|
||||||
|
(define (get-viewed-articles conn user-id)
|
||||||
|
(column-values
|
||||||
|
(query conn "select article_id from article_viewed_by_user
|
||||||
|
where user_id=$1 and viewed=TRUE;"
|
||||||
|
user-id)))
|
||||||
|
|
||||||
|
(define (get-upvoted-articles conn user-id)
|
||||||
|
(column-values (query conn "select article_id from upvoted_by_user where user_id=$1;"
|
||||||
|
user-id)))
|
||||||
|
|
||||||
|
(define (article-upvoted? conn user-id article-id)
|
||||||
|
(query conn "select article_id from upvoted_by_user
|
||||||
|
where user_id=$1 and article_id=$2;"
|
||||||
|
user-id article-id))
|
||||||
|
|
||||||
|
(define (set-article-for-user-upvoted! conn user-id article-id)
|
||||||
|
(query conn "insert into upvoted_by_user (article_id, user_id) values ($1, $2);"
|
||||||
|
article-id user-id))
|
||||||
|
|
||||||
|
(define (session-delete! conn session-id)
|
||||||
|
(query conn "delete from session where session_id=$1;" session-id))
|
||||||
|
|
||||||
|
(define (insert-new-tag conn tag)
|
||||||
|
(value-at (query conn "insert into tags(name) values($1) returning tag_id;" tag) 0 0))
|
||||||
|
|
||||||
|
(define (get-article-id-by-guid conn guid-hash)
|
||||||
|
(query conn "select article_id from articles where guid=$1;" guid-hash))
|
||||||
|
|
||||||
|
(define (get-article-author-by-source-id conn source-id)
|
||||||
|
(query conn
|
||||||
|
"select article_id, author from articles where source_id=$1;" source-id))
|
||||||
|
|
||||||
|
(define (get-author-name-by-author-id conn author-id)
|
||||||
|
(query conn
|
||||||
|
"select name from authors where author_id=$1;" author-id))
|
||||||
|
|
||||||
|
(define (get-articles-by-authors conn authors #!key limit (exclude-ids '()))
|
||||||
|
(query conn
|
||||||
|
"select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points,
|
||||||
|
uri, source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[]
|
||||||
|
from get_articles_by_authors($1::varchar[], $2, $3::int[]);"
|
||||||
|
(list->vector authors) (or limit (sql-null))
|
||||||
|
(or (and exclude-ids (list->vector exclude-ids)) #())))
|
||||||
|
|
||||||
|
(define (get-authors conn prefix)
|
||||||
|
(query conn
|
||||||
|
"select author_id, name from authors where name ilike $1;"
|
||||||
|
(conc prefix "%")))
|
||||||
|
|
||||||
|
(define (insert-new-author! conn name)
|
||||||
|
(query conn "insert into authors(name) values ($1);" name))
|
||||||
|
|
||||||
|
(define (insert-author! conn article-id author #!key (insert-if-not-exists #t))
|
||||||
|
(when insert-if-not-exists
|
||||||
|
(when (=
|
||||||
|
(row-count
|
||||||
|
(query conn
|
||||||
|
"select name from authors where name=$1;" author))
|
||||||
|
0)
|
||||||
|
(insert-new-author! conn author)))
|
||||||
|
(when (= (row-count
|
||||||
|
(query conn "select 1 from article_author
|
||||||
|
join authors on authors.author_id = article_author.author_id
|
||||||
|
where article_author.article_id=$1 and name=$2;"
|
||||||
|
article-id author))
|
||||||
|
0)
|
||||||
|
(query conn "insert into article_author(article_id, author_id)
|
||||||
|
values($1, (select author_id from authors where name=$2));"
|
||||||
|
article-id author)))
|
||||||
|
|
||||||
|
(define (upsert-article! conn #!key title author
|
||||||
|
date (tags '()) content (images '())
|
||||||
|
(viewed 0) (description "") (insert-tag-if-not-exists #f)
|
||||||
|
(insert-author-if-not-exists #t)
|
||||||
|
(rank 5) (article-id #f)
|
||||||
|
authors
|
||||||
|
source guid-hash uri)
|
||||||
|
(with-transaction conn
|
||||||
|
(lambda ()
|
||||||
|
(let* ((new-article (not article-id))
|
||||||
|
(article-id
|
||||||
|
(if article-id
|
||||||
|
(begin
|
||||||
|
(query conn "update articles set title=$1, author=$2, content=$3,
|
||||||
|
description=$4, rank=$5, uri=$6
|
||||||
|
where article_id=$7;"
|
||||||
|
title author content description rank
|
||||||
|
uri article-id)
|
||||||
|
article-id)
|
||||||
|
(car (row-values
|
||||||
|
(query conn "insert into articles (title, author, content,
|
||||||
|
date, description, rank, guid, uri,
|
||||||
|
source_id)
|
||||||
|
values($1, $2, $3, $4, $5, $6, $7, $8,
|
||||||
|
(select source_id from article_source where
|
||||||
|
name = $9))
|
||||||
|
returning article_id;"
|
||||||
|
;; don't set rank if rank is #f
|
||||||
|
title author content date description rank
|
||||||
|
guid-hash uri source))))))
|
||||||
|
(for-each (lambda (author)
|
||||||
|
(insert-author! conn article-id author
|
||||||
|
insert-if-not-exists: insert-author-if-not-exists))
|
||||||
|
authors)
|
||||||
|
(for-each (lambda (tag)
|
||||||
|
(when insert-tag-if-not-exists
|
||||||
|
(when (=
|
||||||
|
(row-count
|
||||||
|
(query conn
|
||||||
|
"select tag_id from tags where name=$1;" tag))
|
||||||
|
0)
|
||||||
|
(insert-new-tag conn tag)))
|
||||||
|
(when (=
|
||||||
|
(row-count
|
||||||
|
(query conn "select 1 from article_tags where
|
||||||
|
article_id=$1 and tag_id=
|
||||||
|
(select tag_id from tags where name=$2);"
|
||||||
|
article-id tag))
|
||||||
|
0)
|
||||||
|
(query conn
|
||||||
|
"insert into article_tags(article_id, tag_id) values($1,
|
||||||
|
(select tag_id from tags where name=$2));"
|
||||||
|
article-id tag)))
|
||||||
|
tags)
|
||||||
|
(for-each (lambda (img)
|
||||||
|
;; Make sure we don't end up with two cover images.
|
||||||
|
(when (and (not new-article) (alist-ref 'cover img))
|
||||||
|
(query conn "update article_images set cover=FALSE
|
||||||
|
where article_id=$1;" article-id))
|
||||||
|
(query conn
|
||||||
|
"insert into article_images(article_id,
|
||||||
|
original_path, original_width, original_height,
|
||||||
|
cover) values ($1, $2, $3, $4, $5);"
|
||||||
|
article-id
|
||||||
|
(alist-ref 'original-path img)
|
||||||
|
(alist-ref 'original-width img)
|
||||||
|
(alist-ref 'original-height img)
|
||||||
|
(alist-ref 'cover img)))
|
||||||
|
images)
|
||||||
|
(when new-article
|
||||||
|
(query conn "insert into article_stats (article_id) values ($1);"
|
||||||
|
article-id))
|
||||||
|
article-id))))
|
||||||
|
|
||||||
|
(define (get-article-cover-path conn article-id)
|
||||||
|
(let ((p (query conn "select original_path from article_images where article_id=$1
|
||||||
|
and cover=true;"
|
||||||
|
article-id)))
|
||||||
|
(if (and (> (row-count p) 0) (> (column-count p) 0))
|
||||||
|
(value-at p 0 0)
|
||||||
|
#f)))
|
||||||
|
|
||||||
|
(define (get-all-images-path-and-id conn)
|
||||||
|
(query conn "select original_path, image_id from article_images;"))
|
||||||
|
|
||||||
|
(define (article-exists? conn id)
|
||||||
|
(> (row-count (query conn "select 1 from articles where article_id=$1;" id)) 0))
|
||||||
|
|
||||||
|
(define (get-article-by-id conn article-id)
|
||||||
|
(row-values
|
||||||
|
(query conn
|
||||||
|
"select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points,
|
||||||
|
uri, source_name, source_icon_path, source_id, authors::text[]
|
||||||
|
from get_article_by_id($1);"
|
||||||
|
article-id)))
|
||||||
|
|
||||||
|
(define (cursor-get-all conn pg-result)
|
||||||
|
(let* ((cur (value-at pg-result))
|
||||||
|
(r (query conn (string-append "fetch all in \"" cur "\";"))))
|
||||||
|
(query conn (string-append "close \"" cur "\";"))
|
||||||
|
r))
|
||||||
|
|
||||||
|
(define (get-articles-by-tags conn tags #!key limit exclude-ids sources sort)
|
||||||
|
(query conn
|
||||||
|
(string-append "select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points,
|
||||||
|
uri, source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[]
|
||||||
|
from get_articles_by_tags" (if (eq? sort 'rank) "_and_rank" "")
|
||||||
|
"($1::varchar[], $2, $3::int[], $4::int[]);")
|
||||||
|
(list->vector tags) (or limit (sql-null))
|
||||||
|
(or (and exclude-ids (list->vector exclude-ids)) #())
|
||||||
|
(list->vector sources)))
|
||||||
|
|
||||||
|
;; TODO in news-init.sql, does the stored procedure need to order by
|
||||||
|
;; for the second query?
|
||||||
|
(define (get-articles-by-popularity conn #!key tags limit offset exclude-ids
|
||||||
|
sources)
|
||||||
|
(if (or (not tags) (null? tags))
|
||||||
|
(query conn
|
||||||
|
"select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points, uri,
|
||||||
|
source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[]
|
||||||
|
from get_articles_by_popularity
|
||||||
|
($1::int, $2::int, $3::int[], $4::int[]);"
|
||||||
|
(or limit (sql-null)) (or offset 0)
|
||||||
|
(if exclude-ids (list->vector exclude-ids) #())
|
||||||
|
(list->vector sources))
|
||||||
|
(query conn
|
||||||
|
"select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points, uri,
|
||||||
|
source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[]
|
||||||
|
from get_articles_by_popularity
|
||||||
|
($1, $2, $3::int[], $4::text[], $5::int[]);"
|
||||||
|
(or limit (sql-null)) (or offset 0)
|
||||||
|
(if exclude-ids (list->vector exclude-ids) #())
|
||||||
|
(if tags (list->vector tags) #())
|
||||||
|
(list->vector sources))))
|
||||||
|
|
||||||
|
(define (get-user-settings conn user-id)
|
||||||
|
(row-alist (query conn
|
||||||
|
"select unviewed_only as \"unviewed-only\", tracking
|
||||||
|
from user_settings where user_id=$1;"
|
||||||
|
user-id)))
|
||||||
|
|
||||||
|
(define (scheme-symbol->db-name symbol)
|
||||||
|
(string-intersperse (string-split (symbol->string symbol) "-") "_"))
|
||||||
|
|
||||||
|
(define (set-user-setting! conn user-id setting value)
|
||||||
|
(when (= (row-count
|
||||||
|
(query conn "select 1 from user_settings where user_id=$1;" user-id))
|
||||||
|
0)
|
||||||
|
(query conn (conc "insert into user_settings(user_id, "
|
||||||
|
(scheme-symbol->db-name setting)
|
||||||
|
") values ($1, $2);")
|
||||||
|
value user-id))
|
||||||
|
(query conn (conc "update user_settings set " (scheme-symbol->db-name setting)
|
||||||
|
"=$1 where user_id=$2;")
|
||||||
|
value user-id))
|
||||||
|
|
||||||
|
(define (get-articles-viewed-by-user conn user-id)
|
||||||
|
(column-values
|
||||||
|
(query conn
|
||||||
|
"select article_id from article_viewed_by_user
|
||||||
|
where user_id=$1 and viewed=TRUE;" user-id)))
|
||||||
|
|
||||||
|
(define (get-article-points conn article-id #!key (add-to-params #t))
|
||||||
|
(value-at
|
||||||
|
(query
|
||||||
|
conn "select points from article_stats where article_id=$1;" article-id)
|
||||||
|
0 0))
|
||||||
|
|
||||||
|
(define (mark-article-viewed! conn article-id user-id)
|
||||||
|
(handle-exceptions
|
||||||
|
exn
|
||||||
|
(if (string=?
|
||||||
|
((condition-property-accessor 'query 'error-code "nill") exn)
|
||||||
|
"23505") ; unique violation, we don't care
|
||||||
|
(void)
|
||||||
|
(abort exn))
|
||||||
|
(query conn
|
||||||
|
"insert into article_viewed_by_user(article_id, user_id, viewed)
|
||||||
|
values($1, $2, TRUE);"
|
||||||
|
article-id user-id)))
|
||||||
|
|
||||||
|
(define (increment-article-viewed! conn article-id)
|
||||||
|
(query conn
|
||||||
|
"update article_stats set view_count = view_count + 1
|
||||||
|
where article_id=$1;"
|
||||||
|
article-id))
|
||||||
|
|
||||||
|
(define (upvote-article! conn article-id)
|
||||||
|
(query conn
|
||||||
|
"update article_stats set points = points + 1 where article_id=$1;"
|
||||||
|
article-id))
|
||||||
|
|
||||||
|
(define (touch-session conn session-id expiration)
|
||||||
|
(query conn "update session set expiration=$1 where session_id=$2;"
|
||||||
|
expiration session-id))
|
||||||
|
|
||||||
|
(define (set-session-user-id! conn session-id user-id expiration
|
||||||
|
#!key (new-session #f))
|
||||||
|
(if new-session
|
||||||
|
(query conn
|
||||||
|
"insert into session(user_id, session_id, expiration)
|
||||||
|
values ($1, $2, $3);"
|
||||||
|
user-id session-id expiration)
|
||||||
|
(query conn
|
||||||
|
"update session set user_id=$1 where session_id=$2;"
|
||||||
|
user-id session-id))
|
||||||
|
(touch-session conn session-id expiration))
|
||||||
|
|
||||||
|
(define (get-session-user-id conn session-id)
|
||||||
|
(query conn "select expiration, user_id from session where session_id=$1;" session-id))
|
||||||
|
|
||||||
|
(define (session-exists? conn session-id)
|
||||||
|
(> (row-count
|
||||||
|
(query conn "select 1 from session where session_id=$1;" session-id))
|
||||||
|
0))
|
||||||
|
|
||||||
|
(define (user-signed-in? conn user-id session-id)
|
||||||
|
(> (row-count
|
||||||
|
(query conn "select 1 from user_account
|
||||||
|
join session on session.user_id = user_account.user_id
|
||||||
|
where user_account.user_id=$1 and password != ''
|
||||||
|
and session_id=$2;"
|
||||||
|
user-id session-id))
|
||||||
|
0))
|
||||||
|
|
||||||
|
(define (account-exists? conn email)
|
||||||
|
(> (row-count
|
||||||
|
(query conn "select 1 from user_account where email=$1 and password != '';"
|
||||||
|
email))
|
||||||
|
0))
|
||||||
|
|
||||||
|
(define (create-account! conn user-id email password-hash salt)
|
||||||
|
(if (not (account-exists? conn email))
|
||||||
|
(query conn
|
||||||
|
"update user_account set email=$1, password=$2, salt=$3 where user_id=$4;"
|
||||||
|
email password-hash salt user-id)
|
||||||
|
(signal account-exists-condition)))
|
||||||
|
|
||||||
|
(define (get-users-articles conn user-id limit #!key rank tag)
|
||||||
|
(query* conn
|
||||||
|
(string-append
|
||||||
|
"select article_id, title, author, date, description,
|
||||||
|
rank, content, cover_image_path, cover_image_height,
|
||||||
|
cover_image_width, tags::text[], points, uri,
|
||||||
|
source_name, source_icon_path, source_id, authors::text[],
|
||||||
|
author_ids::int[] from
|
||||||
|
get_tag_subscriptions_by_user"
|
||||||
|
(if rank "_by_rank" "")
|
||||||
|
"($1, $2"
|
||||||
|
(if tag ", $3::varchar" "")
|
||||||
|
");")
|
||||||
|
`(,user-id ,limit ,@(if tag `(,tag) '()))))
|
||||||
|
|
||||||
|
(define (get-user-subscriptions conn user-id)
|
||||||
|
(let ((tag-subscriptions
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags.name, tag_subscriptions.source_id,
|
||||||
|
tag_subscriptions.tag_id, article_source.name, article_source.icon_path
|
||||||
|
from tag_subscriptions
|
||||||
|
join tags on tags.tag_id=tag_subscriptions.tag_id
|
||||||
|
join article_source on article_source.source_id=tag_subscriptions.source_id
|
||||||
|
where tag_subscriptions.user_id=$1;"
|
||||||
|
user-id))
|
||||||
|
(author-subscriptions
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select authors.name, author_subscriptions.author_id
|
||||||
|
from author_subscriptions
|
||||||
|
join authors on authors.author_id=author_subscriptions.author_id
|
||||||
|
where author_subscriptions.user_id=$1;"
|
||||||
|
user-id)))
|
||||||
|
(append
|
||||||
|
(row-map* (lambda (name source-id tag-id source-name icon-path)
|
||||||
|
`((source-id . ,source-id) (source-name . ,source-name)
|
||||||
|
(type . tag) (value . ,name) (value-id . ,tag-id)
|
||||||
|
(source-icon-path . ,icon-path)))
|
||||||
|
tag-subscriptions)
|
||||||
|
(row-map* (lambda (name author-id)
|
||||||
|
`((type . author) (value . ,name) (value-id . ,author-id)))
|
||||||
|
author-subscriptions))))
|
||||||
|
|
||||||
|
(define (get-user-headers conn user-id)
|
||||||
|
(append
|
||||||
|
(row-map*
|
||||||
|
(lambda (name tag-id)
|
||||||
|
`((value . ,name) (id . ,tag-id) (type . tag)))
|
||||||
|
(query conn
|
||||||
|
"select name, tags.tag_id from tag_subscriptions
|
||||||
|
join tags on tags.tag_id = tag_subscriptions.tag_id
|
||||||
|
where user_id=$1 group by name, tags.tag_id;"
|
||||||
|
user-id))
|
||||||
|
(row-map*
|
||||||
|
(lambda (name author-id)
|
||||||
|
`((value . ,name) (id . ,author-id) (type . author)))
|
||||||
|
(query conn
|
||||||
|
"select name, authors.author_id from author_subscriptions
|
||||||
|
join authors on authors.author_id = author_subscriptions.author_id
|
||||||
|
where user_id=$1;"
|
||||||
|
user-id))))
|
||||||
|
|
||||||
|
(define (user-has-subscriptions conn user-id)
|
||||||
|
(or
|
||||||
|
(> (row-count
|
||||||
|
(query conn
|
||||||
|
"select 1 from tag_subscriptions
|
||||||
|
where tag_subscriptions.user_id=$1 limit 1" user-id))
|
||||||
|
0)
|
||||||
|
(> (row-count
|
||||||
|
(query conn
|
||||||
|
"select 1 from author_subscriptions
|
||||||
|
where author_subscriptions.user_id=$1 limit 1" user-id))
|
||||||
|
0)))
|
||||||
|
|
||||||
|
(define (user-tags conn user-id)
|
||||||
|
(query conn
|
||||||
|
"select tags.name from tag_subscriptions
|
||||||
|
join tags on tags.tag_id = tag_subscriptions.tag_id
|
||||||
|
where user_id=$1 group by tags.name;"
|
||||||
|
user-id))
|
||||||
|
|
||||||
|
(define (user-tag-subscribe! conn tag user-id source-id)
|
||||||
|
(when (> (row-count
|
||||||
|
(query conn
|
||||||
|
"select 1 from article_view where source_id=$1
|
||||||
|
and $2 = any(tags) limit 1;"
|
||||||
|
source-id tag))
|
||||||
|
0)
|
||||||
|
(query conn "insert into tag_subscriptions(user_id, tag_id, source_id)
|
||||||
|
values($1, (select tag_id from tags where name=$2), $3);"
|
||||||
|
user-id tag source-id)))
|
||||||
|
|
||||||
|
(define (user-tag-unsubscribe! conn tag user-id . source-id)
|
||||||
|
(if (optional source-id #f)
|
||||||
|
(query conn
|
||||||
|
"delete from tag_subscriptions where user_id=$1 and
|
||||||
|
tag_id=(select tag_id from tags where name=$2) and
|
||||||
|
source_id=$3;"
|
||||||
|
user-id tag (car source-id))
|
||||||
|
(query conn
|
||||||
|
"delete from tag_subscriptions where user_id=$1 and
|
||||||
|
tag_id=(select tag_id from tags where name=$2);"
|
||||||
|
user-id tag)))
|
||||||
|
|
||||||
|
(define (user-author-subscribe! conn author-id user-id)
|
||||||
|
(query conn "insert into author_subscriptions(user_id, author_id)
|
||||||
|
values($1, $2);"
|
||||||
|
user-id author-id))
|
||||||
|
|
||||||
|
(define (user-author-unsubscribe! conn author-id user-id)
|
||||||
|
(query conn
|
||||||
|
"delete from author_subscriptions where user_id=$1 and
|
||||||
|
author_id=$2;"
|
||||||
|
user-id author-id))
|
||||||
|
|
||||||
|
(define (set-rank-by-tag-association conn source tag rank limit #!key (offset 0))
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 from
|
||||||
|
(select articles.article_id from articles
|
||||||
|
join article_tags on article_tags.article_id = articles.article_id
|
||||||
|
join tags on tags.tag_id = article_tags.tag_id
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where article_source.name = $2 and tags.name=$3
|
||||||
|
order by date desc limit $4 offset $5) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
rank source tag limit offset))
|
||||||
|
|
||||||
|
(define (set-rank-by-title conn source-name titles rank)
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 from
|
||||||
|
(select articles.article_id from articles
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where articles.title = any($2)
|
||||||
|
and article_source.name = $3) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
rank (list->vector titles) source-name))
|
||||||
|
|
||||||
|
(define (set-rank-by-uri conn source-name uri rank)
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 from
|
||||||
|
(select articles.article_id from articles
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where articles.uri=$2
|
||||||
|
and article_source.name = $3) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
rank uri source-name))
|
||||||
|
|
||||||
|
(define (set-rank-by-partial-uri conn source-name uris rank)
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 from
|
||||||
|
(select articles.article_id from articles
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where articles.uri like any($2)
|
||||||
|
and article_source.name = $3) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
rank (list->vector
|
||||||
|
(map (lambda (u) (string-append "%" u "%")) uris)) source-name))
|
||||||
|
|
||||||
|
(define (set-rank-by-rank conn source-name by-rank to-rank limit)
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 from
|
||||||
|
(select articles.article_id from articles
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where rank=$2 and article_source.name=$3 limit $4) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
to-rank by-rank source-name limit))
|
||||||
|
|
||||||
|
(define (set-rank-by-guids conn rank guids)
|
||||||
|
(query conn
|
||||||
|
"update articles set rank=$1 where guid = any($2);"
|
||||||
|
rank (list->vector guids)))
|
||||||
|
|
||||||
|
(define (set-rank-by-date-difference conn rank duration source-name limit offset)
|
||||||
|
(query conn "update articles set rank=$1 from
|
||||||
|
(select article_id from articles
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
where date > $2 and article_source.name=$3 order by date desc limit $4
|
||||||
|
offset $5) as t
|
||||||
|
where articles.article_id=t.article_id;"
|
||||||
|
rank (date-subtract-duration (current-date) duration) source-name
|
||||||
|
limit offset))
|
||||||
|
|
||||||
|
(define (get-tags-by-rank conn)
|
||||||
|
(column-values
|
||||||
|
(query conn
|
||||||
|
"select name from tags where rank < 100 order by rank;")))
|
||||||
|
|
||||||
|
(define (get-tag-groups conn)
|
||||||
|
(row-map*
|
||||||
|
(lambda (tag-id group-name tag-name group-id)
|
||||||
|
`((tag-id . ,tag-id) (group-name . ,group-name) (tag-name . ,tag-name)
|
||||||
|
(group-id . ,group-id)))
|
||||||
|
(query
|
||||||
|
conn
|
||||||
|
"select tags_groups.tag_id, group_name, tags.name, tags_groups.group_id
|
||||||
|
from tags_groups
|
||||||
|
join tag_group_names on tag_group_names.group_id = tags_groups.group_id
|
||||||
|
join tags on tags.tag_id = tags_groups.tag_id order by rank;")))
|
||||||
|
|
||||||
|
(define (add-to-breaking-news-email conn user-id session-id email)
|
||||||
|
(when (not (user-signed-in? conn user-id session-id))
|
||||||
|
(query conn "update user_account set email=$1 where user_id=$2;"
|
||||||
|
email user-id))
|
||||||
|
(when (= (row-count
|
||||||
|
(query conn "select 1 from breaking_news_email where email=$1;"
|
||||||
|
email))
|
||||||
|
0)
|
||||||
|
(query conn "insert into breaking_news_email(email) values($1);"
|
||||||
|
email)))
|
||||||
|
|
||||||
|
(define (add-to-get-invited conn email)
|
||||||
|
(when (= (row-count
|
||||||
|
(query conn "select 1 from get_invited where email=$1;"
|
||||||
|
email))
|
||||||
|
0)
|
||||||
|
(query conn "insert into get_invited(email) values($1);"
|
||||||
|
email)))
|
||||||
|
|
||||||
|
(define (set-tags-by-text conn text-list tag)
|
||||||
|
(let* ((tag-id-result
|
||||||
|
(query conn
|
||||||
|
"select tag_id from tags where name=$1;" tag))
|
||||||
|
(tag-exists (> (row-count tag-id-result) 0))
|
||||||
|
(tag-id (if tag-exists
|
||||||
|
(value-at tag-id-result 0 0)
|
||||||
|
(insert-new-tag conn tag))))
|
||||||
|
(let ((ids
|
||||||
|
(column-values
|
||||||
|
(query*
|
||||||
|
conn
|
||||||
|
(conc
|
||||||
|
"select article_id from (select distinct t2.article_id from (select article_id from articles order by date desc limit 50000) as t2
|
||||||
|
join articles on articles.article_id = t2.article_id
|
||||||
|
where "
|
||||||
|
(string-intersperse
|
||||||
|
(map-in-order
|
||||||
|
(lambda (i)
|
||||||
|
(conc "description like $" i
|
||||||
|
" or description like $" (+ i 1)
|
||||||
|
" or title like $" (+ i 2)
|
||||||
|
" or title like $" (+ i 3)))
|
||||||
|
(iota (length text-list) 2 4))
|
||||||
|
" or ")
|
||||||
|
") as t
|
||||||
|
where article_id <> all
|
||||||
|
(select article_id from article_tags where tag_id=$1);")
|
||||||
|
(append
|
||||||
|
(list tag-id)
|
||||||
|
(flatten
|
||||||
|
(map-in-order
|
||||||
|
(lambda (text)
|
||||||
|
`(,(conc "%" text "%")
|
||||||
|
,(conc "%" (string-titlecase text) "%")
|
||||||
|
,(conc "%" text "%")
|
||||||
|
,(conc "%" (string-titlecase text) "%")))
|
||||||
|
text-list)))))))
|
||||||
|
(for-each (lambda (id)
|
||||||
|
(query conn
|
||||||
|
"insert into article_tags(tag_id, article_id) values($1, $2);"
|
||||||
|
tag-id id))
|
||||||
|
ids))))
|
||||||
|
|
||||||
|
)
|
@ -0,0 +1,712 @@
|
|||||||
|
(;; ("New York Times"
|
||||||
|
;; . (rss
|
||||||
|
;; ((nation ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/US.xml")
|
||||||
|
;; ((world ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/World.xml")
|
||||||
|
;; ((business ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Business.xml")
|
||||||
|
;; ((sports ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Sports.xml")
|
||||||
|
;; ((homepage ny-times-rank-primary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml")
|
||||||
|
;; ((art ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Arts.xml")
|
||||||
|
;; ((local ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/NYRegion.xml")
|
||||||
|
;; ((technology ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Technology.xml")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Politics.xml")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Upshot.xml")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/paulkrugman/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/charles_m_blow/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/frankbruni/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/news/international/columns/rogercohen/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/gailcollins/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/rossdouthat/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/maureendowd/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/thomaslfriedman/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/billkeller/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/nicholasdkristof/index.html?rss=1")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/columnists/joenocera/index.html?rss=1")
|
||||||
|
;; ((opinion editorials)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/editorials/index.html?rss=1")
|
||||||
|
;; ((opinion op-ed)
|
||||||
|
;; . "http://topics.nytimes.com/top/opinion/editorialsandoped/oped/contributors/index.html?rss=1")
|
||||||
|
;; ((world africa)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Africa.xml")
|
||||||
|
;; ((world americas)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Americas.xml")
|
||||||
|
;; ((world asia)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/AsiaPacific.xml")
|
||||||
|
;; ((world europe)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Europe.xml")
|
||||||
|
;; ((world middle-east)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/MiddleEast.xml")
|
||||||
|
;; ((nation education)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Education.xml")
|
||||||
|
;; ((business business-energy-and-environment)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/EnergyEnvironment.xml")
|
||||||
|
;; ((business international-business)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/InternationalBusiness.xml")
|
||||||
|
;; ((business small-business)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/SmallBusiness.xml")
|
||||||
|
;; ((business economy)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Economy.xml")
|
||||||
|
;; ((business business-deals)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Dealbook.xml")
|
||||||
|
;; ((business media advertising)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/MediaandAdvertising.xml")
|
||||||
|
;; ((business money)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/YourMoney.xml")
|
||||||
|
;; ((technology bits-blog)
|
||||||
|
;; . "http://bits.blogs.nytimes.com/feed/")
|
||||||
|
;; ((technology personal-tech)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/PersonalTech.xml")
|
||||||
|
;; ((sports international-sports)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/InternationalSports.xml")
|
||||||
|
;; ((sports baseball)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Baseball.xml")
|
||||||
|
;; ((sports college-basketball)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/CollegeBasketball.xml")
|
||||||
|
;; ((sports college-football)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/CollegeFootball.xml")
|
||||||
|
;; ((sports golf)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Golf.xml")
|
||||||
|
;; ((sports hockey)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Hockey.xml")
|
||||||
|
;; ((sports pro-basketball)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/ProBasketball.xml")
|
||||||
|
;; ((sports pro-football)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/ProFootball.xml")
|
||||||
|
;; ((sports soccer)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Soccer.xml")
|
||||||
|
;; ((sports tennis)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Tennis.xml")
|
||||||
|
;; ((science ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Science.xml")
|
||||||
|
;; ((science science-environment)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Environment.xml")
|
||||||
|
;; ((science science-space)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Space.xml")
|
||||||
|
;; ((health ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Health.xml")
|
||||||
|
;; ((health health-research)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Research.xml")
|
||||||
|
;; ((health fitness nutrition)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Nutrition.xml")
|
||||||
|
;; ((health health-money-and-policy)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/HealthCarePolicy.xml")
|
||||||
|
;; ((health health-views)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Views.xml")
|
||||||
|
;; ((art international-art)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/InternationalArts.xml")
|
||||||
|
;; ((art art-and-design)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/ArtandDesign.xml")
|
||||||
|
;; ((entertainment books)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Books.xml")
|
||||||
|
;; ((entertainment dance)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Dance.xml")
|
||||||
|
;; ((entertainment movies)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Movies.xml")
|
||||||
|
;; ((entertainment music)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Music.xml")
|
||||||
|
;; ((entertainment television)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Television.xml")
|
||||||
|
;; ((entertainment theater)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Theater.xml")
|
||||||
|
;; ((style fashion ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/FashionandStyle.xml")
|
||||||
|
;; ((style international-style)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/InternationalStyle.xml")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/DiningandWine.xml")
|
||||||
|
;; ((style international-dining)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/InternationalDiningandWine.xml")
|
||||||
|
;; ((style home-and-garden)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/HomeandGarden.xml")
|
||||||
|
;; ((style weddings-and-celebrations)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Weddings.xml")
|
||||||
|
;; ((travel ny-times-rank-secondary)
|
||||||
|
;; . "http://www.nytimes.com/services/xml/rss/nyt/Travel.xml")))
|
||||||
|
|
||||||
|
;; ("Los Angeles Times"
|
||||||
|
;; . (rss
|
||||||
|
;; ((homepage la-times-rank-primary)
|
||||||
|
;; . "http://www.latimes.com/rss2.0.xml")
|
||||||
|
;; ((local la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/local/rss2.0.xml")
|
||||||
|
;; ((politics la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/local/politics/rss2.0.xml")
|
||||||
|
;; ((opinion la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/opinion/rss2.0.xml")
|
||||||
|
;; ((nation la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/nation/rss2.0.xml")
|
||||||
|
;; ((world la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/world/rss2.0.xml")
|
||||||
|
;; ((business la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/business/rss2.0.xml")
|
||||||
|
;; ((sports la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/sports/rss2.0.xml")
|
||||||
|
;; ((technology la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/business/technology/rss2.0.xml")
|
||||||
|
;; ((art la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/entertainment/arts/rss2.0.xml")
|
||||||
|
;; ((entertainment la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/entertainment/rss2.0.xml")
|
||||||
|
;; ((entertainment books)
|
||||||
|
;; . "http://www.latimes.com/books/rss2.0.xml")
|
||||||
|
;; ((entertainment movies)
|
||||||
|
;; . "http://www.latimes.com/entertainment/movies/rss2.0.xml")
|
||||||
|
;; ((entertainment music)
|
||||||
|
;; . "http://www.latimes.com/entertainment/music/rss2.0.xml")
|
||||||
|
;; ((entertainment television)
|
||||||
|
;; . "http://www.latimes.com/entertainment/tv/rss2.0.xml")
|
||||||
|
;; ((science la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/science/rss2.0.xml")
|
||||||
|
;; ((science science-now)
|
||||||
|
;; . "http://www.latimes.com/science/sciencenow/rss2.0.xml")
|
||||||
|
;; ((world africa)
|
||||||
|
;; . "http://www.latimes.com/world/africa/rss2.0.xml")
|
||||||
|
;; ((world americas)
|
||||||
|
;; . "http://www.latimes.com/world/mexico-americas/rss2.0.xml")
|
||||||
|
;; ((world asia)
|
||||||
|
;; . "http://www.latimes.com/world/asia/rss2.0.xml")
|
||||||
|
;; ((world europe)
|
||||||
|
;; . "http://www.latimes.com/world/europe/rss2.0.xml")
|
||||||
|
;; ((world middle-east)
|
||||||
|
;; . "http://www.latimes.com/world/middleeast/rss2.0.xml")
|
||||||
|
;; ((business finance)
|
||||||
|
;; . "http://www.latimes.com/business/personalfinance/rss2.0.xml")
|
||||||
|
;; ((opinion editorials)
|
||||||
|
;; . "http://www.latimes.com/opinion/editorials/rss2.0.xml")
|
||||||
|
;; ((opinion endorsements)
|
||||||
|
;; . "http://www.latimes.com/opinion/endorsements/rss2.0.xml")
|
||||||
|
;; ;; ((opinion op-ed)
|
||||||
|
;; ;; . "http://www.latimes.com/opinion/op-ed/rss2.0.xml")
|
||||||
|
;; ((style la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/style/rss2.0.xml")
|
||||||
|
;; ((style fasion)
|
||||||
|
;; . "http://www.latimes.com/fashion/rss2.0.xml")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.latimes.com/food/rss2.0.xml")
|
||||||
|
;; ((health)
|
||||||
|
;; . "http://www.latimes.com/health/rss2.0.xml")
|
||||||
|
;; ((style home-and-garden)
|
||||||
|
;; . "http://www.latimes.com/home/rss2.0.xml")
|
||||||
|
;; ((travel la-times-rank-secondary)
|
||||||
|
;; . "http://www.latimes.com/travel/rss2.0.xml")))
|
||||||
|
|
||||||
|
;; ("San Francisco Chronicle"
|
||||||
|
;; . (rss
|
||||||
|
;; ((local bay-area-news)
|
||||||
|
;; . "http://www.sfgate.com/bayarea/feed/Bay-Area-News-429.php")
|
||||||
|
;; ((local city-insider)
|
||||||
|
;; . "http://www.sfgate.com/default/feed/City-Insider-Blog-573.php")
|
||||||
|
;; ((local crime)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Crime-Scene-Blog-599.php")
|
||||||
|
;; ((nation)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/National-News-RSS-Feed-435.php")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Politics-RSS-Feed-436.php")
|
||||||
|
;; ((business technology)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Business-and-Technology-News-448.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Dot-Commentary-RSS-Feed-442.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/columnists/nevius/feed/C-W-Nevius-RSS-Feed-431.php")
|
||||||
|
;; ((education)
|
||||||
|
;; . "http://www.sfgate.com/education/feed/Education-News-from-SFGate-430.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Matier-Ross-RSS-Feed-434.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://blog.sfgate.com/pender/feed/")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/business/feed/On-The-Record-RSS-Feed-443.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Bottom-Line-Column-RSS-Feed-440.php")
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Tech-News-449.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Entertainment-530.php")
|
||||||
|
;; ((entertainment gaming)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Gaming-549.php")
|
||||||
|
;; ;; invalid RSS, 061515
|
||||||
|
;; ;; ((entertainment)
|
||||||
|
;; ;; . "http://www.sfgate.com/rss/feed/Jon-Carroll-544.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Leah-Garchik-545.php")
|
||||||
|
;; ((entertainment movies)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Movie-Reviews-540.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/John-King-547.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Kenneth-Baker-543.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Mick-LaSalle-541.php")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://www.sfgate.com/entertainment/feed/Caille-Millner-700.php")
|
||||||
|
;; ((opinion op-ed)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Chronicle-Op-Ed-RSS-Feed-437.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Debra-Saunders-RSS-Feed-439.php")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Mark-Morford-Notes-Errata-RSS-Feed-438.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/On-The-Town-499.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Sam-Whiting-504.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Bill-and-Kevin-Burnett-Sweat-Equity-503.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/The-Dirt-484.php")
|
||||||
|
;; ((style home-and-garden)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Home-Garden-519.php")
|
||||||
|
;; ((living lgbt)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Gay-Lesbian-601.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Objects-of-Affection-506.php")
|
||||||
|
;; ((living)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/The-City-Exposed-522.php")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Food-Dining-550.php")
|
||||||
|
;; ((style)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Bargain-Bites-554.php")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Dining-Out-561.php")
|
||||||
|
;; ((style food wine)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Pairings-559.php")
|
||||||
|
;; ((style food wine)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Tasting-Room-560.php")
|
||||||
|
;; ((style food wine)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/The-Cocktailian-558.php")
|
||||||
|
;; ((style food wine)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Chronicle-Wine-Selections-552.php")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Food-Matters-557.php")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Taster-s-Choice-556.php")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/The-Cheese-Course-Janet-Fletcher-553.php")
|
||||||
|
;; ((style food wine)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Wine-551.php")
|
||||||
|
;; ((comics)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/All-Over-Coffee-Paul-Madonna-564.php")
|
||||||
|
;; ((comics)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Don-Asmussen-Bad-Reporter-562.php")
|
||||||
|
;; ((comics)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Mark-Fiore-563.php")
|
||||||
|
;; ((comics)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Tom-Meyer-565.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Top-Sports-Stories-RSS-Feed-487.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://blog.sfgate.com/threedotblog/feed/")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/warriors/feed/Golden-State-Warriors-RSS-Feed-491.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/preps/feed/High-School-Sports-RSS-Feed-497.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/athletics/feed/Oakland-A-s-RSS-Feed-488.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/raiders/feed/Oakland-Raiders-RSS-Feed-490.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/49ers/feed/San-Francisco-49ers-RSS-Feed-489.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://blog.sfgate.com/ninerinsider/feed/")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/sports/feed/San-Francisco-Giants-RSS-Feed-428.php")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.sfgate.com/sharks/feed/San-Jose-Sharks-RSS-Feed-492.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Travel-News-and-Features-520.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Aloha-Friday-507.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://blog.sfgate.com/travel/feed/")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Central-Coasting-508.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Departures-509.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Five-Places-510.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Gear-513.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://blog.sfgate.com/hawaii/feed")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Just-Back-From-514.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Mexico-Mix-515.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Rick-Steves-511.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Street-Date-516.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Travel-Troubleshooter-517.php")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://www.sfgate.com/rss/feed/Urban-Outings-518.php")))
|
||||||
|
|
||||||
|
;; ("Wall Street Journal"
|
||||||
|
;; . (rss
|
||||||
|
;; ((nation wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_8068.xml")
|
||||||
|
;; ((politics wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7087.xml")
|
||||||
|
;; ((world wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7085.xml")
|
||||||
|
;; ((world asia)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7013.xml")
|
||||||
|
;; ((world europe)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7012.xml")
|
||||||
|
;; ((world markets)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7432.xml")
|
||||||
|
;; ((world asia)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7480.xml")
|
||||||
|
;; ((world china)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7441.xml")
|
||||||
|
;; ((world hong-kong)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_8070.xml")
|
||||||
|
;; ((world india)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_8147.xml")
|
||||||
|
;; ((world europe)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7481.xml")
|
||||||
|
;; ((world uk)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7440.xml")
|
||||||
|
;; ((world middle-east)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7701.xml")
|
||||||
|
;; ((world africa)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7736.xml")
|
||||||
|
;; ((local wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7730.xml")
|
||||||
|
;; ((local)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7731.xml")
|
||||||
|
;; ((local culture)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7732.xml")
|
||||||
|
;; ((local sports)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7733.xml")
|
||||||
|
;; ((business wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7014.xml")
|
||||||
|
;; ((business)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7088.xml")
|
||||||
|
;; ((business economy)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7086.xml")
|
||||||
|
;; ((business health)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7089.xml")
|
||||||
|
;; ((business law)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7091.xml")
|
||||||
|
;; ((business management)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7433.xml")
|
||||||
|
;; ((business media-and-marketing)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7020.xml")
|
||||||
|
;; ((technology wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7455.xml")
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7454.xml")
|
||||||
|
;; ((market)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7031.xml")
|
||||||
|
;; ((market deals)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7099.xml")
|
||||||
|
;; ((market world-markets)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7432.xml")
|
||||||
|
;; ((finance finance-personal)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7104.xml")
|
||||||
|
;; ((finance finance-family)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7423.xml")
|
||||||
|
;; ((finance finance-insurance)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7424.xml")
|
||||||
|
;; ((finance finance-investing)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7425.xml")
|
||||||
|
;; ((finance finance-loans-and-credit)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7426.xml")
|
||||||
|
;; ((finance finance-retirement)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7427.xml")
|
||||||
|
;; ((finance finance-taxes)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7428.xml")
|
||||||
|
;; ((style wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7201.xml")
|
||||||
|
;; ((style arts entertainment)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7177.xml")
|
||||||
|
;; ((style books)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7203.xml")
|
||||||
|
;; ((style travel)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7106.xml")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7422.xml")
|
||||||
|
;; ((style)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7336.xml")
|
||||||
|
;; ((style style-europe style-asia)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7443.xml")
|
||||||
|
;; ((sports wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7204.xml")
|
||||||
|
;; ((opinion wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7041.xml")
|
||||||
|
;; ((opinion opinion-asia)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7485.xml")
|
||||||
|
;; ((opinion opinion-europe)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7486.xml")
|
||||||
|
;; ((opinion style)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7420.xml")
|
||||||
|
;; ((career wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7409.xml")
|
||||||
|
;; ((career career-trends)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7404.xml")
|
||||||
|
;; ((career career-getting-ahead)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7405.xml")
|
||||||
|
;; ((career career-getting-ahead)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7406.xml")
|
||||||
|
;; ((career career-women)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7407.xml")
|
||||||
|
;; ((career office-life)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7408.xml")
|
||||||
|
;; ((career career-education)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7409.xml")
|
||||||
|
;; ((small-business wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7672.xml")
|
||||||
|
;; ((small-business small-business-finance)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7411.xml")
|
||||||
|
;; ((small-business small-business-running)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7412.xml")
|
||||||
|
;; ((small-business small-business-technology)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7413.xml")
|
||||||
|
;; ((small-business small-business-awareness)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7414.xml")
|
||||||
|
;; ((small-business small-business-franchising)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7415.xml")
|
||||||
|
;; ((homepage wsj-rank-primary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7205.xml")
|
||||||
|
;; ((market wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7206.xml")
|
||||||
|
;; ((business money wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7207.xml")
|
||||||
|
;; ((opinion wsj-rank-secondary)
|
||||||
|
;; . "http://www.wsj.com/xml/rss/3_7208.xml")))
|
||||||
|
|
||||||
|
;; ("Hacker News" . (hacker-news))
|
||||||
|
|
||||||
|
;; ("Lambda the Ultimate"
|
||||||
|
;; . (rss-chronological
|
||||||
|
;; ((programming programming-languages)
|
||||||
|
;; . "http://lambda-the-ultimate.org/rss.xml")))
|
||||||
|
|
||||||
|
;; ("Planet Scheme"
|
||||||
|
;; . (atom-chronological
|
||||||
|
;; ((programming lisp-scheme lisp)
|
||||||
|
;; . "http://www.scheme.dk/planet/atom.xml")))
|
||||||
|
|
||||||
|
;; ("Planet Haskell"
|
||||||
|
;; . (atom-chronological
|
||||||
|
;; ((programming haskell)
|
||||||
|
;; . "http://planet.haskell.org/atom.xml")))
|
||||||
|
|
||||||
|
;; ;; ("Sam Altman"
|
||||||
|
;; ;; . (atom-chronological
|
||||||
|
;; ;; ((startups technology)
|
||||||
|
;; ;; . "http://blog.samaltman.com/posts.atom")))
|
||||||
|
|
||||||
|
;; ("Fox News"
|
||||||
|
;; . (rss
|
||||||
|
;; ;; IMPORTANT for fox news the primary rank feed must come first
|
||||||
|
;; ;; since it contains less information than the other feeds and
|
||||||
|
;; ;; that information would be overwritten if it was imported after
|
||||||
|
;; ;; them.
|
||||||
|
;; ((homepage fox-news-rank-primary)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/latest?format=xml")
|
||||||
|
;; ((entertainment)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/entertainment?format=xml")
|
||||||
|
;; ((health)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/health?format=xml")
|
||||||
|
;; ((style)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/section/lifestyle?format=xml")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/opinion?format=xml")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/politics?format=xml")
|
||||||
|
;; ((science)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/politics?format=xml")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/sports?format=xml")
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/tech?format=xml")
|
||||||
|
;; ((travel)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/internal/travel/mixed?format=xml")
|
||||||
|
;; ((nation)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/national?format=xml")
|
||||||
|
;; ((world)
|
||||||
|
;; . "http://feeds.foxnews.com/foxnews/world?format=xml")))
|
||||||
|
|
||||||
|
;; ("XKCD"
|
||||||
|
;; . (atom-chronological
|
||||||
|
;; ((comics)
|
||||||
|
;; . "https://xkcd.com/atom.xml")))
|
||||||
|
|
||||||
|
;; ("Christianity Today"
|
||||||
|
;; . (rss
|
||||||
|
;; ((christian)
|
||||||
|
;; . "http://feeds.christianitytoday.com/christianitytoday/ctliveblog/")
|
||||||
|
;; ((christian women)
|
||||||
|
;; . "http://feeds.christianitytoday.com/christianitytoday/blog/women/")
|
||||||
|
;; ((christian movies entertainment)
|
||||||
|
;; . "http://feeds.christianitytoday.com/christianitytoday/moviefeatures/")
|
||||||
|
;; ((christian peter-chin multicultural)
|
||||||
|
;; . "http://feeds.feedburner.com/christianitytoday/peterchin")
|
||||||
|
;; ((christian family amy-julia-becker)
|
||||||
|
;; . "http://feeds.feedburner.com/christianitytoday/amyjuliabecker/")
|
||||||
|
;; ((christian)
|
||||||
|
;; . "http://feeds.feedburner.com/christianitytoday/derwinlgray/")
|
||||||
|
;; ;; THIS MUST COME LAST
|
||||||
|
;; ;; It usually (always?) contains duplicates but the date is not
|
||||||
|
;; ;; included whereas the other feeds do contain the date. The feed
|
||||||
|
;; ;; importer won't overwrite dates so this ensures we have a good
|
||||||
|
;; ;; day for the articles.
|
||||||
|
;; ((homepage christian christianity-today-rank-primary)
|
||||||
|
;; . "http://feeds.christianitytoday.com/christianitytoday/ctmag/")))
|
||||||
|
|
||||||
|
;; ("TechCrunch"
|
||||||
|
;; . (rss
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://techcrunch.com/feed/")))
|
||||||
|
|
||||||
|
;; ("Engadget"
|
||||||
|
;; . (rss
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://www.engadget.com/rss.xml")))
|
||||||
|
|
||||||
|
;; ("NPR"
|
||||||
|
;; . (rss
|
||||||
|
;; ((homepage npr-rank-primary)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1001")
|
||||||
|
;; ((culture style art)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1008")
|
||||||
|
;; ((business)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1006")
|
||||||
|
;; ((science)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1007")
|
||||||
|
;; ((opinion)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1057")
|
||||||
|
;; ((npr-stories)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1021")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1014")
|
||||||
|
;; ((nation)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1003")
|
||||||
|
;; ((world)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1004")
|
||||||
|
;; ((npr-all-things-considered)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=2")
|
||||||
|
;; ((npr-morning-edition)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=3")
|
||||||
|
;; ((npr-talk-of-the-nation)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=5")
|
||||||
|
;; ((npr-tell-me-more)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=46")
|
||||||
|
;; ((author author-interviews)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1033")
|
||||||
|
;; ((books)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1032")
|
||||||
|
;; ((childrens-health)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1030")
|
||||||
|
;; ((education)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1013")
|
||||||
|
;; ((economy business)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1017")
|
||||||
|
;; ((science science-environment environment)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1025")
|
||||||
|
;; ((style food)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1053")
|
||||||
|
;; ((games humor)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1052")
|
||||||
|
;; ((health health-care)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1027")
|
||||||
|
;; ((interviews)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1022")
|
||||||
|
;; ((world iraq)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1010")
|
||||||
|
;; ((law)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1070")
|
||||||
|
;; ((news-media)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1020")
|
||||||
|
;; ((middle-east world)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1009")
|
||||||
|
;; ((entertainment movies)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1045")
|
||||||
|
;; ((entertainment music)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1039")
|
||||||
|
;; ((entertainment style music art dance)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1046")
|
||||||
|
;; ((money finance)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1018")
|
||||||
|
;; ((politics)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1014")
|
||||||
|
;; ((style culture)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1048")
|
||||||
|
;; ((race)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1015")
|
||||||
|
;; ((religion)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1016")
|
||||||
|
;; ((science research)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1024")
|
||||||
|
;; ((science space)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1026")
|
||||||
|
;; ((sports)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1055")
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1019")
|
||||||
|
;; ((style art)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1047")
|
||||||
|
;; ((technology)
|
||||||
|
;; . "http://www.npr.org/rss/rss.php?id=1049")))
|
||||||
|
|
||||||
|
;; ("EFF"
|
||||||
|
;; . (rss-chronological
|
||||||
|
;; ((technology)
|
||||||
|
;; . "https://www.eff.org/rss/updates.xml")))
|
||||||
|
|
||||||
|
;; ("Common Dreams"
|
||||||
|
;; . (rss
|
||||||
|
;; ((progressive)
|
||||||
|
;; . "http://www.commondreams.org/rss.xml")))
|
||||||
|
|
||||||
|
;; ("Raw Story"
|
||||||
|
;; . (rss
|
||||||
|
;; ((progressive)
|
||||||
|
;; . "http://www.rawstory.com/feed/")))
|
||||||
|
|
||||||
|
;; ("Reddit"
|
||||||
|
;; . (atom
|
||||||
|
;; ((progressive)
|
||||||
|
;; . "https://www.reddit.com/r/progressive.rss")))
|
||||||
|
|
||||||
|
("Think Progress"
|
||||||
|
. (rss-chronological
|
||||||
|
((economy business)
|
||||||
|
. "http://thinkprogress.org/economy/issue/feed/")
|
||||||
|
((health)
|
||||||
|
. "http://thinkprogress.org/health/issue/feed/")
|
||||||
|
((climate-change)
|
||||||
|
. "http://thinkprogress.org/climate/issue/feed/")
|
||||||
|
((politics)
|
||||||
|
. "http://thinkprogress.org/election/issue/feed/")
|
||||||
|
((justice)
|
||||||
|
. "http://thinkprogress.org/justice/issue/feed/")
|
||||||
|
((lgbt)
|
||||||
|
. "http://thinkprogress.org/lgbt/issue/feed/")
|
||||||
|
((world)
|
||||||
|
. "http://thinkprogress.org/world/issue/feed/")
|
||||||
|
((opinion culture)
|
||||||
|
. "http://thinkprogress.org/culture/issue/feed/")))
|
||||||
|
|
||||||
|
)
|
@ -0,0 +1,22 @@
|
|||||||
|
(import chicken scheme)
|
||||||
|
(use posix srfi-19)
|
||||||
|
|
||||||
|
(define (log* msg)
|
||||||
|
(display (conc "[" (date->string (current-date) "~D ~T") "] " msg "\n")
|
||||||
|
(current-error-port)))
|
||||||
|
|
||||||
|
(let ((cmd "./feeds"))
|
||||||
|
(let loop ()
|
||||||
|
(log* "running")
|
||||||
|
(let loop2 ((pid (process-run cmd)))
|
||||||
|
(sleep 300) ; 5 minutes
|
||||||
|
(when (= (process-wait pid #t) 0)
|
||||||
|
(log* "killing")
|
||||||
|
(process-signal pid signal/kill)
|
||||||
|
(log* "sent kill sigal")
|
||||||
|
(process-wait pid)
|
||||||
|
(log* "killed and rerunning")
|
||||||
|
(loop2 (process-run cmd))))
|
||||||
|
(log* "done")
|
||||||
|
(sleep 540) ; 9 minutes
|
||||||
|
(loop)))
|
@ -0,0 +1,112 @@
|
|||||||
|
(include "macros")
|
||||||
|
(import news-macros)
|
||||||
|
(use posix uri-common)
|
||||||
|
|
||||||
|
(generate-path-parameters
|
||||||
|
(/ site-root "/"
|
||||||
|
;; static files
|
||||||
|
(/ res "res"
|
||||||
|
(/ css "/css"
|
||||||
|
(/ fonts "/fonts")
|
||||||
|
(/ css-news "/news.css")
|
||||||
|
(/ css-lib "/lib.css"))
|
||||||
|
(/ js "/js"
|
||||||
|
(/ js-vendor "/vendor")
|
||||||
|
(/ js-lib "/lib.js")
|
||||||
|
(/ js-news "/news.js"))
|
||||||
|
(/ img "/img"
|
||||||
|
(/ img-original "/original")
|
||||||
|
(/ source-icon "/source-icons")
|
||||||
|
(/ img-raster "/raster"
|
||||||
|
(/ site-icon "/icon.png")
|
||||||
|
(/ site-logo-normal "/logo-normal.png"))
|
||||||
|
(/ img-icon "/icons"))
|
||||||
|
(/ font-awesome-fonts "/fonts"))
|
||||||
|
|
||||||
|
;; dynamic pages
|
||||||
|
(/ popular "popular")
|
||||||
|
(/ select-sources "select-sources")
|
||||||
|
(/ select-sources-trampoline "select-sources-trampoline")
|
||||||
|
(/ select-interests "select-interests")
|
||||||
|
(/ select-interests-trampoline "select-interests-trampoline")
|
||||||
|
(/ not-interested-trampoline "not-interested-trampoline")
|
||||||
|
(/ author "author")
|
||||||
|
(/ personalize "personalize")
|
||||||
|
(/ account "account"
|
||||||
|
(/ account-create "/create")
|
||||||
|
(/ account-create-trampoline "/create-trampoline")
|
||||||
|
(/ account-sign-in "/sign-in")
|
||||||
|
(/ account-sign-in-trampoline "/sign-in-trampoline")
|
||||||
|
(/ account-password-reset "/password-reset")
|
||||||
|
(/ account-sign-out "/sign-out")
|
||||||
|
(/ account-hide-viewed "/hide-viewed")
|
||||||
|
(/ account-show-viewed "/show-viewed")
|
||||||
|
(/ account-user-metrics-opt-out "/user-metrics-opt-out")
|
||||||
|
(/ account-user-metrics-opt-out-trampoline "/user-metrics-opt-out-trampoline"))
|
||||||
|
(/ doc "doc"
|
||||||
|
(/ doc-api "/api"
|
||||||
|
(/ doc-api-landing "/landing")))
|
||||||
|
(/ source "source"
|
||||||
|
(/ source-change-trampoline "/change-trampoline"))
|
||||||
|
(/ ajax "ajax"
|
||||||
|
(/ subscribe "/subscribe")
|
||||||
|
(/ unsubscribe "/unsubscribe")
|
||||||
|
(/ recommended "/recommended")
|
||||||
|
(/ article-viewed "/article-viewed")
|
||||||
|
(/ up-vote "/up-vote")
|
||||||
|
(/ feed "/feed")
|
||||||
|
(/ subscribe-to-mailing-list "/subscribe-to-mailing-list")
|
||||||
|
(/ get-invited "/get-invited")
|
||||||
|
(/ author-search "/author-search"))
|
||||||
|
(/ admin "admin"
|
||||||
|
(/ admin-add-article-trampoline "/add-article-trampoline")
|
||||||
|
(/ admin-articles "/articles")
|
||||||
|
(/ admin-add-article "/add-article")
|
||||||
|
(/ admin-save-article "/save-article")))
|
||||||
|
uri-reference
|
||||||
|
uri-
|
||||||
|
js-uri-var)
|
||||||
|
;; => (define uri-res (make-parameter (uri-reference "/res")))
|
||||||
|
;; (define uri-css (make-parameter (uri-reference "/res/css")))
|
||||||
|
;; ...
|
||||||
|
;; => (define js-uri-var "var uri = {}; uri.uriRes = '/res'; uri.uriCss = '/res/css'; ...")
|
||||||
|
|
||||||
|
(generate-path-parameters
|
||||||
|
(/ root (or (get-environment-variable "NEWS_DIR") "/home/tjhintz/src/scheme/news")
|
||||||
|
(/ res "/res"
|
||||||
|
(/ scss "/scss")
|
||||||
|
(/ css "/css"
|
||||||
|
(/ css-lib "/lib.css")
|
||||||
|
(/ css-news "/news.css"))
|
||||||
|
(/ img "/img"
|
||||||
|
(/ img-original "/original")
|
||||||
|
(/ source-icon "/source-icons")
|
||||||
|
(/ img-raster "/raster"
|
||||||
|
(/ site-icon "/icon.png")
|
||||||
|
(/ site-logo-normal "/logo-normal.png"))
|
||||||
|
(/ img-icon "/icons"))
|
||||||
|
(/ js "/js"
|
||||||
|
(/ js-vendor "/vendor"
|
||||||
|
(/ js-jquery "/jquery.js"))
|
||||||
|
(/ js-lib "/lib.js")
|
||||||
|
(/ js-news "/news.js")
|
||||||
|
(/ js-pre-jquery-news "/pre-jquery-news.js")))
|
||||||
|
(/ build-static-resources "/build")
|
||||||
|
(/ pre-generated-html "/pre-generated-html.scm")
|
||||||
|
(/ widgets "/widgets"))
|
||||||
|
values
|
||||||
|
filesystem-path-
|
||||||
|
js-filesystem-uri-var)
|
||||||
|
|
||||||
|
;; (generate-path-parameters
|
||||||
|
;; (/ site-root "/"
|
||||||
|
;; (/ res "res"
|
||||||
|
;; (/ css "/css"
|
||||||
|
;; (/ fonts "/fonts"))
|
||||||
|
;; (/ js "/js"
|
||||||
|
;; (/ js-vendor "/vendor"))
|
||||||
|
;; (/ img "/img"
|
||||||
|
;; (/ img-original "/original"))
|
||||||
|
;; (/ font-awesome-fonts "/fonts")
|
||||||
|
;; (/ scss "/scss")))
|
||||||
|
;; path-)
|
@ -0,0 +1,92 @@
|
|||||||
|
(module news-macros
|
||||||
|
(generate-path-parameters)
|
||||||
|
|
||||||
|
(import chicken scheme)
|
||||||
|
(use srfi-1 data-structures srfi-13)
|
||||||
|
|
||||||
|
;; The [tree] argument is a path-spec.
|
||||||
|
;; See generate-path-parameters for details.
|
||||||
|
(define-for-syntax (path-tree->symbol-paths tree symbol-prefix)
|
||||||
|
(define (_path-tree->symbol-paths tree symbol-prefix)
|
||||||
|
(map (lambda (l)
|
||||||
|
(let ((path-val (conc (eval (third tree)) (eval (third l)))))
|
||||||
|
(if (null? (cdddr l))
|
||||||
|
`(,(symbol-append symbol-prefix (second l)) ,path-val)
|
||||||
|
(append
|
||||||
|
`(,(symbol-append symbol-prefix (second l)) ,path-val)
|
||||||
|
(path-tree->symbol-paths
|
||||||
|
`(,(first l) ,(second l) ,path-val ,@(cdddr l))
|
||||||
|
symbol-prefix)))))
|
||||||
|
(cdddr tree)))
|
||||||
|
;; Convert a flat list to a list of pairs
|
||||||
|
;; '(a b c d) => '((a b) (c d))
|
||||||
|
(define (pairize lis)
|
||||||
|
(if (null? lis)
|
||||||
|
'()
|
||||||
|
(cons (list (car lis) (cadr lis)) (pairize (cddr lis)))))
|
||||||
|
(pairize
|
||||||
|
(flatten
|
||||||
|
(_path-tree->symbol-paths tree symbol-prefix))))
|
||||||
|
|
||||||
|
;; Usage:
|
||||||
|
;; (generate-path-parameters
|
||||||
|
;; (/ res "res"
|
||||||
|
;; (/ css "css))
|
||||||
|
;; values
|
||||||
|
;; path-
|
||||||
|
;; js-uri-var)
|
||||||
|
;; => (define path-res (make-parameter "/res"))
|
||||||
|
;; (define path-css (make-parameters "/res/css"))
|
||||||
|
;; (define js-uri-var
|
||||||
|
;; "var uri = {}; uri.uriRes = '/res'; uri.uriCss =
|
||||||
|
;; '/res/css';")
|
||||||
|
;;
|
||||||
|
;; Signature:
|
||||||
|
;; (generate-path-parameters [path-spec] init-proc prefix-symbol js-var)
|
||||||
|
;; Output:
|
||||||
|
;; A set of parameters that define paths and a variable containing a
|
||||||
|
;; string defining the URIs for a javascript.
|
||||||
|
;; [path-spec]:
|
||||||
|
;; A path-spec is a hierarchical tree. The first element in a list
|
||||||
|
;; is ignored. It is for formatting only. The second element is a symbol
|
||||||
|
;; representing the name of the parameter to be generated. The third
|
||||||
|
;; element is the part of the path for that parameter. The full path
|
||||||
|
;; is built by concatenating the parent paths to the path for the
|
||||||
|
;; current item. The parent item is the first three values in the
|
||||||
|
;; root node of the child. So each path is a combination of the
|
||||||
|
;; paths generated from each anscetor's node. The third element of
|
||||||
|
;; each node is 'eval'ed.
|
||||||
|
(define-syntax generate-path-parameters
|
||||||
|
(er-macro-transformer
|
||||||
|
(lambda (exp r cmp)
|
||||||
|
`(,(r 'begin)
|
||||||
|
;; Prepend a dummy node [*root*] since
|
||||||
|
;; path-tree->symbol-paths expects that.
|
||||||
|
,@(let ((symbol/paths (path-tree->symbol-paths `("" *root* "" ,(cadr exp))
|
||||||
|
(cadddr exp)))
|
||||||
|
(symbol->camelcase-string
|
||||||
|
(lambda (sym)
|
||||||
|
(let ((symbols (string-split (symbol->string sym) "-")))
|
||||||
|
(fold (lambda (s o) (string-append o (string-titlecase s)))
|
||||||
|
(car symbols)
|
||||||
|
(cdr symbols))))))
|
||||||
|
(append
|
||||||
|
(map (lambda (symbol/path)
|
||||||
|
`(,(r 'define) ,(first symbol/path)
|
||||||
|
(,(r 'make-parameter)
|
||||||
|
(,(r 'apply) ,(caddr exp) `(,,(second symbol/path))))))
|
||||||
|
symbol/paths)
|
||||||
|
`((,(r 'define)
|
||||||
|
,(fifth exp)
|
||||||
|
,(string-append
|
||||||
|
"var uri = {};"
|
||||||
|
(fold (lambda (symbol/path o)
|
||||||
|
(string-append o
|
||||||
|
"uri."
|
||||||
|
(symbol->camelcase-string (car symbol/path))
|
||||||
|
" = '" (cadr symbol/path) "';"))
|
||||||
|
""
|
||||||
|
symbol/paths))))))))))
|
||||||
|
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,819 @@
|
|||||||
|
-- CREATE TABLES
|
||||||
|
create table articles (
|
||||||
|
article_id bigserial primary key,
|
||||||
|
title varchar(500) not null,
|
||||||
|
author varchar(200) not null,
|
||||||
|
date timestamptz not null,
|
||||||
|
content text not null,
|
||||||
|
description text not null,
|
||||||
|
rank integer not null default 5,
|
||||||
|
guid varchar(32) unique not null,
|
||||||
|
source_id integer not null,
|
||||||
|
uri varchar(500) not null unique);
|
||||||
|
create index articles_date_idx on articles (date desc);
|
||||||
|
create index articles_author_idx on articles (author);
|
||||||
|
create index articles_rank_idx on articles (rank);
|
||||||
|
create index articles_guid_idx on articles (guid);
|
||||||
|
create index articles_source_idx on articles (source_id);
|
||||||
|
|
||||||
|
create table authors (
|
||||||
|
id serial primary key,
|
||||||
|
author_id serial unique not null,
|
||||||
|
name varchar(50) unique not null);
|
||||||
|
create index authors_author_id_idx on authors (author_id);
|
||||||
|
create index authors_name_idx on authors (name);
|
||||||
|
|
||||||
|
create table article_author (
|
||||||
|
id bigserial primary key,
|
||||||
|
article_id integer not null references articles on delete cascade,
|
||||||
|
author_id integer not null references authors on delete cascade);
|
||||||
|
create index article_author_author_id_idx on article_author (author_id);
|
||||||
|
create index article_author_article_id_idx on article_author (article_id);
|
||||||
|
create unique index article_author_author_article_idx
|
||||||
|
on article_author(author_id, article_id);
|
||||||
|
|
||||||
|
create table article_source(
|
||||||
|
id serial primary key,
|
||||||
|
source_id serial unique not null,
|
||||||
|
name varchar(50) not null,
|
||||||
|
icon_path text not null);
|
||||||
|
create index source_name_idx on article_source (name);
|
||||||
|
create index source_source_id_idx on article_source (source_id);
|
||||||
|
|
||||||
|
create table article_images (
|
||||||
|
id bigserial primary key,
|
||||||
|
image_id bigserial not null unique,
|
||||||
|
article_id integer not null references articles on delete cascade,
|
||||||
|
original_path text not null,
|
||||||
|
original_width integer not null,
|
||||||
|
original_height integer not null,
|
||||||
|
cover boolean not null default 'FALSE');
|
||||||
|
create index article_images_article_id_idx on article_images (article_id);
|
||||||
|
|
||||||
|
create table article_stats (
|
||||||
|
id bigserial primary key,
|
||||||
|
article_id integer not null unique references articles on delete cascade,
|
||||||
|
points integer not null default 0,
|
||||||
|
view_count integer not null default 0);
|
||||||
|
create index article_stats_article_id_idx on article_stats (article_id);
|
||||||
|
create index article_stats_points_idx on article_stats (points);
|
||||||
|
create index article_stats_view_count_idx on article_stats (view_count);
|
||||||
|
|
||||||
|
create table tags(
|
||||||
|
id serial primary key,
|
||||||
|
tag_id serial unique not null,
|
||||||
|
name varchar(50) not null,
|
||||||
|
rank int not null);
|
||||||
|
create index tags_name_idx on tags (name);
|
||||||
|
create index tags_id_idx on tags(tag_id);
|
||||||
|
create index tags_rank_idx on tags(rank);
|
||||||
|
|
||||||
|
-- set default tag ranks
|
||||||
|
-- TODO change to insert
|
||||||
|
update tags set rank=10 where name='nation';
|
||||||
|
update tags set rank=12 where name='local';
|
||||||
|
update tags set rank=14 where name='politics';
|
||||||
|
update tags set rank=16 where name='world';
|
||||||
|
update tags set rank=18 where name='business';
|
||||||
|
update tags set rank=20 where name='opinion';
|
||||||
|
update tags set rank=22 where name='entertainment';
|
||||||
|
update tags set rank=24 where name='sports';
|
||||||
|
update tags set rank=26 where name='technology';
|
||||||
|
update tags set rank=28 where name='science';
|
||||||
|
update tags set rank=30 where name='health';
|
||||||
|
update tags set rank=32 where name='art';
|
||||||
|
update tags set rank=34 where name='style';
|
||||||
|
update tags set rank=36 where name='food';
|
||||||
|
update tags set rank=38 where name='travel';
|
||||||
|
update tags set rank=40 where name='music';
|
||||||
|
update tags set rank=42 where name='hacker-news';
|
||||||
|
update tags set rank=42 where name='eff';
|
||||||
|
update tags set rank=44 where name='religion';
|
||||||
|
update tags set rank=46 where name='president-2016';
|
||||||
|
update tags set rank=48 where name='bernie-sanders';
|
||||||
|
update tags set rank=48 where name='hillary-clinton';
|
||||||
|
update tags set rank=48 where name='jeb-bush';
|
||||||
|
update tags set rank=48 where name='ted-cruz';
|
||||||
|
update tags set rank=48 where name='rand-paul';
|
||||||
|
update tags set rank=48 where name='donald-trump';
|
||||||
|
update tags set rank=48 where name='ben-carson';
|
||||||
|
update tags set rank=48 where name='chris-christie';
|
||||||
|
update tags set rank=48 where name='carly-fiorina';
|
||||||
|
update tags set rank=48 where name='mike-huckabee';
|
||||||
|
update tags set rank=48 where name='marco-rubio';
|
||||||
|
|
||||||
|
update tags set rank=50 where name='terrorism';
|
||||||
|
update tags set rank=50 where name='isis';
|
||||||
|
update tags set rank=50 where name='climate-change';
|
||||||
|
|
||||||
|
update tags set rank=52 where name='comics';
|
||||||
|
update tags set rank=52 where name='christian';
|
||||||
|
|
||||||
|
update tags set name='carly-fiorina' where name='carly fiorina';
|
||||||
|
update tags set name='marco-rubio' where name='marco rubio';
|
||||||
|
update tags set name='chris-christie' where name='chris christie';
|
||||||
|
update tags set name='mike-hackabee' where name='mike huckabee';
|
||||||
|
|
||||||
|
|
||||||
|
create table tag_group_names(
|
||||||
|
id bigserial primary key,
|
||||||
|
group_id serial unique not null,
|
||||||
|
group_name varchar(255) unique not null,
|
||||||
|
group_rank int not null default 500);
|
||||||
|
create unique index tag_group_names_group_id_idx on tag_group_names(group_id);
|
||||||
|
create unique index tag_group_names_group_name_idx on tag_group_names(group_name);
|
||||||
|
|
||||||
|
create table tags_groups (
|
||||||
|
id bigserial primary key,
|
||||||
|
tag_id integer not null references tags on delete cascade,
|
||||||
|
group_id integer not null references tag_group_names on delete cascade);
|
||||||
|
create index tags_groups_tag_id_idx on tags_groups(tag_id);
|
||||||
|
create index tags_groups_group_id_idx on tags_groups(group_id);
|
||||||
|
create unique index tags_groups_tag_id_group_id_idx on tags_groups(tag_id, group_id);
|
||||||
|
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('common', 10);
|
||||||
|
insert into tag_group_names (group_name, group_rank)
|
||||||
|
values('presidential-election-2016', 20);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('current-events', 30);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('programming', 40);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('comics', 50);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('eff', 51);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('default-common', 500);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('default-technology', 500);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('default-programming', 500);
|
||||||
|
insert into tag_group_names (group_name, group_rank) values('default-hacker-news', 500);
|
||||||
|
|
||||||
|
update tag_group_names set group_rank=10 where group_name='common';
|
||||||
|
update tag_group_names set group_rank=20
|
||||||
|
where group_name='presidential-election-2016';
|
||||||
|
update tag_group_names set group_rank=30 where group_name='current-events';
|
||||||
|
update tag_group_names set group_rank=40 where group_name='programming';
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='nation'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='local'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='business'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='opinion'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='entertainment'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='sports'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='technology'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='style'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='food'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='travel'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='religion'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='politics'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='world'),
|
||||||
|
(select group_id from tag_group_names where group_name='common'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='comics'),
|
||||||
|
(select group_id from tag_group_names where group_name='comics'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='eff'),
|
||||||
|
(select group_id from tag_group_names where group_name='eff'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='nation'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='politics'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='world'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='opinion'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='entertainment'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='sports'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='lafayette-shooting'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='iran-accord'),
|
||||||
|
(select group_id from tag_group_names where group_name='default-common'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='technology'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='hacker-news'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='business'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='opinion'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='nation'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='world'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-technology'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='technology'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='hacker-news'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='lisp'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='haskell'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='programming'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-programming'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='technology'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='hacker-news'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='opinion'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='world'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='nation'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='business'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='default-hacker-news'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='president-2016'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='scott-walker'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='mike-huckabee'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='hillary-clinton'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='ben-carson'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='jim-webb'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='marco-rubio'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='rick-perry'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='bernie-sanders'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='ted-cruz'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='carly-fiorina'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='rand-paul'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='donald-trump'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='jeb-bush'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='bobby-jindal'),
|
||||||
|
(select group_id from tag_group_names
|
||||||
|
where group_name='presidential-election-2016'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='marriage-equality'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='greek-crisis'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='isis'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='climate-change'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='tpp'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='lafayette-shooting'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='iran-accord'),
|
||||||
|
(select group_id from tag_group_names where group_name='current-events'));
|
||||||
|
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='programming'),
|
||||||
|
(select group_id from tag_group_names where group_name='programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='hacker-news'),
|
||||||
|
(select group_id from tag_group_names where group_name='programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='lisp-scheme'),
|
||||||
|
(select group_id from tag_group_names where group_name='programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='lisp'),
|
||||||
|
(select group_id from tag_group_names where group_name='programming'));
|
||||||
|
insert into tags_groups (tag_id, group_id)
|
||||||
|
values ((select tag_id from tags where tags.name='haskell'),
|
||||||
|
(select group_id from tag_group_names where group_name='programming'));
|
||||||
|
|
||||||
|
create table article_tags (
|
||||||
|
id bigserial primary key,
|
||||||
|
article_id integer not null references articles on delete cascade,
|
||||||
|
tag_id integer not null references tags on delete cascade);
|
||||||
|
create index article_tags_article_id_idx on article_tags (article_id);
|
||||||
|
create index article_tags_tag_id_idx on article_tags (tag_id);
|
||||||
|
create unique index article_tags_article_id_tag_id_idx
|
||||||
|
on article_tags(article_id, tag_id);
|
||||||
|
|
||||||
|
create table user_account(
|
||||||
|
user_id bigserial primary key,
|
||||||
|
password varchar(255) not null,
|
||||||
|
salt varchar(100) not null,
|
||||||
|
email varchar(255) not null unique);
|
||||||
|
|
||||||
|
create table user_settings(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id int unique not null references user_account on delete cascade,
|
||||||
|
unviewed_only boolean not null default FALSE,
|
||||||
|
tracking boolean not null default TRUE);
|
||||||
|
create unique index user_settings_user_id_idx on user_account (user_id);
|
||||||
|
|
||||||
|
create table breaking_news_email(
|
||||||
|
id bigserial primary key,
|
||||||
|
email varchar(255) unique not null);
|
||||||
|
create index breaking_news_email_email_idx on breaking_news_email (email);
|
||||||
|
|
||||||
|
create table get_invited(
|
||||||
|
id bigserial primary key,
|
||||||
|
email varchar(255) unique not null);
|
||||||
|
create unique index get_invited_email_idx on get_invited (email);
|
||||||
|
|
||||||
|
create table session(
|
||||||
|
id bigserial primary key,
|
||||||
|
session_id varchar(40) unique not null,
|
||||||
|
expiration integer not null,
|
||||||
|
user_id int not null references user_account on delete cascade);
|
||||||
|
create index session_session_id_idx on session (session_id);
|
||||||
|
create index session_user_id_idx on session (user_id);
|
||||||
|
|
||||||
|
create table article_viewed_by_user(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id integer not null references user_account on delete cascade,
|
||||||
|
article_id integer not null references articles on delete cascade,
|
||||||
|
viewed boolean not null default TRUE);
|
||||||
|
create index article_viewed_by_user_article_id_idx
|
||||||
|
on article_viewed_by_user (article_id);
|
||||||
|
create index article_viewed_by_user_user_id_idx
|
||||||
|
on article_viewed_by_user (user_id);
|
||||||
|
create unique index article_viewed_by_user_by_article_id_idx
|
||||||
|
on article_viewed_by_user (article_id, user_id);
|
||||||
|
|
||||||
|
create table upvoted_by_user(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id integer not null references user_account on delete cascade,
|
||||||
|
article_id integer not null references articles on delete cascade);
|
||||||
|
create index upvoted_by_user_article_id_idx on upvoted_by_user (article_id);
|
||||||
|
create index upvoted_by_user_user_id_idx on upvoted_by_user (user_id);
|
||||||
|
|
||||||
|
create table tag_subscriptions(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id integer not null references user_account on delete cascade,
|
||||||
|
tag_id integer not null references tags on delete cascade,
|
||||||
|
source_id integer not null references article_source on delete cascade);
|
||||||
|
create index tag_subscriptions_user_id_idx on tag_subscriptions (user_id);
|
||||||
|
create index tag_subscriptions_tag_id_idx on tag_subscriptions (tag_id);
|
||||||
|
create unique index tag_subscriptions_user_id_tag_id_source_id_idx
|
||||||
|
on tag_subscriptions(user_id, tag_id, source_id);
|
||||||
|
|
||||||
|
create table author_subscriptions(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id integer not null references user_account on delete cascade,
|
||||||
|
author_id integer not null references authors on delete cascade);
|
||||||
|
create index author_subscriptions_user_id_idx on author_subscriptions (user_id);
|
||||||
|
create index author_subscriptions_author_id_idx on author_subscriptions (author_id);
|
||||||
|
create unique index author_subscriptions_user_id_author_id_source_id_idx
|
||||||
|
on author_subscriptions(user_id, author_id, source_id);
|
||||||
|
|
||||||
|
create table user_sources(
|
||||||
|
id bigserial primary key,
|
||||||
|
user_id integer not null references user_account on delete cascade,
|
||||||
|
source_id integer not null);
|
||||||
|
create index user_sources_user_id_idx on user_sources (user_id);
|
||||||
|
create unique index user_sources_user_id_source_id_idx
|
||||||
|
on user_sources(user_id, source_id);
|
||||||
|
|
||||||
|
|
||||||
|
-- STORED PROCEDURES
|
||||||
|
create or replace function get_articles_by_popularity
|
||||||
|
(lim int, offs int, excludes int[], sources int[])
|
||||||
|
returns table(article_id bigint, title varchar, author varchar, date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[])
|
||||||
|
as $$
|
||||||
|
begin
|
||||||
|
return query select article_view.article_id, article_view.title,
|
||||||
|
article_view.author, article_view.date, article_view.description,
|
||||||
|
article_view.rank, article_view.content, article_view.original_path,
|
||||||
|
article_view.original_height, article_view.original_width,
|
||||||
|
article_view.tags, article_view.points, article_view.uri,
|
||||||
|
article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from article_view
|
||||||
|
where article_view.article_id <> all(excludes) and
|
||||||
|
article_view.source_id = any(sources)
|
||||||
|
order by article_view.points desc, article_view.view_count desc
|
||||||
|
limit lim offset offs;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
-- filtered by tags
|
||||||
|
create or replace function get_articles_by_popularity
|
||||||
|
(lim int, offs int, excludes int[], tag varchar[], sources int[])
|
||||||
|
returns table(article_id bigint, title varchar, author varchar, date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query select article_view.article_id, article_view.title,
|
||||||
|
article_view.author, article_view.date, article_view.description,
|
||||||
|
article_view.rank, article_view.content, article_view.original_path,
|
||||||
|
article_view.original_height, article_view.original_width,
|
||||||
|
article_view.tags, article_view.points, article_view.uri,
|
||||||
|
article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from article_view
|
||||||
|
where article_view.tags && tag::varchar[]
|
||||||
|
and article_view.article_id <> all(excludes)
|
||||||
|
and article_view.source_id = any(sources)
|
||||||
|
order by article_view.points desc, article_view.view_count desc
|
||||||
|
limit lim offset offs;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_tag_subscriptions_by_user_by_rank
|
||||||
|
(userid int, lim int)
|
||||||
|
returns table (article_id bigint, title varchar, author varchar,
|
||||||
|
date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query
|
||||||
|
select article_view.article_id, article_view.title, article_view.author,
|
||||||
|
article_view.date, article_view.description, article_view.rank,
|
||||||
|
article_view.content, article_view.original_path, article_view.original_height,
|
||||||
|
article_view.original_width, article_view.tags, article_view.points,
|
||||||
|
article_view.uri, article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from
|
||||||
|
(select t.article_id from
|
||||||
|
(select t.article_id, t.source_id, t.tags_ids, t.author_ids
|
||||||
|
from article_view as t
|
||||||
|
order by t.date desc limit 3000) as t
|
||||||
|
join tag_subscriptions on tag_subscriptions.source_id = t.source_id
|
||||||
|
and tag_subscriptions.tag_id = any(t.tags_ids)
|
||||||
|
where tag_subscriptions.user_id=userid
|
||||||
|
union
|
||||||
|
select t3.article_id from
|
||||||
|
(select t3.article_id, t3.author_ids
|
||||||
|
from article_view as t3
|
||||||
|
order by t3.date desc limit 3000) as t3
|
||||||
|
join author_subscriptions
|
||||||
|
on author_subscriptions.author_id = any(t3.author_ids)
|
||||||
|
where author_subscriptions.user_id=userid) as t4
|
||||||
|
join article_view on article_view.article_id = t4.article_id
|
||||||
|
order by article_view.rank, article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_tag_subscriptions_by_user
|
||||||
|
(userid int, lim int)
|
||||||
|
returns table (article_id bigint, title varchar, author varchar,
|
||||||
|
date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query
|
||||||
|
select article_view.article_id, article_view.title, article_view.author,
|
||||||
|
article_view.date, article_view.description, article_view.rank,
|
||||||
|
article_view.content, article_view.original_path, article_view.original_height,
|
||||||
|
article_view.original_width, article_view.tags, article_view.points,
|
||||||
|
article_view.uri, article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from
|
||||||
|
(select t.article_id from
|
||||||
|
(select t.article_id, t.source_id, t.tags_ids, t.author_ids
|
||||||
|
from article_view as t
|
||||||
|
order by t.date desc limit 3000) as t
|
||||||
|
join tag_subscriptions on tag_subscriptions.source_id = t.source_id
|
||||||
|
and tag_subscriptions.tag_id = any(t.tags_ids)
|
||||||
|
where tag_subscriptions.user_id=userid
|
||||||
|
union
|
||||||
|
select t3.article_id from
|
||||||
|
(select t3.article_id, t3.author_ids
|
||||||
|
from article_view as t3
|
||||||
|
order by t3.date desc limit 3000) as t3
|
||||||
|
join author_subscriptions
|
||||||
|
on author_subscriptions.author_id = any(t3.author_ids)
|
||||||
|
where author_subscriptions.user_id=userid) as t4
|
||||||
|
join article_view on article_view.article_id = t4.article_id
|
||||||
|
order by article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_tag_subscriptions_by_user_by_rank
|
||||||
|
(userid int, lim int, tag varchar)
|
||||||
|
returns table (article_id bigint, title varchar, author varchar,
|
||||||
|
date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query
|
||||||
|
select article_view.article_id, article_view.title, article_view.author,
|
||||||
|
article_view.date, article_view.description, article_view.rank,
|
||||||
|
article_view.content, article_view.original_path, article_view.original_height,
|
||||||
|
article_view.original_width, article_view.tags, article_view.points,
|
||||||
|
article_view.uri, article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from
|
||||||
|
(select distinct t.article_id from
|
||||||
|
(select t.article_id, t.source_id, t.tags from article_view as t
|
||||||
|
order by t.date desc limit 1000) as t
|
||||||
|
join (select tag_subscriptions.source_id from tag_subscriptions
|
||||||
|
join tags on tags.tag_id = tag_subscriptions.tag_id
|
||||||
|
where user_id=userid and tags.name = tag)
|
||||||
|
as tids
|
||||||
|
on tids.source_id = t.source_id
|
||||||
|
where tag = any(t.tags)) as t2
|
||||||
|
join article_view on article_view.article_id = t2.article_id
|
||||||
|
order by article_view.rank, article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_tag_subscriptions_by_user
|
||||||
|
(userid int, lim int, tag varchar)
|
||||||
|
returns table (article_id bigint, title varchar, author varchar,
|
||||||
|
date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query
|
||||||
|
select article_view.article_id, article_view.title, article_view.author,
|
||||||
|
article_view.date, article_view.description, article_view.rank,
|
||||||
|
article_view.content, article_view.original_path, article_view.original_height,
|
||||||
|
article_view.original_width, article_view.tags, article_view.points,
|
||||||
|
article_view.uri, article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from
|
||||||
|
(select distinct t.article_id from
|
||||||
|
(select t.article_id, t.source_id, t.tags from article_view as t
|
||||||
|
order by t.date desc limit 1000) as t
|
||||||
|
join (select tag_subscriptions.source_id from tag_subscriptions
|
||||||
|
join tags on tags.tag_id = tag_subscriptions.tag_id
|
||||||
|
where user_id=userid and tags.name = tag)
|
||||||
|
as tids
|
||||||
|
on tids.source_id = t.source_id
|
||||||
|
where tag = any(t.tags)) as t2
|
||||||
|
join article_view on article_view.article_id = t2.article_id
|
||||||
|
order by article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_articles_by_tags
|
||||||
|
(tag varchar[], lim int, excludes int[], sources int[])
|
||||||
|
returns table(article_id bigint, title varchar, author varchar, date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query select
|
||||||
|
article_view.article_id, article_view.title,
|
||||||
|
article_view.author, article_view.date, article_view.description,
|
||||||
|
article_view.rank, article_view.content, article_view.original_path,
|
||||||
|
article_view.original_height, article_view.original_width,
|
||||||
|
article_view.tags, article_view.points, article_view.uri,
|
||||||
|
article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from article_view
|
||||||
|
where article_view.tags && tag::varchar[]
|
||||||
|
and article_view.article_id <> all(excludes)
|
||||||
|
and article_view.source_id = any(sources)
|
||||||
|
order by article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_articles_by_tags_and_rank
|
||||||
|
(tag varchar[], lim int, excludes int[], sources int[])
|
||||||
|
returns table(article_id bigint, title varchar, author varchar, date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query select
|
||||||
|
article_view.article_id, article_view.title,
|
||||||
|
article_view.author, article_view.date, article_view.description,
|
||||||
|
article_view.rank, article_view.content, article_view.original_path,
|
||||||
|
article_view.original_height, article_view.original_width,
|
||||||
|
article_view.tags, article_view.points, article_view.uri,
|
||||||
|
article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from article_view
|
||||||
|
where article_view.tags && tag::varchar[]
|
||||||
|
and article_view.source_id = any(sources)
|
||||||
|
and article_view.article_id <> all(excludes)
|
||||||
|
order by rank, article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create or replace function get_articles_by_authors
|
||||||
|
(author_names varchar[], lim int, excludes int[])
|
||||||
|
returns table(article_id bigint, title varchar, author varchar, date timestamptz,
|
||||||
|
description text, rank int, content text,
|
||||||
|
cover_image_path text, cover_image_height int,
|
||||||
|
cover_image_width int,
|
||||||
|
tags varchar[], points int, uri varchar,
|
||||||
|
source_name varchar, source_icon_path text, source_id int,
|
||||||
|
authors varchar[], author_ids int[]) as $$
|
||||||
|
begin
|
||||||
|
return query select article_view.article_id, article_view.title,
|
||||||
|
article_view.author, article_view.date, article_view.description,
|
||||||
|
article_view.rank, article_view.content, article_view.original_path,
|
||||||
|
article_view.original_height, article_view.original_width,
|
||||||
|
article_view.tags, article_view.points, article_view.uri,
|
||||||
|
article_view.source_name, article_view.source_icon_path,
|
||||||
|
article_view.source_id, article_view.authors, article_view.author_ids
|
||||||
|
from article_view
|
||||||
|
where article_view.authors && author_names
|
||||||
|
and article_view.article_id <> all(excludes)
|
||||||
|
order by article_view.date desc limit lim;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
-- VIEWS
|
||||||
|
create materialized view tags_and_sources as
|
||||||
|
select articles.source_id, article_tags.tag_id,
|
||||||
|
article_source.name as source_name, tags.name as tag_name,
|
||||||
|
tags.rank as tag_rank, article_source.icon_path as source_icon_path,
|
||||||
|
array_agg(distinct tags_groups.group_id) tag_groups_id,
|
||||||
|
array_agg(distinct tag_group_names.group_name) tag_groups_name
|
||||||
|
from article_tags
|
||||||
|
join articles on articles.article_id = article_tags.article_id
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
join tags on tags.tag_id = article_tags.tag_id
|
||||||
|
join tags_groups on tags_groups.tag_id = article_tags.tag_id
|
||||||
|
join tag_group_names on tag_group_names.group_id = tags_groups.group_id
|
||||||
|
group by articles.source_id, article_tags.tag_id, article_source.name,
|
||||||
|
tags.name, tags.rank, article_source.icon_path;
|
||||||
|
create index tags_and_sources_tag_id_idx on tags_and_sources(tag_id);
|
||||||
|
create index tags_and_sources_source_id_idx on tags_and_sources(source_id);
|
||||||
|
create unique index tags_and_sources_source_id_tag_id_idx
|
||||||
|
on tags_and_sources(source_id, tag_id);
|
||||||
|
|
||||||
|
create materialized view article_view as
|
||||||
|
select t.article_id, t.title, t.author, t.date, t.description,
|
||||||
|
t.rank, t.content, article_images.original_path,
|
||||||
|
article_images.original_width, article_images.original_height,
|
||||||
|
array_agg(distinct tags.name) tags,
|
||||||
|
array_agg(distinct tags.tag_id) tags_ids,
|
||||||
|
array_agg(distinct authors.name) authors,
|
||||||
|
array_agg(distinct article_author.author_id) author_ids,
|
||||||
|
t.points, t.uri, t.view_count, t.source_id, t.name as source_name,
|
||||||
|
t.icon_path as source_icon_path
|
||||||
|
from (select
|
||||||
|
articles.article_id, articles.title, articles.author,
|
||||||
|
articles.date, articles.description, articles.rank,
|
||||||
|
articles.content, articles.uri, articles.source_id,
|
||||||
|
article_source.name, article_source.icon_path,
|
||||||
|
article_stats.points, article_stats.view_count from articles
|
||||||
|
join article_tags on article_tags.article_id = articles.article_id
|
||||||
|
join tags on tags.tag_id = article_tags.tag_id
|
||||||
|
join article_source on article_source.source_id = articles.source_id
|
||||||
|
join article_stats on article_stats.article_id = articles.article_id
|
||||||
|
order by articles.date desc
|
||||||
|
limit 50000
|
||||||
|
) as t
|
||||||
|
left outer join article_images on t.article_id = article_images.article_id
|
||||||
|
and article_images.cover=true
|
||||||
|
join article_tags on t.article_id = article_tags.article_id
|
||||||
|
join tags on article_tags.tag_id = tags.tag_id
|
||||||
|
left outer join article_author on t.article_id = article_author.article_id
|
||||||
|
left outer join authors on authors.author_id = article_author.author_id
|
||||||
|
group by t.article_id, t.title, t.author, t.date, t.description, t.rank,
|
||||||
|
t.content, article_images.original_path, article_images.original_height,
|
||||||
|
article_images.original_width,
|
||||||
|
t.points, t.uri, t.view_count,
|
||||||
|
t.source_id, t.name, t.icon_path;
|
||||||
|
|
||||||
|
create unique index article_id_article_view_idx on article_view(article_id);
|
||||||
|
create index date_article_view_idx on article_view(date desc);
|
||||||
|
create index rank_article_view_idx on article_view(rank);
|
||||||
|
create index points_article_view_idx on article_view(points);
|
||||||
|
create index view_count_article_view_idx on article_view(view_count);
|
||||||
|
create index source_id_article_view_idx on article_view(source_id);
|
||||||
|
create index authors_article_view_idx on article_view using GIN(authors);
|
||||||
|
create index tags_article_view_idx on article_view using GIN(tags);
|
||||||
|
create index tags_ids_article_view_idx on article_view(tags_ids);
|
@ -0,0 +1,6 @@
|
|||||||
|
;; -*- mode:scheme -*-
|
||||||
|
((server-type . development)
|
||||||
|
(port . 8080)
|
||||||
|
(db-connection-spec . ((dbname . "news")))
|
||||||
|
(debug-log-destination . "debug-log")
|
||||||
|
(error-log-destination . "error-log"))
|
@ -0,0 +1,15 @@
|
|||||||
|
;;; news.meta -*- scheme -*-
|
||||||
|
|
||||||
|
((egg "news.egg")
|
||||||
|
(synopsis "news")
|
||||||
|
(license "BSD")
|
||||||
|
(category web)
|
||||||
|
(author "Thomas Hintz")
|
||||||
|
(depends spiffy coops coops-utils args irregex anaphora srfi-13 format numbers crypt
|
||||||
|
http-session waffle doctype sequences spiffy-cookies
|
||||||
|
uri-common intarweb postgresql sql-null matchable
|
||||||
|
typed-records sxml-transforms
|
||||||
|
sxpath html-parser utils simple spiffy-request-vars general-utils
|
||||||
|
multipart-form-data http-client combinators
|
||||||
|
rss html-parser srfi-19 http-client md5 message-digest
|
||||||
|
scss openssl log5scm comparse utf8 medea atom rfc3339))
|
@ -0,0 +1,9 @@
|
|||||||
|
;;; news.setup -*- scheme -*-
|
||||||
|
|
||||||
|
;; Compile the extension
|
||||||
|
;; (compile -s -O3 -d1 -j websockets websockets.scm)
|
||||||
|
;; (compile -s -O3 -d1 websockets.import.scm)
|
||||||
|
|
||||||
|
(install-extension 'news
|
||||||
|
'()
|
||||||
|
`((version "0.0.1")))
|
@ -0,0 +1,155 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0.5em;
|
||||||
|
background: #f0f0f0;
|
||||||
|
-webkit-text-size-adjust: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs,
|
||||||
|
.hljs-subst,
|
||||||
|
.hljs-tag .hljs-title,
|
||||||
|
.nginx .hljs-title {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-constant,
|
||||||
|
.hljs-parent,
|
||||||
|
.hljs-tag .hljs-value,
|
||||||
|
.hljs-rule .hljs-value,
|
||||||
|
.hljs-preprocessor,
|
||||||
|
.hljs-pragma,
|
||||||
|
.hljs-name,
|
||||||
|
.haml .hljs-symbol,
|
||||||
|
.ruby .hljs-symbol,
|
||||||
|
.ruby .hljs-symbol .hljs-string,
|
||||||
|
.hljs-template_tag,
|
||||||
|
.django .hljs-variable,
|
||||||
|
.smalltalk .hljs-class,
|
||||||
|
.hljs-addition,
|
||||||
|
.hljs-flow,
|
||||||
|
.hljs-stream,
|
||||||
|
.bash .hljs-variable,
|
||||||
|
.pf .hljs-variable,
|
||||||
|
.apache .hljs-tag,
|
||||||
|
.apache .hljs-cbracket,
|
||||||
|
.tex .hljs-command,
|
||||||
|
.tex .hljs-special,
|
||||||
|
.erlang_repl .hljs-function_or_atom,
|
||||||
|
.asciidoc .hljs-header,
|
||||||
|
.markdown .hljs-header,
|
||||||
|
.coffeescript .hljs-attribute,
|
||||||
|
.tp .hljs-variable {
|
||||||
|
color: #800;
|
||||||
|
}
|
||||||
|
|
||||||
|
.smartquote,
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-annotation,
|
||||||
|
.diff .hljs-header,
|
||||||
|
.hljs-chunk,
|
||||||
|
.asciidoc .hljs-blockquote,
|
||||||
|
.markdown .hljs-blockquote {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-number,
|
||||||
|
.hljs-date,
|
||||||
|
.hljs-regexp,
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-hexcolor,
|
||||||
|
.smalltalk .hljs-symbol,
|
||||||
|
.smalltalk .hljs-char,
|
||||||
|
.go .hljs-constant,
|
||||||
|
.hljs-change,
|
||||||
|
.lasso .hljs-variable,
|
||||||
|
.makefile .hljs-variable,
|
||||||
|
.asciidoc .hljs-bullet,
|
||||||
|
.markdown .hljs-bullet,
|
||||||
|
.asciidoc .hljs-link_url,
|
||||||
|
.markdown .hljs-link_url {
|
||||||
|
color: #080;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-label,
|
||||||
|
.ruby .hljs-string,
|
||||||
|
.hljs-decorator,
|
||||||
|
.hljs-filter .hljs-argument,
|
||||||
|
.hljs-localvars,
|
||||||
|
.hljs-array,
|
||||||
|
.hljs-attr_selector,
|
||||||
|
.hljs-important,
|
||||||
|
.hljs-pseudo,
|
||||||
|
.hljs-pi,
|
||||||
|
.haml .hljs-bullet,
|
||||||
|
.hljs-doctype,
|
||||||
|
.hljs-deletion,
|
||||||
|
.hljs-envvar,
|
||||||
|
.hljs-shebang,
|
||||||
|
.apache .hljs-sqbracket,
|
||||||
|
.nginx .hljs-built_in,
|
||||||
|
.tex .hljs-formula,
|
||||||
|
.erlang_repl .hljs-reserved,
|
||||||
|
.hljs-prompt,
|
||||||
|
.asciidoc .hljs-link_label,
|
||||||
|
.markdown .hljs-link_label,
|
||||||
|
.vhdl .hljs-attribute,
|
||||||
|
.clojure .hljs-attribute,
|
||||||
|
.asciidoc .hljs-attribute,
|
||||||
|
.lasso .hljs-attribute,
|
||||||
|
.coffeescript .hljs-property,
|
||||||
|
.hljs-phony {
|
||||||
|
color: #88f;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-id,
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-built_in,
|
||||||
|
.css .hljs-tag,
|
||||||
|
.hljs-doctag,
|
||||||
|
.smalltalk .hljs-class,
|
||||||
|
.hljs-winutils,
|
||||||
|
.bash .hljs-variable,
|
||||||
|
.pf .hljs-variable,
|
||||||
|
.apache .hljs-tag,
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-typename,
|
||||||
|
.tex .hljs-command,
|
||||||
|
.asciidoc .hljs-strong,
|
||||||
|
.markdown .hljs-strong,
|
||||||
|
.hljs-request,
|
||||||
|
.hljs-status,
|
||||||
|
.tp .hljs-data,
|
||||||
|
.tp .hljs-io {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.asciidoc .hljs-emphasis,
|
||||||
|
.markdown .hljs-emphasis,
|
||||||
|
.tp .hljs-units {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nginx .hljs-built_in {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coffeescript .javascript,
|
||||||
|
.javascript .xml,
|
||||||
|
.lasso .markup,
|
||||||
|
.tex .hljs-formula,
|
||||||
|
.xml .javascript,
|
||||||
|
.xml .vbscript,
|
||||||
|
.xml .css,
|
||||||
|
.xml .hljs-cdata {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
<?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>Generated by Fontastic.me</metadata>
|
||||||
|
<defs>
|
||||||
|
<font id="slick" horiz-adv-x="512">
|
||||||
|
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
|
||||||
|
<missing-glyph horiz-adv-x="512" />
|
||||||
|
|
||||||
|
<glyph unicode="→" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||||
|
<glyph unicode="←" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||||
|
<glyph unicode="•" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
|
||||||
|
<glyph unicode="a" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
|
||||||
|
</font></defs></svg>
|
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,427 @@
|
|||||||
|
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Set default font family to sans-serif.
|
||||||
|
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||||
|
* user zoom.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: sans-serif; /* 1 */
|
||||||
|
-ms-text-size-adjust: 100%; /* 2 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default margin.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HTML5 display definitions
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||||
|
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||||
|
* and Firefox.
|
||||||
|
* Correct `block` display not defined for `main` in IE 11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
main,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
section,
|
||||||
|
summary {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||||
|
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
progress,
|
||||||
|
video {
|
||||||
|
display: inline-block; /* 1 */
|
||||||
|
vertical-align: baseline; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent modern browsers from displaying `audio` without controls.
|
||||||
|
* Remove excess height in iOS 5 devices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||||
|
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[hidden],
|
||||||
|
template {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the gray background color from active links in IE 10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Improve readability when focused and also mouse hovered in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text-level semantics
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abbr[title] {
|
||||||
|
border-bottom: 1px dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in Safari and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address variable `h1` font-size and margin within `section` and `article`
|
||||||
|
* contexts in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 0.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mark {
|
||||||
|
background: #ff0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent and variable font size in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Embedded content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove border when inside `a` element in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct overflow not hidden in IE 9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grouping content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address margin not present in IE 8/9 and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 1em 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address differences between Firefox and other browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
hr {
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contain overflow in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address odd `em`-unit font size rendering in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forms
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||||
|
* styling of `select`, unless a `border` property is set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct color not being inherited.
|
||||||
|
* Known issue: affects color of disabled elements.
|
||||||
|
* 2. Correct font properties not being inherited.
|
||||||
|
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
optgroup,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
color: inherit; /* 1 */
|
||||||
|
font: inherit; /* 2 */
|
||||||
|
margin: 0; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||||
|
* All other form control elements do not inherit `text-transform` values.
|
||||||
|
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||||
|
* Correct `select` style inheritance in Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
select {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||||
|
* and `video` controls.
|
||||||
|
* 2. Correct inability to style clickable `input` types in iOS.
|
||||||
|
* 3. Improve usability and consistency of cursor style between image-type
|
||||||
|
* `input` and others.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
html input[type="button"], /* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-set default cursor for disabled elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button[disabled],
|
||||||
|
html input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and border in Firefox 4+.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||||
|
* the UA stylesheet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It's recommended that you don't attempt to style these elements.
|
||||||
|
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||||
|
*
|
||||||
|
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||||
|
* 2. Remove excess padding in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||||
|
* `font-size` values of the `input`, it causes the cursor style of the
|
||||||
|
* decrement button to change from `default` to `text`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="number"]::-webkit-inner-spin-button,
|
||||||
|
input[type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||||
|
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||||
|
* (include `-moz` to future-proof).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box; /* 2 */
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||||
|
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||||
|
* padding (and `textfield` appearance).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define consistent border, margin, and padding.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||||
|
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||||
|
*/
|
||||||
|
|
||||||
|
legend {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Don't inherit the `font-weight` (applied by a rule above).
|
||||||
|
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||||
|
*/
|
||||||
|
|
||||||
|
optgroup {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tables
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove most spacing between table cells.
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
padding: 0;
|
||||||
|
}
|
@ -0,0 +1,565 @@
|
|||||||
|
<?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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
|
||||||
|
<metadata></metadata>
|
||||||
|
<defs>
|
||||||
|
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
||||||
|
<font-face units-per-em="1792" ascent="1536" descent="-256" />
|
||||||
|
<missing-glyph horiz-adv-x="448" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="448" />
|
||||||
|
<glyph unicode="	" horiz-adv-x="448" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="448" />
|
||||||
|
<glyph unicode="¨" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="©" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="®" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="´" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="Æ" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="Ø" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="768" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="1537" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="768" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="1537" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="512" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="384" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="256" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="256" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="192" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="307" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="85" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="307" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="384" />
|
||||||
|
<glyph unicode="™" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="∞" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="≠" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
|
||||||
|
<glyph unicode="" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
|
||||||
|
<glyph unicode="" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
|
||||||
|
<glyph unicode="" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
|
||||||
|
<glyph unicode="" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
|
||||||
|
<glyph unicode="" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
|
||||||
|
<glyph unicode="" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
|
||||||
|
<glyph unicode="" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
|
||||||
|
<glyph unicode="" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
|
||||||
|
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
|
||||||
|
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
|
||||||
|
<glyph unicode="" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
|
||||||
|
<glyph unicode="" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
|
||||||
|
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
|
||||||
|
<glyph unicode="" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
|
||||||
|
<glyph unicode="" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
|
||||||
|
<glyph unicode="" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
|
||||||
|
<glyph unicode="" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
|
||||||
|
<glyph unicode="" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
|
||||||
|
<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
|
||||||
|
<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
|
||||||
|
<glyph unicode="" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
|
||||||
|
<glyph unicode="" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
|
||||||
|
<glyph unicode="" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
|
||||||
|
<glyph unicode="" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
|
||||||
|
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
|
||||||
|
<glyph unicode="" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
|
||||||
|
<glyph unicode="" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
|
||||||
|
<glyph unicode="" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
|
||||||
|
<glyph unicode="" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
|
||||||
|
<glyph unicode="" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
|
||||||
|
<glyph unicode="" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
|
||||||
|
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
|
||||||
|
<glyph unicode="" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
|
||||||
|
<glyph unicode="" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
|
||||||
|
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
|
||||||
|
<glyph unicode="" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
|
||||||
|
<glyph unicode="" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
|
||||||
|
<glyph unicode="" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
|
||||||
|
<glyph unicode="" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
|
||||||
|
<glyph unicode="" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
|
||||||
|
<glyph unicode="" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
|
||||||
|
<glyph unicode="" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
|
||||||
|
<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
|
||||||
|
<glyph unicode="" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
|
||||||
|
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
|
||||||
|
<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
|
||||||
|
<glyph unicode="" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
|
||||||
|
<glyph unicode="" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
|
||||||
|
<glyph unicode="" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
|
||||||
|
<glyph unicode="" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
|
||||||
|
<glyph unicode="" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
||||||
|
<glyph unicode="" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
|
||||||
|
<glyph unicode="" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
|
||||||
|
<glyph unicode="" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
|
||||||
|
<glyph unicode="" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
|
||||||
|
<glyph unicode="" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
|
||||||
|
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
|
||||||
|
<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
|
||||||
|
<glyph unicode="" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
|
||||||
|
<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
|
||||||
|
<glyph unicode="" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
|
||||||
|
<glyph unicode="" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
|
||||||
|
<glyph unicode="" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
|
||||||
|
<glyph unicode="" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
|
||||||
|
<glyph unicode="" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
|
||||||
|
<glyph unicode="" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
|
||||||
|
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
|
||||||
|
<glyph unicode="" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
|
||||||
|
<glyph unicode="" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
|
||||||
|
<glyph unicode="" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
|
||||||
|
<glyph unicode="" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
|
||||||
|
<glyph unicode="" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
|
||||||
|
<glyph unicode="" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
|
||||||
|
<glyph unicode="" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
||||||
|
<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
|
||||||
|
<glyph unicode="" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
|
||||||
|
<glyph unicode="" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
|
||||||
|
<glyph unicode="" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
|
||||||
|
<glyph unicode="" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
|
||||||
|
<glyph unicode="" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
|
||||||
|
<glyph unicode="" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
|
||||||
|
<glyph unicode="" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
|
||||||
|
<glyph unicode="" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
|
||||||
|
<glyph unicode="" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
|
||||||
|
<glyph unicode="" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
|
||||||
|
<glyph unicode="" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
|
||||||
|
<glyph unicode="" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
|
||||||
|
<glyph unicode="" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
|
||||||
|
<glyph unicode="" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
|
||||||
|
<glyph unicode="" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
|
||||||
|
<glyph unicode="" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
|
||||||
|
<glyph unicode="" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
|
||||||
|
<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
|
||||||
|
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
|
||||||
|
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
<glyph unicode="" horiz-adv-x="1792" />
|
||||||
|
</font>
|
||||||
|
</defs></svg>
|
After Width: | Height: | Size: 306 KiB |
@ -0,0 +1,423 @@
|
|||||||
|
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Set default font family to sans-serif.
|
||||||
|
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||||
|
* user zoom.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: sans-serif; /* 1 */
|
||||||
|
-ms-text-size-adjust: 100%; /* 2 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default margin.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HTML5 display definitions
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct `block` display not defined in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
main,
|
||||||
|
nav,
|
||||||
|
section,
|
||||||
|
summary {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||||
|
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
progress,
|
||||||
|
video {
|
||||||
|
display: inline-block; /* 1 */
|
||||||
|
vertical-align: baseline; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent modern browsers from displaying `audio` without controls.
|
||||||
|
* Remove excess height in iOS 5 devices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `[hidden]` styling not present in IE 8/9.
|
||||||
|
* Hide the `template` element in IE, Safari, and Firefox < 22.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[hidden],
|
||||||
|
template {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the gray background color from active links in IE 10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Improve readability when focused and also mouse hovered in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text-level semantics
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9, Safari 5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abbr[title] {
|
||||||
|
border-bottom: 1px dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in Safari 5 and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address variable `h1` font-size and margin within `section` and `article`
|
||||||
|
* contexts in Firefox 4+, Safari 5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 0.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mark {
|
||||||
|
background: #ff0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent and variable font size in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Embedded content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove border when inside `a` element in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct overflow displayed oddly in IE 9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grouping content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address margin not present in IE 8/9 and Safari 5.
|
||||||
|
*/
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 1em 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address differences between Firefox and other browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
hr {
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contain overflow in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address odd `em`-unit font size rendering in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forms
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||||
|
* styling of `select`, unless a `border` property is set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct color not being inherited.
|
||||||
|
* Known issue: affects color of disabled elements.
|
||||||
|
* 2. Correct font properties not being inherited.
|
||||||
|
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
optgroup,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
color: inherit; /* 1 */
|
||||||
|
font: inherit; /* 2 */
|
||||||
|
margin: 0; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `overflow` set to `hidden` in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||||
|
* All other form control elements do not inherit `text-transform` values.
|
||||||
|
* Correct `button` style inheritance in Firefox, IE 8+, and Opera
|
||||||
|
* Correct `select` style inheritance in Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
select {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||||
|
* and `video` controls.
|
||||||
|
* 2. Correct inability to style clickable `input` types in iOS.
|
||||||
|
* 3. Improve usability and consistency of cursor style between image-type
|
||||||
|
* `input` and others.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
html input[type="button"], /* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-set default cursor for disabled elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button[disabled],
|
||||||
|
html input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and border in Firefox 4+.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||||
|
* the UA stylesheet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It's recommended that you don't attempt to style these elements.
|
||||||
|
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||||
|
*
|
||||||
|
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||||
|
* 2. Remove excess padding in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||||
|
* `font-size` values of the `input`, it causes the cursor style of the
|
||||||
|
* decrement button to change from `default` to `text`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="number"]::-webkit-inner-spin-button,
|
||||||
|
input[type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
||||||
|
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
|
||||||
|
* (include `-moz` to future-proof).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box; /* 2 */
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||||
|
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||||
|
* padding (and `textfield` appearance).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define consistent border, margin, and padding.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `color` not being inherited in IE 8/9.
|
||||||
|
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||||
|
*/
|
||||||
|
|
||||||
|
legend {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default vertical scrollbar in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Don't inherit the `font-weight` (applied by a rule above).
|
||||||
|
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||||
|
*/
|
||||||
|
|
||||||
|
optgroup {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tables
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove most spacing between table cells.
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
padding: 0;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
/* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */
|
||||||
|
/* zurb.com */
|
||||||
|
/* humanstxt.org */
|
||||||
|
|
||||||
|
/* SITE */
|
||||||
|
Standards: HTML5, CSS3
|
||||||
|
Components: jQuery, Orbit, Reveal
|
||||||
|
Software: Sublime, Git, Sass
|
@ -0,0 +1 @@
|
|||||||
|
|
@ -0,0 +1,166 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html class="no-js" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Foundation | Welcome</title>
|
||||||
|
<link rel="stylesheet" href="css/foundation.css" />
|
||||||
|
<script src="js/vendor/modernizr.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<h1>Welcome to Foundation</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<div class="panel">
|
||||||
|
<h3>We’re stoked you want to try Foundation! </h3>
|
||||||
|
<p>To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.</p>
|
||||||
|
<p>Once you've exhausted the fun in this document, you should check out:</p>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<p><a href="http://foundation.zurb.com/docs">Foundation Documentation</a><br />Everything you need to know about using the framework.</p>
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<p><a href="http://github.com/zurb/foundation">Foundation on Github</a><br />Latest code, issue reports, feature requests and more.</p>
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<p><a href="http://twitter.com/foundationzurb">@foundationzurb</a><br />Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-8 medium-8 columns">
|
||||||
|
<h5>Here’s your basic grid:</h5>
|
||||||
|
<!-- Grid Example -->
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p><strong>This is a twelve column section in a row.</strong> Each of these includes a div.panel element so you can see where the columns are - it's not required at all for the grid.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-6 medium-6 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p>Six columns</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="large-6 medium-6 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p>Six columns</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-4 medium-4 small-4 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p>Four columns</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 small-4 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p>Four columns</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 small-4 columns">
|
||||||
|
<div class="callout panel">
|
||||||
|
<p>Four columns</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
<h5>We bet you’ll need a form somewhere:</h5>
|
||||||
|
<form>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<label>Input Label</label>
|
||||||
|
<input type="text" placeholder="large-12.columns" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<label>Input Label</label>
|
||||||
|
<input type="text" placeholder="large-4.columns" />
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<label>Input Label</label>
|
||||||
|
<input type="text" placeholder="large-4.columns" />
|
||||||
|
</div>
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<div class="row collapse">
|
||||||
|
<label>Input Label</label>
|
||||||
|
<div class="small-9 columns">
|
||||||
|
<input type="text" placeholder="small-9.columns" />
|
||||||
|
</div>
|
||||||
|
<div class="small-3 columns">
|
||||||
|
<span class="postfix">.com</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<label>Select Box</label>
|
||||||
|
<select>
|
||||||
|
<option value="husker">Husker</option>
|
||||||
|
<option value="starbuck">Starbuck</option>
|
||||||
|
<option value="hotdog">Hot Dog</option>
|
||||||
|
<option value="apollo">Apollo</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-6 medium-6 columns">
|
||||||
|
<label>Choose Your Favorite</label>
|
||||||
|
<input type="radio" name="pokemon" value="Red" id="pokemonRed"><label for="pokemonRed">Radio 1</label>
|
||||||
|
<input type="radio" name="pokemon" value="Blue" id="pokemonBlue"><label for="pokemonBlue">Radio 2</label>
|
||||||
|
</div>
|
||||||
|
<div class="large-6 medium-6 columns">
|
||||||
|
<label>Check these out</label>
|
||||||
|
<input id="checkbox1" type="checkbox"><label for="checkbox1">Checkbox 1</label>
|
||||||
|
<input id="checkbox2" type="checkbox"><label for="checkbox2">Checkbox 2</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="large-12 columns">
|
||||||
|
<label>Textarea Label</label>
|
||||||
|
<textarea placeholder="small-12.columns"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="large-4 medium-4 columns">
|
||||||
|
<h5>Try one of these buttons:</h5>
|
||||||
|
<p><a href="#" class="small button">Simple Button</a><br/>
|
||||||
|
<a href="#" class="small radius button">Radius Button</a><br/>
|
||||||
|
<a href="#" class="small round button">Round Button</a><br/>
|
||||||
|
<a href="#" class="medium success button">Success Btn</a><br/>
|
||||||
|
<a href="#" class="medium alert button">Alert Btn</a><br/>
|
||||||
|
<a href="#" class="medium secondary button">Secondary Btn</a></p>
|
||||||
|
<div class="panel">
|
||||||
|
<h5>So many components, girl!</h5>
|
||||||
|
<p>A whole kitchen sink of goodies comes with Foundation. Checkout the docs to see them all, along with details on making them your own.</p>
|
||||||
|
<a href="http://foundation.zurb.com/docs/" class="small button">Go to Foundation Docs</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="js/vendor/jquery.js"></script>
|
||||||
|
<script src="js/foundation.min.js"></script>
|
||||||
|
<script>
|
||||||
|
$(document).foundation();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,299 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.abide = {
|
||||||
|
name : 'abide',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
live_validate : true,
|
||||||
|
focus_on_invalid : true,
|
||||||
|
error_labels: true, // labels with a for="inputId" will recieve an `error` class
|
||||||
|
timeout : 1000,
|
||||||
|
patterns : {
|
||||||
|
alpha: /^[a-zA-Z]+$/,
|
||||||
|
alpha_numeric : /^[a-zA-Z0-9]+$/,
|
||||||
|
integer: /^[-+]?\d+$/,
|
||||||
|
number: /^[-+]?\d*(?:\.\d+)?$/,
|
||||||
|
|
||||||
|
// amex, visa, diners
|
||||||
|
card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
|
||||||
|
cvv : /^([0-9]){3,4}$/,
|
||||||
|
|
||||||
|
// http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
||||||
|
email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,
|
||||||
|
|
||||||
|
url: /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
|
||||||
|
// abc.de
|
||||||
|
domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/,
|
||||||
|
|
||||||
|
datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
|
||||||
|
// YYYY-MM-DD
|
||||||
|
date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
|
||||||
|
// HH:MM:SS
|
||||||
|
time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
|
||||||
|
dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
|
||||||
|
// MM/DD/YYYY
|
||||||
|
month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/,
|
||||||
|
|
||||||
|
// #FFF or #FFFFFF
|
||||||
|
color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
|
||||||
|
},
|
||||||
|
validators : {
|
||||||
|
equalTo: function(el, required, parent) {
|
||||||
|
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||||
|
to = el.value,
|
||||||
|
valid = (from === to);
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
timer : null,
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
form = self.S(scope).attr('novalidate', 'novalidate'),
|
||||||
|
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||||
|
|
||||||
|
this.invalid_attr = this.add_namespace('data-invalid');
|
||||||
|
|
||||||
|
form
|
||||||
|
.off('.abide')
|
||||||
|
.on('submit.fndtn.abide validate.fndtn.abide', function (e) {
|
||||||
|
var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
|
||||||
|
return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax);
|
||||||
|
})
|
||||||
|
.on('reset', function() {
|
||||||
|
return self.reset($(this));
|
||||||
|
})
|
||||||
|
.find('input, textarea, select')
|
||||||
|
.off('.abide')
|
||||||
|
.on('blur.fndtn.abide change.fndtn.abide', function (e) {
|
||||||
|
self.validate([this], e);
|
||||||
|
})
|
||||||
|
.on('keydown.fndtn.abide', function (e) {
|
||||||
|
if (settings.live_validate === true) {
|
||||||
|
clearTimeout(self.timer);
|
||||||
|
self.timer = setTimeout(function () {
|
||||||
|
self.validate([this], e);
|
||||||
|
}.bind(this), settings.timeout);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
reset : function (form) {
|
||||||
|
form.removeAttr(this.invalid_attr);
|
||||||
|
$(this.invalid_attr, form).removeAttr(this.invalid_attr);
|
||||||
|
$('.error', form).not('small').removeClass('error');
|
||||||
|
},
|
||||||
|
|
||||||
|
validate : function (els, e, is_ajax) {
|
||||||
|
var validations = this.parse_patterns(els),
|
||||||
|
validation_count = validations.length,
|
||||||
|
form = this.S(els[0]).closest('[data-' + this.attr_name(true) + ']'),
|
||||||
|
settings = form.data(this.attr_name(true) + '-init') || {},
|
||||||
|
submit_event = /submit/.test(e.type);
|
||||||
|
|
||||||
|
form.trigger('validated');
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i=0; i < validation_count; i++) {
|
||||||
|
if (!validations[i] && (submit_event || is_ajax)) {
|
||||||
|
if (settings.focus_on_invalid) els[i].focus();
|
||||||
|
form.trigger('invalid');
|
||||||
|
this.S(els[i]).closest('[data-' + this.attr_name(true) + ']').attr(this.invalid_attr, '');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (submit_event || is_ajax) {
|
||||||
|
form.trigger('valid');
|
||||||
|
}
|
||||||
|
|
||||||
|
form.removeAttr(this.invalid_attr);
|
||||||
|
|
||||||
|
if (is_ajax) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_patterns : function (els) {
|
||||||
|
var i = els.length,
|
||||||
|
el_patterns = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
el_patterns.push(this.pattern(els[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.check_validation_and_apply_styles(el_patterns);
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern : function (el) {
|
||||||
|
var type = el.getAttribute('type'),
|
||||||
|
required = typeof el.getAttribute('required') === 'string';
|
||||||
|
|
||||||
|
var pattern = el.getAttribute('pattern') || '';
|
||||||
|
|
||||||
|
if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
|
||||||
|
return [el, this.settings.patterns[pattern], required];
|
||||||
|
} else if (pattern.length > 0) {
|
||||||
|
return [el, new RegExp('^'+pattern+'$'), required];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.patterns.hasOwnProperty(type)) {
|
||||||
|
return [el, this.settings.patterns[type], required];
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern = /.*/;
|
||||||
|
|
||||||
|
return [el, pattern, required];
|
||||||
|
},
|
||||||
|
|
||||||
|
check_validation_and_apply_styles : function (el_patterns) {
|
||||||
|
var i = el_patterns.length,
|
||||||
|
validations = [],
|
||||||
|
form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
|
||||||
|
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
var el = el_patterns[i][0],
|
||||||
|
required = el_patterns[i][2],
|
||||||
|
value = el.value,
|
||||||
|
direct_parent = this.S(el).parent(),
|
||||||
|
validator = el.getAttribute(this.add_namespace('data-abide-validator')),
|
||||||
|
is_radio = el.type === "radio",
|
||||||
|
is_checkbox = el.type === "checkbox",
|
||||||
|
label = this.S('label[for="' + el.getAttribute('id') + '"]'),
|
||||||
|
valid_length = (required) ? (el.value.length > 0) : true;
|
||||||
|
|
||||||
|
var parent, valid;
|
||||||
|
|
||||||
|
// support old way to do equalTo validations
|
||||||
|
if(el.getAttribute(this.add_namespace('data-equalto'))) { validator = "equalTo" }
|
||||||
|
|
||||||
|
if (!direct_parent.is('label')) {
|
||||||
|
parent = direct_parent;
|
||||||
|
} else {
|
||||||
|
parent = direct_parent.parent();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_radio && required) {
|
||||||
|
validations.push(this.valid_radio(el, required));
|
||||||
|
} else if (is_checkbox && required) {
|
||||||
|
validations.push(this.valid_checkbox(el, required));
|
||||||
|
} else if (validator) {
|
||||||
|
valid = this.settings.validators[validator].apply(this, [el, required, parent])
|
||||||
|
validations.push(valid);
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
this.S(el).removeAttr(this.invalid_attr);
|
||||||
|
parent.removeClass('error');
|
||||||
|
} else {
|
||||||
|
this.S(el).attr(this.invalid_attr, '');
|
||||||
|
parent.addClass('error');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (el_patterns[i][1].test(value) && valid_length ||
|
||||||
|
!required && el.value.length < 1 || $(el).attr('disabled')) {
|
||||||
|
this.S(el).removeAttr(this.invalid_attr);
|
||||||
|
parent.removeClass('error');
|
||||||
|
if (label.length > 0 && settings.error_labels) label.removeClass('error');
|
||||||
|
|
||||||
|
validations.push(true);
|
||||||
|
$(el).triggerHandler('valid');
|
||||||
|
} else {
|
||||||
|
this.S(el).attr(this.invalid_attr, '');
|
||||||
|
parent.addClass('error');
|
||||||
|
if (label.length > 0 && settings.error_labels) label.addClass('error');
|
||||||
|
|
||||||
|
validations.push(false);
|
||||||
|
$(el).triggerHandler('invalid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return validations;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_checkbox : function(el, required) {
|
||||||
|
var el = this.S(el),
|
||||||
|
valid = (el.is(':checked') || !required);
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
el.removeAttr(this.invalid_attr).parent().removeClass('error');
|
||||||
|
} else {
|
||||||
|
el.attr(this.invalid_attr, '').parent().addClass('error');
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_radio : function (el, required) {
|
||||||
|
var name = el.getAttribute('name'),
|
||||||
|
group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name="+name+"]"),
|
||||||
|
count = group.length,
|
||||||
|
valid = false;
|
||||||
|
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i=0; i < count; i++) {
|
||||||
|
if (group[i].checked) valid = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i=0; i < count; i++) {
|
||||||
|
if (valid) {
|
||||||
|
this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass('error');
|
||||||
|
} else {
|
||||||
|
this.S(group[i]).attr(this.invalid_attr, '').parent().addClass('error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_equal: function(el, required, parent) {
|
||||||
|
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||||
|
to = el.value,
|
||||||
|
valid = (from === to);
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
this.S(el).removeAttr(this.invalid_attr);
|
||||||
|
parent.removeClass('error');
|
||||||
|
} else {
|
||||||
|
this.S(el).attr(this.invalid_attr, '');
|
||||||
|
parent.addClass('error');
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_oneof: function(el, required, parent, doNotValidateOthers) {
|
||||||
|
var el = this.S(el),
|
||||||
|
others = this.S('[' + this.add_namespace('data-oneof') + ']'),
|
||||||
|
valid = others.filter(':checked').length > 0;
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
el.removeAttr(this.invalid_attr).parent().removeClass('error');
|
||||||
|
} else {
|
||||||
|
el.attr(this.invalid_attr, '').parent().addClass('error');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doNotValidateOthers) {
|
||||||
|
var _this = this;
|
||||||
|
others.each(function() {
|
||||||
|
_this.valid_oneof.call(_this, this, null, null, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,54 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.accordion = {
|
||||||
|
name : 'accordion',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class: 'active',
|
||||||
|
multi_expand: false,
|
||||||
|
toggleable: true
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this;
|
||||||
|
var S = this.S;
|
||||||
|
S(this.scope)
|
||||||
|
.off('.fndtn.accordion')
|
||||||
|
.on('click.fndtn.accordion', '[' + this.attr_name() + '] dd > a', function (e) {
|
||||||
|
var accordion = S(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
target = S('#' + this.href.split('#')[1]),
|
||||||
|
siblings = S('dd > .content', accordion),
|
||||||
|
aunts = $('dd', accordion),
|
||||||
|
settings = accordion.data(self.attr_name(true) + '-init'),
|
||||||
|
active_content = S('dd > .content.' + settings.active_class, accordion),
|
||||||
|
active_parent = S('dd.' + settings.active_class, accordion);
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (! S(this).closest('dl').is(accordion)) { return; }
|
||||||
|
|
||||||
|
if (settings.toggleable && target.is(active_content)) {
|
||||||
|
active_parent.toggleClass(settings.active_class, false);
|
||||||
|
return target.toggleClass(settings.active_class, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!settings.multi_expand) {
|
||||||
|
siblings.removeClass(settings.active_class);
|
||||||
|
aunts.removeClass(settings.active_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
target.addClass(settings.active_class).parent().addClass(settings.active_class);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,43 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.alert = {
|
||||||
|
name : 'alert',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
callback: function (){}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
$(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] a.close', function (e) {
|
||||||
|
var alertBox = S(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
if ('transitionend' in window || 'webkitTransitionEnd' in window || 'oTransitionEnd' in window) {
|
||||||
|
alertBox.addClass("alert-close");
|
||||||
|
alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function(e) {
|
||||||
|
S(this).trigger('close').remove();
|
||||||
|
settings.callback();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alertBox.fadeOut(300, function () {
|
||||||
|
S(this).trigger('close').remove();
|
||||||
|
settings.callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,531 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.clearing = {
|
||||||
|
name : 'clearing',
|
||||||
|
|
||||||
|
version: '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
templates : {
|
||||||
|
viewing : '<a href="#" class="clearing-close">×</a>' +
|
||||||
|
'<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
|
||||||
|
'<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
|
||||||
|
'<a href="#" class="clearing-main-next"><span></span></a></div>'
|
||||||
|
},
|
||||||
|
|
||||||
|
// comma delimited list of selectors that, on click, will close clearing,
|
||||||
|
// add 'div.clearing-blackout, div.visible-img' to close on background click
|
||||||
|
close_selectors : '.clearing-close',
|
||||||
|
|
||||||
|
touch_label : '',
|
||||||
|
|
||||||
|
// event initializers and locks
|
||||||
|
init : false,
|
||||||
|
locked : false
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this;
|
||||||
|
Foundation.inherit(this, 'throttle image_loaded');
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
|
||||||
|
if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
|
||||||
|
this.assemble(self.S('li', this.scope));
|
||||||
|
} else {
|
||||||
|
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
self.assemble(self.S('li', this));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
if ($('.scroll-container').length > 0) {
|
||||||
|
this.scope = $('.scroll-container');
|
||||||
|
}
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.clearing')
|
||||||
|
.on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li',
|
||||||
|
function (e, current, target) {
|
||||||
|
var current = current || S(this),
|
||||||
|
target = target || current,
|
||||||
|
next = current.next('li'),
|
||||||
|
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
|
||||||
|
image = S(e.target);
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!settings) {
|
||||||
|
self.init();
|
||||||
|
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||||
|
}
|
||||||
|
|
||||||
|
// if clearing is open and the current image is
|
||||||
|
// clicked, go to the next image in sequence
|
||||||
|
if (target.hasClass('visible') &&
|
||||||
|
current[0] === target[0] &&
|
||||||
|
next.length > 0 && self.is_open(current)) {
|
||||||
|
target = next;
|
||||||
|
image = S('img', target);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set current and target to the clicked li if not otherwise defined.
|
||||||
|
self.open(image, current, target);
|
||||||
|
self.update_paddles(target);
|
||||||
|
})
|
||||||
|
|
||||||
|
.on('click.fndtn.clearing', '.clearing-main-next',
|
||||||
|
function (e) { self.nav(e, 'next') })
|
||||||
|
.on('click.fndtn.clearing', '.clearing-main-prev',
|
||||||
|
function (e) { self.nav(e, 'prev') })
|
||||||
|
.on('click.fndtn.clearing', this.settings.close_selectors,
|
||||||
|
function (e) { Foundation.libs.clearing.close(e, this) });
|
||||||
|
|
||||||
|
$(document).on('keydown.fndtn.clearing',
|
||||||
|
function (e) { self.keydown(e) });
|
||||||
|
|
||||||
|
S(window).off('.clearing').on('resize.fndtn.clearing',
|
||||||
|
function () { self.resize() });
|
||||||
|
|
||||||
|
this.swipe_events(scope);
|
||||||
|
},
|
||||||
|
|
||||||
|
swipe_events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.on('touchstart.fndtn.clearing', '.visible-img', function(e) {
|
||||||
|
if (!e.touches) { e = e.originalEvent; }
|
||||||
|
var data = {
|
||||||
|
start_page_x: e.touches[0].pageX,
|
||||||
|
start_page_y: e.touches[0].pageY,
|
||||||
|
start_time: (new Date()).getTime(),
|
||||||
|
delta_x: 0,
|
||||||
|
is_scrolling: undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
S(this).data('swipe-transition', data);
|
||||||
|
e.stopPropagation();
|
||||||
|
})
|
||||||
|
.on('touchmove.fndtn.clearing', '.visible-img', function(e) {
|
||||||
|
if (!e.touches) { e = e.originalEvent; }
|
||||||
|
// Ignore pinch/zoom events
|
||||||
|
if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
|
||||||
|
|
||||||
|
var data = S(this).data('swipe-transition');
|
||||||
|
|
||||||
|
if (typeof data === 'undefined') {
|
||||||
|
data = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
data.delta_x = e.touches[0].pageX - data.start_page_x;
|
||||||
|
|
||||||
|
if ( typeof data.is_scrolling === 'undefined') {
|
||||||
|
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data.is_scrolling && !data.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
var direction = (data.delta_x < 0) ? 'next' : 'prev';
|
||||||
|
data.active = true;
|
||||||
|
self.nav(e, direction);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('touchend.fndtn.clearing', '.visible-img', function(e) {
|
||||||
|
S(this).data('swipe-transition', {});
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
assemble : function ($li) {
|
||||||
|
var $el = $li.parent();
|
||||||
|
|
||||||
|
if ($el.parent().hasClass('carousel')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$el.after('<div id="foundationClearingHolder"></div>');
|
||||||
|
var grid = $el.detach();
|
||||||
|
var grid_outerHTML = '';
|
||||||
|
if (grid[0] == null) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
grid_outerHTML = grid[0].outerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
var holder = this.S('#foundationClearingHolder'),
|
||||||
|
settings = $el.data(this.attr_name(true) + '-init'),
|
||||||
|
grid = $el.detach(),
|
||||||
|
data = {
|
||||||
|
grid: '<div class="carousel">' + grid_outerHTML + '</div>',
|
||||||
|
viewing: settings.templates.viewing
|
||||||
|
},
|
||||||
|
wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
|
||||||
|
data.grid + '</div></div>',
|
||||||
|
touch_label = this.settings.touch_label;
|
||||||
|
|
||||||
|
if (Modernizr.touch) {
|
||||||
|
wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
|
||||||
|
}
|
||||||
|
|
||||||
|
holder.after(wrapper).remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
open : function ($image, current, target) {
|
||||||
|
var self = this,
|
||||||
|
body = $(document.body),
|
||||||
|
root = target.closest('.clearing-assembled'),
|
||||||
|
container = self.S('div', root).first(),
|
||||||
|
visible_image = self.S('.visible-img', container),
|
||||||
|
image = self.S('img', visible_image).not($image),
|
||||||
|
label = self.S('.clearing-touch-label', container),
|
||||||
|
error = false;
|
||||||
|
|
||||||
|
image.error(function () {
|
||||||
|
error = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
function startLoad() {
|
||||||
|
setTimeout(function () {
|
||||||
|
this.image_loaded(image, function () {
|
||||||
|
if (image.outerWidth() === 1 && !error) {
|
||||||
|
startLoad.call(this);
|
||||||
|
} else {
|
||||||
|
cb.call(this, image);
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
}.bind(this), 50);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cb (image) {
|
||||||
|
var $image = $(image);
|
||||||
|
image.css('visibility', 'visible');
|
||||||
|
// toggle the gallery
|
||||||
|
body.css('overflow', 'hidden');
|
||||||
|
root.addClass('clearing-blackout');
|
||||||
|
container.addClass('clearing-container');
|
||||||
|
visible_image.show();
|
||||||
|
this.fix_height(target)
|
||||||
|
.caption(self.S('.clearing-caption', visible_image), self.S('img', target))
|
||||||
|
.center_and_label(image, label)
|
||||||
|
.shift(current, target, function () {
|
||||||
|
target.siblings().removeClass('visible');
|
||||||
|
target.addClass('visible');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.locked()) {
|
||||||
|
// set the image to the selected thumbnail
|
||||||
|
image
|
||||||
|
.attr('src', this.load($image))
|
||||||
|
.css('visibility', 'hidden');
|
||||||
|
|
||||||
|
startLoad.call(this);
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close : function (e, el) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var root = (function (target) {
|
||||||
|
if (/blackout/.test(target.selector)) {
|
||||||
|
return target;
|
||||||
|
} else {
|
||||||
|
return target.closest('.clearing-blackout');
|
||||||
|
}
|
||||||
|
}($(el))),
|
||||||
|
body = $(document.body), container, visible_image;
|
||||||
|
|
||||||
|
if (el === e.target && root) {
|
||||||
|
body.css('overflow', '');
|
||||||
|
container = $('div', root).first();
|
||||||
|
visible_image = $('.visible-img', container);
|
||||||
|
this.settings.prev_index = 0;
|
||||||
|
$('ul[' + this.attr_name() + ']', root)
|
||||||
|
.attr('style', '').closest('.clearing-blackout')
|
||||||
|
.removeClass('clearing-blackout');
|
||||||
|
container.removeClass('clearing-container');
|
||||||
|
visible_image.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
is_open : function (current) {
|
||||||
|
return current.parent().prop('style').length > 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
keydown : function (e) {
|
||||||
|
var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
|
||||||
|
NEXT_KEY = this.rtl ? 37 : 39,
|
||||||
|
PREV_KEY = this.rtl ? 39 : 37,
|
||||||
|
ESC_KEY = 27;
|
||||||
|
|
||||||
|
if (e.which === NEXT_KEY) this.go(clearing, 'next');
|
||||||
|
if (e.which === PREV_KEY) this.go(clearing, 'prev');
|
||||||
|
if (e.which === ESC_KEY) this.S('a.clearing-close').trigger('click');
|
||||||
|
},
|
||||||
|
|
||||||
|
nav : function (e, direction) {
|
||||||
|
var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
this.go(clearing, direction);
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var image = $('img', '.clearing-blackout .visible-img'),
|
||||||
|
label = $('.clearing-touch-label', '.clearing-blackout');
|
||||||
|
|
||||||
|
if (image.length) {
|
||||||
|
this.center_and_label(image, label);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// visual adjustments
|
||||||
|
fix_height : function (target) {
|
||||||
|
var lis = target.parent().children(),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
lis.each(function () {
|
||||||
|
var li = self.S(this),
|
||||||
|
image = li.find('img');
|
||||||
|
|
||||||
|
if (li.height() > image.outerHeight()) {
|
||||||
|
li.addClass('fix-height');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.closest('ul')
|
||||||
|
.width(lis.length * 100 + '%');
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
update_paddles : function (target) {
|
||||||
|
var visible_image = target
|
||||||
|
.closest('.carousel')
|
||||||
|
.siblings('.visible-img');
|
||||||
|
|
||||||
|
if (target.next().length > 0) {
|
||||||
|
this.S('.clearing-main-next', visible_image)
|
||||||
|
.removeClass('disabled');
|
||||||
|
} else {
|
||||||
|
this.S('.clearing-main-next', visible_image)
|
||||||
|
.addClass('disabled');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.prev().length > 0) {
|
||||||
|
this.S('.clearing-main-prev', visible_image)
|
||||||
|
.removeClass('disabled');
|
||||||
|
} else {
|
||||||
|
this.S('.clearing-main-prev', visible_image)
|
||||||
|
.addClass('disabled');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
center_and_label : function (target, label) {
|
||||||
|
if (!this.rtl) {
|
||||||
|
target.css({
|
||||||
|
marginLeft : -(target.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2)
|
||||||
|
});
|
||||||
|
|
||||||
|
if (label.length > 0) {
|
||||||
|
label.css({
|
||||||
|
marginLeft : -(label.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
target.css({
|
||||||
|
marginRight : -(target.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2),
|
||||||
|
left: 'auto',
|
||||||
|
right: '50%'
|
||||||
|
});
|
||||||
|
|
||||||
|
if (label.length > 0) {
|
||||||
|
label.css({
|
||||||
|
marginRight : -(label.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
|
||||||
|
left: 'auto',
|
||||||
|
right: '50%'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// image loading and preloading
|
||||||
|
|
||||||
|
load : function ($image) {
|
||||||
|
if ($image[0].nodeName === "A") {
|
||||||
|
var href = $image.attr('href');
|
||||||
|
} else {
|
||||||
|
var href = $image.parent().attr('href');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.preload($image);
|
||||||
|
|
||||||
|
if (href) return href;
|
||||||
|
return $image.attr('src');
|
||||||
|
},
|
||||||
|
|
||||||
|
preload : function ($image) {
|
||||||
|
this
|
||||||
|
.img($image.closest('li').next())
|
||||||
|
.img($image.closest('li').prev());
|
||||||
|
},
|
||||||
|
|
||||||
|
img : function (img) {
|
||||||
|
if (img.length) {
|
||||||
|
var new_img = new Image(),
|
||||||
|
new_a = this.S('a', img);
|
||||||
|
|
||||||
|
if (new_a.length) {
|
||||||
|
new_img.src = new_a.attr('href');
|
||||||
|
} else {
|
||||||
|
new_img.src = this.S('img', img).attr('src');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// image caption
|
||||||
|
|
||||||
|
caption : function (container, $image) {
|
||||||
|
var caption = $image.attr('data-caption');
|
||||||
|
|
||||||
|
if (caption) {
|
||||||
|
container
|
||||||
|
.html(caption)
|
||||||
|
.show();
|
||||||
|
} else {
|
||||||
|
container
|
||||||
|
.text('')
|
||||||
|
.hide();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// directional methods
|
||||||
|
|
||||||
|
go : function ($ul, direction) {
|
||||||
|
var current = this.S('.visible', $ul),
|
||||||
|
target = current[direction]();
|
||||||
|
|
||||||
|
if (target.length) {
|
||||||
|
this.S('img', target)
|
||||||
|
.trigger('click', [current, target]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
shift : function (current, target, callback) {
|
||||||
|
var clearing = target.parent(),
|
||||||
|
old_index = this.settings.prev_index || target.index(),
|
||||||
|
direction = this.direction(clearing, current, target),
|
||||||
|
dir = this.rtl ? 'right' : 'left',
|
||||||
|
left = parseInt(clearing.css('left'), 10),
|
||||||
|
width = target.outerWidth(),
|
||||||
|
skip_shift;
|
||||||
|
|
||||||
|
var dir_obj = {};
|
||||||
|
|
||||||
|
// we use jQuery animate instead of CSS transitions because we
|
||||||
|
// need a callback to unlock the next animation
|
||||||
|
// needs support for RTL **
|
||||||
|
if (target.index() !== old_index && !/skip/.test(direction)){
|
||||||
|
if (/left/.test(direction)) {
|
||||||
|
this.lock();
|
||||||
|
dir_obj[dir] = left + width;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
} else if (/right/.test(direction)) {
|
||||||
|
this.lock();
|
||||||
|
dir_obj[dir] = left - width;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
}
|
||||||
|
} else if (/skip/.test(direction)) {
|
||||||
|
// the target image is not adjacent to the current image, so
|
||||||
|
// do we scroll right or not
|
||||||
|
skip_shift = target.index() - this.settings.up_count;
|
||||||
|
this.lock();
|
||||||
|
|
||||||
|
if (skip_shift > 0) {
|
||||||
|
dir_obj[dir] = -(skip_shift * width);
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
} else {
|
||||||
|
dir_obj[dir] = 0;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
|
||||||
|
direction : function ($el, current, target) {
|
||||||
|
var lis = this.S('li', $el),
|
||||||
|
li_width = lis.outerWidth() + (lis.outerWidth() / 4),
|
||||||
|
up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
|
||||||
|
target_index = lis.index(target),
|
||||||
|
response;
|
||||||
|
|
||||||
|
this.settings.up_count = up_count;
|
||||||
|
|
||||||
|
if (this.adjacent(this.settings.prev_index, target_index)) {
|
||||||
|
if ((target_index > up_count)
|
||||||
|
&& target_index > this.settings.prev_index) {
|
||||||
|
response = 'right';
|
||||||
|
} else if ((target_index > up_count - 1)
|
||||||
|
&& target_index <= this.settings.prev_index) {
|
||||||
|
response = 'left';
|
||||||
|
} else {
|
||||||
|
response = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
response = 'skip';
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.prev_index = target_index;
|
||||||
|
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
|
||||||
|
adjacent : function (current_index, target_index) {
|
||||||
|
for (var i = target_index + 1; i >= target_index - 1; i--) {
|
||||||
|
if (i === current_index) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
// lock management
|
||||||
|
|
||||||
|
lock : function () {
|
||||||
|
this.settings.locked = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
unlock : function () {
|
||||||
|
this.settings.locked = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
locked : function () {
|
||||||
|
return this.settings.locked;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.fndtn.clearing');
|
||||||
|
this.S(window).off('.fndtn.clearing');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,306 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.dropdown = {
|
||||||
|
name : 'dropdown',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class: 'open',
|
||||||
|
align: 'bottom',
|
||||||
|
is_hover: false,
|
||||||
|
opened: function(){},
|
||||||
|
closed: function(){}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle');
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.dropdown')
|
||||||
|
.on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
|
||||||
|
var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
if (!settings.is_hover || Modernizr.touch) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.toggle($(this));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||||
|
var $this = S(this);
|
||||||
|
clearTimeout(self.timeout);
|
||||||
|
|
||||||
|
if ($this.data(self.data_attr())) {
|
||||||
|
var dropdown = S('#' + $this.data(self.data_attr())),
|
||||||
|
target = $this;
|
||||||
|
} else {
|
||||||
|
var dropdown = $this;
|
||||||
|
target = S("[" + self.attr_name() + "='" + dropdown.attr('id') + "']");
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
|
||||||
|
if(S(e.target).data(self.data_attr()) && settings.is_hover) {
|
||||||
|
self.closeall.call(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.is_hover) self.open.apply(self, [dropdown, target]);
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||||
|
var $this = S(this);
|
||||||
|
self.timeout = setTimeout(function () {
|
||||||
|
if ($this.data(self.data_attr())) {
|
||||||
|
var settings = $this.data(self.data_attr(true) + '-init') || self.settings;
|
||||||
|
if (settings.is_hover) self.close.call(self, S('#' + $this.data(self.data_attr())));
|
||||||
|
} else {
|
||||||
|
var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
|
||||||
|
settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
if (settings.is_hover) self.close.call(self, $this);
|
||||||
|
}
|
||||||
|
}.bind(this), 150);
|
||||||
|
})
|
||||||
|
.on('click.fndtn.dropdown', function (e) {
|
||||||
|
var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
|
||||||
|
|
||||||
|
if (S(e.target).data(self.data_attr()) || S(e.target).parent().data(self.data_attr())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(S(e.target).data('revealId')) &&
|
||||||
|
(parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
|
||||||
|
$.contains(parent.first()[0], e.target)))) {
|
||||||
|
e.stopPropagation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.close.call(self, S('[' + self.attr_name() + '-content]'));
|
||||||
|
})
|
||||||
|
.on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||||
|
self.settings.opened.call(this);
|
||||||
|
})
|
||||||
|
.on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||||
|
self.settings.closed.call(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
S(window)
|
||||||
|
.off('.dropdown')
|
||||||
|
.on('resize.fndtn.dropdown', self.throttle(function () {
|
||||||
|
self.resize.call(self);
|
||||||
|
}, 50));
|
||||||
|
|
||||||
|
this.resize();
|
||||||
|
},
|
||||||
|
|
||||||
|
close: function (dropdown) {
|
||||||
|
var self = this;
|
||||||
|
dropdown.each(function () {
|
||||||
|
if (self.S(this).hasClass(self.settings.active_class)) {
|
||||||
|
self.S(this)
|
||||||
|
.css(Foundation.rtl ? 'right':'left', '-99999px')
|
||||||
|
.removeClass(self.settings.active_class)
|
||||||
|
.prev('[' + self.attr_name() + ']')
|
||||||
|
.removeClass(self.settings.active_class);
|
||||||
|
|
||||||
|
self.S(this).trigger('closed', [dropdown]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
closeall: function() {
|
||||||
|
var self = this;
|
||||||
|
$.each(self.S('[' + this.attr_name() + '-content]'), function() {
|
||||||
|
self.close.call(self, self.S(this))
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function (dropdown, target) {
|
||||||
|
this
|
||||||
|
.css(dropdown
|
||||||
|
.addClass(this.settings.active_class), target);
|
||||||
|
dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
|
||||||
|
dropdown.trigger('opened', [dropdown, target]);
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr: function () {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.name;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle : function (target) {
|
||||||
|
var dropdown = this.S('#' + target.data(this.data_attr()));
|
||||||
|
if (dropdown.length === 0) {
|
||||||
|
// No dropdown found, not continuing
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
|
||||||
|
|
||||||
|
if (dropdown.hasClass(this.settings.active_class)) {
|
||||||
|
this.close.call(this, dropdown);
|
||||||
|
} else {
|
||||||
|
this.close.call(this, this.S('[' + this.attr_name() + '-content]'))
|
||||||
|
this.open.call(this, dropdown, target);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var dropdown = this.S('[' + this.attr_name() + '-content].open'),
|
||||||
|
target = this.S("[" + this.attr_name() + "='" + dropdown.attr('id') + "']");
|
||||||
|
|
||||||
|
if (dropdown.length && target.length) {
|
||||||
|
this.css(dropdown, target);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
css : function (dropdown, target) {
|
||||||
|
this.clear_idx();
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
var p = this.dirs.bottom.call(dropdown, target);
|
||||||
|
|
||||||
|
dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
|
||||||
|
position : 'absolute',
|
||||||
|
width: '95%',
|
||||||
|
'max-width': 'none',
|
||||||
|
top: p.top
|
||||||
|
});
|
||||||
|
|
||||||
|
dropdown.css(Foundation.rtl ? 'right':'left', '2.5%');
|
||||||
|
} else {
|
||||||
|
var settings = target.data(this.attr_name(true) + '-init') || this.settings;
|
||||||
|
|
||||||
|
this.style(dropdown, target, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dropdown;
|
||||||
|
},
|
||||||
|
|
||||||
|
style : function (dropdown, target, settings) {
|
||||||
|
var css = $.extend({position: 'absolute'},
|
||||||
|
this.dirs[settings.align].call(dropdown, target, settings));
|
||||||
|
|
||||||
|
dropdown.attr('style', '').css(css);
|
||||||
|
},
|
||||||
|
|
||||||
|
// return CSS property object
|
||||||
|
// `this` is the dropdown
|
||||||
|
dirs : {
|
||||||
|
// Calculate target offset
|
||||||
|
_base : function (t) {
|
||||||
|
var o_p = this.offsetParent(),
|
||||||
|
o = o_p.offset(),
|
||||||
|
p = t.offset();
|
||||||
|
|
||||||
|
p.top -= o.top;
|
||||||
|
p.left -= o.left;
|
||||||
|
|
||||||
|
return p;
|
||||||
|
},
|
||||||
|
top: function (t, s) {
|
||||||
|
var self = Foundation.libs.dropdown,
|
||||||
|
p = self.dirs._base.call(this, t),
|
||||||
|
pip_offset_base = (t.outerWidth() / 2) - 8;
|
||||||
|
|
||||||
|
this.addClass('drop-top');
|
||||||
|
|
||||||
|
if (t.outerWidth() < this.outerWidth() || self.small()) {
|
||||||
|
self.adjust_pip(pip_offset_base, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
return {left: p.left - this.outerWidth() + t.outerWidth(),
|
||||||
|
top: p.top - this.outerHeight()};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left: p.left, top: p.top - this.outerHeight()};
|
||||||
|
},
|
||||||
|
bottom: function (t, s) {
|
||||||
|
var self = Foundation.libs.dropdown,
|
||||||
|
p = self.dirs._base.call(this, t),
|
||||||
|
pip_offset_base = (t.outerWidth() / 2) - 8;
|
||||||
|
|
||||||
|
if (t.outerWidth() < this.outerWidth() || self.small()) {
|
||||||
|
self.adjust_pip(pip_offset_base, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.rtl) {
|
||||||
|
return {left: p.left - this.outerWidth() + t.outerWidth(), top: p.top + t.outerHeight()};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left: p.left, top: p.top + t.outerHeight()};
|
||||||
|
},
|
||||||
|
left: function (t, s) {
|
||||||
|
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
this.addClass('drop-left');
|
||||||
|
|
||||||
|
return {left: p.left - this.outerWidth(), top: p.top};
|
||||||
|
},
|
||||||
|
right: function (t, s) {
|
||||||
|
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
this.addClass('drop-right');
|
||||||
|
|
||||||
|
return {left: p.left + t.outerWidth(), top: p.top};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Insert rule to style psuedo elements
|
||||||
|
adjust_pip : function (pip_offset_base, p) {
|
||||||
|
var sheet = Foundation.stylesheet;
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
pip_offset_base += p.left - 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rule_idx = sheet.cssRules.length;
|
||||||
|
|
||||||
|
var sel_before = '.f-dropdown.open:before',
|
||||||
|
sel_after = '.f-dropdown.open:after',
|
||||||
|
css_before = 'left: ' + pip_offset_base + 'px;',
|
||||||
|
css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
|
||||||
|
|
||||||
|
if (sheet.insertRule) {
|
||||||
|
sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
|
||||||
|
sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
|
||||||
|
} else {
|
||||||
|
sheet.addRule(sel_before, css_before, this.rule_idx);
|
||||||
|
sheet.addRule(sel_after, css_after, this.rule_idx + 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Remove old dropdown rule index
|
||||||
|
clear_idx : function () {
|
||||||
|
var sheet = Foundation.stylesheet;
|
||||||
|
|
||||||
|
if (this.rule_idx) {
|
||||||
|
sheet.deleteRule(this.rule_idx);
|
||||||
|
sheet.deleteRule(this.rule_idx);
|
||||||
|
delete this.rule_idx;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
off: function () {
|
||||||
|
this.S(this.scope).off('.fndtn.dropdown');
|
||||||
|
this.S('html, body').off('.fndtn.dropdown');
|
||||||
|
this.S(window).off('.fndtn.dropdown');
|
||||||
|
this.S('[data-dropdown-content]').off('.fndtn.dropdown');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,68 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.equalizer = {
|
||||||
|
name : 'equalizer',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
use_tallest: true,
|
||||||
|
before_height_change: $.noop,
|
||||||
|
after_height_change: $.noop
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'image_loaded');
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){
|
||||||
|
this.reflow();
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
|
equalize: function(equalizer) {
|
||||||
|
var isStacked = false,
|
||||||
|
vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
|
||||||
|
firstTopOffset = vals.first().offset().top,
|
||||||
|
settings = equalizer.data(this.attr_name(true)+'-init');
|
||||||
|
|
||||||
|
if (vals.length === 0) return;
|
||||||
|
settings.before_height_change();
|
||||||
|
equalizer.trigger('before-height-change');
|
||||||
|
vals.height('inherit');
|
||||||
|
vals.each(function(){
|
||||||
|
var el = $(this);
|
||||||
|
if (el.offset().top !== firstTopOffset) {
|
||||||
|
isStacked = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (isStacked) return;
|
||||||
|
|
||||||
|
var heights = vals.map(function(){ return $(this).outerHeight() }).get();
|
||||||
|
if (settings.use_tallest) {
|
||||||
|
var max = Math.max.apply(null, heights);
|
||||||
|
vals.css('height', max);
|
||||||
|
} else {
|
||||||
|
var min = Math.min.apply(null, heights);
|
||||||
|
vals.css('height', min);
|
||||||
|
}
|
||||||
|
settings.after_height_change();
|
||||||
|
equalizer.trigger('after-height-change');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.S('[' + this.attr_name() + ']', this.scope).each(function(){
|
||||||
|
var $eq_target = $(this);
|
||||||
|
self.image_loaded(self.S('img', this), function(){
|
||||||
|
self.equalize($eq_target)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,331 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.interchange = {
|
||||||
|
name : 'interchange',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
images_loaded : false,
|
||||||
|
nodes_loaded : false,
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
load_attr : 'interchange',
|
||||||
|
|
||||||
|
named_queries : {
|
||||||
|
'default' : 'only screen',
|
||||||
|
small : Foundation.media_queries.small,
|
||||||
|
medium : Foundation.media_queries.medium,
|
||||||
|
large : Foundation.media_queries.large,
|
||||||
|
xlarge : Foundation.media_queries.xlarge,
|
||||||
|
xxlarge: Foundation.media_queries.xxlarge,
|
||||||
|
landscape : 'only screen and (orientation: landscape)',
|
||||||
|
portrait : 'only screen and (orientation: portrait)',
|
||||||
|
retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (min--moz-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (-o-min-device-pixel-ratio: 2/1),' +
|
||||||
|
'only screen and (min-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (min-resolution: 192dpi),' +
|
||||||
|
'only screen and (min-resolution: 2dppx)'
|
||||||
|
},
|
||||||
|
|
||||||
|
directives : {
|
||||||
|
replace: function (el, path, trigger) {
|
||||||
|
// The trigger argument, if called within the directive, fires
|
||||||
|
// an event named after the directive on the element, passing
|
||||||
|
// any parameters along to the event that you pass to trigger.
|
||||||
|
//
|
||||||
|
// ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
|
||||||
|
//
|
||||||
|
// This allows you to bind a callback like so:
|
||||||
|
// $('#interchangeContainer').on('replace', function (e, a, b, c) {
|
||||||
|
// console.log($(this).html(), a, b, c);
|
||||||
|
// });
|
||||||
|
|
||||||
|
if (/IMG/.test(el[0].nodeName)) {
|
||||||
|
var orig_path = el[0].src;
|
||||||
|
|
||||||
|
if (new RegExp(path, 'i').test(orig_path)) return;
|
||||||
|
|
||||||
|
el[0].src = path;
|
||||||
|
|
||||||
|
return trigger(el[0].src);
|
||||||
|
}
|
||||||
|
var last_path = el.data(this.data_attr + '-last-path');
|
||||||
|
|
||||||
|
if (last_path == path) return;
|
||||||
|
|
||||||
|
if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
|
||||||
|
$(el).css('background-image', 'url('+path+')');
|
||||||
|
el.data('interchange-last-path', path);
|
||||||
|
return trigger(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $.get(path, function (response) {
|
||||||
|
el.html(response);
|
||||||
|
el.data(this.data_attr + '-last-path', path);
|
||||||
|
trigger();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle random_str');
|
||||||
|
|
||||||
|
this.data_attr = this.set_data_attr();
|
||||||
|
$.extend(true, this.settings, method, options);
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.load('images');
|
||||||
|
this.load('nodes');
|
||||||
|
},
|
||||||
|
|
||||||
|
get_media_hash : function() {
|
||||||
|
var mediaHash='';
|
||||||
|
for (var queryName in this.settings.named_queries ) {
|
||||||
|
mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
|
||||||
|
}
|
||||||
|
return mediaHash;
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this, prevMediaHash;
|
||||||
|
|
||||||
|
$(window)
|
||||||
|
.off('.interchange')
|
||||||
|
.on('resize.fndtn.interchange', self.throttle(function () {
|
||||||
|
var currMediaHash = self.get_media_hash();
|
||||||
|
if (currMediaHash !== prevMediaHash) {
|
||||||
|
self.resize();
|
||||||
|
}
|
||||||
|
prevMediaHash = currMediaHash;
|
||||||
|
}, 50));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var cache = this.cache;
|
||||||
|
|
||||||
|
if(!this.images_loaded || !this.nodes_loaded) {
|
||||||
|
setTimeout($.proxy(this.resize, this), 50);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var uuid in cache) {
|
||||||
|
if (cache.hasOwnProperty(uuid)) {
|
||||||
|
var passed = this.results(uuid, cache[uuid]);
|
||||||
|
|
||||||
|
if (passed) {
|
||||||
|
this.settings.directives[passed
|
||||||
|
.scenario[1]].call(this, passed.el, passed.scenario[0], function () {
|
||||||
|
if (arguments[0] instanceof Array) {
|
||||||
|
var args = arguments[0];
|
||||||
|
} else {
|
||||||
|
var args = Array.prototype.slice.call(arguments, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
passed.el.trigger(passed.scenario[1], args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
results : function (uuid, scenarios) {
|
||||||
|
var count = scenarios.length;
|
||||||
|
|
||||||
|
if (count > 0) {
|
||||||
|
var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
|
||||||
|
|
||||||
|
while (count--) {
|
||||||
|
var mq, rule = scenarios[count][2];
|
||||||
|
if (this.settings.named_queries.hasOwnProperty(rule)) {
|
||||||
|
mq = matchMedia(this.settings.named_queries[rule]);
|
||||||
|
} else {
|
||||||
|
mq = matchMedia(rule);
|
||||||
|
}
|
||||||
|
if (mq.matches) {
|
||||||
|
return {el: el, scenario: scenarios[count]};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
load : function (type, force_update) {
|
||||||
|
if (typeof this['cached_' + type] === 'undefined' || force_update) {
|
||||||
|
this['update_' + type]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this['cached_' + type];
|
||||||
|
},
|
||||||
|
|
||||||
|
update_images : function () {
|
||||||
|
var images = this.S('img[' + this.data_attr + ']'),
|
||||||
|
count = images.length,
|
||||||
|
i = count,
|
||||||
|
loaded_count = 0,
|
||||||
|
data_attr = this.data_attr;
|
||||||
|
|
||||||
|
this.cache = {};
|
||||||
|
this.cached_images = [];
|
||||||
|
this.images_loaded = (count === 0);
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
loaded_count++;
|
||||||
|
if (images[i]) {
|
||||||
|
var str = images[i].getAttribute(data_attr) || '';
|
||||||
|
|
||||||
|
if (str.length > 0) {
|
||||||
|
this.cached_images.push(images[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loaded_count === count) {
|
||||||
|
this.images_loaded = true;
|
||||||
|
this.enhance('images');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nodes : function () {
|
||||||
|
var nodes = this.S('[' + this.data_attr + ']').not('img'),
|
||||||
|
count = nodes.length,
|
||||||
|
i = count,
|
||||||
|
loaded_count = 0,
|
||||||
|
data_attr = this.data_attr;
|
||||||
|
|
||||||
|
this.cached_nodes = [];
|
||||||
|
this.nodes_loaded = (count === 0);
|
||||||
|
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
loaded_count++;
|
||||||
|
var str = nodes[i].getAttribute(data_attr) || '';
|
||||||
|
|
||||||
|
if (str.length > 0) {
|
||||||
|
this.cached_nodes.push(nodes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(loaded_count === count) {
|
||||||
|
this.nodes_loaded = true;
|
||||||
|
this.enhance('nodes');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
enhance : function (type) {
|
||||||
|
var i = this['cached_' + type].length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
this.object($(this['cached_' + type][i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(window).trigger('resize');
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_params : function (path, directive, mq) {
|
||||||
|
return [this.trim(path), this.convert_directive(directive), this.trim(mq)];
|
||||||
|
},
|
||||||
|
|
||||||
|
convert_directive : function (directive) {
|
||||||
|
|
||||||
|
var trimmed = this.trim(directive);
|
||||||
|
|
||||||
|
if (trimmed.length > 0) {
|
||||||
|
return trimmed;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'replace';
|
||||||
|
},
|
||||||
|
|
||||||
|
object : function(el) {
|
||||||
|
var raw_arr = this.parse_data_attr(el),
|
||||||
|
scenarios = [],
|
||||||
|
i = raw_arr.length;
|
||||||
|
|
||||||
|
if (i > 0) {
|
||||||
|
while (i--) {
|
||||||
|
var split = raw_arr[i].split(/\((.*?)(\))$/);
|
||||||
|
|
||||||
|
if (split.length > 1) {
|
||||||
|
var cached_split = split[0].split(','),
|
||||||
|
params = this.parse_params(cached_split[0],
|
||||||
|
cached_split[1], split[1]);
|
||||||
|
|
||||||
|
scenarios.push(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.store(el, scenarios);
|
||||||
|
},
|
||||||
|
|
||||||
|
store : function (el, scenarios) {
|
||||||
|
var uuid = this.random_str(),
|
||||||
|
current_uuid = el.data(this.add_namespace('uuid', true));
|
||||||
|
|
||||||
|
if (this.cache[current_uuid]) return this.cache[current_uuid];
|
||||||
|
|
||||||
|
el.attr(this.add_namespace('data-uuid'), uuid);
|
||||||
|
|
||||||
|
return this.cache[uuid] = scenarios;
|
||||||
|
},
|
||||||
|
|
||||||
|
trim : function(str) {
|
||||||
|
|
||||||
|
if (typeof str === 'string') {
|
||||||
|
return $.trim(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
set_data_attr: function (init) {
|
||||||
|
if (init) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return 'data-' + this.namespace + '-' + this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'data-' + this.settings.load_attr;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_data_attr : function (el) {
|
||||||
|
var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
|
||||||
|
i = raw.length,
|
||||||
|
output = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (raw[i].replace(/[\W\d]+/, '').length > 4) {
|
||||||
|
output.push(raw[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
this.load('images', true);
|
||||||
|
this.load('nodes', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,849 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Modernizr = Modernizr || false;
|
||||||
|
|
||||||
|
Foundation.libs.joyride = {
|
||||||
|
name : 'joyride',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
defaults : {
|
||||||
|
expose : false, // turn on or off the expose feature
|
||||||
|
modal : true, // Whether to cover page with modal during the tour
|
||||||
|
tip_location : 'bottom', // 'top' or 'bottom' in relation to parent
|
||||||
|
nub_position : 'auto', // override on a per tooltip bases
|
||||||
|
scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
|
||||||
|
scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
|
||||||
|
timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
|
||||||
|
start_timer_on_click : true, // true or false - true requires clicking the first button start the timer
|
||||||
|
start_offset : 0, // the index of the tooltip you want to start on (index of the li)
|
||||||
|
next_button : true, // true or false to control whether a next button is used
|
||||||
|
tip_animation : 'fade', // 'pop' or 'fade' in each tip
|
||||||
|
pause_after : [], // array of indexes where to pause the tour after
|
||||||
|
exposed : [], // array of expose elements
|
||||||
|
tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
|
||||||
|
cookie_monster : false, // true or false to control whether cookies are used
|
||||||
|
cookie_name : 'joyride', // Name the cookie you'll use
|
||||||
|
cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
|
||||||
|
cookie_expires : 365, // set when you would like the cookie to expire.
|
||||||
|
tip_container : 'body', // Where will the tip be attached
|
||||||
|
abort_on_close : true, // When true, the close event will not fire any callback
|
||||||
|
tip_location_patterns : {
|
||||||
|
top: ['bottom'],
|
||||||
|
bottom: [], // bottom should not need to be repositioned
|
||||||
|
left: ['right', 'top', 'bottom'],
|
||||||
|
right: ['left', 'top', 'bottom']
|
||||||
|
},
|
||||||
|
post_ride_callback : function (){}, // A method to call once the tour closes (canceled or complete)
|
||||||
|
post_step_callback : function (){}, // A method to call after each step
|
||||||
|
pre_step_callback : function (){}, // A method to call before each step
|
||||||
|
pre_ride_callback : function (){}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)
|
||||||
|
post_expose_callback : function (){}, // A method to call after an element has been exposed
|
||||||
|
template : { // HTML segments for tip layout
|
||||||
|
link : '<a href="#close" class="joyride-close-tip">×</a>',
|
||||||
|
timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
|
||||||
|
tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
|
||||||
|
wrapper : '<div class="joyride-content-wrapper"></div>',
|
||||||
|
button : '<a href="#" class="small button joyride-next-tip"></a>',
|
||||||
|
modal : '<div class="joyride-modal-bg"></div>',
|
||||||
|
expose : '<div class="joyride-expose-wrapper"></div>',
|
||||||
|
expose_cover: '<div class="joyride-expose-cover"></div>'
|
||||||
|
},
|
||||||
|
expose_add_class : '' // One or more space-separated class names to be added to exposed element
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle random_str');
|
||||||
|
|
||||||
|
this.settings = this.settings || $.extend({}, this.defaults, (options || method));
|
||||||
|
|
||||||
|
this.bindings(method, options)
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.joyride')
|
||||||
|
.on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (this.settings.$li.next().length < 1) {
|
||||||
|
this.end();
|
||||||
|
} else if (this.settings.timer > 0) {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
this.startTimer();
|
||||||
|
} else {
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}.bind(this))
|
||||||
|
|
||||||
|
.on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.end(this.settings.abort_on_close);
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
|
$(window)
|
||||||
|
.off('.joyride')
|
||||||
|
.on('resize.fndtn.joyride', self.throttle(function () {
|
||||||
|
if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip) {
|
||||||
|
if (self.settings.exposed.length > 0) {
|
||||||
|
var $els = $(self.settings.exposed);
|
||||||
|
|
||||||
|
$els.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
self.un_expose($this);
|
||||||
|
self.expose($this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.is_phone()) {
|
||||||
|
self.pos_phone();
|
||||||
|
} else {
|
||||||
|
self.pos_default(false, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100));
|
||||||
|
},
|
||||||
|
|
||||||
|
start : function () {
|
||||||
|
var self = this,
|
||||||
|
$this = $('[' + this.attr_name() + ']', this.scope),
|
||||||
|
integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
|
||||||
|
int_settings_count = integer_settings.length;
|
||||||
|
|
||||||
|
if (!$this.length > 0) return;
|
||||||
|
|
||||||
|
if (!this.settings.init) this.events();
|
||||||
|
|
||||||
|
this.settings = $this.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
// non configureable settings
|
||||||
|
this.settings.$content_el = $this;
|
||||||
|
this.settings.$body = $(this.settings.tip_container);
|
||||||
|
this.settings.body_offset = $(this.settings.tip_container).position();
|
||||||
|
this.settings.$tip_content = this.settings.$content_el.find('> li');
|
||||||
|
this.settings.paused = false;
|
||||||
|
this.settings.attempts = 0;
|
||||||
|
|
||||||
|
// can we create cookies?
|
||||||
|
if (typeof $.cookie !== 'function') {
|
||||||
|
this.settings.cookie_monster = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate the tips and insert into dom.
|
||||||
|
if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
|
||||||
|
this.settings.$tip_content.each(function (index) {
|
||||||
|
var $this = $(this);
|
||||||
|
this.settings = $.extend({}, self.defaults, self.data_options($this))
|
||||||
|
|
||||||
|
// Make sure that settings parsed from data_options are integers where necessary
|
||||||
|
var i = int_settings_count;
|
||||||
|
while (i--) {
|
||||||
|
self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
|
||||||
|
}
|
||||||
|
self.create({$li : $this, index : index});
|
||||||
|
});
|
||||||
|
|
||||||
|
// show first tip
|
||||||
|
if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
|
||||||
|
this.show('init');
|
||||||
|
this.startTimer();
|
||||||
|
} else {
|
||||||
|
this.show('init');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resume : function () {
|
||||||
|
this.set_li();
|
||||||
|
this.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
tip_template : function (opts) {
|
||||||
|
var $blank, content;
|
||||||
|
|
||||||
|
opts.tip_class = opts.tip_class || '';
|
||||||
|
|
||||||
|
$blank = $(this.settings.template.tip).addClass(opts.tip_class);
|
||||||
|
content = $.trim($(opts.li).html()) +
|
||||||
|
this.button_text(opts.button_text) +
|
||||||
|
this.settings.template.link +
|
||||||
|
this.timer_instance(opts.index);
|
||||||
|
|
||||||
|
$blank.append($(this.settings.template.wrapper));
|
||||||
|
$blank.first().attr(this.add_namespace('data-index'), opts.index);
|
||||||
|
$('.joyride-content-wrapper', $blank).append(content);
|
||||||
|
|
||||||
|
return $blank[0];
|
||||||
|
},
|
||||||
|
|
||||||
|
timer_instance : function (index) {
|
||||||
|
var txt;
|
||||||
|
|
||||||
|
if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
|
||||||
|
txt = '';
|
||||||
|
} else {
|
||||||
|
txt = $(this.settings.template.timer)[0].outerHTML;
|
||||||
|
}
|
||||||
|
return txt;
|
||||||
|
},
|
||||||
|
|
||||||
|
button_text : function (txt) {
|
||||||
|
if (this.settings.next_button) {
|
||||||
|
txt = $.trim(txt) || 'Next';
|
||||||
|
txt = $(this.settings.template.button).append(txt)[0].outerHTML;
|
||||||
|
} else {
|
||||||
|
txt = '';
|
||||||
|
}
|
||||||
|
return txt;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function (opts) {
|
||||||
|
var buttonText = opts.$li.attr(this.add_namespace('data-button'))
|
||||||
|
|| opts.$li.attr(this.add_namespace('data-text')),
|
||||||
|
tipClass = opts.$li.attr('class'),
|
||||||
|
$tip_content = $(this.tip_template({
|
||||||
|
tip_class : tipClass,
|
||||||
|
index : opts.index,
|
||||||
|
button_text : buttonText,
|
||||||
|
li : opts.$li
|
||||||
|
}));
|
||||||
|
|
||||||
|
$(this.settings.tip_container).append($tip_content);
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function (init) {
|
||||||
|
var $timer = null;
|
||||||
|
|
||||||
|
// are we paused?
|
||||||
|
if (this.settings.$li === undefined
|
||||||
|
|| ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
|
||||||
|
|
||||||
|
// don't go to the next li if the tour was paused
|
||||||
|
if (this.settings.paused) {
|
||||||
|
this.settings.paused = false;
|
||||||
|
} else {
|
||||||
|
this.set_li(init);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.attempts = 0;
|
||||||
|
|
||||||
|
if (this.settings.$li.length && this.settings.$target.length > 0) {
|
||||||
|
if (init) { //run when we first start
|
||||||
|
this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||||
|
if (this.settings.modal) {
|
||||||
|
this.show_modal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||||
|
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
|
||||||
|
|
||||||
|
this.settings.timer = parseInt(this.settings.timer, 10);
|
||||||
|
|
||||||
|
this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
|
||||||
|
|
||||||
|
// scroll if not modal
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
this.scroll_to();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.is_phone()) {
|
||||||
|
this.pos_phone(true);
|
||||||
|
} else {
|
||||||
|
this.pos_default(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$timer = this.settings.$next_tip.find('.joyride-timer-indicator');
|
||||||
|
|
||||||
|
if (/pop/i.test(this.settings.tip_animation)) {
|
||||||
|
|
||||||
|
$timer.width(0);
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$timer.animate({
|
||||||
|
width: $timer.parent().width()
|
||||||
|
}, this.settings.timer, 'linear');
|
||||||
|
}.bind(this), this.settings.tip_animation_fade_speed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} else if (/fade/i.test(this.settings.tip_animation)) {
|
||||||
|
|
||||||
|
$timer.width(0);
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
|
||||||
|
this.settings.$next_tip
|
||||||
|
.fadeIn(this.settings.tip_animation_fade_speed)
|
||||||
|
.show();
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$timer.animate({
|
||||||
|
width: $timer.parent().width()
|
||||||
|
}, this.settings.timer, 'linear');
|
||||||
|
}.bind(this), this.settings.tip_animation_fadeSpeed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.$current_tip = this.settings.$next_tip;
|
||||||
|
|
||||||
|
// skip non-existant targets
|
||||||
|
} else if (this.settings.$li && this.settings.$target.length < 1) {
|
||||||
|
|
||||||
|
this.show();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.end();
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.settings.paused = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_phone : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function () {
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.un_expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.settings.modal) {
|
||||||
|
$('.joyride-modal-bg').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent scroll bouncing...wait to remove from layout
|
||||||
|
this.settings.$current_tip.css('visibility', 'hidden');
|
||||||
|
setTimeout($.proxy(function() {
|
||||||
|
this.hide();
|
||||||
|
this.css('visibility', 'visible');
|
||||||
|
}, this.settings.$current_tip), 0);
|
||||||
|
this.settings.post_step_callback(this.settings.$li.index(),
|
||||||
|
this.settings.$current_tip);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_li : function (init) {
|
||||||
|
if (init) {
|
||||||
|
this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
|
||||||
|
this.set_next_tip();
|
||||||
|
this.settings.$current_tip = this.settings.$next_tip;
|
||||||
|
} else {
|
||||||
|
this.settings.$li = this.settings.$li.next();
|
||||||
|
this.set_next_tip();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.set_target();
|
||||||
|
},
|
||||||
|
|
||||||
|
set_next_tip : function () {
|
||||||
|
this.settings.$next_tip = $(".joyride-tip-guide").eq(this.settings.$li.index());
|
||||||
|
this.settings.$next_tip.data('closed', '');
|
||||||
|
},
|
||||||
|
|
||||||
|
set_target : function () {
|
||||||
|
var cl = this.settings.$li.attr(this.add_namespace('data-class')),
|
||||||
|
id = this.settings.$li.attr(this.add_namespace('data-id')),
|
||||||
|
$sel = function () {
|
||||||
|
if (id) {
|
||||||
|
return $(document.getElementById(id));
|
||||||
|
} else if (cl) {
|
||||||
|
return $('.' + cl).first();
|
||||||
|
} else {
|
||||||
|
return $('body');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.settings.$target = $sel();
|
||||||
|
},
|
||||||
|
|
||||||
|
scroll_to : function () {
|
||||||
|
var window_half, tipOffset;
|
||||||
|
|
||||||
|
window_half = $(window).height() / 2;
|
||||||
|
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
|
||||||
|
|
||||||
|
if (tipOffset != 0) {
|
||||||
|
$('html, body').animate({
|
||||||
|
scrollTop: tipOffset
|
||||||
|
}, this.settings.scroll_speed, 'swing');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
paused : function () {
|
||||||
|
return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
|
||||||
|
},
|
||||||
|
|
||||||
|
restart : function () {
|
||||||
|
this.hide();
|
||||||
|
this.settings.$li = undefined;
|
||||||
|
this.show('init');
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_default : function (init, resizing) {
|
||||||
|
var half_fold = Math.ceil($(window).height() / 2),
|
||||||
|
tip_position = this.settings.$next_tip.offset(),
|
||||||
|
$nub = this.settings.$next_tip.find('.joyride-nub'),
|
||||||
|
nub_width = Math.ceil($nub.outerWidth() / 2),
|
||||||
|
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||||
|
toggle = init || false;
|
||||||
|
|
||||||
|
// tip must not be "display: none" to calculate position
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.css('visibility', 'hidden');
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof resizing === 'undefined') {
|
||||||
|
resizing = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
if (this.bottom()) {
|
||||||
|
if (this.rtl) {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight()),
|
||||||
|
left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight()),
|
||||||
|
left: this.settings.$target.offset().left});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
|
||||||
|
|
||||||
|
} else if (this.top()) {
|
||||||
|
if (this.rtl) {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height),
|
||||||
|
left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height),
|
||||||
|
left: this.settings.$target.offset().left});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
|
||||||
|
|
||||||
|
} else if (this.right()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: this.settings.$target.offset().top,
|
||||||
|
left: (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width)});
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
|
||||||
|
|
||||||
|
} else if (this.left()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top: this.settings.$target.offset().top,
|
||||||
|
left: (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width)});
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
|
||||||
|
|
||||||
|
$nub.removeClass('bottom')
|
||||||
|
.removeClass('top')
|
||||||
|
.removeClass('right')
|
||||||
|
.removeClass('left');
|
||||||
|
|
||||||
|
this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
|
||||||
|
|
||||||
|
this.settings.attempts++;
|
||||||
|
|
||||||
|
this.pos_default();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (this.settings.$li.length) {
|
||||||
|
|
||||||
|
this.pos_modal($nub);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.hide();
|
||||||
|
this.settings.$next_tip.css('visibility', 'visible');
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_phone : function (init) {
|
||||||
|
var tip_height = this.settings.$next_tip.outerHeight(),
|
||||||
|
tip_offset = this.settings.$next_tip.offset(),
|
||||||
|
target_height = this.settings.$target.outerHeight(),
|
||||||
|
$nub = $('.joyride-nub', this.settings.$next_tip),
|
||||||
|
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||||
|
toggle = init || false;
|
||||||
|
|
||||||
|
$nub.removeClass('bottom')
|
||||||
|
.removeClass('top')
|
||||||
|
.removeClass('right')
|
||||||
|
.removeClass('left');
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.css('visibility', 'hidden');
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
|
||||||
|
if (this.top()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.offset({top: this.settings.$target.offset().top - tip_height - nub_height});
|
||||||
|
$nub.addClass('bottom');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.settings.$next_tip.offset({top: this.settings.$target.offset().top + target_height + nub_height});
|
||||||
|
$nub.addClass('top');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (this.settings.$li.length) {
|
||||||
|
this.pos_modal($nub);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.hide();
|
||||||
|
this.settings.$next_tip.css('visibility', 'visible');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_modal : function ($nub) {
|
||||||
|
this.center();
|
||||||
|
$nub.hide();
|
||||||
|
|
||||||
|
this.show_modal();
|
||||||
|
},
|
||||||
|
|
||||||
|
show_modal : function () {
|
||||||
|
if (!this.settings.$next_tip.data('closed')) {
|
||||||
|
var joyridemodalbg = $('.joyride-modal-bg');
|
||||||
|
if (joyridemodalbg.length < 1) {
|
||||||
|
$('body').append(this.settings.template.modal).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/pop/i.test(this.settings.tip_animation)) {
|
||||||
|
joyridemodalbg.show();
|
||||||
|
} else {
|
||||||
|
joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
expose : function () {
|
||||||
|
var expose,
|
||||||
|
exposeCover,
|
||||||
|
el,
|
||||||
|
origCSS,
|
||||||
|
origClasses,
|
||||||
|
randId = 'expose-' + this.random_str(6);
|
||||||
|
|
||||||
|
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||||
|
el = arguments[0];
|
||||||
|
} else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){
|
||||||
|
el = this.settings.$target;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(el.length < 1){
|
||||||
|
if(window.console){
|
||||||
|
console.error('element not valid', el);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
expose = $(this.settings.template.expose);
|
||||||
|
this.settings.$body.append(expose);
|
||||||
|
expose.css({
|
||||||
|
top: el.offset().top,
|
||||||
|
left: el.offset().left,
|
||||||
|
width: el.outerWidth(true),
|
||||||
|
height: el.outerHeight(true)
|
||||||
|
});
|
||||||
|
|
||||||
|
exposeCover = $(this.settings.template.expose_cover);
|
||||||
|
|
||||||
|
origCSS = {
|
||||||
|
zIndex: el.css('z-index'),
|
||||||
|
position: el.css('position')
|
||||||
|
};
|
||||||
|
|
||||||
|
origClasses = el.attr('class') == null ? '' : el.attr('class');
|
||||||
|
|
||||||
|
el.css('z-index',parseInt(expose.css('z-index'))+1);
|
||||||
|
|
||||||
|
if (origCSS.position == 'static') {
|
||||||
|
el.css('position','relative');
|
||||||
|
}
|
||||||
|
|
||||||
|
el.data('expose-css',origCSS);
|
||||||
|
el.data('orig-class', origClasses);
|
||||||
|
el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
|
||||||
|
|
||||||
|
exposeCover.css({
|
||||||
|
top: el.offset().top,
|
||||||
|
left: el.offset().left,
|
||||||
|
width: el.outerWidth(true),
|
||||||
|
height: el.outerHeight(true)
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.settings.modal) this.show_modal();
|
||||||
|
|
||||||
|
this.settings.$body.append(exposeCover);
|
||||||
|
expose.addClass(randId);
|
||||||
|
exposeCover.addClass(randId);
|
||||||
|
el.data('expose', randId);
|
||||||
|
this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
|
||||||
|
this.add_exposed(el);
|
||||||
|
},
|
||||||
|
|
||||||
|
un_expose : function () {
|
||||||
|
var exposeId,
|
||||||
|
el,
|
||||||
|
expose ,
|
||||||
|
origCSS,
|
||||||
|
origClasses,
|
||||||
|
clearAll = false;
|
||||||
|
|
||||||
|
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||||
|
el = arguments[0];
|
||||||
|
} else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){
|
||||||
|
el = this.settings.$target;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(el.length < 1){
|
||||||
|
if (window.console) {
|
||||||
|
console.error('element not valid', el);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
exposeId = el.data('expose');
|
||||||
|
expose = $('.' + exposeId);
|
||||||
|
|
||||||
|
if (arguments.length > 1) {
|
||||||
|
clearAll = arguments[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clearAll === true) {
|
||||||
|
$('.joyride-expose-wrapper,.joyride-expose-cover').remove();
|
||||||
|
} else {
|
||||||
|
expose.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
origCSS = el.data('expose-css');
|
||||||
|
|
||||||
|
if (origCSS.zIndex == 'auto') {
|
||||||
|
el.css('z-index', '');
|
||||||
|
} else {
|
||||||
|
el.css('z-index', origCSS.zIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (origCSS.position != el.css('position')) {
|
||||||
|
if(origCSS.position == 'static') {// this is default, no need to set it.
|
||||||
|
el.css('position', '');
|
||||||
|
} else {
|
||||||
|
el.css('position', origCSS.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
origClasses = el.data('orig-class');
|
||||||
|
el.attr('class', origClasses);
|
||||||
|
el.removeData('orig-classes');
|
||||||
|
|
||||||
|
el.removeData('expose');
|
||||||
|
el.removeData('expose-z-index');
|
||||||
|
this.remove_exposed(el);
|
||||||
|
},
|
||||||
|
|
||||||
|
add_exposed: function(el){
|
||||||
|
this.settings.exposed = this.settings.exposed || [];
|
||||||
|
if (el instanceof $ || typeof el === 'object') {
|
||||||
|
this.settings.exposed.push(el[0]);
|
||||||
|
} else if (typeof el == 'string') {
|
||||||
|
this.settings.exposed.push(el);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
remove_exposed: function(el){
|
||||||
|
var search, i;
|
||||||
|
if (el instanceof $) {
|
||||||
|
search = el[0]
|
||||||
|
} else if (typeof el == 'string'){
|
||||||
|
search = el;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.exposed = this.settings.exposed || [];
|
||||||
|
i = this.settings.exposed.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (this.settings.exposed[i] == search) {
|
||||||
|
this.settings.exposed.splice(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
center : function () {
|
||||||
|
var $w = $(window);
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
|
||||||
|
left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
bottom : function () {
|
||||||
|
return /bottom/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
top : function () {
|
||||||
|
return /top/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
right : function () {
|
||||||
|
return /right/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
left : function () {
|
||||||
|
return /left/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
corners : function (el) {
|
||||||
|
var w = $(window),
|
||||||
|
window_half = w.height() / 2,
|
||||||
|
//using this to calculate since scroll may not have finished yet.
|
||||||
|
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
|
||||||
|
right = w.width() + w.scrollLeft(),
|
||||||
|
offsetBottom = w.height() + tipOffset,
|
||||||
|
bottom = w.height() + w.scrollTop(),
|
||||||
|
top = w.scrollTop();
|
||||||
|
|
||||||
|
if (tipOffset < top) {
|
||||||
|
if (tipOffset < 0) {
|
||||||
|
top = 0;
|
||||||
|
} else {
|
||||||
|
top = tipOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offsetBottom > bottom) {
|
||||||
|
bottom = offsetBottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
el.offset().top < top,
|
||||||
|
right < el.offset().left + el.outerWidth(),
|
||||||
|
bottom < el.offset().top + el.outerHeight(),
|
||||||
|
w.scrollLeft() > el.offset().left
|
||||||
|
];
|
||||||
|
},
|
||||||
|
|
||||||
|
visible : function (hidden_corners) {
|
||||||
|
var i = hidden_corners.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (hidden_corners[i]) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
nub_position : function (nub, pos, def) {
|
||||||
|
if (pos === 'auto') {
|
||||||
|
nub.addClass(def);
|
||||||
|
} else {
|
||||||
|
nub.addClass(pos);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
startTimer : function () {
|
||||||
|
if (this.settings.$li.length) {
|
||||||
|
this.settings.automate = setTimeout(function () {
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
this.startTimer();
|
||||||
|
}.bind(this), this.settings.timer);
|
||||||
|
} else {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
end : function (abort) {
|
||||||
|
if (this.settings.cookie_monster) {
|
||||||
|
$.cookie(this.settings.cookie_name, 'ridden', { expires: this.settings.cookie_expires, domain: this.settings.cookie_domain });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.un_expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.$next_tip.data('closed', true);
|
||||||
|
|
||||||
|
$('.joyride-modal-bg').hide();
|
||||||
|
this.settings.$current_tip.hide();
|
||||||
|
|
||||||
|
if (typeof abort === 'undefined') {
|
||||||
|
this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||||
|
this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.joyride-tip-guide').remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
$(this.scope).off('.joyride');
|
||||||
|
$(window).off('.joyride');
|
||||||
|
$('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
|
||||||
|
$('.joyride-tip-guide, .joyride-modal-bg').remove();
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
this.settings = {};
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,609 @@
|
|||||||
|
/*
|
||||||
|
* Foundation Responsive Library
|
||||||
|
* http://foundation.zurb.com
|
||||||
|
* Copyright 2014, ZURB
|
||||||
|
* Free to use under the MIT license.
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var header_helpers = function (class_array) {
|
||||||
|
var i = class_array.length;
|
||||||
|
var head = $('head');
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if(head.has('.' + class_array[i]).length === 0) {
|
||||||
|
head.append('<meta class="' + class_array[i] + '" />');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
header_helpers([
|
||||||
|
'foundation-mq-small',
|
||||||
|
'foundation-mq-medium',
|
||||||
|
'foundation-mq-large',
|
||||||
|
'foundation-mq-xlarge',
|
||||||
|
'foundation-mq-xxlarge',
|
||||||
|
'foundation-data-attribute-namespace']);
|
||||||
|
|
||||||
|
// Enable FastClick if present
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
if (typeof FastClick !== 'undefined') {
|
||||||
|
// Don't attach to body if undefined
|
||||||
|
if (typeof document.body !== 'undefined') {
|
||||||
|
FastClick.attach(document.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// private Fast Selector wrapper,
|
||||||
|
// returns jQuery object. Only use where
|
||||||
|
// getElementById is not available.
|
||||||
|
var S = function (selector, context) {
|
||||||
|
if (typeof selector === 'string') {
|
||||||
|
if (context) {
|
||||||
|
var cont;
|
||||||
|
if (context.jquery) {
|
||||||
|
cont = context[0];
|
||||||
|
if (!cont) return context;
|
||||||
|
} else {
|
||||||
|
cont = context;
|
||||||
|
}
|
||||||
|
return $(cont.querySelectorAll(selector));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(document.querySelectorAll(selector));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(selector, context);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Namespace functions.
|
||||||
|
|
||||||
|
var attr_name = function (init) {
|
||||||
|
var arr = [];
|
||||||
|
if (!init) arr.push('data');
|
||||||
|
if (this.namespace.length > 0) arr.push(this.namespace);
|
||||||
|
arr.push(this.name);
|
||||||
|
|
||||||
|
return arr.join('-');
|
||||||
|
};
|
||||||
|
|
||||||
|
var add_namespace = function (str) {
|
||||||
|
var parts = str.split('-'),
|
||||||
|
i = parts.length,
|
||||||
|
arr = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (i !== 0) {
|
||||||
|
arr.push(parts[i]);
|
||||||
|
} else {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
arr.push(this.namespace, parts[i]);
|
||||||
|
} else {
|
||||||
|
arr.push(parts[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr.reverse().join('-');
|
||||||
|
};
|
||||||
|
|
||||||
|
// Event binding and data-options updating.
|
||||||
|
|
||||||
|
var bindings = function (method, options) {
|
||||||
|
var self = this,
|
||||||
|
should_bind_events = !S(this).data(this.attr_name(true));
|
||||||
|
|
||||||
|
if (typeof method === 'string') {
|
||||||
|
return this[method].call(this, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (S(this.scope).is('[' + this.attr_name() +']')) {
|
||||||
|
S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));
|
||||||
|
|
||||||
|
if (should_bind_events) {
|
||||||
|
this.events(this.scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
S('[' + this.attr_name() +']', this.scope).each(function () {
|
||||||
|
var should_bind_events = !S(this).data(self.attr_name(true) + '-init');
|
||||||
|
S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));
|
||||||
|
|
||||||
|
if (should_bind_events) {
|
||||||
|
self.events(this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var single_image_loaded = function (image, callback) {
|
||||||
|
function loaded () {
|
||||||
|
callback(image[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindLoad () {
|
||||||
|
this.one('load', loaded);
|
||||||
|
|
||||||
|
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
|
||||||
|
var src = this.attr( 'src' ),
|
||||||
|
param = src.match( /\?/ ) ? '&' : '?';
|
||||||
|
|
||||||
|
param += 'random=' + (new Date()).getTime();
|
||||||
|
this.attr('src', src + param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image.attr('src')) {
|
||||||
|
loaded();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (image[0].complete || image[0].readyState === 4) {
|
||||||
|
loaded();
|
||||||
|
} else {
|
||||||
|
bindLoad.call(image);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
https://github.com/paulirish/matchMedia.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
window.matchMedia = window.matchMedia || (function( doc ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var bool,
|
||||||
|
docElem = doc.documentElement,
|
||||||
|
refNode = docElem.firstElementChild || docElem.firstChild,
|
||||||
|
// fakeBody required for <FF4 when executed in <head>
|
||||||
|
fakeBody = doc.createElement( "body" ),
|
||||||
|
div = doc.createElement( "div" );
|
||||||
|
|
||||||
|
div.id = "mq-test-1";
|
||||||
|
div.style.cssText = "position:absolute;top:-100em";
|
||||||
|
fakeBody.style.background = "none";
|
||||||
|
fakeBody.appendChild(div);
|
||||||
|
|
||||||
|
return function (q) {
|
||||||
|
|
||||||
|
div.innerHTML = "­<style media=\"" + q + "\"> #mq-test-1 { width: 42px; }</style>";
|
||||||
|
|
||||||
|
docElem.insertBefore( fakeBody, refNode );
|
||||||
|
bool = div.offsetWidth === 42;
|
||||||
|
docElem.removeChild( fakeBody );
|
||||||
|
|
||||||
|
return {
|
||||||
|
matches: bool,
|
||||||
|
media: q
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}( document ));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* jquery.requestAnimationFrame
|
||||||
|
* https://github.com/gnarf37/jquery-requestAnimationFrame
|
||||||
|
* Requires jQuery 1.8+
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012 Corey Frang
|
||||||
|
* Licensed under the MIT license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
// requestAnimationFrame polyfill adapted from Erik Möller
|
||||||
|
// fixes from Paul Irish and Tino Zijdel
|
||||||
|
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
||||||
|
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
|
||||||
|
|
||||||
|
var animating,
|
||||||
|
lastTime = 0,
|
||||||
|
vendors = ['webkit', 'moz'],
|
||||||
|
requestAnimationFrame = window.requestAnimationFrame,
|
||||||
|
cancelAnimationFrame = window.cancelAnimationFrame,
|
||||||
|
jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
|
||||||
|
|
||||||
|
for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
|
||||||
|
requestAnimationFrame = window[ vendors[lastTime] + "RequestAnimationFrame" ];
|
||||||
|
cancelAnimationFrame = cancelAnimationFrame ||
|
||||||
|
window[ vendors[lastTime] + "CancelAnimationFrame" ] ||
|
||||||
|
window[ vendors[lastTime] + "CancelRequestAnimationFrame" ];
|
||||||
|
}
|
||||||
|
|
||||||
|
function raf() {
|
||||||
|
if (animating) {
|
||||||
|
requestAnimationFrame(raf);
|
||||||
|
|
||||||
|
if (jqueryFxAvailable) {
|
||||||
|
jQuery.fx.tick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestAnimationFrame) {
|
||||||
|
// use rAF
|
||||||
|
window.requestAnimationFrame = requestAnimationFrame;
|
||||||
|
window.cancelAnimationFrame = cancelAnimationFrame;
|
||||||
|
|
||||||
|
if (jqueryFxAvailable) {
|
||||||
|
jQuery.fx.timer = function (timer) {
|
||||||
|
if (timer() && jQuery.timers.push(timer) && !animating) {
|
||||||
|
animating = true;
|
||||||
|
raf();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fx.stop = function () {
|
||||||
|
animating = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// polyfill
|
||||||
|
window.requestAnimationFrame = function (callback) {
|
||||||
|
var currTime = new Date().getTime(),
|
||||||
|
timeToCall = Math.max(0, 16 - (currTime - lastTime)),
|
||||||
|
id = window.setTimeout(function () {
|
||||||
|
callback(currTime + timeToCall);
|
||||||
|
}, timeToCall);
|
||||||
|
lastTime = currTime + timeToCall;
|
||||||
|
return id;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.cancelAnimationFrame = function (id) {
|
||||||
|
clearTimeout(id);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}( jQuery ));
|
||||||
|
|
||||||
|
|
||||||
|
function removeQuotes (string) {
|
||||||
|
if (typeof string === 'string' || string instanceof String) {
|
||||||
|
string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.Foundation = {
|
||||||
|
name : 'Foundation',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
media_queries : {
|
||||||
|
small : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
medium : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
large : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
xlarge: S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
xxlarge: S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
|
||||||
|
},
|
||||||
|
|
||||||
|
stylesheet : $('<style></style>').appendTo('head')[0].sheet,
|
||||||
|
|
||||||
|
global: {
|
||||||
|
namespace: undefined
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, libraries, method, options, response) {
|
||||||
|
var args = [scope, method, options, response],
|
||||||
|
responses = [];
|
||||||
|
|
||||||
|
// check RTL
|
||||||
|
this.rtl = /rtl/i.test(S('html').attr('dir'));
|
||||||
|
|
||||||
|
// set foundation global scope
|
||||||
|
this.scope = scope || this.scope;
|
||||||
|
|
||||||
|
this.set_namespace();
|
||||||
|
|
||||||
|
if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
|
||||||
|
if (this.libs.hasOwnProperty(libraries)) {
|
||||||
|
responses.push(this.init_lib(libraries, args));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var lib in this.libs) {
|
||||||
|
responses.push(this.init_lib(lib, libraries));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return scope;
|
||||||
|
},
|
||||||
|
|
||||||
|
init_lib : function (lib, args) {
|
||||||
|
if (this.libs.hasOwnProperty(lib)) {
|
||||||
|
this.patch(this.libs[lib]);
|
||||||
|
|
||||||
|
if (args && args.hasOwnProperty(lib)) {
|
||||||
|
if (typeof this.libs[lib].settings !== 'undefined') {
|
||||||
|
$.extend(true, this.libs[lib].settings, args[lib]);
|
||||||
|
}
|
||||||
|
else if (typeof this.libs[lib].defaults !== 'undefined') {
|
||||||
|
$.extend(true, this.libs[lib].defaults, args[lib]);
|
||||||
|
}
|
||||||
|
return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
args = args instanceof Array ? args : new Array(args); // PATCH: added this line
|
||||||
|
return this.libs[lib].init.apply(this.libs[lib], args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return function () {};
|
||||||
|
},
|
||||||
|
|
||||||
|
patch : function (lib) {
|
||||||
|
lib.scope = this.scope;
|
||||||
|
lib.namespace = this.global.namespace;
|
||||||
|
lib.rtl = this.rtl;
|
||||||
|
lib['data_options'] = this.utils.data_options;
|
||||||
|
lib['attr_name'] = attr_name;
|
||||||
|
lib['add_namespace'] = add_namespace;
|
||||||
|
lib['bindings'] = bindings;
|
||||||
|
lib['S'] = this.utils.S;
|
||||||
|
},
|
||||||
|
|
||||||
|
inherit : function (scope, methods) {
|
||||||
|
var methods_arr = methods.split(' '),
|
||||||
|
i = methods_arr.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (this.utils.hasOwnProperty(methods_arr[i])) {
|
||||||
|
scope[methods_arr[i]] = this.utils[methods_arr[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_namespace: function () {
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Don't bother reading the namespace out of the meta tag
|
||||||
|
// if the namespace has been set globally in javascript
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// Foundation.global.namespace = 'my-namespace';
|
||||||
|
// or make it an empty string:
|
||||||
|
// Foundation.global.namespace = '';
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
// If the namespace has not been set (is undefined), try to read it out of the meta element.
|
||||||
|
// Otherwise use the globally defined namespace, even if it's empty ('')
|
||||||
|
var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
|
||||||
|
|
||||||
|
// Finally, if the namsepace is either undefined or false, set it to an empty string.
|
||||||
|
// Otherwise use the namespace value.
|
||||||
|
this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
|
||||||
|
},
|
||||||
|
|
||||||
|
libs : {},
|
||||||
|
|
||||||
|
// methods that can be inherited in libraries
|
||||||
|
utils : {
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Fast Selector wrapper returns jQuery object. Only use where getElementById
|
||||||
|
// is not available.
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Selector (String): CSS selector describing the element(s) to be
|
||||||
|
// returned as a jQuery object.
|
||||||
|
//
|
||||||
|
// Scope (String): CSS selector describing the area to be searched. Default
|
||||||
|
// is document.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Element (jQuery Object): jQuery object containing elements matching the
|
||||||
|
// selector within the scope.
|
||||||
|
S : S,
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Executes a function a max of once every n milliseconds
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Func (Function): Function to be throttled.
|
||||||
|
//
|
||||||
|
// Delay (Integer): Function execution threshold in milliseconds.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Lazy_function (Function): Function with throttling applied.
|
||||||
|
throttle : function (func, delay) {
|
||||||
|
var timer = null;
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
|
||||||
|
if (timer == null) {
|
||||||
|
timer = setTimeout(function () {
|
||||||
|
func.apply(context, args);
|
||||||
|
timer = null;
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Executes a function when it stops being invoked for n seconds
|
||||||
|
// Modified version of _.debounce() http://underscorejs.org
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Func (Function): Function to be debounced.
|
||||||
|
//
|
||||||
|
// Delay (Integer): Function execution threshold in milliseconds.
|
||||||
|
//
|
||||||
|
// Immediate (Bool): Whether the function should be called at the beginning
|
||||||
|
// of the delay instead of the end. Default is false.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Lazy_function (Function): Function with debouncing applied.
|
||||||
|
debounce : function (func, delay, immediate) {
|
||||||
|
var timeout, result;
|
||||||
|
return function () {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
var later = function () {
|
||||||
|
timeout = null;
|
||||||
|
if (!immediate) result = func.apply(context, args);
|
||||||
|
};
|
||||||
|
var callNow = immediate && !timeout;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, delay);
|
||||||
|
if (callNow) result = func.apply(context, args);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Parses data-options attribute
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// El (jQuery Object): Element to be parsed.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Options (Javascript Object): Contents of the element's data-options
|
||||||
|
// attribute.
|
||||||
|
data_options : function (el) {
|
||||||
|
var opts = {}, ii, p, opts_arr,
|
||||||
|
data_options = function (el) {
|
||||||
|
var namespace = Foundation.global.namespace;
|
||||||
|
|
||||||
|
if (namespace.length > 0) {
|
||||||
|
return el.data(namespace + '-options');
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.data('options');
|
||||||
|
};
|
||||||
|
|
||||||
|
var cached_options = data_options(el);
|
||||||
|
|
||||||
|
if (typeof cached_options === 'object') {
|
||||||
|
return cached_options;
|
||||||
|
}
|
||||||
|
|
||||||
|
opts_arr = (cached_options || ':').split(';');
|
||||||
|
ii = opts_arr.length;
|
||||||
|
|
||||||
|
function isNumber (o) {
|
||||||
|
return ! isNaN (o-0) && o !== null && o !== "" && o !== false && o !== true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function trim (str) {
|
||||||
|
if (typeof str === 'string') return $.trim(str);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ii--) {
|
||||||
|
p = opts_arr[ii].split(':');
|
||||||
|
|
||||||
|
if (/true/i.test(p[1])) p[1] = true;
|
||||||
|
if (/false/i.test(p[1])) p[1] = false;
|
||||||
|
if (isNumber(p[1])) {
|
||||||
|
if (p[1].indexOf('.') === -1) {
|
||||||
|
p[1] = parseInt(p[1], 10);
|
||||||
|
} else {
|
||||||
|
p[1] = parseFloat(p[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.length === 2 && p[0].length > 0) {
|
||||||
|
opts[trim(p[0])] = trim(p[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return opts;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Adds JS-recognizable media queries
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Media (String): Key string for the media query to be stored as in
|
||||||
|
// Foundation.media_queries
|
||||||
|
//
|
||||||
|
// Class (String): Class name for the generated <meta> tag
|
||||||
|
register_media : function (media, media_class) {
|
||||||
|
if(Foundation.media_queries[media] === undefined) {
|
||||||
|
$('head').append('<meta class="' + media_class + '">');
|
||||||
|
Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Add custom CSS within a JS-defined media query
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Rule (String): CSS rule to be appended to the document.
|
||||||
|
//
|
||||||
|
// Media (String): Optional media query string for the CSS rule to be
|
||||||
|
// nested under.
|
||||||
|
add_custom_rule : function (rule, media) {
|
||||||
|
if (media === undefined && Foundation.stylesheet) {
|
||||||
|
Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
|
||||||
|
} else {
|
||||||
|
var query = Foundation.media_queries[media];
|
||||||
|
|
||||||
|
if (query !== undefined) {
|
||||||
|
Foundation.stylesheet.insertRule('@media ' +
|
||||||
|
Foundation.media_queries[media] + '{ ' + rule + ' }');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Performs a callback function when an image is fully loaded
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Image (jQuery Object): Image(s) to check if loaded.
|
||||||
|
//
|
||||||
|
// Callback (Function): Fundation to execute when image is fully loaded.
|
||||||
|
image_loaded : function (images, callback) {
|
||||||
|
var self = this,
|
||||||
|
unloaded = images.length;
|
||||||
|
|
||||||
|
if (unloaded === 0) {
|
||||||
|
callback(images);
|
||||||
|
}
|
||||||
|
|
||||||
|
images.each(function () {
|
||||||
|
single_image_loaded(self.S(this), function () {
|
||||||
|
unloaded -= 1;
|
||||||
|
if (unloaded === 0) {
|
||||||
|
callback(images);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Returns a random, alphanumeric string
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Length (Integer): Length of string to be generated. Defaults to random
|
||||||
|
// integer.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Rand (String): Pseudo-random, alphanumeric string.
|
||||||
|
random_str : function () {
|
||||||
|
if (!this.fidx) this.fidx = 0;
|
||||||
|
this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
|
||||||
|
|
||||||
|
return this.prefix + (this.fidx++).toString(36);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.foundation = function () {
|
||||||
|
var args = Array.prototype.slice.call(arguments, 0);
|
||||||
|
|
||||||
|
return this.each(function () {
|
||||||
|
Foundation.init.apply(Foundation, [this].concat(args));
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,173 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs['magellan-expedition'] = {
|
||||||
|
name : 'magellan-expedition',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class: 'active',
|
||||||
|
threshold: 0, // pixels from the top of the expedition for it to become fixes
|
||||||
|
destination_threshold: 20, // pixels from the top of destination for it to be considered active
|
||||||
|
throttle_delay: 30 // calculation throttling to increase framerate
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle');
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = self.S,
|
||||||
|
settings = self.settings;
|
||||||
|
|
||||||
|
// initialize expedition offset
|
||||||
|
self.set_expedition_position();
|
||||||
|
|
||||||
|
S(self.scope)
|
||||||
|
.off('.magellan')
|
||||||
|
.on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^="#"]', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var expedition = $(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = expedition.data('magellan-expedition-init');
|
||||||
|
|
||||||
|
var hash = this.hash.split('#').join(''),
|
||||||
|
target = $("a[name='"+hash+"']");
|
||||||
|
if (target.length === 0) target = $('#'+hash);
|
||||||
|
|
||||||
|
// Account for expedition height if fixed position
|
||||||
|
var scroll_top = target.offset().top;
|
||||||
|
scroll_top = scroll_top - expedition.outerHeight();
|
||||||
|
|
||||||
|
$('html, body').stop().animate({
|
||||||
|
'scrollTop': scroll_top
|
||||||
|
}, 700, 'swing', function () {
|
||||||
|
if(history.pushState) {
|
||||||
|
history.pushState(null, null, '#'+hash);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
location.hash = '#'+hash;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay))
|
||||||
|
$(window).on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));
|
||||||
|
},
|
||||||
|
|
||||||
|
check_for_arrivals : function() {
|
||||||
|
var self = this;
|
||||||
|
self.update_arrivals();
|
||||||
|
self.update_expedition_positions();
|
||||||
|
},
|
||||||
|
|
||||||
|
set_expedition_position : function() {
|
||||||
|
var self = this;
|
||||||
|
$('[' + this.attr_name() + '=fixed]', self.scope).each(function(idx, el) {
|
||||||
|
var expedition = $(this),
|
||||||
|
styles = expedition.attr('styles'), // save styles
|
||||||
|
top_offset;
|
||||||
|
|
||||||
|
expedition.attr('style', '');
|
||||||
|
top_offset = expedition.offset().top;
|
||||||
|
|
||||||
|
expedition.data(self.data_attr('magellan-top-offset'), top_offset);
|
||||||
|
expedition.attr('style', styles);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_expedition_positions : function() {
|
||||||
|
var self = this,
|
||||||
|
window_top_offset = $(window).scrollTop();
|
||||||
|
|
||||||
|
$('[' + this.attr_name() + '=fixed]', self.scope).each(function() {
|
||||||
|
var expedition = $(this),
|
||||||
|
top_offset = expedition.data('magellan-top-offset');
|
||||||
|
|
||||||
|
if (window_top_offset >= top_offset) {
|
||||||
|
// Placeholder allows height calculations to be consistent even when
|
||||||
|
// appearing to switch between fixed/non-fixed placement
|
||||||
|
var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
|
||||||
|
if (placeholder.length === 0) {
|
||||||
|
placeholder = expedition.clone();
|
||||||
|
placeholder.removeAttr(self.attr_name());
|
||||||
|
placeholder.attr(self.add_namespace('data-magellan-expedition-clone'),'');
|
||||||
|
expedition.before(placeholder);
|
||||||
|
}
|
||||||
|
expedition.css({position:'fixed', top: 0});
|
||||||
|
} else {
|
||||||
|
expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
|
||||||
|
expedition.attr('style','');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_arrivals : function() {
|
||||||
|
var self = this,
|
||||||
|
window_top_offset = $(window).scrollTop();
|
||||||
|
|
||||||
|
$('[' + this.attr_name() + ']', self.scope).each(function() {
|
||||||
|
var expedition = $(this),
|
||||||
|
settings = settings = expedition.data(self.attr_name(true) + '-init'),
|
||||||
|
offsets = self.offsets(expedition, window_top_offset),
|
||||||
|
arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
|
||||||
|
active_item = false;
|
||||||
|
offsets.each(function(idx, item) {
|
||||||
|
if (item.viewport_offset >= item.top_offset) {
|
||||||
|
var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
|
||||||
|
arrivals.not(item.arrival).removeClass(settings.active_class);
|
||||||
|
item.arrival.addClass(settings.active_class);
|
||||||
|
active_item = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!active_item) arrivals.removeClass(settings.active_class);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
offsets : function(expedition, window_offset) {
|
||||||
|
var self = this,
|
||||||
|
settings = expedition.data(self.attr_name(true) + '-init'),
|
||||||
|
viewport_offset = window_offset;
|
||||||
|
|
||||||
|
return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function(idx, el) {
|
||||||
|
var name = $(this).data(self.data_attr('magellan-arrival')),
|
||||||
|
dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
|
||||||
|
if (dest.length > 0) {
|
||||||
|
var top_offset = dest.offset().top - settings.destination_threshold - expedition.outerHeight();
|
||||||
|
return {
|
||||||
|
destination : dest,
|
||||||
|
arrival : $(this),
|
||||||
|
top_offset : top_offset,
|
||||||
|
viewport_offset : viewport_offset
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).sort(function(a, b) {
|
||||||
|
if (a.top_offset < b.top_offset) return -1;
|
||||||
|
if (a.top_offset > b.top_offset) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr: function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.magellan');
|
||||||
|
this.S(window).off('.magellan');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
// remove placeholder expeditions used for height calculation purposes
|
||||||
|
$('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,50 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.offcanvas = {
|
||||||
|
name : 'offcanvas',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.events();
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope).off('.offcanvas')
|
||||||
|
.on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
|
||||||
|
self.click_toggle_class(e, 'move-right');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
|
||||||
|
S(".off-canvas-wrap").removeClass("move-right");
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
|
||||||
|
self.click_toggle_class(e, 'move-left');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
|
||||||
|
S(".off-canvas-wrap").removeClass("move-left");
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
|
||||||
|
self.click_remove_class(e, 'move-left');
|
||||||
|
self.click_remove_class(e, 'move-right');
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
click_toggle_class: function(e, class_name) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.S(e.target).closest('.off-canvas-wrap').toggleClass(class_name);
|
||||||
|
},
|
||||||
|
|
||||||
|
click_remove_class: function(e, class_name) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.S('.off-canvas-wrap').removeClass(class_name);
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,606 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var noop = function() {};
|
||||||
|
|
||||||
|
var Orbit = function(el, settings) {
|
||||||
|
// Don't reinitialize plugin
|
||||||
|
if (el.hasClass(settings.slides_container_class)) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this,
|
||||||
|
container,
|
||||||
|
slides_container = el,
|
||||||
|
number_container,
|
||||||
|
bullets_container,
|
||||||
|
timer_container,
|
||||||
|
idx = 0,
|
||||||
|
animate,
|
||||||
|
adjust_height_after = false,
|
||||||
|
has_init_active = slides_container.find("." + settings.active_slide_class).length > 0;
|
||||||
|
|
||||||
|
self.cache = {};
|
||||||
|
|
||||||
|
self.slides = function() {
|
||||||
|
return slides_container.children(settings.slide_selector);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!has_init_active) {self.slides().first().addClass(settings.active_slide_class)};
|
||||||
|
|
||||||
|
self.update_slide_number = function(index) {
|
||||||
|
if (settings.slide_number) {
|
||||||
|
number_container.find('span:first').text(parseInt(index)+1);
|
||||||
|
number_container.find('span:last').text(self.slides().length);
|
||||||
|
}
|
||||||
|
if (settings.bullets) {
|
||||||
|
bullets_container.children().removeClass(settings.bullets_active_class);
|
||||||
|
$(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.update_active_link = function(index) {
|
||||||
|
var link = $('[data-orbit-link="'+self.slides().eq(index).attr('data-orbit-slide')+'"]');
|
||||||
|
link.siblings().removeClass(settings.bullets_active_class);
|
||||||
|
link.addClass(settings.bullets_active_class);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.build_markup = function() {
|
||||||
|
slides_container.wrap('<div class="'+settings.container_class+'"></div>');
|
||||||
|
container = slides_container.parent();
|
||||||
|
slides_container.addClass(settings.slides_container_class);
|
||||||
|
slides_container.addClass(settings.animation);
|
||||||
|
|
||||||
|
if (settings.stack_on_small) {
|
||||||
|
container.addClass(settings.stack_on_small_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.navigation_arrows) {
|
||||||
|
container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
|
||||||
|
container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.timer) {
|
||||||
|
timer_container = $('<div>').addClass(settings.timer_container_class);
|
||||||
|
timer_container.append('<span>');
|
||||||
|
if (settings.timer_show_progress_bar) {
|
||||||
|
timer_container.append($('<div>').addClass(settings.timer_progress_class));
|
||||||
|
}
|
||||||
|
timer_container.addClass(settings.timer_paused_class);
|
||||||
|
container.append(timer_container);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.slide_number) {
|
||||||
|
number_container = $('<div>').addClass(settings.slide_number_class);
|
||||||
|
number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
|
||||||
|
container.append(number_container);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.bullets) {
|
||||||
|
bullets_container = $('<ol>').addClass(settings.bullets_container_class);
|
||||||
|
container.append(bullets_container);
|
||||||
|
bullets_container.wrap('<div class="orbit-bullets-container"></div>');
|
||||||
|
self.slides().each(function(idx, el) {
|
||||||
|
var bullet = $('<li>').attr('data-orbit-slide', idx);
|
||||||
|
bullets_container.append(bullet);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
self._prepare_direction = function(next_idx, current_direction) {
|
||||||
|
var dir = 'next';
|
||||||
|
if (next_idx <= idx) { dir = 'prev'; }
|
||||||
|
|
||||||
|
if (settings.animation === 'slide') {
|
||||||
|
setTimeout(function(){
|
||||||
|
slides_container.removeClass("swipe-prev swipe-next");
|
||||||
|
if (dir === 'next') {slides_container.addClass("swipe-next");}
|
||||||
|
else if (dir === 'prev') {slides_container.addClass("swipe-prev");}
|
||||||
|
},0);
|
||||||
|
}
|
||||||
|
|
||||||
|
var slides = self.slides();
|
||||||
|
if (next_idx >= slides.length) {
|
||||||
|
if (!settings.circular) return false;
|
||||||
|
next_idx = 0;
|
||||||
|
} else if (next_idx < 0) {
|
||||||
|
if (!settings.circular) return false;
|
||||||
|
next_idx = slides.length - 1;
|
||||||
|
}
|
||||||
|
var current = $(slides.get(idx))
|
||||||
|
, next = $(slides.get(next_idx));
|
||||||
|
|
||||||
|
return [dir, current, next, next_idx];
|
||||||
|
};
|
||||||
|
|
||||||
|
self._goto = function(next_idx, start_timer) {
|
||||||
|
if (next_idx === null) {return false;}
|
||||||
|
if (self.cache.animating) {return false;}
|
||||||
|
if (next_idx === idx) {return false;}
|
||||||
|
if (typeof self.cache.timer === 'object') {self.cache.timer.restart();}
|
||||||
|
|
||||||
|
var slides = self.slides();
|
||||||
|
self.cache.animating = true;
|
||||||
|
var res = self._prepare_direction(next_idx)
|
||||||
|
, dir = res[0]
|
||||||
|
, current = res[1]
|
||||||
|
, next = res[2]
|
||||||
|
, next_idx = res[3];
|
||||||
|
|
||||||
|
// This means that circular is disabled and we most likely reached the last slide.
|
||||||
|
if (res === false) return false;
|
||||||
|
|
||||||
|
slides_container.trigger('before-slide-change.fndtn.orbit');
|
||||||
|
settings.before_slide_change();
|
||||||
|
idx = next_idx;
|
||||||
|
|
||||||
|
current.css("transitionDuration", settings.animation_speed+"ms");
|
||||||
|
next.css("transitionDuration", settings.animation_speed+"ms");
|
||||||
|
|
||||||
|
var callback = function() {
|
||||||
|
var unlock = function() {
|
||||||
|
if (start_timer === true) {self.cache.timer.restart();}
|
||||||
|
self.update_slide_number(idx);
|
||||||
|
next.addClass(settings.active_slide_class);
|
||||||
|
self.update_active_link(next_idx);
|
||||||
|
slides_container.trigger('after-slide-change.fndtn.orbit',[{slide_number: idx, total_slides: slides.length}]);
|
||||||
|
settings.after_slide_change(idx, slides.length);
|
||||||
|
setTimeout(function(){
|
||||||
|
self.cache.animating = false;
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
};
|
||||||
|
if (slides_container.height() != next.height() && settings.variable_height) {
|
||||||
|
slides_container.animate({'height': next.height()}, 250, 'linear', unlock);
|
||||||
|
} else {
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (slides.length === 1) {callback(); return false;}
|
||||||
|
|
||||||
|
var start_animation = function() {
|
||||||
|
if (dir === 'next') {animate.next(current, next, callback);}
|
||||||
|
if (dir === 'prev') {animate.prev(current, next, callback);}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (next.height() > slides_container.height() && settings.variable_height) {
|
||||||
|
slides_container.animate({'height': next.height()}, 250, 'linear', start_animation);
|
||||||
|
} else {
|
||||||
|
start_animation();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.next = function(e) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
self._prepare_direction(idx + 1);
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(idx + 1);
|
||||||
|
}, 100);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.prev = function(e) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
self._prepare_direction(idx - 1);
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(idx - 1)
|
||||||
|
}, 100);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.link_custom = function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var link = $(this).attr('data-orbit-link');
|
||||||
|
if ((typeof link === 'string') && (link = $.trim(link)) != "") {
|
||||||
|
var slide = container.find('[data-orbit-slide='+link+']');
|
||||||
|
if (slide.index() != -1) {
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(slide.index());
|
||||||
|
},100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.link_bullet = function(e) {
|
||||||
|
var index = $(this).attr('data-orbit-slide');
|
||||||
|
if ((typeof index === 'string') && (index = $.trim(index)) != "") {
|
||||||
|
if(isNaN(parseInt(index)))
|
||||||
|
{
|
||||||
|
var slide = container.find('[data-orbit-slide='+index+']');
|
||||||
|
if (slide.index() != -1) {
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(slide.index() + 1);
|
||||||
|
},100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(parseInt(index));
|
||||||
|
},100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
self.timer_callback = function() {
|
||||||
|
self._goto(idx + 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.compute_dimensions = function() {
|
||||||
|
var current = $(self.slides().get(idx));
|
||||||
|
var h = current.height();
|
||||||
|
if (!settings.variable_height) {
|
||||||
|
self.slides().each(function(){
|
||||||
|
if ($(this).height() > h) { h = $(this).height(); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
slides_container.height(h);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.create_timer = function() {
|
||||||
|
var t = new Timer(
|
||||||
|
container.find('.'+settings.timer_container_class),
|
||||||
|
settings,
|
||||||
|
self.timer_callback
|
||||||
|
);
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
|
||||||
|
self.stop_timer = function() {
|
||||||
|
if (typeof self.cache.timer === 'object') self.cache.timer.stop();
|
||||||
|
};
|
||||||
|
|
||||||
|
self.toggle_timer = function() {
|
||||||
|
var t = container.find('.'+settings.timer_container_class);
|
||||||
|
if (t.hasClass(settings.timer_paused_class)) {
|
||||||
|
if (typeof self.cache.timer === 'undefined') {self.cache.timer = self.create_timer();}
|
||||||
|
self.cache.timer.start();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (typeof self.cache.timer === 'object') {self.cache.timer.stop();}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.init = function() {
|
||||||
|
self.build_markup();
|
||||||
|
if (settings.timer) {
|
||||||
|
self.cache.timer = self.create_timer();
|
||||||
|
Foundation.utils.image_loaded(this.slides().children('img'), self.cache.timer.start);
|
||||||
|
}
|
||||||
|
|
||||||
|
animate = new CSSAnimation(settings, slides_container);
|
||||||
|
|
||||||
|
if (has_init_active) {
|
||||||
|
var $init_target = slides_container.find("." + settings.active_slide_class),
|
||||||
|
animation_speed = settings.animation_speed;
|
||||||
|
settings.animation_speed = 1;
|
||||||
|
$init_target.removeClass('active');
|
||||||
|
self._goto($init_target.index());
|
||||||
|
settings.animation_speed = animation_speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
container.on('click', '.'+settings.next_class, self.next);
|
||||||
|
container.on('click', '.'+settings.prev_class, self.prev);
|
||||||
|
|
||||||
|
if (settings.next_on_click) {
|
||||||
|
container.on('click', '[data-orbit-slide]', self.link_bullet);
|
||||||
|
}
|
||||||
|
|
||||||
|
container.on('click', self.toggle_timer);
|
||||||
|
if (settings.swipe) {
|
||||||
|
slides_container.on('touchstart.fndtn.orbit',function(e) {
|
||||||
|
if (self.cache.animating) {return;}
|
||||||
|
if (!e.touches) {e = e.originalEvent;}
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
self.cache.start_page_x = e.touches[0].pageX;
|
||||||
|
self.cache.start_page_y = e.touches[0].pageY;
|
||||||
|
self.cache.start_time = (new Date()).getTime();
|
||||||
|
self.cache.delta_x = 0;
|
||||||
|
self.cache.is_scrolling = null;
|
||||||
|
self.cache.direction = null;
|
||||||
|
|
||||||
|
self.stop_timer(); // does not appear to prevent callback from occurring
|
||||||
|
})
|
||||||
|
.on('touchmove.fndtn.orbit',function(e) {
|
||||||
|
if (Math.abs(self.cache.delta_x) > 5) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.cache.animating) {return;}
|
||||||
|
requestAnimationFrame(function(){
|
||||||
|
if (!e.touches) { e = e.originalEvent; }
|
||||||
|
|
||||||
|
// Ignore pinch/zoom events
|
||||||
|
if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
|
||||||
|
|
||||||
|
self.cache.delta_x = e.touches[0].pageX - self.cache.start_page_x;
|
||||||
|
|
||||||
|
if (self.cache.is_scrolling === null) {
|
||||||
|
self.cache.is_scrolling = !!( self.cache.is_scrolling || Math.abs(self.cache.delta_x) < Math.abs(e.touches[0].pageY - self.cache.start_page_y) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.cache.is_scrolling) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var direction = (self.cache.delta_x < 0) ? (idx+1) : (idx-1);
|
||||||
|
if (self.cache.direction !== direction) {
|
||||||
|
var res = self._prepare_direction(direction);
|
||||||
|
self.cache.direction = direction;
|
||||||
|
self.cache.dir = res[0];
|
||||||
|
self.cache.current = res[1];
|
||||||
|
self.cache.next = res[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.animation === 'slide') {
|
||||||
|
var offset, next_offset;
|
||||||
|
|
||||||
|
offset = (self.cache.delta_x / container.width()) * 100;
|
||||||
|
if (offset >= 0) {next_offset = -(100 - offset);}
|
||||||
|
else {next_offset = 100 + offset;}
|
||||||
|
|
||||||
|
self.cache.current.css("transform","translate3d("+offset+"%,0,0)");
|
||||||
|
self.cache.next.css("transform","translate3d("+next_offset+"%,0,0)");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.on('touchend.fndtn.orbit', function(e) {
|
||||||
|
if (self.cache.animating) {return;}
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
setTimeout(function(){
|
||||||
|
self._goto(self.cache.direction);
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
container.on('mouseenter.fndtn.orbit', function(e) {
|
||||||
|
if (settings.timer && settings.pause_on_hover) {
|
||||||
|
self.stop_timer();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.orbit', function(e) {
|
||||||
|
if (settings.timer && settings.resume_on_mouseout) {
|
||||||
|
self.cache.timer.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '[data-orbit-link]', self.link_custom);
|
||||||
|
$(window).on('load resize', self.compute_dimensions);
|
||||||
|
var children = this.slides().find('img');
|
||||||
|
Foundation.utils.image_loaded(children, self.compute_dimensions);
|
||||||
|
Foundation.utils.image_loaded(children, function() {
|
||||||
|
container.prev('.'+settings.preloader_class).css('display', 'none');
|
||||||
|
self.update_slide_number(idx);
|
||||||
|
self.update_active_link(idx);
|
||||||
|
slides_container.trigger('ready.fndtn.orbit');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
var Timer = function(el, settings, callback) {
|
||||||
|
var self = this,
|
||||||
|
duration = settings.timer_speed,
|
||||||
|
progress = el.find('.'+settings.timer_progress_class),
|
||||||
|
do_progress = progress && progress.css('display') != 'none',
|
||||||
|
start,
|
||||||
|
timeout,
|
||||||
|
left = -1;
|
||||||
|
|
||||||
|
this.update_progress = function(w) {
|
||||||
|
var new_progress = progress.clone();
|
||||||
|
new_progress.attr('style', '');
|
||||||
|
new_progress.css('width', w+'%');
|
||||||
|
progress.replaceWith(new_progress);
|
||||||
|
progress = new_progress;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.restart = function() {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
el.addClass(settings.timer_paused_class);
|
||||||
|
left = -1;
|
||||||
|
if (do_progress) {self.update_progress(0);}
|
||||||
|
self.start();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.start = function() {
|
||||||
|
if (!el.hasClass(settings.timer_paused_class)) {return true;}
|
||||||
|
left = (left === -1) ? duration : left;
|
||||||
|
el.removeClass(settings.timer_paused_class);
|
||||||
|
if (do_progress) {
|
||||||
|
start = new Date().getTime();
|
||||||
|
progress.animate({'width': '100%'}, left, 'linear');
|
||||||
|
}
|
||||||
|
timeout = setTimeout(function() {
|
||||||
|
self.restart();
|
||||||
|
callback();
|
||||||
|
}, left);
|
||||||
|
el.trigger('timer-started.fndtn.orbit')
|
||||||
|
};
|
||||||
|
|
||||||
|
this.stop = function() {
|
||||||
|
if (el.hasClass(settings.timer_paused_class)) {return true;}
|
||||||
|
clearTimeout(timeout);
|
||||||
|
el.addClass(settings.timer_paused_class);
|
||||||
|
if (do_progress) {
|
||||||
|
var end = new Date().getTime();
|
||||||
|
left = left - (end - start);
|
||||||
|
var w = 100 - ((left / duration) * 100);
|
||||||
|
self.update_progress(w);
|
||||||
|
}
|
||||||
|
el.trigger('timer-stopped.fndtn.orbit');
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var CSSAnimation = function(settings, container) {
|
||||||
|
var animation_end = "webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend";
|
||||||
|
|
||||||
|
this.next = function(current, next, callback) {
|
||||||
|
if (Modernizr.csstransitions) {
|
||||||
|
next.on(animation_end, function(e){
|
||||||
|
next.unbind(animation_end);
|
||||||
|
current.removeClass("active animate-out");
|
||||||
|
next.removeClass("animate-in");
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setTimeout(function(){
|
||||||
|
current.removeClass("active animate-out");
|
||||||
|
next.removeClass("animate-in");
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
callback();
|
||||||
|
}, settings.animation_speed);
|
||||||
|
}
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
current.addClass("animate-out");
|
||||||
|
next.addClass("animate-in");
|
||||||
|
};
|
||||||
|
|
||||||
|
this.prev = function(current, prev, callback) {
|
||||||
|
if (Modernizr.csstransitions) {
|
||||||
|
prev.on(animation_end, function(e){
|
||||||
|
prev.unbind(animation_end);
|
||||||
|
current.removeClass("active animate-out");
|
||||||
|
prev.removeClass("animate-in");
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setTimeout(function(){
|
||||||
|
current.removeClass("active animate-out");
|
||||||
|
prev.removeClass("animate-in");
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
callback();
|
||||||
|
}, settings.animation_speed);
|
||||||
|
}
|
||||||
|
container.children().css({
|
||||||
|
"transform":"",
|
||||||
|
"-ms-transform":"",
|
||||||
|
"-webkit-transition-duration":"",
|
||||||
|
"-moz-transition-duration": "",
|
||||||
|
"-o-transition-duration": "",
|
||||||
|
"transition-duration":""
|
||||||
|
});
|
||||||
|
current.addClass("animate-out");
|
||||||
|
prev.addClass("animate-in");
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Foundation.libs = Foundation.libs || {};
|
||||||
|
|
||||||
|
Foundation.libs.orbit = {
|
||||||
|
name: 'orbit',
|
||||||
|
|
||||||
|
version: '5.2.2',
|
||||||
|
|
||||||
|
settings: {
|
||||||
|
animation: 'slide',
|
||||||
|
timer_speed: 10000,
|
||||||
|
pause_on_hover: true,
|
||||||
|
resume_on_mouseout: false,
|
||||||
|
next_on_click: true,
|
||||||
|
animation_speed: 500,
|
||||||
|
stack_on_small: false,
|
||||||
|
navigation_arrows: true,
|
||||||
|
slide_number: true,
|
||||||
|
slide_number_text: 'of',
|
||||||
|
container_class: 'orbit-container',
|
||||||
|
stack_on_small_class: 'orbit-stack-on-small',
|
||||||
|
next_class: 'orbit-next',
|
||||||
|
prev_class: 'orbit-prev',
|
||||||
|
timer_container_class: 'orbit-timer',
|
||||||
|
timer_paused_class: 'paused',
|
||||||
|
timer_progress_class: 'orbit-progress',
|
||||||
|
timer_show_progress_bar: true,
|
||||||
|
slides_container_class: 'orbit-slides-container',
|
||||||
|
preloader_class: 'preloader',
|
||||||
|
slide_selector: '*',
|
||||||
|
bullets_container_class: 'orbit-bullets',
|
||||||
|
bullets_active_class: 'active',
|
||||||
|
slide_number_class: 'orbit-slide-number',
|
||||||
|
caption_class: 'orbit-caption',
|
||||||
|
active_slide_class: 'active',
|
||||||
|
orbit_transition_class: 'orbit-transitioning',
|
||||||
|
bullets: true,
|
||||||
|
circular: true,
|
||||||
|
timer: true,
|
||||||
|
variable_height: false,
|
||||||
|
swipe: true,
|
||||||
|
before_slide_change: noop,
|
||||||
|
after_slide_change: noop
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this;
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (instance) {
|
||||||
|
var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
|
||||||
|
this.S(instance).data(self.name + '-instance', orbit_instance);
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
if (self.S(self.scope).is('[data-orbit]')) {
|
||||||
|
var $el = self.S(self.scope);
|
||||||
|
var instance = $el.data(self.name + '-instance');
|
||||||
|
instance.compute_dimensions();
|
||||||
|
} else {
|
||||||
|
self.S('[data-orbit]', self.scope).each(function(idx, el) {
|
||||||
|
var $el = self.S(el);
|
||||||
|
var opts = self.data_options($el);
|
||||||
|
var instance = $el.data(self.name + '-instance');
|
||||||
|
instance.compute_dimensions();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,427 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.reveal = {
|
||||||
|
name : 'reveal',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
locked : false,
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
animation: 'fadeAndPop',
|
||||||
|
animation_speed: 250,
|
||||||
|
close_on_background_click: true,
|
||||||
|
close_on_esc: true,
|
||||||
|
dismiss_modal_class: 'close-reveal-modal',
|
||||||
|
bg_class: 'reveal-modal-bg',
|
||||||
|
open: function(){},
|
||||||
|
opened: function(){},
|
||||||
|
close: function(){},
|
||||||
|
closed: function(){},
|
||||||
|
bg : $('.reveal-modal-bg'),
|
||||||
|
css : {
|
||||||
|
open : {
|
||||||
|
'opacity': 0,
|
||||||
|
'visibility': 'visible',
|
||||||
|
'display' : 'block'
|
||||||
|
},
|
||||||
|
close : {
|
||||||
|
'opacity': 1,
|
||||||
|
'visibility': 'hidden',
|
||||||
|
'display': 'none'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
$.extend(true, this.settings, method, options);
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.reveal')
|
||||||
|
.on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!self.locked) {
|
||||||
|
var element = S(this),
|
||||||
|
ajax = element.data(self.data_attr('reveal-ajax'));
|
||||||
|
|
||||||
|
self.locked = true;
|
||||||
|
|
||||||
|
if (typeof ajax === 'undefined') {
|
||||||
|
self.open.call(self, element);
|
||||||
|
} else {
|
||||||
|
var url = ajax === true ? element.attr('href') : ajax;
|
||||||
|
|
||||||
|
self.open.call(self, element, {url: url});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
S(document)
|
||||||
|
.on('touchend.fndtn.reveal click.fndtn.reveal', this.close_targets(), function (e) {
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!self.locked) {
|
||||||
|
var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init'),
|
||||||
|
bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
|
||||||
|
|
||||||
|
if (bg_clicked) {
|
||||||
|
if (settings.close_on_background_click) {
|
||||||
|
e.stopPropagation();
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.locked = true;
|
||||||
|
self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(S('[' + self.attr_name() + ']', this.scope).length > 0) {
|
||||||
|
S(this.scope)
|
||||||
|
// .off('.reveal')
|
||||||
|
.on('open.fndtn.reveal', this.settings.open)
|
||||||
|
.on('opened.fndtn.reveal', this.settings.opened)
|
||||||
|
.on('opened.fndtn.reveal', this.open_video)
|
||||||
|
.on('close.fndtn.reveal', this.settings.close)
|
||||||
|
.on('closed.fndtn.reveal', this.settings.closed)
|
||||||
|
.on('closed.fndtn.reveal', this.close_video);
|
||||||
|
} else {
|
||||||
|
S(this.scope)
|
||||||
|
// .off('.reveal')
|
||||||
|
.on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
|
||||||
|
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
|
||||||
|
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
|
||||||
|
.on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
|
||||||
|
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
|
||||||
|
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
key_up_on : function (scope) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
// PATCH #1: fixing multiple keyup event trigger from single key press
|
||||||
|
self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
|
||||||
|
var open_modal = self.S('[' + self.attr_name() + '].open'),
|
||||||
|
settings = open_modal.data(self.attr_name(true) + '-init');
|
||||||
|
// PATCH #2: making sure that the close event can be called only while unlocked,
|
||||||
|
// so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
|
||||||
|
if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
|
||||||
|
self.close.call(self, open_modal);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
key_up_off : function (scope) {
|
||||||
|
this.S('body').off('keyup.fndtn.reveal');
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
open : function (target, ajax_settings) {
|
||||||
|
var self = this;
|
||||||
|
if (target) {
|
||||||
|
if (typeof target.selector !== 'undefined') {
|
||||||
|
var modal = self.S('#' + target.data(self.data_attr('reveal-id')));
|
||||||
|
} else {
|
||||||
|
var modal = self.S(this.scope);
|
||||||
|
|
||||||
|
ajax_settings = target;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var modal = self.S(this.scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = modal.data(self.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
if (!modal.hasClass('open')) {
|
||||||
|
var open_modal = self.S('[' + self.attr_name() + '].open');
|
||||||
|
|
||||||
|
if (typeof modal.data('css-top') === 'undefined') {
|
||||||
|
modal.data('css-top', parseInt(modal.css('top'), 10))
|
||||||
|
.data('offset', this.cache_offset(modal));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
modal.trigger('open');
|
||||||
|
|
||||||
|
if (open_modal.length < 1) {
|
||||||
|
this.toggle_bg(modal);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof ajax_settings === 'string') {
|
||||||
|
ajax_settings = {
|
||||||
|
url: ajax_settings
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
|
||||||
|
if (open_modal.length > 0) {
|
||||||
|
this.hide(open_modal, settings.css.close);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.show(modal, settings.css.open);
|
||||||
|
} else {
|
||||||
|
var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
|
||||||
|
|
||||||
|
$.extend(ajax_settings, {
|
||||||
|
success: function (data, textStatus, jqXHR) {
|
||||||
|
if ( $.isFunction(old_success) ) {
|
||||||
|
old_success(data, textStatus, jqXHR);
|
||||||
|
}
|
||||||
|
|
||||||
|
modal.html(data);
|
||||||
|
self.S(modal).foundation('section', 'reflow');
|
||||||
|
|
||||||
|
if (open_modal.length > 0) {
|
||||||
|
self.hide(open_modal, settings.css.close);
|
||||||
|
}
|
||||||
|
self.show(modal, settings.css.open);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax(ajax_settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close : function (modal) {
|
||||||
|
var modal = modal && modal.length ? modal : this.S(this.scope),
|
||||||
|
open_modals = this.S('[' + this.attr_name() + '].open'),
|
||||||
|
settings = modal.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
if (open_modals.length > 0) {
|
||||||
|
this.locked = true;
|
||||||
|
this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
modal.trigger('close');
|
||||||
|
this.toggle_bg(modal);
|
||||||
|
this.hide(open_modals, settings.css.close, settings);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close_targets : function () {
|
||||||
|
var base = '.' + this.settings.dismiss_modal_class;
|
||||||
|
|
||||||
|
if (this.settings.close_on_background_click) {
|
||||||
|
return base + ', .' + this.settings.bg_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle_bg : function (modal) {
|
||||||
|
var settings = modal.data(this.attr_name(true));
|
||||||
|
|
||||||
|
if (this.S('.' + this.settings.bg_class).length === 0) {
|
||||||
|
this.settings.bg = $('<div />', {'class': this.settings.bg_class})
|
||||||
|
.appendTo('body').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.bg.filter(':visible').length > 0) {
|
||||||
|
this.hide(this.settings.bg);
|
||||||
|
} else {
|
||||||
|
this.show(this.settings.bg);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function (el, css) {
|
||||||
|
// is modal
|
||||||
|
if (css) {
|
||||||
|
var settings = el.data(this.attr_name(true) + '-init');
|
||||||
|
if (el.parent('body').length === 0) {
|
||||||
|
var placeholder = el.wrap('<div style="display: none;" />').parent(),
|
||||||
|
rootElement = this.settings.rootElement || 'body';
|
||||||
|
|
||||||
|
el.on('closed.fndtn.reveal.wrapped', function() {
|
||||||
|
el.detach().appendTo(placeholder);
|
||||||
|
el.unwrap().unbind('closed.fndtn.reveal.wrapped');
|
||||||
|
});
|
||||||
|
|
||||||
|
el.detach().appendTo(rootElement);
|
||||||
|
}
|
||||||
|
|
||||||
|
var animData = getAnimationData(settings.animation);
|
||||||
|
if (!animData.animate) {
|
||||||
|
this.locked = false;
|
||||||
|
}
|
||||||
|
if (animData.pop) {
|
||||||
|
css.top = $(window).scrollTop() - el.data('offset') + 'px';
|
||||||
|
var end_css = {
|
||||||
|
top: $(window).scrollTop() + el.data('css-top') + 'px',
|
||||||
|
opacity: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.css(css)
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.trigger('opened');
|
||||||
|
}.bind(this))
|
||||||
|
.addClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animData.fade) {
|
||||||
|
css.top = $(window).scrollTop() + el.data('css-top') + 'px';
|
||||||
|
var end_css = {opacity: 1};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.css(css)
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.trigger('opened');
|
||||||
|
}.bind(this))
|
||||||
|
.addClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = this.settings;
|
||||||
|
|
||||||
|
// should we animate the background?
|
||||||
|
if (getAnimationData(settings.animation).fade) {
|
||||||
|
return el.fadeIn(settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.locked = false;
|
||||||
|
|
||||||
|
return el.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function (el, css) {
|
||||||
|
// is modal
|
||||||
|
if (css) {
|
||||||
|
var settings = el.data(this.attr_name(true) + '-init');
|
||||||
|
var animData = getAnimationData(settings.animation);
|
||||||
|
if (!animData.animate) {
|
||||||
|
this.locked = false;
|
||||||
|
}
|
||||||
|
if (animData.pop) {
|
||||||
|
var end_css = {
|
||||||
|
top: - $(window).scrollTop() - el.data('offset') + 'px',
|
||||||
|
opacity: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.css(css).trigger('closed');
|
||||||
|
}.bind(this))
|
||||||
|
.removeClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animData.fade) {
|
||||||
|
var end_css = {opacity: 0};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.css(css).trigger('closed');
|
||||||
|
}.bind(this))
|
||||||
|
.removeClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.hide().css(css).removeClass('open').trigger('closed');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = this.settings;
|
||||||
|
|
||||||
|
// should we animate the background?
|
||||||
|
if (getAnimationData(settings.animation).fade) {
|
||||||
|
return el.fadeOut(settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
close_video : function (e) {
|
||||||
|
var video = $('.flex-video', e.target),
|
||||||
|
iframe = $('iframe', video);
|
||||||
|
|
||||||
|
if (iframe.length > 0) {
|
||||||
|
iframe.attr('data-src', iframe[0].src);
|
||||||
|
iframe.attr('src', 'about:blank');
|
||||||
|
video.hide();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
open_video : function (e) {
|
||||||
|
var video = $('.flex-video', e.target),
|
||||||
|
iframe = video.find('iframe');
|
||||||
|
|
||||||
|
if (iframe.length > 0) {
|
||||||
|
var data_src = iframe.attr('data-src');
|
||||||
|
if (typeof data_src === 'string') {
|
||||||
|
iframe[0].src = iframe.attr('data-src');
|
||||||
|
} else {
|
||||||
|
var src = iframe[0].src;
|
||||||
|
iframe[0].src = undefined;
|
||||||
|
iframe[0].src = src;
|
||||||
|
}
|
||||||
|
video.show();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr: function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
cache_offset : function (modal) {
|
||||||
|
var offset = modal.show().height() + parseInt(modal.css('top'), 10);
|
||||||
|
|
||||||
|
modal.hide();
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
$(this.scope).off('.fndtn.reveal');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}
|
||||||
|
* getAnimationData('fade') // {animate: true, pop: false, fade: true}
|
||||||
|
* getAnimationData('pop') // {animate: true, pop: true, fade: false}
|
||||||
|
* getAnimationData('foo') // {animate: false, pop: false, fade: false}
|
||||||
|
* getAnimationData(null) // {animate: false, pop: false, fade: false}
|
||||||
|
*/
|
||||||
|
function getAnimationData(str) {
|
||||||
|
var fade = /fade/i.test(str);
|
||||||
|
var pop = /pop/i.test(str);
|
||||||
|
return {
|
||||||
|
animate: fade || pop,
|
||||||
|
pop: pop,
|
||||||
|
fade: fade
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,200 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.slider = {
|
||||||
|
name : 'slider',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings: {
|
||||||
|
start: 0,
|
||||||
|
end: 100,
|
||||||
|
step: 1,
|
||||||
|
initial: null,
|
||||||
|
display_selector: '',
|
||||||
|
on_change: function(){}
|
||||||
|
},
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this,'throttle');
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function() {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.slider')
|
||||||
|
.on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
|
||||||
|
'[' + self.attr_name() + '] .range-slider-handle', function(e) {
|
||||||
|
if (!self.cache.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.set_active_slider($(e.target));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function(e) {
|
||||||
|
if (!!self.cache.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.calculate_position(self.cache.active, e.pageX || e.originalEvent.clientX || e.originalEvent.touches[0].clientX || e.currentPoint.x);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function(e) {
|
||||||
|
self.remove_active_slider();
|
||||||
|
})
|
||||||
|
.on('change.fndtn.slider', function(e) {
|
||||||
|
self.settings.on_change();
|
||||||
|
});
|
||||||
|
|
||||||
|
self.S(window)
|
||||||
|
.on('resize.fndtn.slider', self.throttle(function(e) {
|
||||||
|
self.reflow();
|
||||||
|
}, 300));
|
||||||
|
},
|
||||||
|
|
||||||
|
set_active_slider : function($handle) {
|
||||||
|
this.cache.active = $handle;
|
||||||
|
},
|
||||||
|
|
||||||
|
remove_active_slider : function() {
|
||||||
|
this.cache.active = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
calculate_position : function($handle, cursor_x) {
|
||||||
|
var self = this,
|
||||||
|
settings = $.extend({}, self.settings, self.data_options($handle.parent())),
|
||||||
|
handle_w = $.data($handle[0], 'handle_w'),
|
||||||
|
handle_o = $.data($handle[0], 'handle_o'),
|
||||||
|
bar_w = $.data($handle[0], 'bar_w'),
|
||||||
|
bar_o = $.data($handle[0], 'bar_o');
|
||||||
|
|
||||||
|
requestAnimationFrame(function(){
|
||||||
|
var pct;
|
||||||
|
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
pct = self.limit_to(((bar_o+bar_w-cursor_x)/bar_w),0,1);
|
||||||
|
} else {
|
||||||
|
pct = self.limit_to(((cursor_x-bar_o)/bar_w),0,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var norm = self.normalized_value(pct, settings.start, settings.end, settings.step);
|
||||||
|
|
||||||
|
self.set_ui($handle, norm);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
set_ui : function($handle, value) {
|
||||||
|
var settings = $.extend({}, this.settings, this.data_options($handle.parent())),
|
||||||
|
handle_w = $.data($handle[0], 'handle_w'),
|
||||||
|
bar_w = $.data($handle[0], 'bar_w'),
|
||||||
|
norm_pct = this.normalized_percentage(value, settings.start, settings.end),
|
||||||
|
handle_offset = norm_pct*(bar_w-handle_w)-1,
|
||||||
|
progress_bar_width = norm_pct*100;
|
||||||
|
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
handle_offset = -handle_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.set_translate($handle, handle_offset);
|
||||||
|
$handle.siblings('.range-slider-active-segment').css('width', progress_bar_width+'%');
|
||||||
|
|
||||||
|
$handle.parent().attr(this.attr_name(), value);
|
||||||
|
$handle.parent().trigger('change');
|
||||||
|
|
||||||
|
$handle.parent().children('input[type=hidden]').val(value);
|
||||||
|
|
||||||
|
if (settings.input_id != '') {
|
||||||
|
$(settings.display_selector).each(function(){
|
||||||
|
if (this.hasOwnProperty('value')) {
|
||||||
|
$(this).val(value);
|
||||||
|
} else {
|
||||||
|
$(this).text(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
normalized_percentage : function(val, start, end) {
|
||||||
|
return (val - start)/(end - start);
|
||||||
|
},
|
||||||
|
|
||||||
|
normalized_value : function(val, start, end, step) {
|
||||||
|
var range = end - start,
|
||||||
|
step = step,
|
||||||
|
point = val*range,
|
||||||
|
mod = (point-(point%step)) / step,
|
||||||
|
rem = point % step,
|
||||||
|
round = ( rem >= step*0.5 ? step : 0);
|
||||||
|
return (mod*step + round) + start;
|
||||||
|
},
|
||||||
|
|
||||||
|
set_translate : function(ele, offset, vertical) {
|
||||||
|
if (vertical) {
|
||||||
|
$(ele)
|
||||||
|
.css('-webkit-transform', 'translateY('+offset+'px)')
|
||||||
|
.css('-moz-transform', 'translateY('+offset+'px)')
|
||||||
|
.css('-ms-transform', 'translateY('+offset+'px)')
|
||||||
|
.css('-o-transform', 'translateY('+offset+'px)')
|
||||||
|
.css('transform', 'translateY('+offset+'px)');
|
||||||
|
} else {
|
||||||
|
$(ele)
|
||||||
|
.css('-webkit-transform', 'translateX('+offset+'px)')
|
||||||
|
.css('-moz-transform', 'translateX('+offset+'px)')
|
||||||
|
.css('-ms-transform', 'translateX('+offset+'px)')
|
||||||
|
.css('-o-transform', 'translateX('+offset+'px)')
|
||||||
|
.css('transform', 'translateX('+offset+'px)');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
limit_to : function(val, min, max) {
|
||||||
|
return Math.min(Math.max(val, min), max);
|
||||||
|
},
|
||||||
|
|
||||||
|
initialize_settings : function(handle) {
|
||||||
|
$.data(handle, 'bar', $(handle).parent());
|
||||||
|
$.data(handle, 'bar_o', $(handle).parent().offset().left);
|
||||||
|
$.data(handle, 'bar_w', $(handle).parent().outerWidth());
|
||||||
|
$.data(handle, 'handle_o', $(handle).offset().left);
|
||||||
|
$.data(handle, 'handle_w', $(handle).outerWidth());
|
||||||
|
$.data(handle, 'settings', $.extend({}, this.settings, this.data_options($(handle).parent())));
|
||||||
|
},
|
||||||
|
|
||||||
|
set_initial_position : function($ele) {
|
||||||
|
var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
|
||||||
|
initial = (!!settings.initial ? settings.initial : Math.floor((settings.end-settings.start)*0.5/settings.step)*settings.step+settings.start),
|
||||||
|
$handle = $ele.children('.range-slider-handle');
|
||||||
|
this.set_ui($handle, initial);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_value : function(value) {
|
||||||
|
var self = this;
|
||||||
|
$('[' + self.attr_name() + ']', this.scope).each(function(){
|
||||||
|
$(this).attr(self.attr_name(), value);
|
||||||
|
});
|
||||||
|
if (!!$(this.scope).attr(self.attr_name())) {
|
||||||
|
$(this.scope).attr(self.attr_name(), value);
|
||||||
|
}
|
||||||
|
self.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function() {
|
||||||
|
var self = this;
|
||||||
|
self.S('[' + this.attr_name() + ']').each(function() {
|
||||||
|
var handle = $(this).children('.range-slider-handle')[0],
|
||||||
|
val = $(this).attr(self.attr_name());
|
||||||
|
self.initialize_settings(handle);
|
||||||
|
|
||||||
|
if (val) {
|
||||||
|
self.set_ui($(handle), parseFloat(val));
|
||||||
|
} else {
|
||||||
|
self.set_initial_position($(this));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,168 @@
|
|||||||
|
/*jslint unparam: true, browser: true, indent: 2 */
|
||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.tab = {
|
||||||
|
name : 'tab',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class: 'active',
|
||||||
|
callback : function () {},
|
||||||
|
deep_linking: false,
|
||||||
|
scroll_to_content: true,
|
||||||
|
is_hover: false
|
||||||
|
},
|
||||||
|
|
||||||
|
default_tab_hashes: [],
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.handle_location_hash_change();
|
||||||
|
|
||||||
|
// Store the default active tabs which will be referenced when the
|
||||||
|
// location hash is absent, as in the case of navigating the tabs and
|
||||||
|
// returning to the first viewing via the browser Back button.
|
||||||
|
S('[' + this.attr_name() + '] > dd.active > a', this.scope).each(function () {
|
||||||
|
self.default_tab_hashes.push(this.hash);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.tab')
|
||||||
|
// Click event: tab title
|
||||||
|
.on('click.fndtn.tab', '[' + this.attr_name() + '] > dd > a', function (e) {
|
||||||
|
var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');
|
||||||
|
if (!settings.is_hover || Modernizr.touch) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
self.toggle_active_tab(S(this).parent());
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// Hover event: tab title
|
||||||
|
.on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > dd > a', function (e) {
|
||||||
|
var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');
|
||||||
|
if (settings.is_hover) self.toggle_active_tab(S(this).parent());
|
||||||
|
});
|
||||||
|
|
||||||
|
// Location hash change event
|
||||||
|
S(window).on('hashchange.fndtn.tab', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.handle_location_hash_change();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
handle_location_hash_change : function () {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
var settings = S(this).data(self.attr_name(true) + '-init');
|
||||||
|
if (settings.deep_linking) {
|
||||||
|
// Match the location hash to a label
|
||||||
|
var hash = self.scope.location.hash;
|
||||||
|
if (hash != '') {
|
||||||
|
// Check whether the location hash references a tab content div or
|
||||||
|
// another element on the page (inside or outside the tab content div)
|
||||||
|
var hash_element = S(hash);
|
||||||
|
if (hash_element.hasClass('content') && hash_element.parent().hasClass('tab-content')) {
|
||||||
|
// Tab content div
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > dd > a[href=' + hash + ']').parent());
|
||||||
|
} else {
|
||||||
|
// Not the tab content div. If inside the tab content, find the
|
||||||
|
// containing tab and toggle it as active.
|
||||||
|
var hash_tab_container_id = hash_element.closest('.content').attr('id');
|
||||||
|
if (hash_tab_container_id != undefined) {
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > dd > a[href=#' + hash_tab_container_id + ']').parent(), hash);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Reference the default tab hashes which were initialized in the init function
|
||||||
|
for (var ind in self.default_tab_hashes) {
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > dd > a[href=' + self.default_tab_hashes[ind] + ']').parent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle_active_tab: function (tab, location_hash) {
|
||||||
|
var S = this.S,
|
||||||
|
tabs = tab.closest('[' + this.attr_name() + ']'),
|
||||||
|
anchor = tab.children('a').first(),
|
||||||
|
target_hash = '#' + anchor.attr('href').split('#')[1],
|
||||||
|
target = S(target_hash),
|
||||||
|
siblings = tab.siblings(),
|
||||||
|
settings = tabs.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
// allow usage of data-tab-content attribute instead of href
|
||||||
|
if (S(this).data(this.data_attr('tab-content'))) {
|
||||||
|
target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];
|
||||||
|
target = S(target_hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.deep_linking) {
|
||||||
|
// Get the scroll Y position prior to moving to the hash ID
|
||||||
|
var cur_ypos = $('body,html').scrollTop();
|
||||||
|
|
||||||
|
// Update the location hash to preserve browser history
|
||||||
|
// Note that the hash does not need to correspond to the
|
||||||
|
// tab content ID anchor; it can be an ID inside or outside of the tab
|
||||||
|
// content div.
|
||||||
|
if (location_hash != undefined) {
|
||||||
|
window.location.hash = location_hash;
|
||||||
|
} else {
|
||||||
|
window.location.hash = target_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.scroll_to_content) {
|
||||||
|
// If the user is requesting the content of a tab, then scroll to the
|
||||||
|
// top of the title area; otherwise, scroll to the element within
|
||||||
|
// the content area as defined by the hash value.
|
||||||
|
if (location_hash == undefined || location_hash == target_hash) {
|
||||||
|
tab.parent()[0].scrollIntoView();
|
||||||
|
} else {
|
||||||
|
S(target_hash)[0].scrollIntoView();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Adjust the scrollbar to the Y position prior to setting the hash
|
||||||
|
// Only do this for the tab content anchor, otherwise there will be
|
||||||
|
// conflicts with in-tab anchor links nested in the tab-content div
|
||||||
|
if (location_hash == undefined || location_hash == target_hash) {
|
||||||
|
$('body,html').scrollTop(cur_ypos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WARNING: The activation and deactivation of the tab content must
|
||||||
|
// occur after the deep linking in order to properly refresh the browser
|
||||||
|
// window (notably in Chrome).
|
||||||
|
tab.addClass(settings.active_class).triggerHandler('opened');
|
||||||
|
siblings.removeClass(settings.active_class);
|
||||||
|
target.siblings().removeClass(settings.active_class).end().addClass(settings.active_class);
|
||||||
|
settings.callback(tab);
|
||||||
|
target.triggerHandler('toggled', [tab]);
|
||||||
|
tabs.triggerHandler('toggled', [target]);
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr: function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,272 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.tooltip = {
|
||||||
|
name : 'tooltip',
|
||||||
|
|
||||||
|
version : '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
additional_inheritable_classes : [],
|
||||||
|
tooltip_class : '.tooltip',
|
||||||
|
append_to: 'body',
|
||||||
|
touch_close_text: 'Tap To Close',
|
||||||
|
disable_for_touch: false,
|
||||||
|
hover_delay: 200,
|
||||||
|
tip_template : function (selector, content) {
|
||||||
|
return '<span data-selector="' + selector + '" class="'
|
||||||
|
+ Foundation.libs.tooltip.settings.tooltip_class.substring(1)
|
||||||
|
+ '">' + content + '<span class="nub"></span></span>';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'random_str');
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (instance) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
self.create(this.S(instance));
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.tooltip')
|
||||||
|
.on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
|
||||||
|
'[' + this.attr_name() + ']', function (e) {
|
||||||
|
var $this = S(this),
|
||||||
|
settings = $.extend({}, self.settings, self.data_options($this)),
|
||||||
|
is_touch = false;
|
||||||
|
|
||||||
|
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;
|
||||||
|
|
||||||
|
if ($this.hasClass('open')) {
|
||||||
|
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) e.preventDefault();
|
||||||
|
self.hide($this);
|
||||||
|
} else {
|
||||||
|
if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||||
|
return;
|
||||||
|
} else if(!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||||
|
e.preventDefault();
|
||||||
|
S(settings.tooltip_class + '.open').hide();
|
||||||
|
is_touch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/enter|over/i.test(e.type)) {
|
||||||
|
this.timer = setTimeout(function () {
|
||||||
|
var tip = self.showTip($this);
|
||||||
|
}.bind(this), self.settings.hover_delay);
|
||||||
|
} else if (e.type === 'mouseout' || e.type === 'mouseleave') {
|
||||||
|
clearTimeout(this.timer);
|
||||||
|
self.hide($this);
|
||||||
|
} else {
|
||||||
|
self.showTip($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
|
||||||
|
if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;
|
||||||
|
|
||||||
|
if($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
|
||||||
|
self.convert_to_touch($(this));
|
||||||
|
} else {
|
||||||
|
self.hide($(this));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
|
||||||
|
self.hide(S(this));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
ie_touch : function (e) {
|
||||||
|
// How do I distinguish between IE11 and Windows Phone 8?????
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
showTip : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
|
||||||
|
return this.show($target);
|
||||||
|
},
|
||||||
|
|
||||||
|
getTip : function ($target) {
|
||||||
|
var selector = this.selector($target),
|
||||||
|
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
tip = null;
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (typeof tip === 'object') ? tip : false;
|
||||||
|
},
|
||||||
|
|
||||||
|
selector : function ($target) {
|
||||||
|
var id = $target.attr('id'),
|
||||||
|
dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
|
||||||
|
|
||||||
|
if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
|
||||||
|
dataSelector = this.random_str(6);
|
||||||
|
$target.attr('data-selector', dataSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (id && id.length > 0) ? id : dataSelector;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function ($target) {
|
||||||
|
var self = this,
|
||||||
|
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
tip_template = this.settings.tip_template;
|
||||||
|
|
||||||
|
if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
|
||||||
|
tip_template = window[settings.tip_template];
|
||||||
|
}
|
||||||
|
|
||||||
|
var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
|
||||||
|
classes = this.inheritable_classes($target);
|
||||||
|
|
||||||
|
$tip.addClass(classes).appendTo(settings.append_to);
|
||||||
|
|
||||||
|
if (Modernizr.touch) {
|
||||||
|
$tip.append('<span class="tap-to-close">'+settings.touch_close_text+'</span>');
|
||||||
|
$tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function(e) {
|
||||||
|
self.hide($target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.removeAttr('title').attr('title','');
|
||||||
|
},
|
||||||
|
|
||||||
|
reposition : function (target, tip, classes) {
|
||||||
|
var width, nub, nubHeight, nubWidth, column, objPos;
|
||||||
|
|
||||||
|
tip.css('visibility', 'hidden').show();
|
||||||
|
|
||||||
|
width = target.data('width');
|
||||||
|
nub = tip.children('.nub');
|
||||||
|
nubHeight = nub.outerHeight();
|
||||||
|
nubWidth = nub.outerHeight();
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
tip.css({'width' : '100%' });
|
||||||
|
} else {
|
||||||
|
tip.css({'width' : (width) ? width : 'auto'});
|
||||||
|
}
|
||||||
|
|
||||||
|
objPos = function (obj, top, right, bottom, left, width) {
|
||||||
|
return obj.css({
|
||||||
|
'top' : (top) ? top : 'auto',
|
||||||
|
'bottom' : (bottom) ? bottom : 'auto',
|
||||||
|
'left' : (left) ? left : 'auto',
|
||||||
|
'right' : (right) ? right : 'auto'
|
||||||
|
}).end();
|
||||||
|
};
|
||||||
|
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left);
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width());
|
||||||
|
tip.addClass('tip-override');
|
||||||
|
objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
|
||||||
|
} else {
|
||||||
|
var left = target.offset().left;
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
nub.addClass('rtl');
|
||||||
|
left = target.offset().left + target.outerWidth() - tip.outerWidth();
|
||||||
|
}
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);
|
||||||
|
tip.removeClass('tip-override');
|
||||||
|
if (classes && classes.indexOf('tip-top') > -1) {
|
||||||
|
if (Foundation.rtl) nub.addClass('rtl');
|
||||||
|
objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)
|
||||||
|
.removeClass('tip-override');
|
||||||
|
} else if (classes && classes.indexOf('tip-left') > -1) {
|
||||||
|
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight))
|
||||||
|
.removeClass('tip-override');
|
||||||
|
nub.removeClass('rtl');
|
||||||
|
} else if (classes && classes.indexOf('tip-right') > -1) {
|
||||||
|
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight))
|
||||||
|
.removeClass('tip-override');
|
||||||
|
nub.removeClass('rtl');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tip.css('visibility', 'visible').hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
inheritable_classes : function ($target) {
|
||||||
|
var settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
|
||||||
|
classes = $target.attr('class'),
|
||||||
|
filtered = classes ? $.map(classes.split(' '), function (el, i) {
|
||||||
|
if ($.inArray(el, inheritables) !== -1) {
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
}).join(' ') : '';
|
||||||
|
|
||||||
|
return $.trim(filtered);
|
||||||
|
},
|
||||||
|
|
||||||
|
convert_to_touch : function($target) {
|
||||||
|
var self = this,
|
||||||
|
$tip = self.getTip($target),
|
||||||
|
settings = $.extend({}, self.settings, self.data_options($target));
|
||||||
|
|
||||||
|
if ($tip.find('.tap-to-close').length === 0) {
|
||||||
|
$tip.append('<span class="tap-to-close">'+settings.touch_close_text+'</span>');
|
||||||
|
$tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function(e) {
|
||||||
|
self.hide($target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.data('tooltip-open-event-type', 'touch');
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
|
||||||
|
if ($target.data('tooltip-open-event-type') == 'touch') {
|
||||||
|
this.convert_to_touch($target);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.reposition($target, $tip, $target.attr('class'));
|
||||||
|
$target.addClass('open');
|
||||||
|
$tip.fadeIn(150);
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
|
||||||
|
$tip.fadeOut(150, function() {
|
||||||
|
$tip.find('.tap-to-close').remove();
|
||||||
|
$tip.off('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
|
||||||
|
$target.removeClass('open');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
var self = this;
|
||||||
|
this.S(this.scope).off('.fndtn.tooltip');
|
||||||
|
this.S(this.settings.tooltip_class).each(function (i) {
|
||||||
|
$('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
|
||||||
|
}).remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,422 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.topbar = {
|
||||||
|
name : 'topbar',
|
||||||
|
|
||||||
|
version: '5.2.2',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
index : 0,
|
||||||
|
sticky_class : 'sticky',
|
||||||
|
custom_back_text: true,
|
||||||
|
back_text: 'Back',
|
||||||
|
is_hover: true,
|
||||||
|
mobile_show_parent_link: false,
|
||||||
|
scrolltop : true, // jump to top when sticky nav menu toggle is clicked
|
||||||
|
sticky_on : 'all'
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (section, method, options) {
|
||||||
|
Foundation.inherit(this, 'add_custom_rule register_media throttle');
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
self.register_media('topbar', 'foundation-mq-topbar');
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
|
||||||
|
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
var topbar = $(this),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||||
|
section = self.S('section', this),
|
||||||
|
titlebar = topbar.children().filter('ul').first();
|
||||||
|
topbar.data('index', 0);
|
||||||
|
var topbarContainer = topbar.parent();
|
||||||
|
if(topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
|
||||||
|
self.settings.sticky_class = settings.sticky_class;
|
||||||
|
self.settings.sticky_topbar = topbar;
|
||||||
|
topbar.data('height', topbarContainer.outerHeight());
|
||||||
|
topbar.data('stickyoffset', topbarContainer.offset().top);
|
||||||
|
} else {
|
||||||
|
topbar.data('height', topbar.outerHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!settings.assembled) self.assemble(topbar);
|
||||||
|
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.S('.has-dropdown', topbar).addClass('not-click');
|
||||||
|
} else {
|
||||||
|
self.S('.has-dropdown', topbar).removeClass('not-click');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pad body when sticky (scrolled) or fixed.
|
||||||
|
self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
|
||||||
|
|
||||||
|
if (topbarContainer.hasClass('fixed')) {
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_sticky: function (topbar, topbarContainer, settings) {
|
||||||
|
var sticky = topbarContainer.hasClass(settings.sticky_class);
|
||||||
|
|
||||||
|
if (sticky && settings.sticky_on === 'all') {
|
||||||
|
return true;
|
||||||
|
} else if (sticky && this.small() && settings.sticky_on === 'small') {
|
||||||
|
return true;
|
||||||
|
} else if (sticky && this.medium() && settings.sticky_on === 'medium') {
|
||||||
|
return true;
|
||||||
|
} else if (sticky && this.large() && settings.sticky_on === 'large') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle: function (toggleEl) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
if (toggleEl) {
|
||||||
|
var topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
|
||||||
|
} else {
|
||||||
|
var topbar = self.S('[' + this.attr_name() + ']');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = topbar.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
var section = self.S('section, .section', topbar);
|
||||||
|
|
||||||
|
if (self.breakpoint()) {
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left: '0%'});
|
||||||
|
$('>.name', section).css({left: '100%'});
|
||||||
|
} else {
|
||||||
|
section.css({right: '0%'});
|
||||||
|
$('>.name', section).css({right: '100%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
self.S('li.moved', section).removeClass('moved');
|
||||||
|
topbar.data('index', 0);
|
||||||
|
|
||||||
|
topbar
|
||||||
|
.toggleClass('expanded')
|
||||||
|
.css('height', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.scrolltop) {
|
||||||
|
if (!topbar.hasClass('expanded')) {
|
||||||
|
if (topbar.hasClass('fixed')) {
|
||||||
|
topbar.parent().addClass('fixed');
|
||||||
|
topbar.removeClass('fixed');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
} else if (topbar.parent().hasClass('fixed')) {
|
||||||
|
if (settings.scrolltop) {
|
||||||
|
topbar.parent().removeClass('fixed');
|
||||||
|
topbar.addClass('fixed');
|
||||||
|
self.S('body').removeClass('f-topbar-fixed');
|
||||||
|
|
||||||
|
window.scrollTo(0,0);
|
||||||
|
} else {
|
||||||
|
topbar.parent().removeClass('expanded');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(self.is_sticky(topbar, topbar.parent(), settings)) {
|
||||||
|
topbar.parent().addClass('fixed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(topbar.parent().hasClass('fixed')) {
|
||||||
|
if (!topbar.hasClass('expanded')) {
|
||||||
|
topbar.removeClass('fixed');
|
||||||
|
topbar.parent().removeClass('expanded');
|
||||||
|
self.update_sticky_positioning();
|
||||||
|
} else {
|
||||||
|
topbar.addClass('fixed');
|
||||||
|
topbar.parent().addClass('expanded');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
timer : null,
|
||||||
|
|
||||||
|
events : function (bar) {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.topbar')
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.toggle(this);
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar','.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]',function (e) {
|
||||||
|
var li = $(this).closest('li');
|
||||||
|
if(self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown'))
|
||||||
|
{
|
||||||
|
self.toggle();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
|
||||||
|
var li = S(this),
|
||||||
|
target = S(e.target),
|
||||||
|
topbar = li.closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
if(target.data('revealId')) {
|
||||||
|
self.toggle();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.breakpoint()) return;
|
||||||
|
if (settings.is_hover && !Modernizr.touch) return;
|
||||||
|
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
|
if (li.hasClass('hover')) {
|
||||||
|
li
|
||||||
|
.removeClass('hover')
|
||||||
|
.find('li')
|
||||||
|
.removeClass('hover');
|
||||||
|
|
||||||
|
li.parents('li.hover')
|
||||||
|
.removeClass('hover');
|
||||||
|
} else {
|
||||||
|
li.addClass('hover');
|
||||||
|
|
||||||
|
$(li).siblings().removeClass('hover');
|
||||||
|
|
||||||
|
if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
|
||||||
|
if (self.breakpoint()) {
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var $this = S(this),
|
||||||
|
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||||
|
section = topbar.find('section, .section'),
|
||||||
|
dropdownHeight = $this.next('.dropdown').outerHeight(),
|
||||||
|
$selectedLi = $this.closest('li');
|
||||||
|
|
||||||
|
topbar.data('index', topbar.data('index') + 1);
|
||||||
|
$selectedLi.addClass('moved');
|
||||||
|
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left: -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
|
||||||
|
} else {
|
||||||
|
section.css({right: -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
|
||||||
|
self.resize.call(self);
|
||||||
|
}, 50)).trigger('resize');
|
||||||
|
|
||||||
|
S('body').off('.topbar').on('click.fndtn.topbar touchstart.fndtn.topbar', function (e) {
|
||||||
|
var parent = S(e.target).closest('li').closest('li.hover');
|
||||||
|
|
||||||
|
if (parent.length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
S('[' + self.attr_name() + '] li.hover').removeClass('hover');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Go up a level on Click
|
||||||
|
S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var $this = S(this),
|
||||||
|
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||||
|
section = topbar.find('section, .section'),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||||
|
$movedLi = $this.closest('li.moved'),
|
||||||
|
$previousLevelUl = $movedLi.parent();
|
||||||
|
|
||||||
|
topbar.data('index', topbar.data('index') - 1);
|
||||||
|
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left: -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
|
||||||
|
} else {
|
||||||
|
section.css({right: -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({right: 100 * topbar.data('index') + '%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (topbar.data('index') === 0) {
|
||||||
|
topbar.css('height', '');
|
||||||
|
} else {
|
||||||
|
topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$movedLi.removeClass('moved');
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var self = this;
|
||||||
|
self.S('[' + this.attr_name() + ']').each(function () {
|
||||||
|
var topbar = self.S(this),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
|
||||||
|
var stickyOffset;
|
||||||
|
|
||||||
|
if (!self.breakpoint()) {
|
||||||
|
var doToggle = topbar.hasClass('expanded');
|
||||||
|
topbar
|
||||||
|
.css('height', '')
|
||||||
|
.removeClass('expanded')
|
||||||
|
.find('li')
|
||||||
|
.removeClass('hover');
|
||||||
|
|
||||||
|
if(doToggle) {
|
||||||
|
self.toggle(topbar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(self.is_sticky(topbar, stickyContainer, settings)) {
|
||||||
|
if(stickyContainer.hasClass('fixed')) {
|
||||||
|
// Remove the fixed to allow for correct calculation of the offset.
|
||||||
|
stickyContainer.removeClass('fixed');
|
||||||
|
|
||||||
|
stickyOffset = stickyContainer.offset().top;
|
||||||
|
if(self.S(document.body).hasClass('f-topbar-fixed')) {
|
||||||
|
stickyOffset -= topbar.data('height');
|
||||||
|
}
|
||||||
|
|
||||||
|
topbar.data('stickyoffset', stickyOffset);
|
||||||
|
stickyContainer.addClass('fixed');
|
||||||
|
} else {
|
||||||
|
stickyOffset = stickyContainer.offset().top;
|
||||||
|
topbar.data('stickyoffset', stickyOffset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
breakpoint : function () {
|
||||||
|
return !matchMedia(Foundation.media_queries['topbar']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['small']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
medium : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['medium']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
large : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['large']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
assemble : function (topbar) {
|
||||||
|
var self = this,
|
||||||
|
settings = topbar.data(this.attr_name(true) + '-init'),
|
||||||
|
section = self.S('section', topbar),
|
||||||
|
titlebar = $(this).children().filter('ul').first();
|
||||||
|
|
||||||
|
// Pull element out of the DOM for manipulation
|
||||||
|
section.detach();
|
||||||
|
|
||||||
|
self.S('.has-dropdown>a', section).each(function () {
|
||||||
|
var $link = self.S(this),
|
||||||
|
$dropdown = $link.siblings('.dropdown'),
|
||||||
|
url = $link.attr('href');
|
||||||
|
|
||||||
|
if (!$dropdown.find('.title.back').length) {
|
||||||
|
if (settings.mobile_show_parent_link && url && url.length > 1) {
|
||||||
|
var $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li><a class="parent-link js-generated" href="' + url + '">' + $link.text() +'</a></li>');
|
||||||
|
} else {
|
||||||
|
var $titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li>');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy link to subnav
|
||||||
|
if (settings.custom_back_text == true) {
|
||||||
|
$('h5>a', $titleLi).html(settings.back_text);
|
||||||
|
} else {
|
||||||
|
$('h5>a', $titleLi).html('« ' + $link.html());
|
||||||
|
}
|
||||||
|
$dropdown.prepend($titleLi);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Put element back in the DOM
|
||||||
|
section.appendTo(topbar);
|
||||||
|
|
||||||
|
// check for sticky
|
||||||
|
this.sticky();
|
||||||
|
|
||||||
|
this.assembled(topbar);
|
||||||
|
},
|
||||||
|
|
||||||
|
assembled : function (topbar) {
|
||||||
|
topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled: true}));
|
||||||
|
},
|
||||||
|
|
||||||
|
height : function (ul) {
|
||||||
|
var total = 0,
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
$('> li', ul).each(function () { total += self.S(this).outerHeight(true); });
|
||||||
|
|
||||||
|
return total;
|
||||||
|
},
|
||||||
|
|
||||||
|
sticky : function () {
|
||||||
|
var $window = this.S(window),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
this.S(window).on('scroll', function() {
|
||||||
|
self.update_sticky_positioning();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_sticky_positioning: function() {
|
||||||
|
var klass = '.' + this.settings.sticky_class,
|
||||||
|
$window = this.S(window),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {
|
||||||
|
var distance = this.settings.sticky_topbar.data('stickyoffset');
|
||||||
|
if (!self.S(klass).hasClass('expanded')) {
|
||||||
|
if ($window.scrollTop() > (distance)) {
|
||||||
|
if (!self.S(klass).hasClass('fixed')) {
|
||||||
|
self.S(klass).addClass('fixed');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
} else if ($window.scrollTop() <= distance) {
|
||||||
|
if (self.S(klass).hasClass('fixed')) {
|
||||||
|
self.S(klass).removeClass('fixed');
|
||||||
|
self.S('body').removeClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.fndtn.topbar');
|
||||||
|
this.S(window).off('.fndtn.topbar');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, this, this.document));
|
@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery Cookie Plugin v1.4.0
|
||||||
|
* https://github.com/carhartl/jquery-cookie
|
||||||
|
*
|
||||||
|
* Copyright 2013 Klaus Hartl
|
||||||
|
* Released under the MIT license
|
||||||
|
*/
|
||||||
|
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{a=decodeURIComponent(a.replace(g," "))}catch(b){return}try{return h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setDate(k.getDate()+j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}});
|
@ -0,0 +1,2 @@
|
|||||||
|
/*! http://mths.be/placeholder v2.0.7 by @mathias */
|
||||||
|
!function(a,b,c){function d(a){var b={},d=/^jQuery\d+$/;return c.each(a.attributes,function(a,c){c.specified&&!d.test(c.name)&&(b[c.name]=c.value)}),b}function e(a,d){var e=this,f=c(e);if(e.value==f.attr("placeholder")&&f.hasClass("placeholder"))if(f.data("placeholder-password")){if(f=f.hide().next().show().attr("id",f.removeAttr("id").data("placeholder-id")),a===!0)return f[0].value=d;f.focus()}else e.value="",f.removeClass("placeholder"),e==b.activeElement&&e.select()}function f(){var a,b=this,f=c(b),g=this.id;if(""==b.value){if("password"==b.type){if(!f.data("placeholder-textinput")){try{a=f.clone().attr({type:"text"})}catch(h){a=c("<input>").attr(c.extend(d(this),{type:"text"}))}a.removeAttr("name").data({"placeholder-password":!0,"placeholder-id":g}).bind("focus.placeholder",e),f.data({"placeholder-textinput":a,"placeholder-id":g}).before(a)}f=f.removeAttr("id").hide().prev().attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}var g,h,i="placeholder"in b.createElement("input"),j="placeholder"in b.createElement("textarea"),k=c.fn,l=c.valHooks;i&&j?(h=k.placeholder=function(){return this},h.input=h.textarea=!0):(h=k.placeholder=function(){var a=this;return a.filter((i?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":e,"blur.placeholder":f}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},h.input=i,h.textarea=j,g={get:function(a){var b=c(a);return b.data("placeholder-enabled")&&b.hasClass("placeholder")?"":a.value},set:function(a,d){var g=c(a);return g.data("placeholder-enabled")?(""==d?(a.value=d,a!=b.activeElement&&f.call(a)):g.hasClass("placeholder")?e.call(a,!0,d)||(a.value=d):a.value=d,g):a.value=d}},i||(l.input=g),j||(l.textarea=g),c(function(){c(b).delegate("form","submit.placeholder",function(){var a=c(".placeholder",this).each(e);setTimeout(function(){a.each(f)},10)})}),c(a).bind("beforeunload.placeholder",function(){c(".placeholder").each(function(){this.value=""})}))}(this,document,jQuery);
|
@ -0,0 +1,4 @@
|
|||||||
|
# www.robotstxt.org/
|
||||||
|
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
|
||||||
|
|
||||||
|
User-agent: *
|
@ -0,0 +1,427 @@
|
|||||||
|
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Set default font family to sans-serif.
|
||||||
|
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
||||||
|
* user zoom.
|
||||||
|
*/
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-family: sans-serif; /* 1 */
|
||||||
|
-ms-text-size-adjust: 100%; /* 2 */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default margin.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HTML5 display definitions
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct `block` display not defined for any HTML5 element in IE 8/9.
|
||||||
|
* Correct `block` display not defined for `details` or `summary` in IE 10/11
|
||||||
|
* and Firefox.
|
||||||
|
* Correct `block` display not defined for `main` in IE 11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
article,
|
||||||
|
aside,
|
||||||
|
details,
|
||||||
|
figcaption,
|
||||||
|
figure,
|
||||||
|
footer,
|
||||||
|
header,
|
||||||
|
hgroup,
|
||||||
|
main,
|
||||||
|
menu,
|
||||||
|
nav,
|
||||||
|
section,
|
||||||
|
summary {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `inline-block` display not defined in IE 8/9.
|
||||||
|
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio,
|
||||||
|
canvas,
|
||||||
|
progress,
|
||||||
|
video {
|
||||||
|
display: inline-block; /* 1 */
|
||||||
|
vertical-align: baseline; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent modern browsers from displaying `audio` without controls.
|
||||||
|
* Remove excess height in iOS 5 devices.
|
||||||
|
*/
|
||||||
|
|
||||||
|
audio:not([controls]) {
|
||||||
|
display: none;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `[hidden]` styling not present in IE 8/9/10.
|
||||||
|
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[hidden],
|
||||||
|
template {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the gray background color from active links in IE 10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Improve readability when focused and also mouse hovered in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
a:active,
|
||||||
|
a:hover {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text-level semantics
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
abbr[title] {
|
||||||
|
border-bottom: 1px dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
b,
|
||||||
|
strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in Safari and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
dfn {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address variable `h1` font-size and margin within `section` and `article`
|
||||||
|
* contexts in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 2em;
|
||||||
|
margin: 0.67em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address styling not present in IE 8/9.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mark {
|
||||||
|
background: #ff0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent and variable font size in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
small {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
sub,
|
||||||
|
sup {
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
top: -0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
bottom: -0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Embedded content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove border when inside `a` element in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
img {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Correct overflow not hidden in IE 9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
svg:not(:root) {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grouping content
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address margin not present in IE 8/9 and Safari.
|
||||||
|
*/
|
||||||
|
|
||||||
|
figure {
|
||||||
|
margin: 1em 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address differences between Firefox and other browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
hr {
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contain overflow in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
pre {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address odd `em`-unit font size rendering in all browsers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
code,
|
||||||
|
kbd,
|
||||||
|
pre,
|
||||||
|
samp {
|
||||||
|
font-family: monospace, monospace;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forms
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Known limitation: by default, Chrome and Safari on OS X allow very limited
|
||||||
|
* styling of `select`, unless a `border` property is set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct color not being inherited.
|
||||||
|
* Known issue: affects color of disabled elements.
|
||||||
|
* 2. Correct font properties not being inherited.
|
||||||
|
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
input,
|
||||||
|
optgroup,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
color: inherit; /* 1 */
|
||||||
|
font: inherit; /* 2 */
|
||||||
|
margin: 0; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address `overflow` set to `hidden` in IE 8/9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button {
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
||||||
|
* All other form control elements do not inherit `text-transform` values.
|
||||||
|
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
|
||||||
|
* Correct `select` style inheritance in Firefox.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
select {
|
||||||
|
text-transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
||||||
|
* and `video` controls.
|
||||||
|
* 2. Correct inability to style clickable `input` types in iOS.
|
||||||
|
* 3. Improve usability and consistency of cursor style between image-type
|
||||||
|
* `input` and others.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button,
|
||||||
|
html input[type="button"], /* 1 */
|
||||||
|
input[type="reset"],
|
||||||
|
input[type="submit"] {
|
||||||
|
-webkit-appearance: button; /* 2 */
|
||||||
|
cursor: pointer; /* 3 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-set default cursor for disabled elements.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button[disabled],
|
||||||
|
html input[disabled] {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and border in Firefox 4+.
|
||||||
|
*/
|
||||||
|
|
||||||
|
button::-moz-focus-inner,
|
||||||
|
input::-moz-focus-inner {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
|
||||||
|
* the UA stylesheet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It's recommended that you don't attempt to style these elements.
|
||||||
|
* Firefox's implementation doesn't respect box-sizing, padding, or width.
|
||||||
|
*
|
||||||
|
* 1. Address box sizing set to `content-box` in IE 8/9/10.
|
||||||
|
* 2. Remove excess padding in IE 8/9/10.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="checkbox"],
|
||||||
|
input[type="radio"] {
|
||||||
|
box-sizing: border-box; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
|
||||||
|
* `font-size` values of the `input`, it causes the cursor style of the
|
||||||
|
* decrement button to change from `default` to `text`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="number"]::-webkit-inner-spin-button,
|
||||||
|
input[type="number"]::-webkit-outer-spin-button {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
|
||||||
|
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
|
||||||
|
* (include `-moz` to future-proof).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"] {
|
||||||
|
-webkit-appearance: textfield; /* 1 */
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box; /* 2 */
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
|
||||||
|
* Safari (but not Chrome) clips the cancel button when the search input has
|
||||||
|
* padding (and `textfield` appearance).
|
||||||
|
*/
|
||||||
|
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define consistent border, margin, and padding.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #c0c0c0;
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0.35em 0.625em 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1. Correct `color` not being inherited in IE 8/9/10/11.
|
||||||
|
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
|
||||||
|
*/
|
||||||
|
|
||||||
|
legend {
|
||||||
|
border: 0; /* 1 */
|
||||||
|
padding: 0; /* 2 */
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove default vertical scrollbar in IE 8/9/10/11.
|
||||||
|
*/
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Don't inherit the `font-weight` (applied by a rule above).
|
||||||
|
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
|
||||||
|
*/
|
||||||
|
|
||||||
|
optgroup {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tables
|
||||||
|
========================================================================== */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove most spacing between table cells.
|
||||||
|
*/
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
td,
|
||||||
|
th {
|
||||||
|
padding: 0;
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
/* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */
|
||||||
|
/* zurb.com */
|
||||||
|
/* humanstxt.org */
|
||||||
|
|
||||||
|
/* SITE */
|
||||||
|
Standards: HTML5, CSS3
|
||||||
|
Components: jQuery, Orbit, Reveal
|
||||||
|
Software: Sublime, Git, Sass
|
@ -0,0 +1,340 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.abide = {
|
||||||
|
name : 'abide',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
live_validate : true,
|
||||||
|
validate_on_blur : true,
|
||||||
|
focus_on_invalid : true,
|
||||||
|
error_labels : true, // labels with a for="inputId" will recieve an `error` class
|
||||||
|
error_class : 'error',
|
||||||
|
timeout : 1000,
|
||||||
|
patterns : {
|
||||||
|
alpha : /^[a-zA-Z]+$/,
|
||||||
|
alpha_numeric : /^[a-zA-Z0-9]+$/,
|
||||||
|
integer : /^[-+]?\d+$/,
|
||||||
|
number : /^[-+]?\d*(?:[\.\,]\d+)?$/,
|
||||||
|
|
||||||
|
// amex, visa, diners
|
||||||
|
card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
|
||||||
|
cvv : /^([0-9]){3,4}$/,
|
||||||
|
|
||||||
|
// http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
|
||||||
|
email : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
|
||||||
|
|
||||||
|
url : /^(https?|ftp|file|ssh):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/,
|
||||||
|
// abc.de
|
||||||
|
domain : /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
|
||||||
|
|
||||||
|
datetime : /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
|
||||||
|
// YYYY-MM-DD
|
||||||
|
date : /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
|
||||||
|
// HH:MM:SS
|
||||||
|
time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
|
||||||
|
dateISO : /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
|
||||||
|
// MM/DD/YYYY
|
||||||
|
month_day_year : /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
|
||||||
|
// DD/MM/YYYY
|
||||||
|
day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
|
||||||
|
|
||||||
|
// #FFF or #FFFFFF
|
||||||
|
color : /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
|
||||||
|
},
|
||||||
|
validators : {
|
||||||
|
equalTo : function (el, required, parent) {
|
||||||
|
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||||
|
to = el.value,
|
||||||
|
valid = (from === to);
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
timer : null,
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
form = self.S(scope).attr('novalidate', 'novalidate'),
|
||||||
|
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||||
|
|
||||||
|
this.invalid_attr = this.add_namespace('data-invalid');
|
||||||
|
|
||||||
|
form
|
||||||
|
.off('.abide')
|
||||||
|
.on('submit.fndtn.abide validate.fndtn.abide', function (e) {
|
||||||
|
var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));
|
||||||
|
return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax);
|
||||||
|
})
|
||||||
|
.on('reset', function () {
|
||||||
|
return self.reset($(this));
|
||||||
|
})
|
||||||
|
.find('input, textarea, select')
|
||||||
|
.off('.abide')
|
||||||
|
.on('blur.fndtn.abide change.fndtn.abide', function (e) {
|
||||||
|
if (settings.validate_on_blur === true) {
|
||||||
|
self.validate([this], e);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('keydown.fndtn.abide', function (e) {
|
||||||
|
if (settings.live_validate === true && e.which != 9) {
|
||||||
|
clearTimeout(self.timer);
|
||||||
|
self.timer = setTimeout(function () {
|
||||||
|
self.validate([this], e);
|
||||||
|
}.bind(this), settings.timeout);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
reset : function (form) {
|
||||||
|
form.removeAttr(this.invalid_attr);
|
||||||
|
$(this.invalid_attr, form).removeAttr(this.invalid_attr);
|
||||||
|
$('.' + this.settings.error_class, form).not('small').removeClass(this.settings.error_class);
|
||||||
|
},
|
||||||
|
|
||||||
|
validate : function (els, e, is_ajax) {
|
||||||
|
var validations = this.parse_patterns(els),
|
||||||
|
validation_count = validations.length,
|
||||||
|
form = this.S(els[0]).closest('form'),
|
||||||
|
submit_event = /submit/.test(e.type);
|
||||||
|
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i = 0; i < validation_count; i++) {
|
||||||
|
if (!validations[i] && (submit_event || is_ajax)) {
|
||||||
|
if (this.settings.focus_on_invalid) {
|
||||||
|
els[i].focus();
|
||||||
|
}
|
||||||
|
form.trigger('invalid').trigger('invalid.fndtn.abide');
|
||||||
|
this.S(els[i]).closest('form').attr(this.invalid_attr, '');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (submit_event || is_ajax) {
|
||||||
|
form.trigger('valid').trigger('valid.fndtn.abide');
|
||||||
|
}
|
||||||
|
|
||||||
|
form.removeAttr(this.invalid_attr);
|
||||||
|
|
||||||
|
if (is_ajax) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_patterns : function (els) {
|
||||||
|
var i = els.length,
|
||||||
|
el_patterns = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
el_patterns.push(this.pattern(els[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.check_validation_and_apply_styles(el_patterns);
|
||||||
|
},
|
||||||
|
|
||||||
|
pattern : function (el) {
|
||||||
|
var type = el.getAttribute('type'),
|
||||||
|
required = typeof el.getAttribute('required') === 'string';
|
||||||
|
|
||||||
|
var pattern = el.getAttribute('pattern') || '';
|
||||||
|
|
||||||
|
if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {
|
||||||
|
return [el, this.settings.patterns[pattern], required];
|
||||||
|
} else if (pattern.length > 0) {
|
||||||
|
return [el, new RegExp(pattern), required];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.patterns.hasOwnProperty(type)) {
|
||||||
|
return [el, this.settings.patterns[type], required];
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern = /.*/;
|
||||||
|
|
||||||
|
return [el, pattern, required];
|
||||||
|
},
|
||||||
|
|
||||||
|
// TODO: Break this up into smaller methods, getting hard to read.
|
||||||
|
check_validation_and_apply_styles : function (el_patterns) {
|
||||||
|
var i = el_patterns.length,
|
||||||
|
validations = [],
|
||||||
|
form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),
|
||||||
|
settings = form.data(this.attr_name(true) + '-init') || {};
|
||||||
|
while (i--) {
|
||||||
|
var el = el_patterns[i][0],
|
||||||
|
required = el_patterns[i][2],
|
||||||
|
value = el.value.trim(),
|
||||||
|
direct_parent = this.S(el).parent(),
|
||||||
|
validator = el.getAttribute(this.add_namespace('data-abide-validator')),
|
||||||
|
is_radio = el.type === 'radio',
|
||||||
|
is_checkbox = el.type === 'checkbox',
|
||||||
|
label = this.S('label[for="' + el.getAttribute('id') + '"]'),
|
||||||
|
valid_length = (required) ? (el.value.length > 0) : true,
|
||||||
|
el_validations = [];
|
||||||
|
|
||||||
|
var parent, valid;
|
||||||
|
|
||||||
|
// support old way to do equalTo validations
|
||||||
|
if (el.getAttribute(this.add_namespace('data-equalto'))) { validator = 'equalTo' }
|
||||||
|
|
||||||
|
if (!direct_parent.is('label')) {
|
||||||
|
parent = direct_parent;
|
||||||
|
} else {
|
||||||
|
parent = direct_parent.parent();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (validator) {
|
||||||
|
valid = this.settings.validators[validator].apply(this, [el, required, parent]);
|
||||||
|
el_validations.push(valid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_radio && required) {
|
||||||
|
el_validations.push(this.valid_radio(el, required));
|
||||||
|
} else if (is_checkbox && required) {
|
||||||
|
el_validations.push(this.valid_checkbox(el, required));
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (el_patterns[i][1].test(value) && valid_length ||
|
||||||
|
!required && el.value.length < 1 || $(el).attr('disabled')) {
|
||||||
|
el_validations.push(true);
|
||||||
|
} else {
|
||||||
|
el_validations.push(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
el_validations = [el_validations.every(function (valid) {return valid;})];
|
||||||
|
|
||||||
|
if (el_validations[0]) {
|
||||||
|
this.S(el).removeAttr(this.invalid_attr);
|
||||||
|
el.setAttribute('aria-invalid', 'false');
|
||||||
|
el.removeAttribute('aria-describedby');
|
||||||
|
parent.removeClass(this.settings.error_class);
|
||||||
|
if (label.length > 0 && this.settings.error_labels) {
|
||||||
|
label.removeClass(this.settings.error_class).removeAttr('role');
|
||||||
|
}
|
||||||
|
$(el).triggerHandler('valid');
|
||||||
|
} else {
|
||||||
|
this.S(el).attr(this.invalid_attr, '');
|
||||||
|
el.setAttribute('aria-invalid', 'true');
|
||||||
|
|
||||||
|
// Try to find the error associated with the input
|
||||||
|
var errorElem = parent.find('small.' + this.settings.error_class, 'span.' + this.settings.error_class);
|
||||||
|
var errorID = errorElem.length > 0 ? errorElem[0].id : '';
|
||||||
|
if (errorID.length > 0) {
|
||||||
|
el.setAttribute('aria-describedby', errorID);
|
||||||
|
}
|
||||||
|
|
||||||
|
// el.setAttribute('aria-describedby', $(el).find('.error')[0].id);
|
||||||
|
parent.addClass(this.settings.error_class);
|
||||||
|
if (label.length > 0 && this.settings.error_labels) {
|
||||||
|
label.addClass(this.settings.error_class).attr('role', 'alert');
|
||||||
|
}
|
||||||
|
$(el).triggerHandler('invalid');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
validations.push(el_validations[0]);
|
||||||
|
}
|
||||||
|
validations = [validations.every(function (valid) {return valid;})];
|
||||||
|
return validations;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_checkbox : function (el, required) {
|
||||||
|
var el = this.S(el),
|
||||||
|
valid = (el.is(':checked') || !required || el.get(0).getAttribute('disabled'));
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||||
|
} else {
|
||||||
|
el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_radio : function (el, required) {
|
||||||
|
var name = el.getAttribute('name'),
|
||||||
|
group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find("[name='" + name + "']"),
|
||||||
|
count = group.length,
|
||||||
|
valid = false,
|
||||||
|
disabled = false;
|
||||||
|
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i=0; i < count; i++) {
|
||||||
|
if( group[i].getAttribute('disabled') ){
|
||||||
|
disabled=true;
|
||||||
|
valid=true;
|
||||||
|
} else {
|
||||||
|
if (group[i].checked){
|
||||||
|
valid = true;
|
||||||
|
} else {
|
||||||
|
if( disabled ){
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Has to count up to make sure the focus gets applied to the top error
|
||||||
|
for (var i = 0; i < count; i++) {
|
||||||
|
if (valid) {
|
||||||
|
this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||||
|
} else {
|
||||||
|
this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_equal : function (el, required, parent) {
|
||||||
|
var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,
|
||||||
|
to = el.value,
|
||||||
|
valid = (from === to);
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
this.S(el).removeAttr(this.invalid_attr);
|
||||||
|
parent.removeClass(this.settings.error_class);
|
||||||
|
if (label.length > 0 && settings.error_labels) {
|
||||||
|
label.removeClass(this.settings.error_class);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.S(el).attr(this.invalid_attr, '');
|
||||||
|
parent.addClass(this.settings.error_class);
|
||||||
|
if (label.length > 0 && settings.error_labels) {
|
||||||
|
label.addClass(this.settings.error_class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
valid_oneof : function (el, required, parent, doNotValidateOthers) {
|
||||||
|
var el = this.S(el),
|
||||||
|
others = this.S('[' + this.add_namespace('data-oneof') + ']'),
|
||||||
|
valid = others.filter(':checked').length > 0;
|
||||||
|
|
||||||
|
if (valid) {
|
||||||
|
el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);
|
||||||
|
} else {
|
||||||
|
el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doNotValidateOthers) {
|
||||||
|
var _this = this;
|
||||||
|
others.each(function () {
|
||||||
|
_this.valid_oneof.call(_this, this, null, null, true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,67 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.accordion = {
|
||||||
|
name : 'accordion',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
content_class : 'content',
|
||||||
|
active_class : 'active',
|
||||||
|
multi_expand : false,
|
||||||
|
toggleable : true,
|
||||||
|
callback : function () {}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this;
|
||||||
|
var S = this.S;
|
||||||
|
S(this.scope)
|
||||||
|
.off('.fndtn.accordion')
|
||||||
|
.on('click.fndtn.accordion', '[' + this.attr_name() + '] > .accordion-navigation > a', function (e) {
|
||||||
|
var accordion = S(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),
|
||||||
|
settings = accordion.data(self.attr_name(true) + '-init') || self.settings,
|
||||||
|
target = S('#' + this.href.split('#')[1]),
|
||||||
|
aunts = $('> .accordion-navigation', accordion),
|
||||||
|
siblings = aunts.children('.' + settings.content_class),
|
||||||
|
active_content = siblings.filter('.' + settings.active_class);
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (accordion.attr(self.attr_name())) {
|
||||||
|
siblings = siblings.add('[' + groupSelector + '] dd > ' + '.' + settings.content_class);
|
||||||
|
aunts = aunts.add('[' + groupSelector + '] .accordion-navigation');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.toggleable && target.is(active_content)) {
|
||||||
|
target.parent('.accordion-navigation').toggleClass(settings.active_class, false);
|
||||||
|
target.toggleClass(settings.active_class, false);
|
||||||
|
settings.callback(target);
|
||||||
|
target.triggerHandler('toggled', [accordion]);
|
||||||
|
accordion.triggerHandler('toggled', [target]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!settings.multi_expand) {
|
||||||
|
siblings.removeClass(settings.active_class);
|
||||||
|
aunts.removeClass(settings.active_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
target.addClass(settings.active_class).parent().addClass(settings.active_class);
|
||||||
|
settings.callback(target);
|
||||||
|
target.triggerHandler('toggled', [accordion]);
|
||||||
|
accordion.triggerHandler('toggled', [target]);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,43 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.alert = {
|
||||||
|
name : 'alert',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
callback : function () {}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
$(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {
|
||||||
|
var alertBox = S(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
if (Modernizr.csstransitions) {
|
||||||
|
alertBox.addClass('alert-close');
|
||||||
|
alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function (e) {
|
||||||
|
S(this).trigger('close').trigger('close.fndtn.alert').remove();
|
||||||
|
settings.callback();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alertBox.fadeOut(300, function () {
|
||||||
|
S(this).trigger('close').trigger('close.fndtn.alert').remove();
|
||||||
|
settings.callback();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,556 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.clearing = {
|
||||||
|
name : 'clearing',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
templates : {
|
||||||
|
viewing : '<a href="#" class="clearing-close">×</a>' +
|
||||||
|
'<div class="visible-img" style="display: none"><div class="clearing-touch-label"></div><img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" alt="" />' +
|
||||||
|
'<p class="clearing-caption"></p><a href="#" class="clearing-main-prev"><span></span></a>' +
|
||||||
|
'<a href="#" class="clearing-main-next"><span></span></a></div>'
|
||||||
|
},
|
||||||
|
|
||||||
|
// comma delimited list of selectors that, on click, will close clearing,
|
||||||
|
// add 'div.clearing-blackout, div.visible-img' to close on background click
|
||||||
|
close_selectors : '.clearing-close, div.clearing-blackout',
|
||||||
|
|
||||||
|
// Default to the entire li element.
|
||||||
|
open_selectors : '',
|
||||||
|
|
||||||
|
// Image will be skipped in carousel.
|
||||||
|
skip_selector : '',
|
||||||
|
|
||||||
|
touch_label : '',
|
||||||
|
|
||||||
|
// event initializers and locks
|
||||||
|
init : false,
|
||||||
|
locked : false
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this;
|
||||||
|
Foundation.inherit(this, 'throttle image_loaded');
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
|
||||||
|
if (self.S(this.scope).is('[' + this.attr_name() + ']')) {
|
||||||
|
this.assemble(self.S('li', this.scope));
|
||||||
|
} else {
|
||||||
|
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
self.assemble(self.S('li', this));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S,
|
||||||
|
$scroll_container = $('.scroll-container');
|
||||||
|
|
||||||
|
if ($scroll_container.length > 0) {
|
||||||
|
this.scope = $scroll_container;
|
||||||
|
}
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.clearing')
|
||||||
|
.on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,
|
||||||
|
function (e, current, target) {
|
||||||
|
var current = current || S(this),
|
||||||
|
target = target || current,
|
||||||
|
next = current.next('li'),
|
||||||
|
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),
|
||||||
|
image = S(e.target);
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!settings) {
|
||||||
|
self.init();
|
||||||
|
settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||||
|
}
|
||||||
|
|
||||||
|
// if clearing is open and the current image is
|
||||||
|
// clicked, go to the next image in sequence
|
||||||
|
if (target.hasClass('visible') &&
|
||||||
|
current[0] === target[0] &&
|
||||||
|
next.length > 0 && self.is_open(current)) {
|
||||||
|
target = next;
|
||||||
|
image = S('img', target);
|
||||||
|
}
|
||||||
|
|
||||||
|
// set current and target to the clicked li if not otherwise defined.
|
||||||
|
self.open(image, current, target);
|
||||||
|
self.update_paddles(target);
|
||||||
|
})
|
||||||
|
|
||||||
|
.on('click.fndtn.clearing', '.clearing-main-next',
|
||||||
|
function (e) { self.nav(e, 'next') })
|
||||||
|
.on('click.fndtn.clearing', '.clearing-main-prev',
|
||||||
|
function (e) { self.nav(e, 'prev') })
|
||||||
|
.on('click.fndtn.clearing', this.settings.close_selectors,
|
||||||
|
function (e) { Foundation.libs.clearing.close(e, this) });
|
||||||
|
|
||||||
|
$(document).on('keydown.fndtn.clearing',
|
||||||
|
function (e) { self.keydown(e) });
|
||||||
|
|
||||||
|
S(window).off('.clearing').on('resize.fndtn.clearing',
|
||||||
|
function () { self.resize() });
|
||||||
|
|
||||||
|
this.swipe_events(scope);
|
||||||
|
},
|
||||||
|
|
||||||
|
swipe_events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.on('touchstart.fndtn.clearing', '.visible-img', function (e) {
|
||||||
|
if (!e.touches) { e = e.originalEvent; }
|
||||||
|
var data = {
|
||||||
|
start_page_x : e.touches[0].pageX,
|
||||||
|
start_page_y : e.touches[0].pageY,
|
||||||
|
start_time : (new Date()).getTime(),
|
||||||
|
delta_x : 0,
|
||||||
|
is_scrolling : undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
S(this).data('swipe-transition', data);
|
||||||
|
e.stopPropagation();
|
||||||
|
})
|
||||||
|
.on('touchmove.fndtn.clearing', '.visible-img', function (e) {
|
||||||
|
if (!e.touches) {
|
||||||
|
e = e.originalEvent;
|
||||||
|
}
|
||||||
|
// Ignore pinch/zoom events
|
||||||
|
if (e.touches.length > 1 || e.scale && e.scale !== 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = S(this).data('swipe-transition');
|
||||||
|
|
||||||
|
if (typeof data === 'undefined') {
|
||||||
|
data = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
data.delta_x = e.touches[0].pageX - data.start_page_x;
|
||||||
|
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
data.delta_x = -data.delta_x;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof data.is_scrolling === 'undefined') {
|
||||||
|
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data.is_scrolling && !data.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
var direction = (data.delta_x < 0) ? 'next' : 'prev';
|
||||||
|
data.active = true;
|
||||||
|
self.nav(e, direction);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('touchend.fndtn.clearing', '.visible-img', function (e) {
|
||||||
|
S(this).data('swipe-transition', {});
|
||||||
|
e.stopPropagation();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
assemble : function ($li) {
|
||||||
|
var $el = $li.parent();
|
||||||
|
|
||||||
|
if ($el.parent().hasClass('carousel')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$el.after('<div id="foundationClearingHolder"></div>');
|
||||||
|
|
||||||
|
var grid = $el.detach(),
|
||||||
|
grid_outerHTML = '';
|
||||||
|
|
||||||
|
if (grid[0] == null) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
grid_outerHTML = grid[0].outerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
var holder = this.S('#foundationClearingHolder'),
|
||||||
|
settings = $el.data(this.attr_name(true) + '-init'),
|
||||||
|
data = {
|
||||||
|
grid : '<div class="carousel">' + grid_outerHTML + '</div>',
|
||||||
|
viewing : settings.templates.viewing
|
||||||
|
},
|
||||||
|
wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
|
||||||
|
data.grid + '</div></div>',
|
||||||
|
touch_label = this.settings.touch_label;
|
||||||
|
|
||||||
|
if (Modernizr.touch) {
|
||||||
|
wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();
|
||||||
|
}
|
||||||
|
|
||||||
|
holder.after(wrapper).remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
open : function ($image, current, target) {
|
||||||
|
var self = this,
|
||||||
|
body = $(document.body),
|
||||||
|
root = target.closest('.clearing-assembled'),
|
||||||
|
container = self.S('div', root).first(),
|
||||||
|
visible_image = self.S('.visible-img', container),
|
||||||
|
image = self.S('img', visible_image).not($image),
|
||||||
|
label = self.S('.clearing-touch-label', container),
|
||||||
|
error = false;
|
||||||
|
|
||||||
|
// Event to disable scrolling on touch devices when Clearing is activated
|
||||||
|
$('body').on('touchmove', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
image.error(function () {
|
||||||
|
error = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
function startLoad() {
|
||||||
|
setTimeout(function () {
|
||||||
|
this.image_loaded(image, function () {
|
||||||
|
if (image.outerWidth() === 1 && !error) {
|
||||||
|
startLoad.call(this);
|
||||||
|
} else {
|
||||||
|
cb.call(this, image);
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
}.bind(this), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
function cb (image) {
|
||||||
|
var $image = $(image);
|
||||||
|
$image.css('visibility', 'visible');
|
||||||
|
// toggle the gallery
|
||||||
|
body.css('overflow', 'hidden');
|
||||||
|
root.addClass('clearing-blackout');
|
||||||
|
container.addClass('clearing-container');
|
||||||
|
visible_image.show();
|
||||||
|
this.fix_height(target)
|
||||||
|
.caption(self.S('.clearing-caption', visible_image), self.S('img', target))
|
||||||
|
.center_and_label(image, label)
|
||||||
|
.shift(current, target, function () {
|
||||||
|
target.closest('li').siblings().removeClass('visible');
|
||||||
|
target.closest('li').addClass('visible');
|
||||||
|
});
|
||||||
|
visible_image.trigger('opened.fndtn.clearing')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.locked()) {
|
||||||
|
visible_image.trigger('open.fndtn.clearing');
|
||||||
|
// set the image to the selected thumbnail
|
||||||
|
image
|
||||||
|
.attr('src', this.load($image))
|
||||||
|
.css('visibility', 'hidden');
|
||||||
|
|
||||||
|
startLoad.call(this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close : function (e, el) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var root = (function (target) {
|
||||||
|
if (/blackout/.test(target.selector)) {
|
||||||
|
return target;
|
||||||
|
} else {
|
||||||
|
return target.closest('.clearing-blackout');
|
||||||
|
}
|
||||||
|
}($(el))),
|
||||||
|
body = $(document.body), container, visible_image;
|
||||||
|
|
||||||
|
if (el === e.target && root) {
|
||||||
|
body.css('overflow', '');
|
||||||
|
container = $('div', root).first();
|
||||||
|
visible_image = $('.visible-img', container);
|
||||||
|
visible_image.trigger('close.fndtn.clearing');
|
||||||
|
this.settings.prev_index = 0;
|
||||||
|
$('ul[' + this.attr_name() + ']', root)
|
||||||
|
.attr('style', '').closest('.clearing-blackout')
|
||||||
|
.removeClass('clearing-blackout');
|
||||||
|
container.removeClass('clearing-container');
|
||||||
|
visible_image.hide();
|
||||||
|
visible_image.trigger('closed.fndtn.clearing');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Event to re-enable scrolling on touch devices
|
||||||
|
$('body').off('touchmove');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
is_open : function (current) {
|
||||||
|
return current.parent().prop('style').length > 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
keydown : function (e) {
|
||||||
|
var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),
|
||||||
|
NEXT_KEY = this.rtl ? 37 : 39,
|
||||||
|
PREV_KEY = this.rtl ? 39 : 37,
|
||||||
|
ESC_KEY = 27;
|
||||||
|
|
||||||
|
if (e.which === NEXT_KEY) {
|
||||||
|
this.go(clearing, 'next');
|
||||||
|
}
|
||||||
|
if (e.which === PREV_KEY) {
|
||||||
|
this.go(clearing, 'prev');
|
||||||
|
}
|
||||||
|
if (e.which === ESC_KEY) {
|
||||||
|
this.S('a.clearing-close').trigger('click').trigger('click.fndtn.clearing');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
nav : function (e, direction) {
|
||||||
|
var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
this.go(clearing, direction);
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var image = $('img', '.clearing-blackout .visible-img'),
|
||||||
|
label = $('.clearing-touch-label', '.clearing-blackout');
|
||||||
|
|
||||||
|
if (image.length) {
|
||||||
|
this.center_and_label(image, label);
|
||||||
|
image.trigger('resized.fndtn.clearing')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// visual adjustments
|
||||||
|
fix_height : function (target) {
|
||||||
|
var lis = target.parent().children(),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
lis.each(function () {
|
||||||
|
var li = self.S(this),
|
||||||
|
image = li.find('img');
|
||||||
|
|
||||||
|
if (li.height() > image.outerHeight()) {
|
||||||
|
li.addClass('fix-height');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.closest('ul')
|
||||||
|
.width(lis.length * 100 + '%');
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
update_paddles : function (target) {
|
||||||
|
target = target.closest('li');
|
||||||
|
var visible_image = target
|
||||||
|
.closest('.carousel')
|
||||||
|
.siblings('.visible-img');
|
||||||
|
|
||||||
|
if (target.next().length > 0) {
|
||||||
|
this.S('.clearing-main-next', visible_image).removeClass('disabled');
|
||||||
|
} else {
|
||||||
|
this.S('.clearing-main-next', visible_image).addClass('disabled');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.prev().length > 0) {
|
||||||
|
this.S('.clearing-main-prev', visible_image).removeClass('disabled');
|
||||||
|
} else {
|
||||||
|
this.S('.clearing-main-prev', visible_image).addClass('disabled');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
center_and_label : function (target, label) {
|
||||||
|
if (!this.rtl && label.length > 0) {
|
||||||
|
label.css({
|
||||||
|
marginLeft : -(label.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
label.css({
|
||||||
|
marginRight : -(label.outerWidth() / 2),
|
||||||
|
marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,
|
||||||
|
left: 'auto',
|
||||||
|
right: '50%'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// image loading and preloading
|
||||||
|
|
||||||
|
load : function ($image) {
|
||||||
|
var href;
|
||||||
|
|
||||||
|
if ($image[0].nodeName === 'A') {
|
||||||
|
href = $image.attr('href');
|
||||||
|
} else {
|
||||||
|
href = $image.closest('a').attr('href');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.preload($image);
|
||||||
|
|
||||||
|
if (href) {
|
||||||
|
return href;
|
||||||
|
}
|
||||||
|
return $image.attr('src');
|
||||||
|
},
|
||||||
|
|
||||||
|
preload : function ($image) {
|
||||||
|
this
|
||||||
|
.img($image.closest('li').next())
|
||||||
|
.img($image.closest('li').prev());
|
||||||
|
},
|
||||||
|
|
||||||
|
img : function (img) {
|
||||||
|
if (img.length) {
|
||||||
|
var new_img = new Image(),
|
||||||
|
new_a = this.S('a', img);
|
||||||
|
|
||||||
|
if (new_a.length) {
|
||||||
|
new_img.src = new_a.attr('href');
|
||||||
|
} else {
|
||||||
|
new_img.src = this.S('img', img).attr('src');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// image caption
|
||||||
|
|
||||||
|
caption : function (container, $image) {
|
||||||
|
var caption = $image.attr('data-caption');
|
||||||
|
|
||||||
|
if (caption) {
|
||||||
|
container
|
||||||
|
.html(caption)
|
||||||
|
.show();
|
||||||
|
} else {
|
||||||
|
container
|
||||||
|
.text('')
|
||||||
|
.hide();
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
// directional methods
|
||||||
|
|
||||||
|
go : function ($ul, direction) {
|
||||||
|
var current = this.S('.visible', $ul),
|
||||||
|
target = current[direction]();
|
||||||
|
|
||||||
|
// Check for skip selector.
|
||||||
|
if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {
|
||||||
|
target = target[direction]();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.length) {
|
||||||
|
this.S('img', target)
|
||||||
|
.trigger('click', [current, target]).trigger('click.fndtn.clearing', [current, target])
|
||||||
|
.trigger('change.fndtn.clearing');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
shift : function (current, target, callback) {
|
||||||
|
var clearing = target.parent(),
|
||||||
|
old_index = this.settings.prev_index || target.index(),
|
||||||
|
direction = this.direction(clearing, current, target),
|
||||||
|
dir = this.rtl ? 'right' : 'left',
|
||||||
|
left = parseInt(clearing.css('left'), 10),
|
||||||
|
width = target.outerWidth(),
|
||||||
|
skip_shift;
|
||||||
|
|
||||||
|
var dir_obj = {};
|
||||||
|
|
||||||
|
// we use jQuery animate instead of CSS transitions because we
|
||||||
|
// need a callback to unlock the next animation
|
||||||
|
// needs support for RTL **
|
||||||
|
if (target.index() !== old_index && !/skip/.test(direction)) {
|
||||||
|
if (/left/.test(direction)) {
|
||||||
|
this.lock();
|
||||||
|
dir_obj[dir] = left + width;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
} else if (/right/.test(direction)) {
|
||||||
|
this.lock();
|
||||||
|
dir_obj[dir] = left - width;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
}
|
||||||
|
} else if (/skip/.test(direction)) {
|
||||||
|
// the target image is not adjacent to the current image, so
|
||||||
|
// do we scroll right or not
|
||||||
|
skip_shift = target.index() - this.settings.up_count;
|
||||||
|
this.lock();
|
||||||
|
|
||||||
|
if (skip_shift > 0) {
|
||||||
|
dir_obj[dir] = -(skip_shift * width);
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
} else {
|
||||||
|
dir_obj[dir] = 0;
|
||||||
|
clearing.animate(dir_obj, 300, this.unlock());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
|
||||||
|
direction : function ($el, current, target) {
|
||||||
|
var lis = this.S('li', $el),
|
||||||
|
li_width = lis.outerWidth() + (lis.outerWidth() / 4),
|
||||||
|
up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,
|
||||||
|
target_index = lis.index(target),
|
||||||
|
response;
|
||||||
|
|
||||||
|
this.settings.up_count = up_count;
|
||||||
|
|
||||||
|
if (this.adjacent(this.settings.prev_index, target_index)) {
|
||||||
|
if ((target_index > up_count) && target_index > this.settings.prev_index) {
|
||||||
|
response = 'right';
|
||||||
|
} else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {
|
||||||
|
response = 'left';
|
||||||
|
} else {
|
||||||
|
response = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
response = 'skip';
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.prev_index = target_index;
|
||||||
|
|
||||||
|
return response;
|
||||||
|
},
|
||||||
|
|
||||||
|
adjacent : function (current_index, target_index) {
|
||||||
|
for (var i = target_index + 1; i >= target_index - 1; i--) {
|
||||||
|
if (i === current_index) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
// lock management
|
||||||
|
|
||||||
|
lock : function () {
|
||||||
|
this.settings.locked = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
unlock : function () {
|
||||||
|
this.settings.locked = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
locked : function () {
|
||||||
|
return this.settings.locked;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.fndtn.clearing');
|
||||||
|
this.S(window).off('.fndtn.clearing');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,448 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.dropdown = {
|
||||||
|
name : 'dropdown',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class : 'open',
|
||||||
|
disabled_class : 'disabled',
|
||||||
|
mega_class : 'mega',
|
||||||
|
align : 'bottom',
|
||||||
|
is_hover : false,
|
||||||
|
hover_timeout : 150,
|
||||||
|
opened : function () {},
|
||||||
|
closed : function () {}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle');
|
||||||
|
|
||||||
|
$.extend(true, this.settings, method, options);
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.dropdown')
|
||||||
|
.on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
|
||||||
|
var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
if (!settings.is_hover || Modernizr.touch) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (S(this).parent('[data-reveal-id]')) {
|
||||||
|
e.stopPropagation();
|
||||||
|
}
|
||||||
|
self.toggle($(this));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||||
|
var $this = S(this),
|
||||||
|
dropdown,
|
||||||
|
target;
|
||||||
|
|
||||||
|
clearTimeout(self.timeout);
|
||||||
|
|
||||||
|
if ($this.data(self.data_attr())) {
|
||||||
|
dropdown = S('#' + $this.data(self.data_attr()));
|
||||||
|
target = $this;
|
||||||
|
} else {
|
||||||
|
dropdown = $this;
|
||||||
|
target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
|
||||||
|
if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
|
||||||
|
self.closeall.call(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.open.apply(self, [dropdown, target]);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
|
||||||
|
var $this = S(this);
|
||||||
|
var settings;
|
||||||
|
|
||||||
|
if ($this.data(self.data_attr())) {
|
||||||
|
settings = $this.data(self.data_attr(true) + '-init') || self.settings;
|
||||||
|
} else {
|
||||||
|
var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
|
||||||
|
settings = target.data(self.attr_name(true) + '-init') || self.settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.timeout = setTimeout(function () {
|
||||||
|
if ($this.data(self.data_attr())) {
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.close.call(self, S('#' + $this.data(self.data_attr())));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.close.call(self, $this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.bind(this), settings.hover_timeout);
|
||||||
|
})
|
||||||
|
.on('click.fndtn.dropdown', function (e) {
|
||||||
|
var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
|
||||||
|
var links = parent.find('a');
|
||||||
|
|
||||||
|
if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
|
||||||
|
self.close.call(self, S('[' + self.attr_name() + '-content]'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.target !== document && !$.contains(document.documentElement, e.target)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(S(e.target).data('revealId')) &&
|
||||||
|
(parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
|
||||||
|
$.contains(parent.first()[0], e.target)))) {
|
||||||
|
e.stopPropagation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.close.call(self, S('[' + self.attr_name() + '-content]'));
|
||||||
|
})
|
||||||
|
.on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||||
|
self.settings.opened.call(this);
|
||||||
|
})
|
||||||
|
.on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
|
||||||
|
self.settings.closed.call(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
S(window)
|
||||||
|
.off('.dropdown')
|
||||||
|
.on('resize.fndtn.dropdown', self.throttle(function () {
|
||||||
|
self.resize.call(self);
|
||||||
|
}, 50));
|
||||||
|
|
||||||
|
this.resize();
|
||||||
|
},
|
||||||
|
|
||||||
|
close : function (dropdown) {
|
||||||
|
var self = this;
|
||||||
|
dropdown.each(function () {
|
||||||
|
var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']');
|
||||||
|
original_target.attr('aria-expanded', 'false');
|
||||||
|
if (self.S(this).hasClass(self.settings.active_class)) {
|
||||||
|
self.S(this)
|
||||||
|
.css(Foundation.rtl ? 'right' : 'left', '-99999px')
|
||||||
|
.attr('aria-hidden', 'true')
|
||||||
|
.removeClass(self.settings.active_class)
|
||||||
|
.prev('[' + self.attr_name() + ']')
|
||||||
|
.removeClass(self.settings.active_class)
|
||||||
|
.removeData('target');
|
||||||
|
|
||||||
|
self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dropdown.removeClass('f-open-' + this.attr_name(true));
|
||||||
|
},
|
||||||
|
|
||||||
|
closeall : function () {
|
||||||
|
var self = this;
|
||||||
|
$.each(self.S('.f-open-' + this.attr_name(true)), function () {
|
||||||
|
self.close.call(self, self.S(this));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
open : function (dropdown, target) {
|
||||||
|
this
|
||||||
|
.css(dropdown
|
||||||
|
.addClass(this.settings.active_class), target);
|
||||||
|
dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
|
||||||
|
dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
|
||||||
|
dropdown.attr('aria-hidden', 'false');
|
||||||
|
target.attr('aria-expanded', 'true');
|
||||||
|
dropdown.focus();
|
||||||
|
dropdown.addClass('f-open-' + this.attr_name(true));
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr : function () {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.name;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle : function (target) {
|
||||||
|
if (target.hasClass(this.settings.disabled_class)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var dropdown = this.S('#' + target.data(this.data_attr()));
|
||||||
|
if (dropdown.length === 0) {
|
||||||
|
// No dropdown found, not continuing
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
|
||||||
|
|
||||||
|
if (dropdown.hasClass(this.settings.active_class)) {
|
||||||
|
this.close.call(this, dropdown);
|
||||||
|
if (dropdown.data('target') !== target.get(0)) {
|
||||||
|
this.open.call(this, dropdown, target);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.open.call(this, dropdown, target);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var dropdown = this.S('[' + this.attr_name() + '-content].open');
|
||||||
|
var target = $(dropdown.data("target"));
|
||||||
|
|
||||||
|
if (dropdown.length && target.length) {
|
||||||
|
this.css(dropdown, target);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
css : function (dropdown, target) {
|
||||||
|
var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
|
||||||
|
settings = target.data(this.attr_name(true) + '-init') || this.settings;
|
||||||
|
|
||||||
|
this.clear_idx();
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
var p = this.dirs.bottom.call(dropdown, target, settings);
|
||||||
|
|
||||||
|
dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
|
||||||
|
position : 'absolute',
|
||||||
|
width : '95%',
|
||||||
|
'max-width' : 'none',
|
||||||
|
top : p.top
|
||||||
|
});
|
||||||
|
|
||||||
|
dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.style(dropdown, target, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dropdown;
|
||||||
|
},
|
||||||
|
|
||||||
|
style : function (dropdown, target, settings) {
|
||||||
|
var css = $.extend({position : 'absolute'},
|
||||||
|
this.dirs[settings.align].call(dropdown, target, settings));
|
||||||
|
|
||||||
|
dropdown.attr('style', '').css(css);
|
||||||
|
},
|
||||||
|
|
||||||
|
// return CSS property object
|
||||||
|
// `this` is the dropdown
|
||||||
|
dirs : {
|
||||||
|
// Calculate target offset
|
||||||
|
_base : function (t) {
|
||||||
|
var o_p = this.offsetParent(),
|
||||||
|
o = o_p.offset(),
|
||||||
|
p = t.offset();
|
||||||
|
|
||||||
|
p.top -= o.top;
|
||||||
|
p.left -= o.left;
|
||||||
|
|
||||||
|
//set some flags on the p object to pass along
|
||||||
|
p.missRight = false;
|
||||||
|
p.missTop = false;
|
||||||
|
p.missLeft = false;
|
||||||
|
p.leftRightFlag = false;
|
||||||
|
|
||||||
|
//lets see if the panel will be off the screen
|
||||||
|
//get the actual width of the page and store it
|
||||||
|
var actualBodyWidth;
|
||||||
|
if (document.getElementsByClassName('row')[0]) {
|
||||||
|
actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
|
||||||
|
} else {
|
||||||
|
actualBodyWidth = window.outerWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2;
|
||||||
|
var actualBoundary = actualBodyWidth;
|
||||||
|
|
||||||
|
if (!this.hasClass('mega')) {
|
||||||
|
//miss top
|
||||||
|
if (t.offset().top <= this.outerHeight()) {
|
||||||
|
p.missTop = true;
|
||||||
|
actualBoundary = window.outerWidth - actualMarginWidth;
|
||||||
|
p.leftRightFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//miss right
|
||||||
|
if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
|
||||||
|
p.missRight = true;
|
||||||
|
p.missLeft = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//miss left
|
||||||
|
if (t.offset().left - this.outerWidth() <= 0) {
|
||||||
|
p.missLeft = true;
|
||||||
|
p.missRight = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return p;
|
||||||
|
},
|
||||||
|
|
||||||
|
top : function (t, s) {
|
||||||
|
var self = Foundation.libs.dropdown,
|
||||||
|
p = self.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
this.addClass('drop-top');
|
||||||
|
|
||||||
|
if (p.missTop == true) {
|
||||||
|
p.top = p.top + t.outerHeight() + this.outerHeight();
|
||||||
|
this.removeClass('drop-top');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.missRight == true) {
|
||||||
|
p.left = p.left - this.outerWidth() + t.outerWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||||
|
self.adjust_pip(this, t, s, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
return {left : p.left - this.outerWidth() + t.outerWidth(),
|
||||||
|
top : p.top - this.outerHeight()};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left : p.left, top : p.top - this.outerHeight()};
|
||||||
|
},
|
||||||
|
|
||||||
|
bottom : function (t, s) {
|
||||||
|
var self = Foundation.libs.dropdown,
|
||||||
|
p = self.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
if (p.missRight == true) {
|
||||||
|
p.left = p.left - this.outerWidth() + t.outerWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||||
|
self.adjust_pip(this, t, s, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.rtl) {
|
||||||
|
return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left : p.left, top : p.top + t.outerHeight()};
|
||||||
|
},
|
||||||
|
|
||||||
|
left : function (t, s) {
|
||||||
|
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
this.addClass('drop-left');
|
||||||
|
|
||||||
|
if (p.missLeft == true) {
|
||||||
|
p.left = p.left + this.outerWidth();
|
||||||
|
p.top = p.top + t.outerHeight();
|
||||||
|
this.removeClass('drop-left');
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left : p.left - this.outerWidth(), top : p.top};
|
||||||
|
},
|
||||||
|
|
||||||
|
right : function (t, s) {
|
||||||
|
var p = Foundation.libs.dropdown.dirs._base.call(this, t);
|
||||||
|
|
||||||
|
this.addClass('drop-right');
|
||||||
|
|
||||||
|
if (p.missRight == true) {
|
||||||
|
p.left = p.left - this.outerWidth();
|
||||||
|
p.top = p.top + t.outerHeight();
|
||||||
|
this.removeClass('drop-right');
|
||||||
|
} else {
|
||||||
|
p.triggeredRight = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = Foundation.libs.dropdown;
|
||||||
|
|
||||||
|
if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
|
||||||
|
self.adjust_pip(this, t, s, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {left : p.left + t.outerWidth(), top : p.top};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Insert rule to style psuedo elements
|
||||||
|
adjust_pip : function (dropdown, target, settings, position) {
|
||||||
|
var sheet = Foundation.stylesheet,
|
||||||
|
pip_offset_base = 8;
|
||||||
|
|
||||||
|
if (dropdown.hasClass(settings.mega_class)) {
|
||||||
|
pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
|
||||||
|
} else if (this.small()) {
|
||||||
|
pip_offset_base += position.left - 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.rule_idx = sheet.cssRules.length;
|
||||||
|
|
||||||
|
//default
|
||||||
|
var sel_before = '.f-dropdown.open:before',
|
||||||
|
sel_after = '.f-dropdown.open:after',
|
||||||
|
css_before = 'left: ' + pip_offset_base + 'px;',
|
||||||
|
css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
|
||||||
|
|
||||||
|
if (position.missRight == true) {
|
||||||
|
pip_offset_base = dropdown.outerWidth() - 23;
|
||||||
|
sel_before = '.f-dropdown.open:before',
|
||||||
|
sel_after = '.f-dropdown.open:after',
|
||||||
|
css_before = 'left: ' + pip_offset_base + 'px;',
|
||||||
|
css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
|
||||||
|
}
|
||||||
|
|
||||||
|
//just a case where right is fired, but its not missing right
|
||||||
|
if (position.triggeredRight == true) {
|
||||||
|
sel_before = '.f-dropdown.open:before',
|
||||||
|
sel_after = '.f-dropdown.open:after',
|
||||||
|
css_before = 'left:-12px;',
|
||||||
|
css_after = 'left:-14px;';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sheet.insertRule) {
|
||||||
|
sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
|
||||||
|
sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
|
||||||
|
} else {
|
||||||
|
sheet.addRule(sel_before, css_before, this.rule_idx);
|
||||||
|
sheet.addRule(sel_after, css_after, this.rule_idx + 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Remove old dropdown rule index
|
||||||
|
clear_idx : function () {
|
||||||
|
var sheet = Foundation.stylesheet;
|
||||||
|
|
||||||
|
if (typeof this.rule_idx !== 'undefined') {
|
||||||
|
sheet.deleteRule(this.rule_idx);
|
||||||
|
sheet.deleteRule(this.rule_idx);
|
||||||
|
delete this.rule_idx;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.fndtn.dropdown');
|
||||||
|
this.S('html, body').off('.fndtn.dropdown');
|
||||||
|
this.S(window).off('.fndtn.dropdown');
|
||||||
|
this.S('[data-dropdown-content]').off('.fndtn.dropdown');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,77 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.equalizer = {
|
||||||
|
name : 'equalizer',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
use_tallest : true,
|
||||||
|
before_height_change : $.noop,
|
||||||
|
after_height_change : $.noop,
|
||||||
|
equalize_on_stack : false
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'image_loaded');
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
|
||||||
|
this.reflow();
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
|
equalize : function (equalizer) {
|
||||||
|
var isStacked = false,
|
||||||
|
vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
|
||||||
|
settings = equalizer.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
if (vals.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var firstTopOffset = vals.first().offset().top;
|
||||||
|
settings.before_height_change();
|
||||||
|
equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
|
||||||
|
vals.height('inherit');
|
||||||
|
vals.each(function () {
|
||||||
|
var el = $(this);
|
||||||
|
if (el.offset().top !== firstTopOffset) {
|
||||||
|
isStacked = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (settings.equalize_on_stack === false) {
|
||||||
|
if (isStacked) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
|
||||||
|
|
||||||
|
if (settings.use_tallest) {
|
||||||
|
var max = Math.max.apply(null, heights);
|
||||||
|
vals.css('height', max);
|
||||||
|
} else {
|
||||||
|
var min = Math.min.apply(null, heights);
|
||||||
|
vals.css('height', min);
|
||||||
|
}
|
||||||
|
settings.after_height_change();
|
||||||
|
equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
var $eq_target = $(this);
|
||||||
|
self.image_loaded(self.S('img', this), function () {
|
||||||
|
self.equalize($eq_target)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
})(jQuery, window, window.document);
|
@ -0,0 +1,354 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.interchange = {
|
||||||
|
name : 'interchange',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
images_loaded : false,
|
||||||
|
nodes_loaded : false,
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
load_attr : 'interchange',
|
||||||
|
|
||||||
|
named_queries : {
|
||||||
|
'default' : 'only screen',
|
||||||
|
'small' : Foundation.media_queries['small'],
|
||||||
|
'small-only' : Foundation.media_queries['small-only'],
|
||||||
|
'medium' : Foundation.media_queries['medium'],
|
||||||
|
'medium-only' : Foundation.media_queries['medium-only'],
|
||||||
|
'large' : Foundation.media_queries['large'],
|
||||||
|
'large-only' : Foundation.media_queries['large-only'],
|
||||||
|
'xlarge' : Foundation.media_queries['xlarge'],
|
||||||
|
'xlarge-only' : Foundation.media_queries['xlarge-only'],
|
||||||
|
'xxlarge' : Foundation.media_queries['xxlarge'],
|
||||||
|
'landscape' : 'only screen and (orientation: landscape)',
|
||||||
|
'portrait' : 'only screen and (orientation: portrait)',
|
||||||
|
'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (min--moz-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (-o-min-device-pixel-ratio: 2/1),' +
|
||||||
|
'only screen and (min-device-pixel-ratio: 2),' +
|
||||||
|
'only screen and (min-resolution: 192dpi),' +
|
||||||
|
'only screen and (min-resolution: 2dppx)'
|
||||||
|
},
|
||||||
|
|
||||||
|
directives : {
|
||||||
|
replace : function (el, path, trigger) {
|
||||||
|
// The trigger argument, if called within the directive, fires
|
||||||
|
// an event named after the directive on the element, passing
|
||||||
|
// any parameters along to the event that you pass to trigger.
|
||||||
|
//
|
||||||
|
// ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
|
||||||
|
//
|
||||||
|
// This allows you to bind a callback like so:
|
||||||
|
// $('#interchangeContainer').on('replace', function (e, a, b, c) {
|
||||||
|
// console.log($(this).html(), a, b, c);
|
||||||
|
// });
|
||||||
|
|
||||||
|
if (/IMG/.test(el[0].nodeName)) {
|
||||||
|
var orig_path = el[0].src;
|
||||||
|
|
||||||
|
if (new RegExp(path, 'i').test(orig_path)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
el[0].src = path;
|
||||||
|
|
||||||
|
return trigger(el[0].src);
|
||||||
|
}
|
||||||
|
var last_path = el.data(this.data_attr + '-last-path'),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
if (last_path == path) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
|
||||||
|
$(el).css('background-image', 'url(' + path + ')');
|
||||||
|
el.data('interchange-last-path', path);
|
||||||
|
return trigger(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $.get(path, function (response) {
|
||||||
|
el.html(response);
|
||||||
|
el.data(self.data_attr + '-last-path', path);
|
||||||
|
trigger();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle random_str');
|
||||||
|
|
||||||
|
this.data_attr = this.set_data_attr();
|
||||||
|
$.extend(true, this.settings, method, options);
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.load('images');
|
||||||
|
this.load('nodes');
|
||||||
|
},
|
||||||
|
|
||||||
|
get_media_hash : function () {
|
||||||
|
var mediaHash = '';
|
||||||
|
for (var queryName in this.settings.named_queries ) {
|
||||||
|
mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
|
||||||
|
}
|
||||||
|
return mediaHash;
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this, prevMediaHash;
|
||||||
|
|
||||||
|
$(window)
|
||||||
|
.off('.interchange')
|
||||||
|
.on('resize.fndtn.interchange', self.throttle(function () {
|
||||||
|
var currMediaHash = self.get_media_hash();
|
||||||
|
if (currMediaHash !== prevMediaHash) {
|
||||||
|
self.resize();
|
||||||
|
}
|
||||||
|
prevMediaHash = currMediaHash;
|
||||||
|
}, 50));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var cache = this.cache;
|
||||||
|
|
||||||
|
if (!this.images_loaded || !this.nodes_loaded) {
|
||||||
|
setTimeout($.proxy(this.resize, this), 50);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var uuid in cache) {
|
||||||
|
if (cache.hasOwnProperty(uuid)) {
|
||||||
|
var passed = this.results(uuid, cache[uuid]);
|
||||||
|
|
||||||
|
if (passed) {
|
||||||
|
this.settings.directives[passed
|
||||||
|
.scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
|
||||||
|
if (arguments[0] instanceof Array) {
|
||||||
|
var args = arguments[0];
|
||||||
|
} else {
|
||||||
|
var args = Array.prototype.slice.call(arguments, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return function() {
|
||||||
|
passed.el.trigger(passed.scenario[1], args);
|
||||||
|
}
|
||||||
|
}(passed)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
results : function (uuid, scenarios) {
|
||||||
|
var count = scenarios.length;
|
||||||
|
|
||||||
|
if (count > 0) {
|
||||||
|
var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
|
||||||
|
|
||||||
|
while (count--) {
|
||||||
|
var mq, rule = scenarios[count][2];
|
||||||
|
if (this.settings.named_queries.hasOwnProperty(rule)) {
|
||||||
|
mq = matchMedia(this.settings.named_queries[rule]);
|
||||||
|
} else {
|
||||||
|
mq = matchMedia(rule);
|
||||||
|
}
|
||||||
|
if (mq.matches) {
|
||||||
|
return {el : el, scenario : scenarios[count]};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
load : function (type, force_update) {
|
||||||
|
if (typeof this['cached_' + type] === 'undefined' || force_update) {
|
||||||
|
this['update_' + type]();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this['cached_' + type];
|
||||||
|
},
|
||||||
|
|
||||||
|
update_images : function () {
|
||||||
|
var images = this.S('img[' + this.data_attr + ']'),
|
||||||
|
count = images.length,
|
||||||
|
i = count,
|
||||||
|
loaded_count = 0,
|
||||||
|
data_attr = this.data_attr;
|
||||||
|
|
||||||
|
this.cache = {};
|
||||||
|
this.cached_images = [];
|
||||||
|
this.images_loaded = (count === 0);
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
loaded_count++;
|
||||||
|
if (images[i]) {
|
||||||
|
var str = images[i].getAttribute(data_attr) || '';
|
||||||
|
|
||||||
|
if (str.length > 0) {
|
||||||
|
this.cached_images.push(images[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loaded_count === count) {
|
||||||
|
this.images_loaded = true;
|
||||||
|
this.enhance('images');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
update_nodes : function () {
|
||||||
|
var nodes = this.S('[' + this.data_attr + ']').not('img'),
|
||||||
|
count = nodes.length,
|
||||||
|
i = count,
|
||||||
|
loaded_count = 0,
|
||||||
|
data_attr = this.data_attr;
|
||||||
|
|
||||||
|
this.cached_nodes = [];
|
||||||
|
this.nodes_loaded = (count === 0);
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
loaded_count++;
|
||||||
|
var str = nodes[i].getAttribute(data_attr) || '';
|
||||||
|
|
||||||
|
if (str.length > 0) {
|
||||||
|
this.cached_nodes.push(nodes[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loaded_count === count) {
|
||||||
|
this.nodes_loaded = true;
|
||||||
|
this.enhance('nodes');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
enhance : function (type) {
|
||||||
|
var i = this['cached_' + type].length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
this.object($(this['cached_' + type][i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(window).trigger('resize').trigger('resize.fndtn.interchange');
|
||||||
|
},
|
||||||
|
|
||||||
|
convert_directive : function (directive) {
|
||||||
|
|
||||||
|
var trimmed = this.trim(directive);
|
||||||
|
|
||||||
|
if (trimmed.length > 0) {
|
||||||
|
return trimmed;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'replace';
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_scenario : function (scenario) {
|
||||||
|
// This logic had to be made more complex since some users were using commas in the url path
|
||||||
|
// So we cannot simply just split on a comma
|
||||||
|
var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
|
||||||
|
media_query = scenario[1];
|
||||||
|
|
||||||
|
if (directive_match) {
|
||||||
|
var path = directive_match[1],
|
||||||
|
directive = directive_match[2];
|
||||||
|
} else {
|
||||||
|
var cached_split = scenario[0].split(/,\s*$/),
|
||||||
|
path = cached_split[0],
|
||||||
|
directive = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return [this.trim(path), this.convert_directive(directive), this.trim(media_query)];
|
||||||
|
},
|
||||||
|
|
||||||
|
object : function (el) {
|
||||||
|
var raw_arr = this.parse_data_attr(el),
|
||||||
|
scenarios = [],
|
||||||
|
i = raw_arr.length;
|
||||||
|
|
||||||
|
if (i > 0) {
|
||||||
|
while (i--) {
|
||||||
|
var split = raw_arr[i].split(/\(([^\)]*?)(\))$/);
|
||||||
|
|
||||||
|
if (split.length > 1) {
|
||||||
|
var params = this.parse_scenario(split);
|
||||||
|
scenarios.push(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.store(el, scenarios);
|
||||||
|
},
|
||||||
|
|
||||||
|
store : function (el, scenarios) {
|
||||||
|
var uuid = this.random_str(),
|
||||||
|
current_uuid = el.data(this.add_namespace('uuid', true));
|
||||||
|
|
||||||
|
if (this.cache[current_uuid]) {
|
||||||
|
return this.cache[current_uuid];
|
||||||
|
}
|
||||||
|
|
||||||
|
el.attr(this.add_namespace('data-uuid'), uuid);
|
||||||
|
|
||||||
|
return this.cache[uuid] = scenarios;
|
||||||
|
},
|
||||||
|
|
||||||
|
trim : function (str) {
|
||||||
|
|
||||||
|
if (typeof str === 'string') {
|
||||||
|
return $.trim(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
set_data_attr : function (init) {
|
||||||
|
if (init) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return 'data-' + this.namespace + '-' + this.settings.load_attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'data-' + this.settings.load_attr;
|
||||||
|
},
|
||||||
|
|
||||||
|
parse_data_attr : function (el) {
|
||||||
|
var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
|
||||||
|
i = raw.length,
|
||||||
|
output = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (raw[i].replace(/[\W\d]+/, '').length > 4) {
|
||||||
|
output.push(raw[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
this.load('images', true);
|
||||||
|
this.load('nodes', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,932 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Modernizr = Modernizr || false;
|
||||||
|
|
||||||
|
Foundation.libs.joyride = {
|
||||||
|
name : 'joyride',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
defaults : {
|
||||||
|
expose : false, // turn on or off the expose feature
|
||||||
|
modal : true, // Whether to cover page with modal during the tour
|
||||||
|
keyboard : true, // enable left, right and esc keystrokes
|
||||||
|
tip_location : 'bottom', // 'top' or 'bottom' in relation to parent
|
||||||
|
nub_position : 'auto', // override on a per tooltip bases
|
||||||
|
scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation
|
||||||
|
scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.
|
||||||
|
timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
|
||||||
|
start_timer_on_click : true, // true or false - true requires clicking the first button start the timer
|
||||||
|
start_offset : 0, // the index of the tooltip you want to start on (index of the li)
|
||||||
|
next_button : true, // true or false to control whether a next button is used
|
||||||
|
prev_button : true, // true or false to control whether a prev button is used
|
||||||
|
tip_animation : 'fade', // 'pop' or 'fade' in each tip
|
||||||
|
pause_after : [], // array of indexes where to pause the tour after
|
||||||
|
exposed : [], // array of expose elements
|
||||||
|
tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
|
||||||
|
cookie_monster : false, // true or false to control whether cookies are used
|
||||||
|
cookie_name : 'joyride', // Name the cookie you'll use
|
||||||
|
cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
|
||||||
|
cookie_expires : 365, // set when you would like the cookie to expire.
|
||||||
|
tip_container : 'body', // Where will the tip be attached
|
||||||
|
abort_on_close : true, // When true, the close event will not fire any callback
|
||||||
|
tip_location_patterns : {
|
||||||
|
top : ['bottom'],
|
||||||
|
bottom : [], // bottom should not need to be repositioned
|
||||||
|
left : ['right', 'top', 'bottom'],
|
||||||
|
right : ['left', 'top', 'bottom']
|
||||||
|
},
|
||||||
|
post_ride_callback : function () {}, // A method to call once the tour closes (canceled or complete)
|
||||||
|
post_step_callback : function () {}, // A method to call after each step
|
||||||
|
pre_step_callback : function () {}, // A method to call before each step
|
||||||
|
pre_ride_callback : function () {}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)
|
||||||
|
post_expose_callback : function () {}, // A method to call after an element has been exposed
|
||||||
|
template : { // HTML segments for tip layout
|
||||||
|
link : '<a href="#close" class="joyride-close-tip">×</a>',
|
||||||
|
timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
|
||||||
|
tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
|
||||||
|
wrapper : '<div class="joyride-content-wrapper"></div>',
|
||||||
|
button : '<a href="#" class="small button joyride-next-tip"></a>',
|
||||||
|
prev_button : '<a href="#" class="small button joyride-prev-tip"></a>',
|
||||||
|
modal : '<div class="joyride-modal-bg"></div>',
|
||||||
|
expose : '<div class="joyride-expose-wrapper"></div>',
|
||||||
|
expose_cover : '<div class="joyride-expose-cover"></div>'
|
||||||
|
},
|
||||||
|
expose_add_class : '' // One or more space-separated class names to be added to exposed element
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle random_str');
|
||||||
|
|
||||||
|
this.settings = this.settings || $.extend({}, this.defaults, (options || method));
|
||||||
|
|
||||||
|
this.bindings(method, options)
|
||||||
|
},
|
||||||
|
|
||||||
|
go_next : function () {
|
||||||
|
if (this.settings.$li.next().length < 1) {
|
||||||
|
this.end();
|
||||||
|
} else if (this.settings.timer > 0) {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
this.startTimer();
|
||||||
|
} else {
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
go_prev : function () {
|
||||||
|
if (this.settings.$li.prev().length < 1) {
|
||||||
|
// Do nothing if there are no prev element
|
||||||
|
} else if (this.settings.timer > 0) {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
this.hide();
|
||||||
|
this.show(null, true);
|
||||||
|
this.startTimer();
|
||||||
|
} else {
|
||||||
|
this.hide();
|
||||||
|
this.show(null, true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.joyride')
|
||||||
|
.on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.go_next()
|
||||||
|
}.bind(this))
|
||||||
|
.on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.go_prev();
|
||||||
|
}.bind(this))
|
||||||
|
|
||||||
|
.on('click.fndtn.joyride', '.joyride-close-tip', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.end(this.settings.abort_on_close);
|
||||||
|
}.bind(this))
|
||||||
|
|
||||||
|
.on('keyup.fndtn.joyride', function (e) {
|
||||||
|
// Don't do anything if keystrokes are disabled
|
||||||
|
// or if the joyride is not being shown
|
||||||
|
if (!this.settings.keyboard || !this.settings.riding) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (e.which) {
|
||||||
|
case 39: // right arrow
|
||||||
|
e.preventDefault();
|
||||||
|
this.go_next();
|
||||||
|
break;
|
||||||
|
case 37: // left arrow
|
||||||
|
e.preventDefault();
|
||||||
|
this.go_prev();
|
||||||
|
break;
|
||||||
|
case 27: // escape
|
||||||
|
e.preventDefault();
|
||||||
|
this.end(this.settings.abort_on_close);
|
||||||
|
}
|
||||||
|
}.bind(this));
|
||||||
|
|
||||||
|
$(window)
|
||||||
|
.off('.joyride')
|
||||||
|
.on('resize.fndtn.joyride', self.throttle(function () {
|
||||||
|
if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {
|
||||||
|
if (self.settings.exposed.length > 0) {
|
||||||
|
var $els = $(self.settings.exposed);
|
||||||
|
|
||||||
|
$els.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
self.un_expose($this);
|
||||||
|
self.expose($this);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.is_phone()) {
|
||||||
|
self.pos_phone();
|
||||||
|
} else {
|
||||||
|
self.pos_default(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100));
|
||||||
|
},
|
||||||
|
|
||||||
|
start : function () {
|
||||||
|
var self = this,
|
||||||
|
$this = $('[' + this.attr_name() + ']', this.scope),
|
||||||
|
integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
|
||||||
|
int_settings_count = integer_settings.length;
|
||||||
|
|
||||||
|
if (!$this.length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.settings.init) {
|
||||||
|
this.events();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings = $this.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
// non configureable settings
|
||||||
|
this.settings.$content_el = $this;
|
||||||
|
this.settings.$body = $(this.settings.tip_container);
|
||||||
|
this.settings.body_offset = $(this.settings.tip_container).position();
|
||||||
|
this.settings.$tip_content = this.settings.$content_el.find('> li');
|
||||||
|
this.settings.paused = false;
|
||||||
|
this.settings.attempts = 0;
|
||||||
|
this.settings.riding = true;
|
||||||
|
|
||||||
|
// can we create cookies?
|
||||||
|
if (typeof $.cookie !== 'function') {
|
||||||
|
this.settings.cookie_monster = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate the tips and insert into dom.
|
||||||
|
if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {
|
||||||
|
this.settings.$tip_content.each(function (index) {
|
||||||
|
var $this = $(this);
|
||||||
|
this.settings = $.extend({}, self.defaults, self.data_options($this));
|
||||||
|
|
||||||
|
// Make sure that settings parsed from data_options are integers where necessary
|
||||||
|
var i = int_settings_count;
|
||||||
|
while (i--) {
|
||||||
|
self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
|
||||||
|
}
|
||||||
|
self.create({$li : $this, index : index});
|
||||||
|
});
|
||||||
|
|
||||||
|
// show first tip
|
||||||
|
if (!this.settings.start_timer_on_click && this.settings.timer > 0) {
|
||||||
|
this.show('init');
|
||||||
|
this.startTimer();
|
||||||
|
} else {
|
||||||
|
this.show('init');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resume : function () {
|
||||||
|
this.set_li();
|
||||||
|
this.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
tip_template : function (opts) {
|
||||||
|
var $blank, content;
|
||||||
|
|
||||||
|
opts.tip_class = opts.tip_class || '';
|
||||||
|
|
||||||
|
$blank = $(this.settings.template.tip).addClass(opts.tip_class);
|
||||||
|
content = $.trim($(opts.li).html()) +
|
||||||
|
this.prev_button_text(opts.prev_button_text, opts.index) +
|
||||||
|
this.button_text(opts.button_text) +
|
||||||
|
this.settings.template.link +
|
||||||
|
this.timer_instance(opts.index);
|
||||||
|
|
||||||
|
$blank.append($(this.settings.template.wrapper));
|
||||||
|
$blank.first().attr(this.add_namespace('data-index'), opts.index);
|
||||||
|
$('.joyride-content-wrapper', $blank).append(content);
|
||||||
|
|
||||||
|
return $blank[0];
|
||||||
|
},
|
||||||
|
|
||||||
|
timer_instance : function (index) {
|
||||||
|
var txt;
|
||||||
|
|
||||||
|
if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {
|
||||||
|
txt = '';
|
||||||
|
} else {
|
||||||
|
txt = $(this.settings.template.timer)[0].outerHTML;
|
||||||
|
}
|
||||||
|
return txt;
|
||||||
|
},
|
||||||
|
|
||||||
|
button_text : function (txt) {
|
||||||
|
if (this.settings.tip_settings.next_button) {
|
||||||
|
txt = $.trim(txt) || 'Next';
|
||||||
|
txt = $(this.settings.template.button).append(txt)[0].outerHTML;
|
||||||
|
} else {
|
||||||
|
txt = '';
|
||||||
|
}
|
||||||
|
return txt;
|
||||||
|
},
|
||||||
|
|
||||||
|
prev_button_text : function (txt, idx) {
|
||||||
|
if (this.settings.tip_settings.prev_button) {
|
||||||
|
txt = $.trim(txt) || 'Previous';
|
||||||
|
|
||||||
|
// Add the disabled class to the button if it's the first element
|
||||||
|
if (idx == 0) {
|
||||||
|
txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;
|
||||||
|
} else {
|
||||||
|
txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
txt = '';
|
||||||
|
}
|
||||||
|
return txt;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function (opts) {
|
||||||
|
this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));
|
||||||
|
var buttonText = opts.$li.attr(this.add_namespace('data-button')) || opts.$li.attr(this.add_namespace('data-text')),
|
||||||
|
prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev')) || opts.$li.attr(this.add_namespace('data-prev-text')),
|
||||||
|
tipClass = opts.$li.attr('class'),
|
||||||
|
$tip_content = $(this.tip_template({
|
||||||
|
tip_class : tipClass,
|
||||||
|
index : opts.index,
|
||||||
|
button_text : buttonText,
|
||||||
|
prev_button_text : prevButtonText,
|
||||||
|
li : opts.$li
|
||||||
|
}));
|
||||||
|
|
||||||
|
$(this.settings.tip_container).append($tip_content);
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function (init, is_prev) {
|
||||||
|
var $timer = null;
|
||||||
|
|
||||||
|
// are we paused?
|
||||||
|
if (this.settings.$li === undefined || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {
|
||||||
|
|
||||||
|
// don't go to the next li if the tour was paused
|
||||||
|
if (this.settings.paused) {
|
||||||
|
this.settings.paused = false;
|
||||||
|
} else {
|
||||||
|
this.set_li(init, is_prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.attempts = 0;
|
||||||
|
|
||||||
|
if (this.settings.$li.length && this.settings.$target.length > 0) {
|
||||||
|
if (init) { //run when we first start
|
||||||
|
this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||||
|
if (this.settings.modal) {
|
||||||
|
this.show_modal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);
|
||||||
|
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));
|
||||||
|
|
||||||
|
this.settings.timer = parseInt(this.settings.timer, 10);
|
||||||
|
|
||||||
|
this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];
|
||||||
|
|
||||||
|
// scroll and hide bg if not modal
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
var joyridemodalbg = $('.joyride-modal-bg');
|
||||||
|
if (/pop/i.test(this.settings.tipAnimation)) {
|
||||||
|
joyridemodalbg.hide();
|
||||||
|
} else {
|
||||||
|
joyridemodalbg.fadeOut(this.settings.tipAnimationFadeSpeed);
|
||||||
|
}
|
||||||
|
this.scroll_to();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.is_phone()) {
|
||||||
|
this.pos_phone(true);
|
||||||
|
} else {
|
||||||
|
this.pos_default(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$timer = this.settings.$next_tip.find('.joyride-timer-indicator');
|
||||||
|
|
||||||
|
if (/pop/i.test(this.settings.tip_animation)) {
|
||||||
|
|
||||||
|
$timer.width(0);
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$timer.animate({
|
||||||
|
width : $timer.parent().width()
|
||||||
|
}, this.settings.timer, 'linear');
|
||||||
|
}.bind(this), this.settings.tip_animation_fade_speed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (/fade/i.test(this.settings.tip_animation)) {
|
||||||
|
|
||||||
|
$timer.width(0);
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
|
||||||
|
this.settings.$next_tip
|
||||||
|
.fadeIn(this.settings.tip_animation_fade_speed)
|
||||||
|
.show();
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$timer.animate({
|
||||||
|
width : $timer.parent().width()
|
||||||
|
}, this.settings.timer, 'linear');
|
||||||
|
}.bind(this), this.settings.tip_animation_fade_speed);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.$current_tip = this.settings.$next_tip;
|
||||||
|
|
||||||
|
// skip non-existant targets
|
||||||
|
} else if (this.settings.$li && this.settings.$target.length < 1) {
|
||||||
|
|
||||||
|
this.show(init, is_prev);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.end();
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.settings.paused = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_phone : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function () {
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.un_expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.settings.modal) {
|
||||||
|
$('.joyride-modal-bg').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent scroll bouncing...wait to remove from layout
|
||||||
|
this.settings.$current_tip.css('visibility', 'hidden');
|
||||||
|
setTimeout($.proxy(function () {
|
||||||
|
this.hide();
|
||||||
|
this.css('visibility', 'visible');
|
||||||
|
}, this.settings.$current_tip), 0);
|
||||||
|
this.settings.post_step_callback(this.settings.$li.index(),
|
||||||
|
this.settings.$current_tip);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_li : function (init, is_prev) {
|
||||||
|
if (init) {
|
||||||
|
this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);
|
||||||
|
this.set_next_tip();
|
||||||
|
this.settings.$current_tip = this.settings.$next_tip;
|
||||||
|
} else {
|
||||||
|
if (is_prev) {
|
||||||
|
this.settings.$li = this.settings.$li.prev();
|
||||||
|
} else {
|
||||||
|
this.settings.$li = this.settings.$li.next();
|
||||||
|
}
|
||||||
|
this.set_next_tip();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.set_target();
|
||||||
|
},
|
||||||
|
|
||||||
|
set_next_tip : function () {
|
||||||
|
this.settings.$next_tip = $('.joyride-tip-guide').eq(this.settings.$li.index());
|
||||||
|
this.settings.$next_tip.data('closed', '');
|
||||||
|
},
|
||||||
|
|
||||||
|
set_target : function () {
|
||||||
|
var cl = this.settings.$li.attr(this.add_namespace('data-class')),
|
||||||
|
id = this.settings.$li.attr(this.add_namespace('data-id')),
|
||||||
|
$sel = function () {
|
||||||
|
if (id) {
|
||||||
|
return $(document.getElementById(id));
|
||||||
|
} else if (cl) {
|
||||||
|
return $('.' + cl).first();
|
||||||
|
} else {
|
||||||
|
return $('body');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.settings.$target = $sel();
|
||||||
|
},
|
||||||
|
|
||||||
|
scroll_to : function () {
|
||||||
|
var window_half, tipOffset;
|
||||||
|
|
||||||
|
window_half = $(window).height() / 2;
|
||||||
|
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());
|
||||||
|
|
||||||
|
if (tipOffset != 0) {
|
||||||
|
$('html, body').stop().animate({
|
||||||
|
scrollTop : tipOffset
|
||||||
|
}, this.settings.scroll_speed, 'swing');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
paused : function () {
|
||||||
|
return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);
|
||||||
|
},
|
||||||
|
|
||||||
|
restart : function () {
|
||||||
|
this.hide();
|
||||||
|
this.settings.$li = undefined;
|
||||||
|
this.show('init');
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_default : function (init) {
|
||||||
|
var $nub = this.settings.$next_tip.find('.joyride-nub'),
|
||||||
|
nub_width = Math.ceil($nub.outerWidth() / 2),
|
||||||
|
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||||
|
toggle = init || false;
|
||||||
|
|
||||||
|
// tip must not be "display: none" to calculate position
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.css('visibility', 'hidden');
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,
|
||||||
|
leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;
|
||||||
|
|
||||||
|
if (this.bottom()) {
|
||||||
|
if (this.rtl) {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
|
||||||
|
left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),
|
||||||
|
left : this.settings.$target.offset().left + leftAdjustment});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');
|
||||||
|
|
||||||
|
} else if (this.top()) {
|
||||||
|
if (this.rtl) {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
|
||||||
|
left : this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});
|
||||||
|
} else {
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),
|
||||||
|
left : this.settings.$target.offset().left + leftAdjustment});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');
|
||||||
|
|
||||||
|
} else if (this.right()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : this.settings.$target.offset().top + topAdjustment,
|
||||||
|
left : (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');
|
||||||
|
|
||||||
|
} else if (this.left()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : this.settings.$target.offset().top + topAdjustment,
|
||||||
|
left : (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});
|
||||||
|
|
||||||
|
this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {
|
||||||
|
|
||||||
|
$nub.removeClass('bottom')
|
||||||
|
.removeClass('top')
|
||||||
|
.removeClass('right')
|
||||||
|
.removeClass('left');
|
||||||
|
|
||||||
|
this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];
|
||||||
|
|
||||||
|
this.settings.attempts++;
|
||||||
|
|
||||||
|
this.pos_default();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (this.settings.$li.length) {
|
||||||
|
|
||||||
|
this.pos_modal($nub);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.hide();
|
||||||
|
this.settings.$next_tip.css('visibility', 'visible');
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_phone : function (init) {
|
||||||
|
var tip_height = this.settings.$next_tip.outerHeight(),
|
||||||
|
tip_offset = this.settings.$next_tip.offset(),
|
||||||
|
target_height = this.settings.$target.outerHeight(),
|
||||||
|
$nub = $('.joyride-nub', this.settings.$next_tip),
|
||||||
|
nub_height = Math.ceil($nub.outerHeight() / 2),
|
||||||
|
toggle = init || false;
|
||||||
|
|
||||||
|
$nub.removeClass('bottom')
|
||||||
|
.removeClass('top')
|
||||||
|
.removeClass('right')
|
||||||
|
.removeClass('left');
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.css('visibility', 'hidden');
|
||||||
|
this.settings.$next_tip.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!/body/i.test(this.settings.$target.selector)) {
|
||||||
|
|
||||||
|
if (this.top()) {
|
||||||
|
|
||||||
|
this.settings.$next_tip.offset({top : this.settings.$target.offset().top - tip_height - nub_height});
|
||||||
|
$nub.addClass('bottom');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
this.settings.$next_tip.offset({top : this.settings.$target.offset().top + target_height + nub_height});
|
||||||
|
$nub.addClass('top');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (this.settings.$li.length) {
|
||||||
|
this.pos_modal($nub);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toggle) {
|
||||||
|
this.settings.$next_tip.hide();
|
||||||
|
this.settings.$next_tip.css('visibility', 'visible');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
pos_modal : function ($nub) {
|
||||||
|
this.center();
|
||||||
|
$nub.hide();
|
||||||
|
|
||||||
|
this.show_modal();
|
||||||
|
},
|
||||||
|
|
||||||
|
show_modal : function () {
|
||||||
|
if (!this.settings.$next_tip.data('closed')) {
|
||||||
|
var joyridemodalbg = $('.joyride-modal-bg');
|
||||||
|
if (joyridemodalbg.length < 1) {
|
||||||
|
var joyridemodalbg = $(this.settings.template.modal);
|
||||||
|
joyridemodalbg.appendTo('body');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/pop/i.test(this.settings.tip_animation)) {
|
||||||
|
joyridemodalbg.show();
|
||||||
|
} else {
|
||||||
|
joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
expose : function () {
|
||||||
|
var expose,
|
||||||
|
exposeCover,
|
||||||
|
el,
|
||||||
|
origCSS,
|
||||||
|
origClasses,
|
||||||
|
randId = 'expose-' + this.random_str(6);
|
||||||
|
|
||||||
|
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||||
|
el = arguments[0];
|
||||||
|
} else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
|
||||||
|
el = this.settings.$target;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (el.length < 1) {
|
||||||
|
if (window.console) {
|
||||||
|
console.error('element not valid', el);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
expose = $(this.settings.template.expose);
|
||||||
|
this.settings.$body.append(expose);
|
||||||
|
expose.css({
|
||||||
|
top : el.offset().top,
|
||||||
|
left : el.offset().left,
|
||||||
|
width : el.outerWidth(true),
|
||||||
|
height : el.outerHeight(true)
|
||||||
|
});
|
||||||
|
|
||||||
|
exposeCover = $(this.settings.template.expose_cover);
|
||||||
|
|
||||||
|
origCSS = {
|
||||||
|
zIndex : el.css('z-index'),
|
||||||
|
position : el.css('position')
|
||||||
|
};
|
||||||
|
|
||||||
|
origClasses = el.attr('class') == null ? '' : el.attr('class');
|
||||||
|
|
||||||
|
el.css('z-index', parseInt(expose.css('z-index')) + 1);
|
||||||
|
|
||||||
|
if (origCSS.position == 'static') {
|
||||||
|
el.css('position', 'relative');
|
||||||
|
}
|
||||||
|
|
||||||
|
el.data('expose-css', origCSS);
|
||||||
|
el.data('orig-class', origClasses);
|
||||||
|
el.attr('class', origClasses + ' ' + this.settings.expose_add_class);
|
||||||
|
|
||||||
|
exposeCover.css({
|
||||||
|
top : el.offset().top,
|
||||||
|
left : el.offset().left,
|
||||||
|
width : el.outerWidth(true),
|
||||||
|
height : el.outerHeight(true)
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.settings.modal) {
|
||||||
|
this.show_modal();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.$body.append(exposeCover);
|
||||||
|
expose.addClass(randId);
|
||||||
|
exposeCover.addClass(randId);
|
||||||
|
el.data('expose', randId);
|
||||||
|
this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);
|
||||||
|
this.add_exposed(el);
|
||||||
|
},
|
||||||
|
|
||||||
|
un_expose : function () {
|
||||||
|
var exposeId,
|
||||||
|
el,
|
||||||
|
expose,
|
||||||
|
origCSS,
|
||||||
|
origClasses,
|
||||||
|
clearAll = false;
|
||||||
|
|
||||||
|
if (arguments.length > 0 && arguments[0] instanceof $) {
|
||||||
|
el = arguments[0];
|
||||||
|
} else if (this.settings.$target && !/body/i.test(this.settings.$target.selector)) {
|
||||||
|
el = this.settings.$target;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (el.length < 1) {
|
||||||
|
if (window.console) {
|
||||||
|
console.error('element not valid', el);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
exposeId = el.data('expose');
|
||||||
|
expose = $('.' + exposeId);
|
||||||
|
|
||||||
|
if (arguments.length > 1) {
|
||||||
|
clearAll = arguments[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clearAll === true) {
|
||||||
|
$('.joyride-expose-wrapper,.joyride-expose-cover').remove();
|
||||||
|
} else {
|
||||||
|
expose.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
origCSS = el.data('expose-css');
|
||||||
|
|
||||||
|
if (origCSS.zIndex == 'auto') {
|
||||||
|
el.css('z-index', '');
|
||||||
|
} else {
|
||||||
|
el.css('z-index', origCSS.zIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (origCSS.position != el.css('position')) {
|
||||||
|
if (origCSS.position == 'static') {// this is default, no need to set it.
|
||||||
|
el.css('position', '');
|
||||||
|
} else {
|
||||||
|
el.css('position', origCSS.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
origClasses = el.data('orig-class');
|
||||||
|
el.attr('class', origClasses);
|
||||||
|
el.removeData('orig-classes');
|
||||||
|
|
||||||
|
el.removeData('expose');
|
||||||
|
el.removeData('expose-z-index');
|
||||||
|
this.remove_exposed(el);
|
||||||
|
},
|
||||||
|
|
||||||
|
add_exposed : function (el) {
|
||||||
|
this.settings.exposed = this.settings.exposed || [];
|
||||||
|
if (el instanceof $ || typeof el === 'object') {
|
||||||
|
this.settings.exposed.push(el[0]);
|
||||||
|
} else if (typeof el == 'string') {
|
||||||
|
this.settings.exposed.push(el);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
remove_exposed : function (el) {
|
||||||
|
var search, i;
|
||||||
|
if (el instanceof $) {
|
||||||
|
search = el[0]
|
||||||
|
} else if (typeof el == 'string') {
|
||||||
|
search = el;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.settings.exposed = this.settings.exposed || [];
|
||||||
|
i = this.settings.exposed.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (this.settings.exposed[i] == search) {
|
||||||
|
this.settings.exposed.splice(i, 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
center : function () {
|
||||||
|
var $w = $(window);
|
||||||
|
|
||||||
|
this.settings.$next_tip.css({
|
||||||
|
top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),
|
||||||
|
left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
bottom : function () {
|
||||||
|
return /bottom/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
top : function () {
|
||||||
|
return /top/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
right : function () {
|
||||||
|
return /right/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
left : function () {
|
||||||
|
return /left/i.test(this.settings.tip_settings.tip_location);
|
||||||
|
},
|
||||||
|
|
||||||
|
corners : function (el) {
|
||||||
|
var w = $(window),
|
||||||
|
window_half = w.height() / 2,
|
||||||
|
//using this to calculate since scroll may not have finished yet.
|
||||||
|
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),
|
||||||
|
right = w.width() + w.scrollLeft(),
|
||||||
|
offsetBottom = w.height() + tipOffset,
|
||||||
|
bottom = w.height() + w.scrollTop(),
|
||||||
|
top = w.scrollTop();
|
||||||
|
|
||||||
|
if (tipOffset < top) {
|
||||||
|
if (tipOffset < 0) {
|
||||||
|
top = 0;
|
||||||
|
} else {
|
||||||
|
top = tipOffset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (offsetBottom > bottom) {
|
||||||
|
bottom = offsetBottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
el.offset().top < top,
|
||||||
|
right < el.offset().left + el.outerWidth(),
|
||||||
|
bottom < el.offset().top + el.outerHeight(),
|
||||||
|
w.scrollLeft() > el.offset().left
|
||||||
|
];
|
||||||
|
},
|
||||||
|
|
||||||
|
visible : function (hidden_corners) {
|
||||||
|
var i = hidden_corners.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (hidden_corners[i]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
nub_position : function (nub, pos, def) {
|
||||||
|
if (pos === 'auto') {
|
||||||
|
nub.addClass(def);
|
||||||
|
} else {
|
||||||
|
nub.addClass(pos);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
startTimer : function () {
|
||||||
|
if (this.settings.$li.length) {
|
||||||
|
this.settings.automate = setTimeout(function () {
|
||||||
|
this.hide();
|
||||||
|
this.show();
|
||||||
|
this.startTimer();
|
||||||
|
}.bind(this), this.settings.timer);
|
||||||
|
} else {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
end : function (abort) {
|
||||||
|
if (this.settings.cookie_monster) {
|
||||||
|
$.cookie(this.settings.cookie_name, 'ridden', {expires : this.settings.cookie_expires, domain : this.settings.cookie_domain});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.timer > 0) {
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.settings.modal && this.settings.expose) {
|
||||||
|
this.un_expose();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unplug keystrokes listener
|
||||||
|
$(this.scope).off('keyup.joyride')
|
||||||
|
|
||||||
|
this.settings.$next_tip.data('closed', true);
|
||||||
|
this.settings.riding = false;
|
||||||
|
|
||||||
|
$('.joyride-modal-bg').hide();
|
||||||
|
this.settings.$current_tip.hide();
|
||||||
|
|
||||||
|
if (typeof abort === 'undefined' || abort === false) {
|
||||||
|
this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||||
|
this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.joyride-tip-guide').remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
$(this.scope).off('.joyride');
|
||||||
|
$(window).off('.joyride');
|
||||||
|
$('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
|
||||||
|
$('.joyride-tip-guide, .joyride-modal-bg').remove();
|
||||||
|
clearTimeout(this.settings.automate);
|
||||||
|
this.settings = {};
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,703 @@
|
|||||||
|
/*
|
||||||
|
* Foundation Responsive Library
|
||||||
|
* http://foundation.zurb.com
|
||||||
|
* Copyright 2014, ZURB
|
||||||
|
* Free to use under the MIT license.
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var header_helpers = function (class_array) {
|
||||||
|
var i = class_array.length;
|
||||||
|
var head = $('head');
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (head.has('.' + class_array[i]).length === 0) {
|
||||||
|
head.append('<meta class="' + class_array[i] + '" />');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
header_helpers([
|
||||||
|
'foundation-mq-small',
|
||||||
|
'foundation-mq-small-only',
|
||||||
|
'foundation-mq-medium',
|
||||||
|
'foundation-mq-medium-only',
|
||||||
|
'foundation-mq-large',
|
||||||
|
'foundation-mq-large-only',
|
||||||
|
'foundation-mq-xlarge',
|
||||||
|
'foundation-mq-xlarge-only',
|
||||||
|
'foundation-mq-xxlarge',
|
||||||
|
'foundation-data-attribute-namespace']);
|
||||||
|
|
||||||
|
// Enable FastClick if present
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
if (typeof FastClick !== 'undefined') {
|
||||||
|
// Don't attach to body if undefined
|
||||||
|
if (typeof document.body !== 'undefined') {
|
||||||
|
FastClick.attach(document.body);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// private Fast Selector wrapper,
|
||||||
|
// returns jQuery object. Only use where
|
||||||
|
// getElementById is not available.
|
||||||
|
var S = function (selector, context) {
|
||||||
|
if (typeof selector === 'string') {
|
||||||
|
if (context) {
|
||||||
|
var cont;
|
||||||
|
if (context.jquery) {
|
||||||
|
cont = context[0];
|
||||||
|
if (!cont) {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cont = context;
|
||||||
|
}
|
||||||
|
return $(cont.querySelectorAll(selector));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(document.querySelectorAll(selector));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $(selector, context);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Namespace functions.
|
||||||
|
|
||||||
|
var attr_name = function (init) {
|
||||||
|
var arr = [];
|
||||||
|
if (!init) {
|
||||||
|
arr.push('data');
|
||||||
|
}
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
arr.push(this.namespace);
|
||||||
|
}
|
||||||
|
arr.push(this.name);
|
||||||
|
|
||||||
|
return arr.join('-');
|
||||||
|
};
|
||||||
|
|
||||||
|
var add_namespace = function (str) {
|
||||||
|
var parts = str.split('-'),
|
||||||
|
i = parts.length,
|
||||||
|
arr = [];
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (i !== 0) {
|
||||||
|
arr.push(parts[i]);
|
||||||
|
} else {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
arr.push(this.namespace, parts[i]);
|
||||||
|
} else {
|
||||||
|
arr.push(parts[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr.reverse().join('-');
|
||||||
|
};
|
||||||
|
|
||||||
|
// Event binding and data-options updating.
|
||||||
|
|
||||||
|
var bindings = function (method, options) {
|
||||||
|
var self = this,
|
||||||
|
bind = function(){
|
||||||
|
var $this = S(this),
|
||||||
|
should_bind_events = !$this.data(self.attr_name(true) + '-init');
|
||||||
|
$this.data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options($this)));
|
||||||
|
|
||||||
|
if (should_bind_events) {
|
||||||
|
self.events(this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (S(this.scope).is('[' + this.attr_name() +']')) {
|
||||||
|
bind.call(this.scope);
|
||||||
|
} else {
|
||||||
|
S('[' + this.attr_name() +']', this.scope).each(bind);
|
||||||
|
}
|
||||||
|
// # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
|
||||||
|
if (typeof method === 'string') {
|
||||||
|
return this[method].call(this, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
var single_image_loaded = function (image, callback) {
|
||||||
|
function loaded () {
|
||||||
|
callback(image[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bindLoad () {
|
||||||
|
this.one('load', loaded);
|
||||||
|
|
||||||
|
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
|
||||||
|
var src = this.attr( 'src' ),
|
||||||
|
param = src.match( /\?/ ) ? '&' : '?';
|
||||||
|
|
||||||
|
param += 'random=' + (new Date()).getTime();
|
||||||
|
this.attr('src', src + param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!image.attr('src')) {
|
||||||
|
loaded();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (image[0].complete || image[0].readyState === 4) {
|
||||||
|
loaded();
|
||||||
|
} else {
|
||||||
|
bindLoad.call(image);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
https://github.com/paulirish/matchMedia.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
window.matchMedia = window.matchMedia || (function ( doc ) {
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var bool,
|
||||||
|
docElem = doc.documentElement,
|
||||||
|
refNode = docElem.firstElementChild || docElem.firstChild,
|
||||||
|
// fakeBody required for <FF4 when executed in <head>
|
||||||
|
fakeBody = doc.createElement( 'body' ),
|
||||||
|
div = doc.createElement( 'div' );
|
||||||
|
|
||||||
|
div.id = 'mq-test-1';
|
||||||
|
div.style.cssText = 'position:absolute;top:-100em';
|
||||||
|
fakeBody.style.background = 'none';
|
||||||
|
fakeBody.appendChild(div);
|
||||||
|
|
||||||
|
return function (q) {
|
||||||
|
|
||||||
|
div.innerHTML = '­<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
|
||||||
|
|
||||||
|
docElem.insertBefore( fakeBody, refNode );
|
||||||
|
bool = div.offsetWidth === 42;
|
||||||
|
docElem.removeChild( fakeBody );
|
||||||
|
|
||||||
|
return {
|
||||||
|
matches : bool,
|
||||||
|
media : q
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}( document ));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* jquery.requestAnimationFrame
|
||||||
|
* https://github.com/gnarf37/jquery-requestAnimationFrame
|
||||||
|
* Requires jQuery 1.8+
|
||||||
|
*
|
||||||
|
* Copyright (c) 2012 Corey Frang
|
||||||
|
* Licensed under the MIT license.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function(jQuery) {
|
||||||
|
|
||||||
|
|
||||||
|
// requestAnimationFrame polyfill adapted from Erik Möller
|
||||||
|
// fixes from Paul Irish and Tino Zijdel
|
||||||
|
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
||||||
|
// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
|
||||||
|
|
||||||
|
var animating,
|
||||||
|
lastTime = 0,
|
||||||
|
vendors = ['webkit', 'moz'],
|
||||||
|
requestAnimationFrame = window.requestAnimationFrame,
|
||||||
|
cancelAnimationFrame = window.cancelAnimationFrame,
|
||||||
|
jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
|
||||||
|
|
||||||
|
for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
|
||||||
|
requestAnimationFrame = window[ vendors[lastTime] + 'RequestAnimationFrame' ];
|
||||||
|
cancelAnimationFrame = cancelAnimationFrame ||
|
||||||
|
window[ vendors[lastTime] + 'CancelAnimationFrame' ] ||
|
||||||
|
window[ vendors[lastTime] + 'CancelRequestAnimationFrame' ];
|
||||||
|
}
|
||||||
|
|
||||||
|
function raf() {
|
||||||
|
if (animating) {
|
||||||
|
requestAnimationFrame(raf);
|
||||||
|
|
||||||
|
if (jqueryFxAvailable) {
|
||||||
|
jQuery.fx.tick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (requestAnimationFrame) {
|
||||||
|
// use rAF
|
||||||
|
window.requestAnimationFrame = requestAnimationFrame;
|
||||||
|
window.cancelAnimationFrame = cancelAnimationFrame;
|
||||||
|
|
||||||
|
if (jqueryFxAvailable) {
|
||||||
|
jQuery.fx.timer = function (timer) {
|
||||||
|
if (timer() && jQuery.timers.push(timer) && !animating) {
|
||||||
|
animating = true;
|
||||||
|
raf();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
jQuery.fx.stop = function () {
|
||||||
|
animating = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// polyfill
|
||||||
|
window.requestAnimationFrame = function (callback) {
|
||||||
|
var currTime = new Date().getTime(),
|
||||||
|
timeToCall = Math.max(0, 16 - (currTime - lastTime)),
|
||||||
|
id = window.setTimeout(function () {
|
||||||
|
callback(currTime + timeToCall);
|
||||||
|
}, timeToCall);
|
||||||
|
lastTime = currTime + timeToCall;
|
||||||
|
return id;
|
||||||
|
};
|
||||||
|
|
||||||
|
window.cancelAnimationFrame = function (id) {
|
||||||
|
clearTimeout(id);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}( $ ));
|
||||||
|
|
||||||
|
function removeQuotes (string) {
|
||||||
|
if (typeof string === 'string' || string instanceof String) {
|
||||||
|
string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
window.Foundation = {
|
||||||
|
name : 'Foundation',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
media_queries : {
|
||||||
|
'small' : S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'small-only' : S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'medium' : S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'medium-only' : S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'large' : S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'large-only' : S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'xlarge' : S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'xlarge-only' : S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
|
||||||
|
'xxlarge' : S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
|
||||||
|
},
|
||||||
|
|
||||||
|
stylesheet : $('<style></style>').appendTo('head')[0].sheet,
|
||||||
|
|
||||||
|
global : {
|
||||||
|
namespace : undefined
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, libraries, method, options, response) {
|
||||||
|
var args = [scope, method, options, response],
|
||||||
|
responses = [];
|
||||||
|
|
||||||
|
// check RTL
|
||||||
|
this.rtl = /rtl/i.test(S('html').attr('dir'));
|
||||||
|
|
||||||
|
// set foundation global scope
|
||||||
|
this.scope = scope || this.scope;
|
||||||
|
|
||||||
|
this.set_namespace();
|
||||||
|
|
||||||
|
if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
|
||||||
|
if (this.libs.hasOwnProperty(libraries)) {
|
||||||
|
responses.push(this.init_lib(libraries, args));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var lib in this.libs) {
|
||||||
|
responses.push(this.init_lib(lib, libraries));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
S(window).load(function () {
|
||||||
|
S(window)
|
||||||
|
.trigger('resize.fndtn.clearing')
|
||||||
|
.trigger('resize.fndtn.dropdown')
|
||||||
|
.trigger('resize.fndtn.equalizer')
|
||||||
|
.trigger('resize.fndtn.interchange')
|
||||||
|
.trigger('resize.fndtn.joyride')
|
||||||
|
.trigger('resize.fndtn.magellan')
|
||||||
|
.trigger('resize.fndtn.topbar')
|
||||||
|
.trigger('resize.fndtn.slider');
|
||||||
|
});
|
||||||
|
|
||||||
|
return scope;
|
||||||
|
},
|
||||||
|
|
||||||
|
init_lib : function (lib, args) {
|
||||||
|
if (this.libs.hasOwnProperty(lib)) {
|
||||||
|
this.patch(this.libs[lib]);
|
||||||
|
|
||||||
|
if (args && args.hasOwnProperty(lib)) {
|
||||||
|
if (typeof this.libs[lib].settings !== 'undefined') {
|
||||||
|
$.extend(true, this.libs[lib].settings, args[lib]);
|
||||||
|
} else if (typeof this.libs[lib].defaults !== 'undefined') {
|
||||||
|
$.extend(true, this.libs[lib].defaults, args[lib]);
|
||||||
|
}
|
||||||
|
return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
args = args instanceof Array ? args : new Array(args);
|
||||||
|
return this.libs[lib].init.apply(this.libs[lib], args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return function () {};
|
||||||
|
},
|
||||||
|
|
||||||
|
patch : function (lib) {
|
||||||
|
lib.scope = this.scope;
|
||||||
|
lib.namespace = this.global.namespace;
|
||||||
|
lib.rtl = this.rtl;
|
||||||
|
lib['data_options'] = this.utils.data_options;
|
||||||
|
lib['attr_name'] = attr_name;
|
||||||
|
lib['add_namespace'] = add_namespace;
|
||||||
|
lib['bindings'] = bindings;
|
||||||
|
lib['S'] = this.utils.S;
|
||||||
|
},
|
||||||
|
|
||||||
|
inherit : function (scope, methods) {
|
||||||
|
var methods_arr = methods.split(' '),
|
||||||
|
i = methods_arr.length;
|
||||||
|
|
||||||
|
while (i--) {
|
||||||
|
if (this.utils.hasOwnProperty(methods_arr[i])) {
|
||||||
|
scope[methods_arr[i]] = this.utils[methods_arr[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_namespace : function () {
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Don't bother reading the namespace out of the meta tag
|
||||||
|
// if the namespace has been set globally in javascript
|
||||||
|
//
|
||||||
|
// Example:
|
||||||
|
// Foundation.global.namespace = 'my-namespace';
|
||||||
|
// or make it an empty string:
|
||||||
|
// Foundation.global.namespace = '';
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
// If the namespace has not been set (is undefined), try to read it out of the meta element.
|
||||||
|
// Otherwise use the globally defined namespace, even if it's empty ('')
|
||||||
|
var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
|
||||||
|
|
||||||
|
// Finally, if the namsepace is either undefined or false, set it to an empty string.
|
||||||
|
// Otherwise use the namespace value.
|
||||||
|
this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
|
||||||
|
},
|
||||||
|
|
||||||
|
libs : {},
|
||||||
|
|
||||||
|
// methods that can be inherited in libraries
|
||||||
|
utils : {
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Fast Selector wrapper returns jQuery object. Only use where getElementById
|
||||||
|
// is not available.
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Selector (String): CSS selector describing the element(s) to be
|
||||||
|
// returned as a jQuery object.
|
||||||
|
//
|
||||||
|
// Scope (String): CSS selector describing the area to be searched. Default
|
||||||
|
// is document.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Element (jQuery Object): jQuery object containing elements matching the
|
||||||
|
// selector within the scope.
|
||||||
|
S : S,
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Executes a function a max of once every n milliseconds
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Func (Function): Function to be throttled.
|
||||||
|
//
|
||||||
|
// Delay (Integer): Function execution threshold in milliseconds.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Lazy_function (Function): Function with throttling applied.
|
||||||
|
throttle : function (func, delay) {
|
||||||
|
var timer = null;
|
||||||
|
|
||||||
|
return function () {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
|
||||||
|
if (timer == null) {
|
||||||
|
timer = setTimeout(function () {
|
||||||
|
func.apply(context, args);
|
||||||
|
timer = null;
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Executes a function when it stops being invoked for n seconds
|
||||||
|
// Modified version of _.debounce() http://underscorejs.org
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Func (Function): Function to be debounced.
|
||||||
|
//
|
||||||
|
// Delay (Integer): Function execution threshold in milliseconds.
|
||||||
|
//
|
||||||
|
// Immediate (Bool): Whether the function should be called at the beginning
|
||||||
|
// of the delay instead of the end. Default is false.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Lazy_function (Function): Function with debouncing applied.
|
||||||
|
debounce : function (func, delay, immediate) {
|
||||||
|
var timeout, result;
|
||||||
|
return function () {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
var later = function () {
|
||||||
|
timeout = null;
|
||||||
|
if (!immediate) {
|
||||||
|
result = func.apply(context, args);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var callNow = immediate && !timeout;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, delay);
|
||||||
|
if (callNow) {
|
||||||
|
result = func.apply(context, args);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Parses data-options attribute
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// El (jQuery Object): Element to be parsed.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Options (Javascript Object): Contents of the element's data-options
|
||||||
|
// attribute.
|
||||||
|
data_options : function (el, data_attr_name) {
|
||||||
|
data_attr_name = data_attr_name || 'options';
|
||||||
|
var opts = {}, ii, p, opts_arr,
|
||||||
|
data_options = function (el) {
|
||||||
|
var namespace = Foundation.global.namespace;
|
||||||
|
|
||||||
|
if (namespace.length > 0) {
|
||||||
|
return el.data(namespace + '-' + data_attr_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.data(data_attr_name);
|
||||||
|
};
|
||||||
|
|
||||||
|
var cached_options = data_options(el);
|
||||||
|
|
||||||
|
if (typeof cached_options === 'object') {
|
||||||
|
return cached_options;
|
||||||
|
}
|
||||||
|
|
||||||
|
opts_arr = (cached_options || ':').split(';');
|
||||||
|
ii = opts_arr.length;
|
||||||
|
|
||||||
|
function isNumber (o) {
|
||||||
|
return !isNaN (o - 0) && o !== null && o !== '' && o !== false && o !== true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function trim (str) {
|
||||||
|
if (typeof str === 'string') {
|
||||||
|
return $.trim(str);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (ii--) {
|
||||||
|
p = opts_arr[ii].split(':');
|
||||||
|
p = [p[0], p.slice(1).join(':')];
|
||||||
|
|
||||||
|
if (/true/i.test(p[1])) {
|
||||||
|
p[1] = true;
|
||||||
|
}
|
||||||
|
if (/false/i.test(p[1])) {
|
||||||
|
p[1] = false;
|
||||||
|
}
|
||||||
|
if (isNumber(p[1])) {
|
||||||
|
if (p[1].indexOf('.') === -1) {
|
||||||
|
p[1] = parseInt(p[1], 10);
|
||||||
|
} else {
|
||||||
|
p[1] = parseFloat(p[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.length === 2 && p[0].length > 0) {
|
||||||
|
opts[trim(p[0])] = trim(p[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return opts;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Adds JS-recognizable media queries
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Media (String): Key string for the media query to be stored as in
|
||||||
|
// Foundation.media_queries
|
||||||
|
//
|
||||||
|
// Class (String): Class name for the generated <meta> tag
|
||||||
|
register_media : function (media, media_class) {
|
||||||
|
if (Foundation.media_queries[media] === undefined) {
|
||||||
|
$('head').append('<meta class="' + media_class + '"/>');
|
||||||
|
Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Add custom CSS within a JS-defined media query
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Rule (String): CSS rule to be appended to the document.
|
||||||
|
//
|
||||||
|
// Media (String): Optional media query string for the CSS rule to be
|
||||||
|
// nested under.
|
||||||
|
add_custom_rule : function (rule, media) {
|
||||||
|
if (media === undefined && Foundation.stylesheet) {
|
||||||
|
Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
|
||||||
|
} else {
|
||||||
|
var query = Foundation.media_queries[media];
|
||||||
|
|
||||||
|
if (query !== undefined) {
|
||||||
|
Foundation.stylesheet.insertRule('@media ' +
|
||||||
|
Foundation.media_queries[media] + '{ ' + rule + ' }');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Performs a callback function when an image is fully loaded
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Image (jQuery Object): Image(s) to check if loaded.
|
||||||
|
//
|
||||||
|
// Callback (Function): Function to execute when image is fully loaded.
|
||||||
|
image_loaded : function (images, callback) {
|
||||||
|
var self = this,
|
||||||
|
unloaded = images.length;
|
||||||
|
|
||||||
|
if (unloaded === 0) {
|
||||||
|
callback(images);
|
||||||
|
}
|
||||||
|
|
||||||
|
images.each(function () {
|
||||||
|
single_image_loaded(self.S(this), function () {
|
||||||
|
unloaded -= 1;
|
||||||
|
if (unloaded === 0) {
|
||||||
|
callback(images);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Returns a random, alphanumeric string
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// Length (Integer): Length of string to be generated. Defaults to random
|
||||||
|
// integer.
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// Rand (String): Pseudo-random, alphanumeric string.
|
||||||
|
random_str : function () {
|
||||||
|
if (!this.fidx) {
|
||||||
|
this.fidx = 0;
|
||||||
|
}
|
||||||
|
this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
|
||||||
|
|
||||||
|
return this.prefix + (this.fidx++).toString(36);
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Helper for window.matchMedia
|
||||||
|
//
|
||||||
|
// Arguments:
|
||||||
|
// mq (String): Media query
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// (Boolean): Whether the media query passes or not
|
||||||
|
match : function (mq) {
|
||||||
|
return window.matchMedia(mq).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
// Description:
|
||||||
|
// Helpers for checking Foundation default media queries with JS
|
||||||
|
//
|
||||||
|
// Returns:
|
||||||
|
// (Boolean): Whether the media query passes or not
|
||||||
|
|
||||||
|
is_small_up : function () {
|
||||||
|
return this.match(Foundation.media_queries.small);
|
||||||
|
},
|
||||||
|
|
||||||
|
is_medium_up : function () {
|
||||||
|
return this.match(Foundation.media_queries.medium);
|
||||||
|
},
|
||||||
|
|
||||||
|
is_large_up : function () {
|
||||||
|
return this.match(Foundation.media_queries.large);
|
||||||
|
},
|
||||||
|
|
||||||
|
is_xlarge_up : function () {
|
||||||
|
return this.match(Foundation.media_queries.xlarge);
|
||||||
|
},
|
||||||
|
|
||||||
|
is_xxlarge_up : function () {
|
||||||
|
return this.match(Foundation.media_queries.xxlarge);
|
||||||
|
},
|
||||||
|
|
||||||
|
is_small_only : function () {
|
||||||
|
return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
is_medium_only : function () {
|
||||||
|
return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
is_large_only : function () {
|
||||||
|
return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
is_xlarge_only : function () {
|
||||||
|
return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
|
||||||
|
},
|
||||||
|
|
||||||
|
is_xxlarge_only : function () {
|
||||||
|
return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn.foundation = function () {
|
||||||
|
var args = Array.prototype.slice.call(arguments, 0);
|
||||||
|
|
||||||
|
return this.each(function () {
|
||||||
|
Foundation.init.apply(Foundation, [this].concat(args));
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,203 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs['magellan-expedition'] = {
|
||||||
|
name : 'magellan-expedition',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class : 'active',
|
||||||
|
threshold : 0, // pixels from the top of the expedition for it to become fixes
|
||||||
|
destination_threshold : 20, // pixels from the top of destination for it to be considered active
|
||||||
|
throttle_delay : 30, // calculation throttling to increase framerate
|
||||||
|
fixed_top : 0, // top distance in pixels assigend to the fixed element on scroll
|
||||||
|
offset_by_height : true, // whether to offset the destination by the expedition height. Usually you want this to be true, unless your expedition is on the side.
|
||||||
|
duration : 700, // animation duration time
|
||||||
|
easing : 'swing' // animation easing
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle');
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = self.S,
|
||||||
|
settings = self.settings;
|
||||||
|
|
||||||
|
// initialize expedition offset
|
||||||
|
self.set_expedition_position();
|
||||||
|
|
||||||
|
S(self.scope)
|
||||||
|
.off('.magellan')
|
||||||
|
.on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^="#"]', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var expedition = $(this).closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = expedition.data('magellan-expedition-init'),
|
||||||
|
hash = this.hash.split('#').join(''),
|
||||||
|
target = $('a[name="' + hash + '"]');
|
||||||
|
|
||||||
|
if (target.length === 0) {
|
||||||
|
target = $('#' + hash);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Account for expedition height if fixed position
|
||||||
|
var scroll_top = target.offset().top - settings.destination_threshold + 1;
|
||||||
|
if (settings.offset_by_height) {
|
||||||
|
scroll_top = scroll_top - expedition.outerHeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('html, body').stop().animate({
|
||||||
|
'scrollTop' : scroll_top
|
||||||
|
}, settings.duration, settings.easing, function () {
|
||||||
|
if (history.pushState) {
|
||||||
|
history.pushState(null, null, '#' + hash);
|
||||||
|
} else {
|
||||||
|
location.hash = '#' + hash;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));
|
||||||
|
|
||||||
|
$(window)
|
||||||
|
.on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));
|
||||||
|
},
|
||||||
|
|
||||||
|
check_for_arrivals : function () {
|
||||||
|
var self = this;
|
||||||
|
self.update_arrivals();
|
||||||
|
self.update_expedition_positions();
|
||||||
|
},
|
||||||
|
|
||||||
|
set_expedition_position : function () {
|
||||||
|
var self = this;
|
||||||
|
$('[' + this.attr_name() + '=fixed]', self.scope).each(function (idx, el) {
|
||||||
|
var expedition = $(this),
|
||||||
|
settings = expedition.data('magellan-expedition-init'),
|
||||||
|
styles = expedition.attr('styles'), // save styles
|
||||||
|
top_offset, fixed_top;
|
||||||
|
|
||||||
|
expedition.attr('style', '');
|
||||||
|
top_offset = expedition.offset().top + settings.threshold;
|
||||||
|
|
||||||
|
//set fixed-top by attribute
|
||||||
|
fixed_top = parseInt(expedition.data('magellan-fixed-top'));
|
||||||
|
if (!isNaN(fixed_top)) {
|
||||||
|
self.settings.fixed_top = fixed_top;
|
||||||
|
}
|
||||||
|
|
||||||
|
expedition.data(self.data_attr('magellan-top-offset'), top_offset);
|
||||||
|
expedition.attr('style', styles);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_expedition_positions : function () {
|
||||||
|
var self = this,
|
||||||
|
window_top_offset = $(window).scrollTop();
|
||||||
|
|
||||||
|
$('[' + this.attr_name() + '=fixed]', self.scope).each(function () {
|
||||||
|
var expedition = $(this),
|
||||||
|
settings = expedition.data('magellan-expedition-init'),
|
||||||
|
styles = expedition.attr('style'), // save styles
|
||||||
|
top_offset = expedition.data('magellan-top-offset');
|
||||||
|
|
||||||
|
//scroll to the top distance
|
||||||
|
if (window_top_offset + self.settings.fixed_top >= top_offset) {
|
||||||
|
// Placeholder allows height calculations to be consistent even when
|
||||||
|
// appearing to switch between fixed/non-fixed placement
|
||||||
|
var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');
|
||||||
|
if (placeholder.length === 0) {
|
||||||
|
placeholder = expedition.clone();
|
||||||
|
placeholder.removeAttr(self.attr_name());
|
||||||
|
placeholder.attr(self.add_namespace('data-magellan-expedition-clone'), '');
|
||||||
|
expedition.before(placeholder);
|
||||||
|
}
|
||||||
|
expedition.css({position :'fixed', top : settings.fixed_top}).addClass('fixed');
|
||||||
|
} else {
|
||||||
|
expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();
|
||||||
|
expedition.attr('style', styles).css('position', '').css('top', '').removeClass('fixed');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_arrivals : function () {
|
||||||
|
var self = this,
|
||||||
|
window_top_offset = $(window).scrollTop();
|
||||||
|
|
||||||
|
$('[' + this.attr_name() + ']', self.scope).each(function () {
|
||||||
|
var expedition = $(this),
|
||||||
|
settings = expedition.data(self.attr_name(true) + '-init'),
|
||||||
|
offsets = self.offsets(expedition, window_top_offset),
|
||||||
|
arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),
|
||||||
|
active_item = false;
|
||||||
|
offsets.each(function (idx, item) {
|
||||||
|
if (item.viewport_offset >= item.top_offset) {
|
||||||
|
var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');
|
||||||
|
arrivals.not(item.arrival).removeClass(settings.active_class);
|
||||||
|
item.arrival.addClass(settings.active_class);
|
||||||
|
active_item = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!active_item) {
|
||||||
|
arrivals.removeClass(settings.active_class);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
offsets : function (expedition, window_offset) {
|
||||||
|
var self = this,
|
||||||
|
settings = expedition.data(self.attr_name(true) + '-init'),
|
||||||
|
viewport_offset = window_offset;
|
||||||
|
|
||||||
|
return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function (idx, el) {
|
||||||
|
var name = $(this).data(self.data_attr('magellan-arrival')),
|
||||||
|
dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');
|
||||||
|
if (dest.length > 0) {
|
||||||
|
var top_offset = dest.offset().top - settings.destination_threshold;
|
||||||
|
if (settings.offset_by_height) {
|
||||||
|
top_offset = top_offset - expedition.outerHeight();
|
||||||
|
}
|
||||||
|
top_offset = Math.floor(top_offset);
|
||||||
|
return {
|
||||||
|
destination : dest,
|
||||||
|
arrival : $(this),
|
||||||
|
top_offset : top_offset,
|
||||||
|
viewport_offset : viewport_offset
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).sort(function (a, b) {
|
||||||
|
if (a.top_offset < b.top_offset) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (a.top_offset > b.top_offset) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr : function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.magellan');
|
||||||
|
this.S(window).off('.magellan');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
// remove placeholder expeditions used for height calculation purposes
|
||||||
|
$('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,152 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.offcanvas = {
|
||||||
|
name : 'offcanvas',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
open_method : 'move',
|
||||||
|
close_on_click : false
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = self.S,
|
||||||
|
move_class = '',
|
||||||
|
right_postfix = '',
|
||||||
|
left_postfix = '';
|
||||||
|
|
||||||
|
if (this.settings.open_method === 'move') {
|
||||||
|
move_class = 'move-';
|
||||||
|
right_postfix = 'right';
|
||||||
|
left_postfix = 'left';
|
||||||
|
} else if (this.settings.open_method === 'overlap_single') {
|
||||||
|
move_class = 'offcanvas-overlap-';
|
||||||
|
right_postfix = 'right';
|
||||||
|
left_postfix = 'left';
|
||||||
|
} else if (this.settings.open_method === 'overlap') {
|
||||||
|
move_class = 'offcanvas-overlap';
|
||||||
|
}
|
||||||
|
|
||||||
|
S(this.scope).off('.offcanvas')
|
||||||
|
.on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {
|
||||||
|
self.click_toggle_class(e, move_class + right_postfix);
|
||||||
|
if (self.settings.open_method !== 'overlap') {
|
||||||
|
S('.left-submenu').removeClass(move_class + right_postfix);
|
||||||
|
}
|
||||||
|
$('.left-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {
|
||||||
|
var settings = self.get_settings(e);
|
||||||
|
var parent = S(this).parent();
|
||||||
|
|
||||||
|
if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
|
||||||
|
self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));
|
||||||
|
parent.parent().removeClass(move_class + right_postfix);
|
||||||
|
} else if (S(this).parent().hasClass('has-submenu')) {
|
||||||
|
e.preventDefault();
|
||||||
|
S(this).siblings('.left-submenu').toggleClass(move_class + right_postfix);
|
||||||
|
} else if (parent.hasClass('back')) {
|
||||||
|
e.preventDefault();
|
||||||
|
parent.parent().removeClass(move_class + right_postfix);
|
||||||
|
}
|
||||||
|
$('.left-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {
|
||||||
|
self.click_toggle_class(e, move_class + left_postfix);
|
||||||
|
if (self.settings.open_method !== 'overlap') {
|
||||||
|
S('.right-submenu').removeClass(move_class + left_postfix);
|
||||||
|
}
|
||||||
|
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {
|
||||||
|
var settings = self.get_settings(e);
|
||||||
|
var parent = S(this).parent();
|
||||||
|
|
||||||
|
if (settings.close_on_click && !parent.hasClass('has-submenu') && !parent.hasClass('back')) {
|
||||||
|
self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));
|
||||||
|
parent.parent().removeClass(move_class + left_postfix);
|
||||||
|
} else if (S(this).parent().hasClass('has-submenu')) {
|
||||||
|
e.preventDefault();
|
||||||
|
S(this).siblings('.right-submenu').toggleClass(move_class + left_postfix);
|
||||||
|
} else if (parent.hasClass('back')) {
|
||||||
|
e.preventDefault();
|
||||||
|
parent.parent().removeClass(move_class + left_postfix);
|
||||||
|
}
|
||||||
|
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
|
||||||
|
self.click_remove_class(e, move_class + left_postfix);
|
||||||
|
S('.right-submenu').removeClass(move_class + left_postfix);
|
||||||
|
if (right_postfix) {
|
||||||
|
self.click_remove_class(e, move_class + right_postfix);
|
||||||
|
S('.left-submenu').removeClass(move_class + left_postfix);
|
||||||
|
}
|
||||||
|
$('.right-off-canvas-toggle').attr('aria-expanded', 'true');
|
||||||
|
})
|
||||||
|
.on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {
|
||||||
|
self.click_remove_class(e, move_class + left_postfix);
|
||||||
|
$('.left-off-canvas-toggle').attr('aria-expanded', 'false');
|
||||||
|
if (right_postfix) {
|
||||||
|
self.click_remove_class(e, move_class + right_postfix);
|
||||||
|
$('.right-off-canvas-toggle').attr('aria-expanded', 'false');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle : function (class_name, $off_canvas) {
|
||||||
|
$off_canvas = $off_canvas || this.get_wrapper();
|
||||||
|
if ($off_canvas.is('.' + class_name)) {
|
||||||
|
this.hide(class_name, $off_canvas);
|
||||||
|
} else {
|
||||||
|
this.show(class_name, $off_canvas);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function (class_name, $off_canvas) {
|
||||||
|
$off_canvas = $off_canvas || this.get_wrapper();
|
||||||
|
$off_canvas.trigger('open').trigger('open.fndtn.offcanvas');
|
||||||
|
$off_canvas.addClass(class_name);
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function (class_name, $off_canvas) {
|
||||||
|
$off_canvas = $off_canvas || this.get_wrapper();
|
||||||
|
$off_canvas.trigger('close').trigger('close.fndtn.offcanvas');
|
||||||
|
$off_canvas.removeClass(class_name);
|
||||||
|
},
|
||||||
|
|
||||||
|
click_toggle_class : function (e, class_name) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $off_canvas = this.get_wrapper(e);
|
||||||
|
this.toggle(class_name, $off_canvas);
|
||||||
|
},
|
||||||
|
|
||||||
|
click_remove_class : function (e, class_name) {
|
||||||
|
e.preventDefault();
|
||||||
|
var $off_canvas = this.get_wrapper(e);
|
||||||
|
this.hide(class_name, $off_canvas);
|
||||||
|
},
|
||||||
|
|
||||||
|
get_settings : function (e) {
|
||||||
|
var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');
|
||||||
|
return offcanvas.data(this.attr_name(true) + '-init') || this.settings;
|
||||||
|
},
|
||||||
|
|
||||||
|
get_wrapper : function (e) {
|
||||||
|
var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');
|
||||||
|
|
||||||
|
if ($off_canvas.length === 0) {
|
||||||
|
$off_canvas = this.S('.off-canvas-wrap');
|
||||||
|
}
|
||||||
|
return $off_canvas;
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,476 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var noop = function () {};
|
||||||
|
|
||||||
|
var Orbit = function (el, settings) {
|
||||||
|
// Don't reinitialize plugin
|
||||||
|
if (el.hasClass(settings.slides_container_class)) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this,
|
||||||
|
container,
|
||||||
|
slides_container = el,
|
||||||
|
number_container,
|
||||||
|
bullets_container,
|
||||||
|
timer_container,
|
||||||
|
idx = 0,
|
||||||
|
animate,
|
||||||
|
timer,
|
||||||
|
locked = false,
|
||||||
|
adjust_height_after = false;
|
||||||
|
|
||||||
|
self.slides = function () {
|
||||||
|
return slides_container.children(settings.slide_selector);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.slides().first().addClass(settings.active_slide_class);
|
||||||
|
|
||||||
|
self.update_slide_number = function (index) {
|
||||||
|
if (settings.slide_number) {
|
||||||
|
number_container.find('span:first').text(parseInt(index) + 1);
|
||||||
|
number_container.find('span:last').text(self.slides().length);
|
||||||
|
}
|
||||||
|
if (settings.bullets) {
|
||||||
|
bullets_container.children().removeClass(settings.bullets_active_class);
|
||||||
|
$(bullets_container.children().get(index)).addClass(settings.bullets_active_class);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.update_active_link = function (index) {
|
||||||
|
var link = $('[data-orbit-link="' + self.slides().eq(index).attr('data-orbit-slide') + '"]');
|
||||||
|
link.siblings().removeClass(settings.bullets_active_class);
|
||||||
|
link.addClass(settings.bullets_active_class);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.build_markup = function () {
|
||||||
|
slides_container.wrap('<div class="' + settings.container_class + '"></div>');
|
||||||
|
container = slides_container.parent();
|
||||||
|
slides_container.addClass(settings.slides_container_class);
|
||||||
|
|
||||||
|
if (settings.stack_on_small) {
|
||||||
|
container.addClass(settings.stack_on_small_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.navigation_arrows) {
|
||||||
|
container.append($('<a href="#"><span></span></a>').addClass(settings.prev_class));
|
||||||
|
container.append($('<a href="#"><span></span></a>').addClass(settings.next_class));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.timer) {
|
||||||
|
timer_container = $('<div>').addClass(settings.timer_container_class);
|
||||||
|
timer_container.append('<span>');
|
||||||
|
timer_container.append($('<div>').addClass(settings.timer_progress_class));
|
||||||
|
timer_container.addClass(settings.timer_paused_class);
|
||||||
|
container.append(timer_container);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.slide_number) {
|
||||||
|
number_container = $('<div>').addClass(settings.slide_number_class);
|
||||||
|
number_container.append('<span></span> ' + settings.slide_number_text + ' <span></span>');
|
||||||
|
container.append(number_container);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.bullets) {
|
||||||
|
bullets_container = $('<ol>').addClass(settings.bullets_container_class);
|
||||||
|
container.append(bullets_container);
|
||||||
|
bullets_container.wrap('<div class="orbit-bullets-container"></div>');
|
||||||
|
self.slides().each(function (idx, el) {
|
||||||
|
var bullet = $('<li>').attr('data-orbit-slide', idx).on('click', self.link_bullet);;
|
||||||
|
bullets_container.append(bullet);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
self._goto = function (next_idx, start_timer) {
|
||||||
|
// if (locked) {return false;}
|
||||||
|
if (next_idx === idx) {return false;}
|
||||||
|
if (typeof timer === 'object') {timer.restart();}
|
||||||
|
var slides = self.slides();
|
||||||
|
|
||||||
|
var dir = 'next';
|
||||||
|
locked = true;
|
||||||
|
if (next_idx < idx) {dir = 'prev';}
|
||||||
|
if (next_idx >= slides.length) {
|
||||||
|
if (!settings.circular) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
next_idx = 0;
|
||||||
|
} else if (next_idx < 0) {
|
||||||
|
if (!settings.circular) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
next_idx = slides.length - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var current = $(slides.get(idx));
|
||||||
|
var next = $(slides.get(next_idx));
|
||||||
|
|
||||||
|
current.css('zIndex', 2);
|
||||||
|
current.removeClass(settings.active_slide_class);
|
||||||
|
next.css('zIndex', 4).addClass(settings.active_slide_class);
|
||||||
|
|
||||||
|
slides_container.trigger('before-slide-change.fndtn.orbit');
|
||||||
|
settings.before_slide_change();
|
||||||
|
self.update_active_link(next_idx);
|
||||||
|
|
||||||
|
var callback = function () {
|
||||||
|
var unlock = function () {
|
||||||
|
idx = next_idx;
|
||||||
|
locked = false;
|
||||||
|
if (start_timer === true) {timer = self.create_timer(); timer.start();}
|
||||||
|
self.update_slide_number(idx);
|
||||||
|
slides_container.trigger('after-slide-change.fndtn.orbit', [{slide_number : idx, total_slides : slides.length}]);
|
||||||
|
settings.after_slide_change(idx, slides.length);
|
||||||
|
};
|
||||||
|
if (slides_container.outerHeight() != next.outerHeight() && settings.variable_height) {
|
||||||
|
slides_container.animate({'height': next.outerHeight()}, 250, 'linear', unlock);
|
||||||
|
} else {
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (slides.length === 1) {callback(); return false;}
|
||||||
|
|
||||||
|
var start_animation = function () {
|
||||||
|
if (dir === 'next') {animate.next(current, next, callback);}
|
||||||
|
if (dir === 'prev') {animate.prev(current, next, callback);}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (next.outerHeight() > slides_container.outerHeight() && settings.variable_height) {
|
||||||
|
slides_container.animate({'height': next.outerHeight()}, 250, 'linear', start_animation);
|
||||||
|
} else {
|
||||||
|
start_animation();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.next = function (e) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
self._goto(idx + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.prev = function (e) {
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
self._goto(idx - 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.link_custom = function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var link = $(this).attr('data-orbit-link');
|
||||||
|
if ((typeof link === 'string') && (link = $.trim(link)) != '') {
|
||||||
|
var slide = container.find('[data-orbit-slide=' + link + ']');
|
||||||
|
if (slide.index() != -1) {self._goto(slide.index());}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.link_bullet = function (e) {
|
||||||
|
var index = $(this).attr('data-orbit-slide');
|
||||||
|
if ((typeof index === 'string') && (index = $.trim(index)) != '') {
|
||||||
|
if (isNaN(parseInt(index))) {
|
||||||
|
var slide = container.find('[data-orbit-slide=' + index + ']');
|
||||||
|
if (slide.index() != -1) {self._goto(slide.index() + 1);}
|
||||||
|
} else {
|
||||||
|
self._goto(parseInt(index));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
self.timer_callback = function () {
|
||||||
|
self._goto(idx + 1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.compute_dimensions = function () {
|
||||||
|
var current = $(self.slides().get(idx));
|
||||||
|
var h = current.outerHeight();
|
||||||
|
if (!settings.variable_height) {
|
||||||
|
self.slides().each(function(){
|
||||||
|
if ($(this).outerHeight() > h) { h = $(this).outerHeight(); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
slides_container.height(h);
|
||||||
|
};
|
||||||
|
|
||||||
|
self.create_timer = function () {
|
||||||
|
var t = new Timer(
|
||||||
|
container.find('.' + settings.timer_container_class),
|
||||||
|
settings,
|
||||||
|
self.timer_callback
|
||||||
|
);
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
|
||||||
|
self.stop_timer = function () {
|
||||||
|
if (typeof timer === 'object') {
|
||||||
|
timer.stop();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.toggle_timer = function () {
|
||||||
|
var t = container.find('.' + settings.timer_container_class);
|
||||||
|
if (t.hasClass(settings.timer_paused_class)) {
|
||||||
|
if (typeof timer === 'undefined') {timer = self.create_timer();}
|
||||||
|
timer.start();
|
||||||
|
} else {
|
||||||
|
if (typeof timer === 'object') {timer.stop();}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
self.init = function () {
|
||||||
|
self.build_markup();
|
||||||
|
if (settings.timer) {
|
||||||
|
timer = self.create_timer();
|
||||||
|
Foundation.utils.image_loaded(this.slides().children('img'), timer.start);
|
||||||
|
}
|
||||||
|
animate = new FadeAnimation(settings, slides_container);
|
||||||
|
if (settings.animation === 'slide') {
|
||||||
|
animate = new SlideAnimation(settings, slides_container);
|
||||||
|
}
|
||||||
|
|
||||||
|
container.on('click', '.' + settings.next_class, self.next);
|
||||||
|
container.on('click', '.' + settings.prev_class, self.prev);
|
||||||
|
|
||||||
|
if (settings.next_on_click) {
|
||||||
|
container.on('click', '.' + settings.slides_container_class + ' [data-orbit-slide]', self.link_bullet);
|
||||||
|
}
|
||||||
|
|
||||||
|
container.on('click', self.toggle_timer);
|
||||||
|
if (settings.swipe) {
|
||||||
|
container.on('touchstart.fndtn.orbit', function (e) {
|
||||||
|
if (!e.touches) {e = e.originalEvent;}
|
||||||
|
var data = {
|
||||||
|
start_page_x : e.touches[0].pageX,
|
||||||
|
start_page_y : e.touches[0].pageY,
|
||||||
|
start_time : (new Date()).getTime(),
|
||||||
|
delta_x : 0,
|
||||||
|
is_scrolling : undefined
|
||||||
|
};
|
||||||
|
container.data('swipe-transition', data);
|
||||||
|
e.stopPropagation();
|
||||||
|
})
|
||||||
|
.on('touchmove.fndtn.orbit', function (e) {
|
||||||
|
if (!e.touches) {
|
||||||
|
e = e.originalEvent;
|
||||||
|
}
|
||||||
|
// Ignore pinch/zoom events
|
||||||
|
if (e.touches.length > 1 || e.scale && e.scale !== 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = container.data('swipe-transition');
|
||||||
|
if (typeof data === 'undefined') {data = {};}
|
||||||
|
|
||||||
|
data.delta_x = e.touches[0].pageX - data.start_page_x;
|
||||||
|
|
||||||
|
if ( typeof data.is_scrolling === 'undefined') {
|
||||||
|
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!data.is_scrolling && !data.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
var direction = (data.delta_x < 0) ? (idx + 1) : (idx - 1);
|
||||||
|
data.active = true;
|
||||||
|
self._goto(direction);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('touchend.fndtn.orbit', function (e) {
|
||||||
|
container.data('swipe-transition', {});
|
||||||
|
e.stopPropagation();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
container.on('mouseenter.fndtn.orbit', function (e) {
|
||||||
|
if (settings.timer && settings.pause_on_hover) {
|
||||||
|
self.stop_timer();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.orbit', function (e) {
|
||||||
|
if (settings.timer && settings.resume_on_mouseout) {
|
||||||
|
timer.start();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on('click', '[data-orbit-link]', self.link_custom);
|
||||||
|
$(window).on('load resize', self.compute_dimensions);
|
||||||
|
Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);
|
||||||
|
Foundation.utils.image_loaded(this.slides().children('img'), function () {
|
||||||
|
container.prev('.' + settings.preloader_class).css('display', 'none');
|
||||||
|
self.update_slide_number(0);
|
||||||
|
self.update_active_link(0);
|
||||||
|
slides_container.trigger('ready.fndtn.orbit');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
self.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
var Timer = function (el, settings, callback) {
|
||||||
|
var self = this,
|
||||||
|
duration = settings.timer_speed,
|
||||||
|
progress = el.find('.' + settings.timer_progress_class),
|
||||||
|
start,
|
||||||
|
timeout,
|
||||||
|
left = -1;
|
||||||
|
|
||||||
|
this.update_progress = function (w) {
|
||||||
|
var new_progress = progress.clone();
|
||||||
|
new_progress.attr('style', '');
|
||||||
|
new_progress.css('width', w + '%');
|
||||||
|
progress.replaceWith(new_progress);
|
||||||
|
progress = new_progress;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.restart = function () {
|
||||||
|
clearTimeout(timeout);
|
||||||
|
el.addClass(settings.timer_paused_class);
|
||||||
|
left = -1;
|
||||||
|
self.update_progress(0);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.start = function () {
|
||||||
|
if (!el.hasClass(settings.timer_paused_class)) {return true;}
|
||||||
|
left = (left === -1) ? duration : left;
|
||||||
|
el.removeClass(settings.timer_paused_class);
|
||||||
|
start = new Date().getTime();
|
||||||
|
progress.animate({'width' : '100%'}, left, 'linear');
|
||||||
|
timeout = setTimeout(function () {
|
||||||
|
self.restart();
|
||||||
|
callback();
|
||||||
|
}, left);
|
||||||
|
el.trigger('timer-started.fndtn.orbit')
|
||||||
|
};
|
||||||
|
|
||||||
|
this.stop = function () {
|
||||||
|
if (el.hasClass(settings.timer_paused_class)) {return true;}
|
||||||
|
clearTimeout(timeout);
|
||||||
|
el.addClass(settings.timer_paused_class);
|
||||||
|
var end = new Date().getTime();
|
||||||
|
left = left - (end - start);
|
||||||
|
var w = 100 - ((left / duration) * 100);
|
||||||
|
self.update_progress(w);
|
||||||
|
el.trigger('timer-stopped.fndtn.orbit');
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var SlideAnimation = function (settings, container) {
|
||||||
|
var duration = settings.animation_speed;
|
||||||
|
var is_rtl = ($('html[dir=rtl]').length === 1);
|
||||||
|
var margin = is_rtl ? 'marginRight' : 'marginLeft';
|
||||||
|
var animMargin = {};
|
||||||
|
animMargin[margin] = '0%';
|
||||||
|
|
||||||
|
this.next = function (current, next, callback) {
|
||||||
|
current.animate({marginLeft : '-100%'}, duration);
|
||||||
|
next.animate(animMargin, duration, function () {
|
||||||
|
current.css(margin, '100%');
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.prev = function (current, prev, callback) {
|
||||||
|
current.animate({marginLeft : '100%'}, duration);
|
||||||
|
prev.css(margin, '-100%');
|
||||||
|
prev.animate(animMargin, duration, function () {
|
||||||
|
current.css(margin, '100%');
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
var FadeAnimation = function (settings, container) {
|
||||||
|
var duration = settings.animation_speed;
|
||||||
|
var is_rtl = ($('html[dir=rtl]').length === 1);
|
||||||
|
var margin = is_rtl ? 'marginRight' : 'marginLeft';
|
||||||
|
|
||||||
|
this.next = function (current, next, callback) {
|
||||||
|
next.css({'margin' : '0%', 'opacity' : '0.01'});
|
||||||
|
next.animate({'opacity' :'1'}, duration, 'linear', function () {
|
||||||
|
current.css('margin', '100%');
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.prev = function (current, prev, callback) {
|
||||||
|
prev.css({'margin' : '0%', 'opacity' : '0.01'});
|
||||||
|
prev.animate({'opacity' : '1'}, duration, 'linear', function () {
|
||||||
|
current.css('margin', '100%');
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Foundation.libs = Foundation.libs || {};
|
||||||
|
|
||||||
|
Foundation.libs.orbit = {
|
||||||
|
name : 'orbit',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
animation : 'slide',
|
||||||
|
timer_speed : 10000,
|
||||||
|
pause_on_hover : true,
|
||||||
|
resume_on_mouseout : false,
|
||||||
|
next_on_click : true,
|
||||||
|
animation_speed : 500,
|
||||||
|
stack_on_small : false,
|
||||||
|
navigation_arrows : true,
|
||||||
|
slide_number : true,
|
||||||
|
slide_number_text : 'of',
|
||||||
|
container_class : 'orbit-container',
|
||||||
|
stack_on_small_class : 'orbit-stack-on-small',
|
||||||
|
next_class : 'orbit-next',
|
||||||
|
prev_class : 'orbit-prev',
|
||||||
|
timer_container_class : 'orbit-timer',
|
||||||
|
timer_paused_class : 'paused',
|
||||||
|
timer_progress_class : 'orbit-progress',
|
||||||
|
slides_container_class : 'orbit-slides-container',
|
||||||
|
preloader_class : 'preloader',
|
||||||
|
slide_selector : '*',
|
||||||
|
bullets_container_class : 'orbit-bullets',
|
||||||
|
bullets_active_class : 'active',
|
||||||
|
slide_number_class : 'orbit-slide-number',
|
||||||
|
caption_class : 'orbit-caption',
|
||||||
|
active_slide_class : 'active',
|
||||||
|
orbit_transition_class : 'orbit-transitioning',
|
||||||
|
bullets : true,
|
||||||
|
circular : true,
|
||||||
|
timer : true,
|
||||||
|
variable_height : false,
|
||||||
|
swipe : true,
|
||||||
|
before_slide_change : noop,
|
||||||
|
after_slide_change : noop
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this;
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (instance) {
|
||||||
|
var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));
|
||||||
|
this.S(instance).data(this.name + '-instance', orbit_instance);
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
if (self.S(self.scope).is('[data-orbit]')) {
|
||||||
|
var $el = self.S(self.scope);
|
||||||
|
var instance = $el.data(self.name + '-instance');
|
||||||
|
instance.compute_dimensions();
|
||||||
|
} else {
|
||||||
|
self.S('[data-orbit]', self.scope).each(function (idx, el) {
|
||||||
|
var $el = self.S(el);
|
||||||
|
var opts = self.data_options($el);
|
||||||
|
var instance = $el.data(self.name + '-instance');
|
||||||
|
instance.compute_dimensions();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,471 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.reveal = {
|
||||||
|
name : 'reveal',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
locked : false,
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
animation : 'fadeAndPop',
|
||||||
|
animation_speed : 250,
|
||||||
|
close_on_background_click : true,
|
||||||
|
close_on_esc : true,
|
||||||
|
dismiss_modal_class : 'close-reveal-modal',
|
||||||
|
multiple_opened : false,
|
||||||
|
bg_class : 'reveal-modal-bg',
|
||||||
|
root_element : 'body',
|
||||||
|
open : function(){},
|
||||||
|
opened : function(){},
|
||||||
|
close : function(){},
|
||||||
|
closed : function(){},
|
||||||
|
bg : $('.reveal-modal-bg'),
|
||||||
|
css : {
|
||||||
|
open : {
|
||||||
|
'opacity' : 0,
|
||||||
|
'visibility' : 'visible',
|
||||||
|
'display' : 'block'
|
||||||
|
},
|
||||||
|
close : {
|
||||||
|
'opacity' : 1,
|
||||||
|
'visibility' : 'hidden',
|
||||||
|
'display' : 'none'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
$.extend(true, this.settings, method, options);
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (scope) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.reveal')
|
||||||
|
.on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!self.locked) {
|
||||||
|
var element = S(this),
|
||||||
|
ajax = element.data(self.data_attr('reveal-ajax'));
|
||||||
|
|
||||||
|
self.locked = true;
|
||||||
|
|
||||||
|
if (typeof ajax === 'undefined') {
|
||||||
|
self.open.call(self, element);
|
||||||
|
} else {
|
||||||
|
var url = ajax === true ? element.attr('href') : ajax;
|
||||||
|
|
||||||
|
self.open.call(self, element, {url : url});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
S(document)
|
||||||
|
.on('click.fndtn.reveal', this.close_targets(), function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (!self.locked) {
|
||||||
|
var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,
|
||||||
|
bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];
|
||||||
|
|
||||||
|
if (bg_clicked) {
|
||||||
|
if (settings.close_on_background_click) {
|
||||||
|
e.stopPropagation();
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.locked = true;
|
||||||
|
self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (S('[' + self.attr_name() + ']', this.scope).length > 0) {
|
||||||
|
S(this.scope)
|
||||||
|
// .off('.reveal')
|
||||||
|
.on('open.fndtn.reveal', this.settings.open)
|
||||||
|
.on('opened.fndtn.reveal', this.settings.opened)
|
||||||
|
.on('opened.fndtn.reveal', this.open_video)
|
||||||
|
.on('close.fndtn.reveal', this.settings.close)
|
||||||
|
.on('closed.fndtn.reveal', this.settings.closed)
|
||||||
|
.on('closed.fndtn.reveal', this.close_video);
|
||||||
|
} else {
|
||||||
|
S(this.scope)
|
||||||
|
// .off('.reveal')
|
||||||
|
.on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)
|
||||||
|
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)
|
||||||
|
.on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)
|
||||||
|
.on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)
|
||||||
|
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)
|
||||||
|
.on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
key_up_on : function (scope) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
// PATCH #1: fixing multiple keyup event trigger from single key press
|
||||||
|
self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {
|
||||||
|
var open_modal = self.S('[' + self.attr_name() + '].open'),
|
||||||
|
settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;
|
||||||
|
// PATCH #2: making sure that the close event can be called only while unlocked,
|
||||||
|
// so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.
|
||||||
|
if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key
|
||||||
|
self.close.call(self, open_modal);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
key_up_off : function (scope) {
|
||||||
|
this.S('body').off('keyup.fndtn.reveal');
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
open : function (target, ajax_settings) {
|
||||||
|
var self = this,
|
||||||
|
modal;
|
||||||
|
|
||||||
|
if (target) {
|
||||||
|
if (typeof target.selector !== 'undefined') {
|
||||||
|
// Find the named node; only use the first one found, since the rest of the code assumes there's only one node
|
||||||
|
modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();
|
||||||
|
} else {
|
||||||
|
modal = self.S(this.scope);
|
||||||
|
|
||||||
|
ajax_settings = target;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
modal = self.S(this.scope);
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = modal.data(self.attr_name(true) + '-init');
|
||||||
|
settings = settings || this.settings;
|
||||||
|
|
||||||
|
if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {
|
||||||
|
return self.close(modal);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!modal.hasClass('open')) {
|
||||||
|
var open_modal = self.S('[' + self.attr_name() + '].open');
|
||||||
|
|
||||||
|
if (typeof modal.data('css-top') === 'undefined') {
|
||||||
|
modal.data('css-top', parseInt(modal.css('top'), 10))
|
||||||
|
.data('offset', this.cache_offset(modal));
|
||||||
|
}
|
||||||
|
|
||||||
|
this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
|
||||||
|
modal.on('open.fndtn.reveal').trigger('open.fndtn.reveal');
|
||||||
|
|
||||||
|
if (open_modal.length < 1) {
|
||||||
|
this.toggle_bg(modal, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof ajax_settings === 'string') {
|
||||||
|
ajax_settings = {
|
||||||
|
url : ajax_settings
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {
|
||||||
|
if (open_modal.length > 0) {
|
||||||
|
if (settings.multiple_opened) {
|
||||||
|
this.to_back(open_modal);
|
||||||
|
} else {
|
||||||
|
this.hide(open_modal, settings.css.close);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.show(modal, settings.css.open);
|
||||||
|
} else {
|
||||||
|
var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;
|
||||||
|
|
||||||
|
$.extend(ajax_settings, {
|
||||||
|
success : function (data, textStatus, jqXHR) {
|
||||||
|
if ( $.isFunction(old_success) ) {
|
||||||
|
var result = old_success(data, textStatus, jqXHR);
|
||||||
|
if (typeof result == 'string') {
|
||||||
|
data = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modal.html(data);
|
||||||
|
self.S(modal).foundation('section', 'reflow');
|
||||||
|
self.S(modal).children().foundation();
|
||||||
|
|
||||||
|
if (open_modal.length > 0) {
|
||||||
|
if (settings.multiple_opened) {
|
||||||
|
this.to_back(open_modal);
|
||||||
|
} else {
|
||||||
|
this.hide(open_modal, settings.css.close);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.show(modal, settings.css.open);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax(ajax_settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.S(window).trigger('resize');
|
||||||
|
},
|
||||||
|
|
||||||
|
close : function (modal) {
|
||||||
|
var modal = modal && modal.length ? modal : this.S(this.scope),
|
||||||
|
open_modals = this.S('[' + this.attr_name() + '].open'),
|
||||||
|
settings = modal.data(this.attr_name(true) + '-init') || this.settings;
|
||||||
|
|
||||||
|
if (open_modals.length > 0) {
|
||||||
|
this.locked = true;
|
||||||
|
this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open
|
||||||
|
modal.trigger('close').trigger('close.fndtn.reveal');
|
||||||
|
|
||||||
|
if ((settings.multiple_opened && open_modals.length === 1) || !settings.multiple_opened || modal.length > 1) {
|
||||||
|
this.toggle_bg(modal, false);
|
||||||
|
this.to_front(modal);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.multiple_opened) {
|
||||||
|
this.hide(modal, settings.css.close, settings);
|
||||||
|
this.to_front($($.makeArray(open_modals).reverse()[1]));
|
||||||
|
} else {
|
||||||
|
this.hide(open_modals, settings.css.close, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
close_targets : function () {
|
||||||
|
var base = '.' + this.settings.dismiss_modal_class;
|
||||||
|
|
||||||
|
if (this.settings.close_on_background_click) {
|
||||||
|
return base + ', .' + this.settings.bg_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle_bg : function (modal, state) {
|
||||||
|
if (this.S('.' + this.settings.bg_class).length === 0) {
|
||||||
|
this.settings.bg = $('<div />', {'class': this.settings.bg_class})
|
||||||
|
.appendTo('body').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
var visible = this.settings.bg.filter(':visible').length > 0;
|
||||||
|
if ( state != visible ) {
|
||||||
|
if ( state == undefined ? visible : !state ) {
|
||||||
|
this.hide(this.settings.bg);
|
||||||
|
} else {
|
||||||
|
this.show(this.settings.bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function (el, css) {
|
||||||
|
// is modal
|
||||||
|
if (css) {
|
||||||
|
var settings = el.data(this.attr_name(true) + '-init') || this.settings,
|
||||||
|
root_element = settings.root_element;
|
||||||
|
|
||||||
|
if (el.parent(root_element).length === 0) {
|
||||||
|
var placeholder = el.wrap('<div style="display: none;" />').parent();
|
||||||
|
|
||||||
|
el.on('closed.fndtn.reveal.wrapped', function () {
|
||||||
|
el.detach().appendTo(placeholder);
|
||||||
|
el.unwrap().unbind('closed.fndtn.reveal.wrapped');
|
||||||
|
});
|
||||||
|
|
||||||
|
el.detach().appendTo(root_element);
|
||||||
|
}
|
||||||
|
|
||||||
|
var animData = getAnimationData(settings.animation);
|
||||||
|
if (!animData.animate) {
|
||||||
|
this.locked = false;
|
||||||
|
}
|
||||||
|
if (animData.pop) {
|
||||||
|
css.top = $(window).scrollTop() - el.data('offset') + 'px';
|
||||||
|
var end_css = {
|
||||||
|
top: $(window).scrollTop() + el.data('css-top') + 'px',
|
||||||
|
opacity: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.css(css)
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.trigger('opened').trigger('opened.fndtn.reveal');
|
||||||
|
}.bind(this))
|
||||||
|
.addClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animData.fade) {
|
||||||
|
css.top = $(window).scrollTop() + el.data('css-top') + 'px';
|
||||||
|
var end_css = {opacity: 1};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.css(css)
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.trigger('opened').trigger('opened.fndtn.reveal');
|
||||||
|
}.bind(this))
|
||||||
|
.addClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.css(css).show().css({opacity : 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = this.settings;
|
||||||
|
|
||||||
|
// should we animate the background?
|
||||||
|
if (getAnimationData(settings.animation).fade) {
|
||||||
|
return el.fadeIn(settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.locked = false;
|
||||||
|
|
||||||
|
return el.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
to_back : function(el) {
|
||||||
|
el.addClass('toback');
|
||||||
|
},
|
||||||
|
|
||||||
|
to_front : function(el) {
|
||||||
|
el.removeClass('toback');
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function (el, css) {
|
||||||
|
// is modal
|
||||||
|
if (css) {
|
||||||
|
var settings = el.data(this.attr_name(true) + '-init');
|
||||||
|
settings = settings || this.settings;
|
||||||
|
|
||||||
|
var animData = getAnimationData(settings.animation);
|
||||||
|
if (!animData.animate) {
|
||||||
|
this.locked = false;
|
||||||
|
}
|
||||||
|
if (animData.pop) {
|
||||||
|
var end_css = {
|
||||||
|
top: - $(window).scrollTop() - el.data('offset') + 'px',
|
||||||
|
opacity: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
|
||||||
|
}.bind(this))
|
||||||
|
.removeClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (animData.fade) {
|
||||||
|
var end_css = {opacity : 0};
|
||||||
|
|
||||||
|
return setTimeout(function () {
|
||||||
|
return el
|
||||||
|
.animate(end_css, settings.animation_speed, 'linear', function () {
|
||||||
|
this.locked = false;
|
||||||
|
el.css(css).trigger('closed').trigger('closed.fndtn.reveal');
|
||||||
|
}.bind(this))
|
||||||
|
.removeClass('open');
|
||||||
|
}.bind(this), settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = this.settings;
|
||||||
|
|
||||||
|
// should we animate the background?
|
||||||
|
if (getAnimationData(settings.animation).fade) {
|
||||||
|
return el.fadeOut(settings.animation_speed / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return el.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
close_video : function (e) {
|
||||||
|
var video = $('.flex-video', e.target),
|
||||||
|
iframe = $('iframe', video);
|
||||||
|
|
||||||
|
if (iframe.length > 0) {
|
||||||
|
iframe.attr('data-src', iframe[0].src);
|
||||||
|
iframe.attr('src', iframe.attr('src'));
|
||||||
|
video.hide();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
open_video : function (e) {
|
||||||
|
var video = $('.flex-video', e.target),
|
||||||
|
iframe = video.find('iframe');
|
||||||
|
|
||||||
|
if (iframe.length > 0) {
|
||||||
|
var data_src = iframe.attr('data-src');
|
||||||
|
if (typeof data_src === 'string') {
|
||||||
|
iframe[0].src = iframe.attr('data-src');
|
||||||
|
} else {
|
||||||
|
var src = iframe[0].src;
|
||||||
|
iframe[0].src = undefined;
|
||||||
|
iframe[0].src = src;
|
||||||
|
}
|
||||||
|
video.show();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr : function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
cache_offset : function (modal) {
|
||||||
|
var offset = modal.show().height() + parseInt(modal.css('top'), 10);
|
||||||
|
|
||||||
|
modal.hide();
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
$(this.scope).off('.fndtn.reveal');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}
|
||||||
|
* getAnimationData('fade') // {animate: true, pop: false, fade: true}
|
||||||
|
* getAnimationData('pop') // {animate: true, pop: true, fade: false}
|
||||||
|
* getAnimationData('foo') // {animate: false, pop: false, fade: false}
|
||||||
|
* getAnimationData(null) // {animate: false, pop: false, fade: false}
|
||||||
|
*/
|
||||||
|
function getAnimationData(str) {
|
||||||
|
var fade = /fade/i.test(str);
|
||||||
|
var pop = /pop/i.test(str);
|
||||||
|
return {
|
||||||
|
animate : fade || pop,
|
||||||
|
pop : pop,
|
||||||
|
fade : fade
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,263 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.slider = {
|
||||||
|
name : 'slider',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
start : 0,
|
||||||
|
end : 100,
|
||||||
|
step : 1,
|
||||||
|
precision : null,
|
||||||
|
initial : null,
|
||||||
|
display_selector : '',
|
||||||
|
vertical : false,
|
||||||
|
trigger_input_change : false,
|
||||||
|
on_change : function () {}
|
||||||
|
},
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'throttle');
|
||||||
|
this.bindings(method, options);
|
||||||
|
this.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.slider')
|
||||||
|
.on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',
|
||||||
|
'[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function (e) {
|
||||||
|
if (!self.cache.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.set_active_slider($(e.target));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function (e) {
|
||||||
|
if (!!self.cache.active) {
|
||||||
|
e.preventDefault();
|
||||||
|
if ($.data(self.cache.active[0], 'settings').vertical) {
|
||||||
|
var scroll_offset = 0;
|
||||||
|
if (!e.pageY) {
|
||||||
|
scroll_offset = window.scrollY;
|
||||||
|
}
|
||||||
|
self.calculate_position(self.cache.active, self.get_cursor_position(e, 'y') + scroll_offset);
|
||||||
|
} else {
|
||||||
|
self.calculate_position(self.cache.active, self.get_cursor_position(e, 'x'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function (e) {
|
||||||
|
self.remove_active_slider();
|
||||||
|
})
|
||||||
|
.on('change.fndtn.slider', function (e) {
|
||||||
|
self.settings.on_change();
|
||||||
|
});
|
||||||
|
|
||||||
|
self.S(window)
|
||||||
|
.on('resize.fndtn.slider', self.throttle(function (e) {
|
||||||
|
self.reflow();
|
||||||
|
}, 300));
|
||||||
|
},
|
||||||
|
|
||||||
|
get_cursor_position : function (e, xy) {
|
||||||
|
var pageXY = 'page' + xy.toUpperCase(),
|
||||||
|
clientXY = 'client' + xy.toUpperCase(),
|
||||||
|
position;
|
||||||
|
|
||||||
|
if (typeof e[pageXY] !== 'undefined') {
|
||||||
|
position = e[pageXY];
|
||||||
|
} else if (typeof e.originalEvent[clientXY] !== 'undefined') {
|
||||||
|
position = e.originalEvent[clientXY];
|
||||||
|
} else if (e.originalEvent.touches && e.originalEvent.touches[0] && typeof e.originalEvent.touches[0][clientXY] !== 'undefined') {
|
||||||
|
position = e.originalEvent.touches[0][clientXY];
|
||||||
|
} else if (e.currentPoint && typeof e.currentPoint[xy] !== 'undefined') {
|
||||||
|
position = e.currentPoint[xy];
|
||||||
|
}
|
||||||
|
|
||||||
|
return position;
|
||||||
|
},
|
||||||
|
|
||||||
|
set_active_slider : function ($handle) {
|
||||||
|
this.cache.active = $handle;
|
||||||
|
},
|
||||||
|
|
||||||
|
remove_active_slider : function () {
|
||||||
|
this.cache.active = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
calculate_position : function ($handle, cursor_x) {
|
||||||
|
var self = this,
|
||||||
|
settings = $.data($handle[0], 'settings'),
|
||||||
|
handle_l = $.data($handle[0], 'handle_l'),
|
||||||
|
handle_o = $.data($handle[0], 'handle_o'),
|
||||||
|
bar_l = $.data($handle[0], 'bar_l'),
|
||||||
|
bar_o = $.data($handle[0], 'bar_o');
|
||||||
|
|
||||||
|
requestAnimationFrame(function () {
|
||||||
|
var pct;
|
||||||
|
|
||||||
|
if (Foundation.rtl && !settings.vertical) {
|
||||||
|
pct = self.limit_to(((bar_o + bar_l - cursor_x) / bar_l), 0, 1);
|
||||||
|
} else {
|
||||||
|
pct = self.limit_to(((cursor_x - bar_o) / bar_l), 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
pct = settings.vertical ? 1 - pct : pct;
|
||||||
|
|
||||||
|
var norm = self.normalized_value(pct, settings.start, settings.end, settings.step, settings.precision);
|
||||||
|
|
||||||
|
self.set_ui($handle, norm);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
set_ui : function ($handle, value) {
|
||||||
|
var settings = $.data($handle[0], 'settings'),
|
||||||
|
handle_l = $.data($handle[0], 'handle_l'),
|
||||||
|
bar_l = $.data($handle[0], 'bar_l'),
|
||||||
|
norm_pct = this.normalized_percentage(value, settings.start, settings.end),
|
||||||
|
handle_offset = norm_pct * (bar_l - handle_l) - 1,
|
||||||
|
progress_bar_length = norm_pct * 100,
|
||||||
|
$handle_parent = $handle.parent(),
|
||||||
|
$hidden_inputs = $handle.parent().children('input[type=hidden]');
|
||||||
|
|
||||||
|
if (Foundation.rtl && !settings.vertical) {
|
||||||
|
handle_offset = -handle_offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;
|
||||||
|
this.set_translate($handle, handle_offset, settings.vertical);
|
||||||
|
|
||||||
|
if (settings.vertical) {
|
||||||
|
$handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');
|
||||||
|
} else {
|
||||||
|
$handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');
|
||||||
|
}
|
||||||
|
|
||||||
|
$handle_parent.attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider');
|
||||||
|
|
||||||
|
$hidden_inputs.val(value);
|
||||||
|
if (settings.trigger_input_change) {
|
||||||
|
$hidden_inputs.trigger('change');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$handle[0].hasAttribute('aria-valuemin')) {
|
||||||
|
$handle.attr({
|
||||||
|
'aria-valuemin' : settings.start,
|
||||||
|
'aria-valuemax' : settings.end
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$handle.attr('aria-valuenow', value);
|
||||||
|
|
||||||
|
if (settings.display_selector != '') {
|
||||||
|
$(settings.display_selector).each(function () {
|
||||||
|
if (this.hasOwnProperty('value')) {
|
||||||
|
$(this).val(value);
|
||||||
|
} else {
|
||||||
|
$(this).text(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
normalized_percentage : function (val, start, end) {
|
||||||
|
return Math.min(1, (val - start) / (end - start));
|
||||||
|
},
|
||||||
|
|
||||||
|
normalized_value : function (val, start, end, step, precision) {
|
||||||
|
var range = end - start,
|
||||||
|
point = val * range,
|
||||||
|
mod = (point - (point % step)) / step,
|
||||||
|
rem = point % step,
|
||||||
|
round = ( rem >= step * 0.5 ? step : 0);
|
||||||
|
return ((mod * step + round) + start).toFixed(precision);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_translate : function (ele, offset, vertical) {
|
||||||
|
if (vertical) {
|
||||||
|
$(ele)
|
||||||
|
.css('-webkit-transform', 'translateY(' + offset + 'px)')
|
||||||
|
.css('-moz-transform', 'translateY(' + offset + 'px)')
|
||||||
|
.css('-ms-transform', 'translateY(' + offset + 'px)')
|
||||||
|
.css('-o-transform', 'translateY(' + offset + 'px)')
|
||||||
|
.css('transform', 'translateY(' + offset + 'px)');
|
||||||
|
} else {
|
||||||
|
$(ele)
|
||||||
|
.css('-webkit-transform', 'translateX(' + offset + 'px)')
|
||||||
|
.css('-moz-transform', 'translateX(' + offset + 'px)')
|
||||||
|
.css('-ms-transform', 'translateX(' + offset + 'px)')
|
||||||
|
.css('-o-transform', 'translateX(' + offset + 'px)')
|
||||||
|
.css('transform', 'translateX(' + offset + 'px)');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
limit_to : function (val, min, max) {
|
||||||
|
return Math.min(Math.max(val, min), max);
|
||||||
|
},
|
||||||
|
|
||||||
|
initialize_settings : function (handle) {
|
||||||
|
var settings = $.extend({}, this.settings, this.data_options($(handle).parent())),
|
||||||
|
decimal_places_match_result;
|
||||||
|
|
||||||
|
if (settings.precision === null) {
|
||||||
|
decimal_places_match_result = ('' + settings.step).match(/\.([\d]*)/);
|
||||||
|
settings.precision = decimal_places_match_result && decimal_places_match_result[1] ? decimal_places_match_result[1].length : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.vertical) {
|
||||||
|
$.data(handle, 'bar_o', $(handle).parent().offset().top);
|
||||||
|
$.data(handle, 'bar_l', $(handle).parent().outerHeight());
|
||||||
|
$.data(handle, 'handle_o', $(handle).offset().top);
|
||||||
|
$.data(handle, 'handle_l', $(handle).outerHeight());
|
||||||
|
} else {
|
||||||
|
$.data(handle, 'bar_o', $(handle).parent().offset().left);
|
||||||
|
$.data(handle, 'bar_l', $(handle).parent().outerWidth());
|
||||||
|
$.data(handle, 'handle_o', $(handle).offset().left);
|
||||||
|
$.data(handle, 'handle_l', $(handle).outerWidth());
|
||||||
|
}
|
||||||
|
|
||||||
|
$.data(handle, 'bar', $(handle).parent());
|
||||||
|
$.data(handle, 'settings', settings);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_initial_position : function ($ele) {
|
||||||
|
var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),
|
||||||
|
initial = ((typeof settings.initial == 'number' && !isNaN(settings.initial)) ? settings.initial : Math.floor((settings.end - settings.start) * 0.5 / settings.step) * settings.step + settings.start),
|
||||||
|
$handle = $ele.children('.range-slider-handle');
|
||||||
|
this.set_ui($handle, initial);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_value : function (value) {
|
||||||
|
var self = this;
|
||||||
|
$('[' + self.attr_name() + ']', this.scope).each(function () {
|
||||||
|
$(this).attr(self.attr_name(), value);
|
||||||
|
});
|
||||||
|
if (!!$(this.scope).attr(self.attr_name())) {
|
||||||
|
$(this.scope).attr(self.attr_name(), value);
|
||||||
|
}
|
||||||
|
self.reflow();
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {
|
||||||
|
var self = this;
|
||||||
|
self.S('[' + this.attr_name() + ']').each(function () {
|
||||||
|
var handle = $(this).children('.range-slider-handle')[0],
|
||||||
|
val = $(this).attr(self.attr_name());
|
||||||
|
self.initialize_settings(handle);
|
||||||
|
|
||||||
|
if (val) {
|
||||||
|
self.set_ui($(handle), parseFloat(val));
|
||||||
|
} else {
|
||||||
|
self.set_initial_position($(this));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,237 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.tab = {
|
||||||
|
name : 'tab',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
active_class : 'active',
|
||||||
|
callback : function () {},
|
||||||
|
deep_linking : false,
|
||||||
|
scroll_to_content : true,
|
||||||
|
is_hover : false
|
||||||
|
},
|
||||||
|
|
||||||
|
default_tab_hashes : [],
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
|
||||||
|
// store the initial href, which is used to allow correct behaviour of the
|
||||||
|
// browser back button when deep linking is turned on.
|
||||||
|
self.entry_location = window.location.href;
|
||||||
|
|
||||||
|
this.handle_location_hash_change();
|
||||||
|
|
||||||
|
// Store the default active tabs which will be referenced when the
|
||||||
|
// location hash is absent, as in the case of navigating the tabs and
|
||||||
|
// returning to the first viewing via the browser Back button.
|
||||||
|
S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {
|
||||||
|
self.default_tab_hashes.push(this.hash);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function () {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
var usual_tab_behavior = function (e) {
|
||||||
|
var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||||
|
if (!settings.is_hover || Modernizr.touch) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
self.toggle_active_tab(S(this).parent());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.tab')
|
||||||
|
// Click event: tab title
|
||||||
|
.on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
|
||||||
|
.on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )
|
||||||
|
// Hover event: tab title
|
||||||
|
.on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {
|
||||||
|
var settings = S(this).closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.toggle_active_tab(S(this).parent());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Location hash change event
|
||||||
|
S(window).on('hashchange.fndtn.tab', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.handle_location_hash_change();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
handle_location_hash_change : function () {
|
||||||
|
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
var settings = S(this).data(self.attr_name(true) + '-init');
|
||||||
|
if (settings.deep_linking) {
|
||||||
|
// Match the location hash to a label
|
||||||
|
var hash;
|
||||||
|
if (settings.scroll_to_content) {
|
||||||
|
hash = self.scope.location.hash;
|
||||||
|
} else {
|
||||||
|
// prefix the hash to prevent anchor scrolling
|
||||||
|
hash = self.scope.location.hash.replace('fndtn-', '');
|
||||||
|
}
|
||||||
|
if (hash != '') {
|
||||||
|
// Check whether the location hash references a tab content div or
|
||||||
|
// another element on the page (inside or outside the tab content div)
|
||||||
|
var hash_element = S(hash);
|
||||||
|
if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {
|
||||||
|
// Tab content div
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());
|
||||||
|
} else {
|
||||||
|
// Not the tab content div. If inside the tab content, find the
|
||||||
|
// containing tab and toggle it as active.
|
||||||
|
var hash_tab_container_id = hash_element.closest('.content').attr('id');
|
||||||
|
if (hash_tab_container_id != undefined) {
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Reference the default tab hashes which were initialized in the init function
|
||||||
|
for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {
|
||||||
|
self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle_active_tab : function (tab, location_hash) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S,
|
||||||
|
tabs = tab.closest('[' + this.attr_name() + ']'),
|
||||||
|
tab_link = tab.find('a'),
|
||||||
|
anchor = tab.children('a').first(),
|
||||||
|
target_hash = '#' + anchor.attr('href').split('#')[1],
|
||||||
|
target = S(target_hash),
|
||||||
|
siblings = tab.siblings(),
|
||||||
|
settings = tabs.data(this.attr_name(true) + '-init'),
|
||||||
|
interpret_keyup_action = function (e) {
|
||||||
|
// Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js
|
||||||
|
|
||||||
|
// define current, previous and next (possible) tabs
|
||||||
|
|
||||||
|
var $original = $(this);
|
||||||
|
var $prev = $(this).parents('li').prev().children('[role="tab"]');
|
||||||
|
var $next = $(this).parents('li').next().children('[role="tab"]');
|
||||||
|
var $target;
|
||||||
|
|
||||||
|
// find the direction (prev or next)
|
||||||
|
|
||||||
|
switch (e.keyCode) {
|
||||||
|
case 37:
|
||||||
|
$target = $prev;
|
||||||
|
break;
|
||||||
|
case 39:
|
||||||
|
$target = $next;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$target = false
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($target.length) {
|
||||||
|
$original.attr({
|
||||||
|
'tabindex' : '-1',
|
||||||
|
'aria-selected' : null
|
||||||
|
});
|
||||||
|
$target.attr({
|
||||||
|
'tabindex' : '0',
|
||||||
|
'aria-selected' : true
|
||||||
|
}).focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hide panels
|
||||||
|
|
||||||
|
$('[role="tabpanel"]')
|
||||||
|
.attr('aria-hidden', 'true');
|
||||||
|
|
||||||
|
// Show panel which corresponds to target
|
||||||
|
|
||||||
|
$('#' + $(document.activeElement).attr('href').substring(1))
|
||||||
|
.attr('aria-hidden', null);
|
||||||
|
|
||||||
|
},
|
||||||
|
go_to_hash = function(hash) {
|
||||||
|
// This function allows correct behaviour of the browser's back button when deep linking is enabled. Without it
|
||||||
|
// the user would get continually redirected to the default hash.
|
||||||
|
var is_entry_location = window.location.href === self.entry_location,
|
||||||
|
default_hash = settings.scroll_to_content ? self.default_tab_hashes[0] : is_entry_location ? window.location.hash :'fndtn-' + self.default_tab_hashes[0].replace('#', '')
|
||||||
|
|
||||||
|
if (!(is_entry_location && hash === default_hash)) {
|
||||||
|
window.location.hash = hash;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// allow usage of data-tab-content attribute instead of href
|
||||||
|
if (S(this).data(this.data_attr('tab-content'))) {
|
||||||
|
target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];
|
||||||
|
target = S(target_hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.deep_linking) {
|
||||||
|
|
||||||
|
if (settings.scroll_to_content) {
|
||||||
|
|
||||||
|
// retain current hash to scroll to content
|
||||||
|
go_to_hash(location_hash || target_hash);
|
||||||
|
|
||||||
|
if (location_hash == undefined || location_hash == target_hash) {
|
||||||
|
tab.parent()[0].scrollIntoView();
|
||||||
|
} else {
|
||||||
|
S(target_hash)[0].scrollIntoView();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// prefix the hashes so that the browser doesn't scroll down
|
||||||
|
if (location_hash != undefined) {
|
||||||
|
go_to_hash('fndtn-' + location_hash.replace('#', ''));
|
||||||
|
} else {
|
||||||
|
go_to_hash('fndtn-' + target_hash.replace('#', ''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WARNING: The activation and deactivation of the tab content must
|
||||||
|
// occur after the deep linking in order to properly refresh the browser
|
||||||
|
// window (notably in Chrome).
|
||||||
|
// Clean up multiple attr instances to done once
|
||||||
|
tab.addClass(settings.active_class).triggerHandler('opened');
|
||||||
|
tab_link.attr({'aria-selected' : 'true', tabindex : 0});
|
||||||
|
siblings.removeClass(settings.active_class)
|
||||||
|
siblings.find('a').attr({'aria-selected' : 'false', tabindex : -1});
|
||||||
|
target.siblings().removeClass(settings.active_class).attr({'aria-hidden' : 'true', tabindex : -1});
|
||||||
|
target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr('tabindex');
|
||||||
|
settings.callback(tab);
|
||||||
|
target.triggerHandler('toggled', [tab]);
|
||||||
|
tabs.triggerHandler('toggled', [target]);
|
||||||
|
|
||||||
|
tab_link.off('keydown').on('keydown', interpret_keyup_action );
|
||||||
|
},
|
||||||
|
|
||||||
|
data_attr : function (str) {
|
||||||
|
if (this.namespace.length > 0) {
|
||||||
|
return this.namespace + '-' + str;
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,307 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.tooltip = {
|
||||||
|
name : 'tooltip',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
additional_inheritable_classes : [],
|
||||||
|
tooltip_class : '.tooltip',
|
||||||
|
append_to : 'body',
|
||||||
|
touch_close_text : 'Tap To Close',
|
||||||
|
disable_for_touch : false,
|
||||||
|
hover_delay : 200,
|
||||||
|
show_on : 'all',
|
||||||
|
tip_template : function (selector, content) {
|
||||||
|
return '<span data-selector="' + selector + '" id="' + selector + '" class="'
|
||||||
|
+ Foundation.libs.tooltip.settings.tooltip_class.substring(1)
|
||||||
|
+ '" role="tooltip">' + content + '<span class="nub"></span></span>';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
cache : {},
|
||||||
|
|
||||||
|
init : function (scope, method, options) {
|
||||||
|
Foundation.inherit(this, 'random_str');
|
||||||
|
this.bindings(method, options);
|
||||||
|
},
|
||||||
|
|
||||||
|
should_show : function (target, tip) {
|
||||||
|
var settings = $.extend({}, this.settings, this.data_options(target));
|
||||||
|
|
||||||
|
if (settings.show_on === 'all') {
|
||||||
|
return true;
|
||||||
|
} else if (this.small() && settings.show_on === 'small') {
|
||||||
|
return true;
|
||||||
|
} else if (this.medium() && settings.show_on === 'medium') {
|
||||||
|
return true;
|
||||||
|
} else if (this.large() && settings.show_on === 'large') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
medium : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['medium']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
large : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['large']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
events : function (instance) {
|
||||||
|
var self = this,
|
||||||
|
S = self.S;
|
||||||
|
|
||||||
|
self.create(this.S(instance));
|
||||||
|
|
||||||
|
$(this.scope)
|
||||||
|
.off('.tooltip')
|
||||||
|
.on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',
|
||||||
|
'[' + this.attr_name() + ']', function (e) {
|
||||||
|
var $this = S(this),
|
||||||
|
settings = $.extend({}, self.settings, self.data_options($this)),
|
||||||
|
is_touch = false;
|
||||||
|
|
||||||
|
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/mouse/i.test(e.type) && self.ie_touch(e)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this.hasClass('open')) {
|
||||||
|
if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
self.hide($this);
|
||||||
|
} else {
|
||||||
|
if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||||
|
return;
|
||||||
|
} else if (!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {
|
||||||
|
e.preventDefault();
|
||||||
|
S(settings.tooltip_class + '.open').hide();
|
||||||
|
is_touch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/enter|over/i.test(e.type)) {
|
||||||
|
this.timer = setTimeout(function () {
|
||||||
|
var tip = self.showTip($this);
|
||||||
|
}.bind(this), self.settings.hover_delay);
|
||||||
|
} else if (e.type === 'mouseout' || e.type === 'mouseleave') {
|
||||||
|
clearTimeout(this.timer);
|
||||||
|
self.hide($this);
|
||||||
|
} else {
|
||||||
|
self.showTip($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {
|
||||||
|
if (/mouse/i.test(e.type) && self.ie_touch(e)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {
|
||||||
|
return;
|
||||||
|
} else if ($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {
|
||||||
|
self.convert_to_touch($(this));
|
||||||
|
} else {
|
||||||
|
self.hide($(this));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {
|
||||||
|
self.hide(S(this));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
ie_touch : function (e) {
|
||||||
|
// How do I distinguish between IE11 and Windows Phone 8?????
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
showTip : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
if (this.should_show($target, $tip)) {
|
||||||
|
return this.show($target);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
|
||||||
|
getTip : function ($target) {
|
||||||
|
var selector = this.selector($target),
|
||||||
|
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
tip = null;
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
tip = this.S('span[data-selector="' + selector + '"]' + settings.tooltip_class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (typeof tip === 'object') ? tip : false;
|
||||||
|
},
|
||||||
|
|
||||||
|
selector : function ($target) {
|
||||||
|
var id = $target.attr('id'),
|
||||||
|
dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');
|
||||||
|
|
||||||
|
if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
|
||||||
|
dataSelector = this.random_str(6);
|
||||||
|
$target
|
||||||
|
.attr('data-selector', dataSelector)
|
||||||
|
.attr('aria-describedby', dataSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (id && id.length > 0) ? id : dataSelector;
|
||||||
|
},
|
||||||
|
|
||||||
|
create : function ($target) {
|
||||||
|
var self = this,
|
||||||
|
settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
tip_template = this.settings.tip_template;
|
||||||
|
|
||||||
|
if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {
|
||||||
|
tip_template = window[settings.tip_template];
|
||||||
|
}
|
||||||
|
|
||||||
|
var $tip = $(tip_template(this.selector($target), $('<div></div>').html($target.attr('title')).html())),
|
||||||
|
classes = this.inheritable_classes($target);
|
||||||
|
|
||||||
|
$tip.addClass(classes).appendTo(settings.append_to);
|
||||||
|
|
||||||
|
if (Modernizr.touch) {
|
||||||
|
$tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
|
||||||
|
$tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function (e) {
|
||||||
|
self.hide($target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.removeAttr('title').attr('title', '');
|
||||||
|
},
|
||||||
|
|
||||||
|
reposition : function (target, tip, classes) {
|
||||||
|
var width, nub, nubHeight, nubWidth, column, objPos;
|
||||||
|
|
||||||
|
tip.css('visibility', 'hidden').show();
|
||||||
|
|
||||||
|
width = target.data('width');
|
||||||
|
nub = tip.children('.nub');
|
||||||
|
nubHeight = nub.outerHeight();
|
||||||
|
nubWidth = nub.outerHeight();
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
tip.css({'width' : '100%'});
|
||||||
|
} else {
|
||||||
|
tip.css({'width' : (width) ? width : 'auto'});
|
||||||
|
}
|
||||||
|
|
||||||
|
objPos = function (obj, top, right, bottom, left, width) {
|
||||||
|
return obj.css({
|
||||||
|
'top' : (top) ? top : 'auto',
|
||||||
|
'bottom' : (bottom) ? bottom : 'auto',
|
||||||
|
'left' : (left) ? left : 'auto',
|
||||||
|
'right' : (right) ? right : 'auto'
|
||||||
|
}).end();
|
||||||
|
};
|
||||||
|
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left);
|
||||||
|
|
||||||
|
if (this.small()) {
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width());
|
||||||
|
tip.addClass('tip-override');
|
||||||
|
objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
|
||||||
|
} else {
|
||||||
|
var left = target.offset().left;
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
nub.addClass('rtl');
|
||||||
|
left = target.offset().left + target.outerWidth() - tip.outerWidth();
|
||||||
|
}
|
||||||
|
objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);
|
||||||
|
tip.removeClass('tip-override');
|
||||||
|
if (classes && classes.indexOf('tip-top') > -1) {
|
||||||
|
if (Foundation.rtl) {
|
||||||
|
nub.addClass('rtl');
|
||||||
|
}
|
||||||
|
objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)
|
||||||
|
.removeClass('tip-override');
|
||||||
|
} else if (classes && classes.indexOf('tip-left') > -1) {
|
||||||
|
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight))
|
||||||
|
.removeClass('tip-override');
|
||||||
|
nub.removeClass('rtl');
|
||||||
|
} else if (classes && classes.indexOf('tip-right') > -1) {
|
||||||
|
objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight))
|
||||||
|
.removeClass('tip-override');
|
||||||
|
nub.removeClass('rtl');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tip.css('visibility', 'visible').hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries.small).matches &&
|
||||||
|
!matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
inheritable_classes : function ($target) {
|
||||||
|
var settings = $.extend({}, this.settings, this.data_options($target)),
|
||||||
|
inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),
|
||||||
|
classes = $target.attr('class'),
|
||||||
|
filtered = classes ? $.map(classes.split(' '), function (el, i) {
|
||||||
|
if ($.inArray(el, inheritables) !== -1) {
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
}).join(' ') : '';
|
||||||
|
|
||||||
|
return $.trim(filtered);
|
||||||
|
},
|
||||||
|
|
||||||
|
convert_to_touch : function ($target) {
|
||||||
|
var self = this,
|
||||||
|
$tip = self.getTip($target),
|
||||||
|
settings = $.extend({}, self.settings, self.data_options($target));
|
||||||
|
|
||||||
|
if ($tip.find('.tap-to-close').length === 0) {
|
||||||
|
$tip.append('<span class="tap-to-close">' + settings.touch_close_text + '</span>');
|
||||||
|
$tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function (e) {
|
||||||
|
self.hide($target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.data('tooltip-open-event-type', 'touch');
|
||||||
|
},
|
||||||
|
|
||||||
|
show : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
|
||||||
|
if ($target.data('tooltip-open-event-type') == 'touch') {
|
||||||
|
this.convert_to_touch($target);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.reposition($target, $tip, $target.attr('class'));
|
||||||
|
$target.addClass('open');
|
||||||
|
$tip.fadeIn(150);
|
||||||
|
},
|
||||||
|
|
||||||
|
hide : function ($target) {
|
||||||
|
var $tip = this.getTip($target);
|
||||||
|
|
||||||
|
$tip.fadeOut(150, function () {
|
||||||
|
$tip.find('.tap-to-close').remove();
|
||||||
|
$tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');
|
||||||
|
$target.removeClass('open');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
var self = this;
|
||||||
|
this.S(this.scope).off('.fndtn.tooltip');
|
||||||
|
this.S(this.settings.tooltip_class).each(function (i) {
|
||||||
|
$('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());
|
||||||
|
}).remove();
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,452 @@
|
|||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
Foundation.libs.topbar = {
|
||||||
|
name : 'topbar',
|
||||||
|
|
||||||
|
version : '5.5.1',
|
||||||
|
|
||||||
|
settings : {
|
||||||
|
index : 0,
|
||||||
|
sticky_class : 'sticky',
|
||||||
|
custom_back_text : true,
|
||||||
|
back_text : 'Back',
|
||||||
|
mobile_show_parent_link : true,
|
||||||
|
is_hover : true,
|
||||||
|
scrolltop : true, // jump to top when sticky nav menu toggle is clicked
|
||||||
|
sticky_on : 'all'
|
||||||
|
},
|
||||||
|
|
||||||
|
init : function (section, method, options) {
|
||||||
|
Foundation.inherit(this, 'add_custom_rule register_media throttle');
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
self.register_media('topbar', 'foundation-mq-topbar');
|
||||||
|
|
||||||
|
this.bindings(method, options);
|
||||||
|
|
||||||
|
self.S('[' + this.attr_name() + ']', this.scope).each(function () {
|
||||||
|
var topbar = $(this),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||||
|
section = self.S('section, .top-bar-section', this);
|
||||||
|
topbar.data('index', 0);
|
||||||
|
var topbarContainer = topbar.parent();
|
||||||
|
if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {
|
||||||
|
self.settings.sticky_class = settings.sticky_class;
|
||||||
|
self.settings.sticky_topbar = topbar;
|
||||||
|
topbar.data('height', topbarContainer.outerHeight());
|
||||||
|
topbar.data('stickyoffset', topbarContainer.offset().top);
|
||||||
|
} else {
|
||||||
|
topbar.data('height', topbar.outerHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!settings.assembled) {
|
||||||
|
self.assemble(topbar);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.is_hover) {
|
||||||
|
self.S('.has-dropdown', topbar).addClass('not-click');
|
||||||
|
} else {
|
||||||
|
self.S('.has-dropdown', topbar).removeClass('not-click');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pad body when sticky (scrolled) or fixed.
|
||||||
|
self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');
|
||||||
|
|
||||||
|
if (topbarContainer.hasClass('fixed')) {
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
is_sticky : function (topbar, topbarContainer, settings) {
|
||||||
|
var sticky = topbarContainer.hasClass(settings.sticky_class);
|
||||||
|
var smallMatch = matchMedia(Foundation.media_queries.small).matches;
|
||||||
|
var medMatch = matchMedia(Foundation.media_queries.medium).matches;
|
||||||
|
var lrgMatch = matchMedia(Foundation.media_queries.large).matches;
|
||||||
|
|
||||||
|
if (sticky && settings.sticky_on === 'all') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (sticky && this.small() && settings.sticky_on.indexOf('small') !== -1) {
|
||||||
|
if (smallMatch && !medMatch && !lrgMatch) { return true; }
|
||||||
|
}
|
||||||
|
if (sticky && this.medium() && settings.sticky_on.indexOf('medium') !== -1) {
|
||||||
|
if (smallMatch && medMatch && !lrgMatch) { return true; }
|
||||||
|
}
|
||||||
|
if (sticky && this.large() && settings.sticky_on.indexOf('large') !== -1) {
|
||||||
|
if (smallMatch && medMatch && lrgMatch) { return true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// fix for iOS browsers
|
||||||
|
if (sticky && navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
toggle : function (toggleEl) {
|
||||||
|
var self = this,
|
||||||
|
topbar;
|
||||||
|
|
||||||
|
if (toggleEl) {
|
||||||
|
topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');
|
||||||
|
} else {
|
||||||
|
topbar = self.S('[' + this.attr_name() + ']');
|
||||||
|
}
|
||||||
|
|
||||||
|
var settings = topbar.data(this.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
var section = self.S('section, .top-bar-section', topbar);
|
||||||
|
|
||||||
|
if (self.breakpoint()) {
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left : '0%'});
|
||||||
|
$('>.name', section).css({left : '100%'});
|
||||||
|
} else {
|
||||||
|
section.css({right : '0%'});
|
||||||
|
$('>.name', section).css({right : '100%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
self.S('li.moved', section).removeClass('moved');
|
||||||
|
topbar.data('index', 0);
|
||||||
|
|
||||||
|
topbar
|
||||||
|
.toggleClass('expanded')
|
||||||
|
.css('height', '');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.scrolltop) {
|
||||||
|
if (!topbar.hasClass('expanded')) {
|
||||||
|
if (topbar.hasClass('fixed')) {
|
||||||
|
topbar.parent().addClass('fixed');
|
||||||
|
topbar.removeClass('fixed');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
} else if (topbar.parent().hasClass('fixed')) {
|
||||||
|
if (settings.scrolltop) {
|
||||||
|
topbar.parent().removeClass('fixed');
|
||||||
|
topbar.addClass('fixed');
|
||||||
|
self.S('body').removeClass('f-topbar-fixed');
|
||||||
|
|
||||||
|
window.scrollTo(0, 0);
|
||||||
|
} else {
|
||||||
|
topbar.parent().removeClass('expanded');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (self.is_sticky(topbar, topbar.parent(), settings)) {
|
||||||
|
topbar.parent().addClass('fixed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (topbar.parent().hasClass('fixed')) {
|
||||||
|
if (!topbar.hasClass('expanded')) {
|
||||||
|
topbar.removeClass('fixed');
|
||||||
|
topbar.parent().removeClass('expanded');
|
||||||
|
self.update_sticky_positioning();
|
||||||
|
} else {
|
||||||
|
topbar.addClass('fixed');
|
||||||
|
topbar.parent().addClass('expanded');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
timer : null,
|
||||||
|
|
||||||
|
events : function (bar) {
|
||||||
|
var self = this,
|
||||||
|
S = this.S;
|
||||||
|
|
||||||
|
S(this.scope)
|
||||||
|
.off('.topbar')
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
self.toggle(this);
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar', '.top-bar .top-bar-section li a[href^="#"],[' + this.attr_name() + '] .top-bar-section li a[href^="#"]', function (e) {
|
||||||
|
var li = $(this).closest('li');
|
||||||
|
if (self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown')) {
|
||||||
|
self.toggle();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {
|
||||||
|
var li = S(this),
|
||||||
|
target = S(e.target),
|
||||||
|
topbar = li.closest('[' + self.attr_name() + ']'),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
if (target.data('revealId')) {
|
||||||
|
self.toggle();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.breakpoint()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.is_hover && !Modernizr.touch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
|
if (li.hasClass('hover')) {
|
||||||
|
li
|
||||||
|
.removeClass('hover')
|
||||||
|
.find('li')
|
||||||
|
.removeClass('hover');
|
||||||
|
|
||||||
|
li.parents('li.hover')
|
||||||
|
.removeClass('hover');
|
||||||
|
} else {
|
||||||
|
li.addClass('hover');
|
||||||
|
|
||||||
|
$(li).siblings().removeClass('hover');
|
||||||
|
|
||||||
|
if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {
|
||||||
|
if (self.breakpoint()) {
|
||||||
|
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var $this = S(this),
|
||||||
|
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||||
|
section = topbar.find('section, .top-bar-section'),
|
||||||
|
dropdownHeight = $this.next('.dropdown').outerHeight(),
|
||||||
|
$selectedLi = $this.closest('li');
|
||||||
|
|
||||||
|
topbar.data('index', topbar.data('index') + 1);
|
||||||
|
$selectedLi.addClass('moved');
|
||||||
|
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left : -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
|
||||||
|
} else {
|
||||||
|
section.css({right : -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
S(window).off('.topbar').on('resize.fndtn.topbar', self.throttle(function () {
|
||||||
|
self.resize.call(self);
|
||||||
|
}, 50)).trigger('resize').trigger('resize.fndtn.topbar').load(function () {
|
||||||
|
// Ensure that the offset is calculated after all of the pages resources have loaded
|
||||||
|
S(this).trigger('resize.fndtn.topbar');
|
||||||
|
});
|
||||||
|
|
||||||
|
S('body').off('.topbar').on('click.fndtn.topbar', function (e) {
|
||||||
|
var parent = S(e.target).closest('li').closest('li.hover');
|
||||||
|
|
||||||
|
if (parent.length > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
S('[' + self.attr_name() + '] li.hover').removeClass('hover');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Go up a level on Click
|
||||||
|
S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var $this = S(this),
|
||||||
|
topbar = $this.closest('[' + self.attr_name() + ']'),
|
||||||
|
section = topbar.find('section, .top-bar-section'),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init'),
|
||||||
|
$movedLi = $this.closest('li.moved'),
|
||||||
|
$previousLevelUl = $movedLi.parent();
|
||||||
|
|
||||||
|
topbar.data('index', topbar.data('index') - 1);
|
||||||
|
|
||||||
|
if (!self.rtl) {
|
||||||
|
section.css({left : -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({left : 100 * topbar.data('index') + '%'});
|
||||||
|
} else {
|
||||||
|
section.css({right : -(100 * topbar.data('index')) + '%'});
|
||||||
|
section.find('>.name').css({right : 100 * topbar.data('index') + '%'});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (topbar.data('index') === 0) {
|
||||||
|
topbar.css('height', '');
|
||||||
|
} else {
|
||||||
|
topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
$movedLi.removeClass('moved');
|
||||||
|
}, 300);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Show dropdown menus when their items are focused
|
||||||
|
S(this.scope).find('.dropdown a')
|
||||||
|
.focus(function () {
|
||||||
|
$(this).parents('.has-dropdown').addClass('hover');
|
||||||
|
})
|
||||||
|
.blur(function () {
|
||||||
|
$(this).parents('.has-dropdown').removeClass('hover');
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
resize : function () {
|
||||||
|
var self = this;
|
||||||
|
self.S('[' + this.attr_name() + ']').each(function () {
|
||||||
|
var topbar = self.S(this),
|
||||||
|
settings = topbar.data(self.attr_name(true) + '-init');
|
||||||
|
|
||||||
|
var stickyContainer = topbar.parent('.' + self.settings.sticky_class);
|
||||||
|
var stickyOffset;
|
||||||
|
|
||||||
|
if (!self.breakpoint()) {
|
||||||
|
var doToggle = topbar.hasClass('expanded');
|
||||||
|
topbar
|
||||||
|
.css('height', '')
|
||||||
|
.removeClass('expanded')
|
||||||
|
.find('li')
|
||||||
|
.removeClass('hover');
|
||||||
|
|
||||||
|
if (doToggle) {
|
||||||
|
self.toggle(topbar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self.is_sticky(topbar, stickyContainer, settings)) {
|
||||||
|
if (stickyContainer.hasClass('fixed')) {
|
||||||
|
// Remove the fixed to allow for correct calculation of the offset.
|
||||||
|
stickyContainer.removeClass('fixed');
|
||||||
|
|
||||||
|
stickyOffset = stickyContainer.offset().top;
|
||||||
|
if (self.S(document.body).hasClass('f-topbar-fixed')) {
|
||||||
|
stickyOffset -= topbar.data('height');
|
||||||
|
}
|
||||||
|
|
||||||
|
topbar.data('stickyoffset', stickyOffset);
|
||||||
|
stickyContainer.addClass('fixed');
|
||||||
|
} else {
|
||||||
|
stickyOffset = stickyContainer.offset().top;
|
||||||
|
topbar.data('stickyoffset', stickyOffset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
breakpoint : function () {
|
||||||
|
return !matchMedia(Foundation.media_queries['topbar']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
small : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['small']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
medium : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['medium']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
large : function () {
|
||||||
|
return matchMedia(Foundation.media_queries['large']).matches;
|
||||||
|
},
|
||||||
|
|
||||||
|
assemble : function (topbar) {
|
||||||
|
var self = this,
|
||||||
|
settings = topbar.data(this.attr_name(true) + '-init'),
|
||||||
|
section = self.S('section, .top-bar-section', topbar);
|
||||||
|
|
||||||
|
// Pull element out of the DOM for manipulation
|
||||||
|
section.detach();
|
||||||
|
|
||||||
|
self.S('.has-dropdown>a', section).each(function () {
|
||||||
|
var $link = self.S(this),
|
||||||
|
$dropdown = $link.siblings('.dropdown'),
|
||||||
|
url = $link.attr('href'),
|
||||||
|
$titleLi;
|
||||||
|
|
||||||
|
if (!$dropdown.find('.title.back').length) {
|
||||||
|
|
||||||
|
if (settings.mobile_show_parent_link == true && url) {
|
||||||
|
$titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5></li><li class="parent-link hide-for-large-up"><a class="parent-link js-generated" href="' + url + '">' + $link.html() +'</a></li>');
|
||||||
|
} else {
|
||||||
|
$titleLi = $('<li class="title back js-generated"><h5><a href="javascript:void(0)"></a></h5>');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy link to subnav
|
||||||
|
if (settings.custom_back_text == true) {
|
||||||
|
$('h5>a', $titleLi).html(settings.back_text);
|
||||||
|
} else {
|
||||||
|
$('h5>a', $titleLi).html('« ' + $link.html());
|
||||||
|
}
|
||||||
|
$dropdown.prepend($titleLi);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Put element back in the DOM
|
||||||
|
section.appendTo(topbar);
|
||||||
|
|
||||||
|
// check for sticky
|
||||||
|
this.sticky();
|
||||||
|
|
||||||
|
this.assembled(topbar);
|
||||||
|
},
|
||||||
|
|
||||||
|
assembled : function (topbar) {
|
||||||
|
topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled : true}));
|
||||||
|
},
|
||||||
|
|
||||||
|
height : function (ul) {
|
||||||
|
var total = 0,
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
$('> li', ul).each(function () {
|
||||||
|
total += self.S(this).outerHeight(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
return total;
|
||||||
|
},
|
||||||
|
|
||||||
|
sticky : function () {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
this.S(window).on('scroll', function () {
|
||||||
|
self.update_sticky_positioning();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
update_sticky_positioning : function () {
|
||||||
|
var klass = '.' + this.settings.sticky_class,
|
||||||
|
$window = this.S(window),
|
||||||
|
self = this;
|
||||||
|
|
||||||
|
if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar, this.settings.sticky_topbar.parent(), this.settings)) {
|
||||||
|
var distance = this.settings.sticky_topbar.data('stickyoffset');
|
||||||
|
if (!self.S(klass).hasClass('expanded')) {
|
||||||
|
if ($window.scrollTop() > (distance)) {
|
||||||
|
if (!self.S(klass).hasClass('fixed')) {
|
||||||
|
self.S(klass).addClass('fixed');
|
||||||
|
self.S('body').addClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
} else if ($window.scrollTop() <= distance) {
|
||||||
|
if (self.S(klass).hasClass('fixed')) {
|
||||||
|
self.S(klass).removeClass('fixed');
|
||||||
|
self.S('body').removeClass('f-topbar-fixed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
off : function () {
|
||||||
|
this.S(this.scope).off('.fndtn.topbar');
|
||||||
|
this.S(window).off('.fndtn.topbar');
|
||||||
|
},
|
||||||
|
|
||||||
|
reflow : function () {}
|
||||||
|
};
|
||||||
|
}(jQuery, window, window.document));
|
@ -0,0 +1,8 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery Cookie Plugin v1.4.1
|
||||||
|
* https://github.com/carhartl/jquery-cookie
|
||||||
|
*
|
||||||
|
* Copyright 2013 Klaus Hartl
|
||||||
|
* Released under the MIT license
|
||||||
|
*/
|
||||||
|
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
|
@ -0,0 +1,2 @@
|
|||||||
|
/*! http://mths.be/placeholder v2.0.9 by @mathias */
|
||||||
|
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr("placeholder")&&f.hasClass("placeholder"))if(f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c;f.focus()}else d.value="",f.removeClass("placeholder"),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(""===e.value){if("password"===e.type){if(!f.data("placeholder-textinput")){try{d=f.clone().attr({type:"text"})}catch(h){d=a("<input>").attr(a.extend(b(this),{type:"text"}))}d.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",c),f.data({"placeholder-textinput":d,"placeholder-id":g}).before(d)}f=f.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g).show()}f.addClass("placeholder"),f[0].value=f.attr("placeholder")}else f.removeClass("placeholder")}function e(){try{return document.activeElement}catch(a){}}var f,g,h="[object OperaMini]"==Object.prototype.toString.call(window.operamini),i="placeholder"in document.createElement("input")&&!h,j="placeholder"in document.createElement("textarea")&&!h,k=a.valHooks,l=a.propHooks;i&&j?(g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0):(g=a.fn.placeholder=function(){var a=this;return a.filter((i?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder"),a},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass("placeholder")?"":b.value},set:function(b,f){var g=a(b),h=g.data("placeholder-password");return h?h[0].value=f:g.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass("placeholder")?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a(".placeholder",this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){a(".placeholder").each(function(){this.value=""})}))});
|
@ -0,0 +1,4 @@
|
|||||||
|
# www.robotstxt.org/
|
||||||
|
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
|
||||||
|
|
||||||
|
User-agent: *
|
After Width: | Height: | Size: 538 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 373 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 216 KiB |
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" ?><svg height="18px" version="1.1" viewBox="0 0 22 18" width="22px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><defs><path d="M0.140487671,0 C0.0628984728,0 0,0.065177679 0,0.14488998 L0,17.85511 C0,17.9351306 0.0631103513,18 0.140487671,18 L21.8595124,18 C21.9371015,18 22,17.9348223 22,17.85511 L22,0.14488998 C22,0.064869454 21.9368896,0 21.8595124,0 L0.140487671,0 Z M1,1 L1,17 L21,17 L21,1 L1,1 Z M8.31146755,3.96557279 L11.5680228,9.58960333 C11.6080958,9.65880899 11.694647,9.6768875 11.7588871,9.63170823 L14.5213939,7.68886831 C14.6506985,7.59792981 14.8228868,7.62965466 14.9092326,7.7648075 L19.9298551,15.6233415 C20.0147479,15.75622 19.9533678,15.8639394 19.8034742,15.8639394 L2.14722686,15.8639394 C1.99212294,15.8639394 1.92473319,15.7514312 1.99797568,15.6102003 L7.71352136,4.58911188 L8.03502924,3.96915944 C8.107704,3.82902321 8.23291348,3.82991093 8.31146755,3.96557279 Z M17.5,6 C18.3284271,6 19,5.32842715 19,4.5 C19,3.67157284 18.3284271,3 17.5,3 C16.6715729,3 16,3.67157284 16,4.5 C16,5.32842715 16.6715729,6 17.5,6 Z" id="path-1"/></defs><g fill="none" fill-rule="evenodd" id="miu" stroke="none" stroke-width="1"><g id="editor_image_picture_photo_outline_stroke"><use fill="#000000" fill-rule="evenodd" xlink:href="#path-1"/><use fill="none" xlink:href="#path-1"/></g></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 555 KiB |
After Width: | Height: | Size: 39 KiB |