From 3561d025dd59f8bb3033059c36f959d4fcbc12fb Mon Sep 17 00:00:00 2001 From: Kenneth Cachia Date: Wed, 14 Aug 2013 01:18:59 -0400 Subject: [PATCH] Initial commit. --- Gruntfile.js | 68 ++ README.md | 4 + package.json | 14 + release/font-awesome/adjust.png | Bin 0 -> 520 bytes release/font-awesome/align-center.png | Bin 0 -> 328 bytes release/font-awesome/align-justify.png | Bin 0 -> 231 bytes release/font-awesome/align-left.png | Bin 0 -> 290 bytes release/font-awesome/align-right.png | Bin 0 -> 274 bytes release/font-awesome/ambulance.png | Bin 0 -> 491 bytes release/font-awesome/angle-down.png | Bin 0 -> 267 bytes release/font-awesome/angle-left.png | Bin 0 -> 258 bytes release/font-awesome/angle-right.png | Bin 0 -> 240 bytes release/font-awesome/angle-up.png | Bin 0 -> 257 bytes release/font-awesome/arrow-down.png | Bin 0 -> 416 bytes release/font-awesome/arrow-left.png | Bin 0 -> 389 bytes release/font-awesome/arrow-right.png | Bin 0 -> 394 bytes release/font-awesome/arrow-up.png | Bin 0 -> 403 bytes release/font-awesome/asterisk.png | Bin 0 -> 526 bytes release/font-awesome/backward.png | Bin 0 -> 397 bytes release/font-awesome/ban-circle.png | Bin 0 -> 605 bytes release/font-awesome/bar-chart.png | Bin 0 -> 345 bytes release/font-awesome/barcode.png | Bin 0 -> 244 bytes release/font-awesome/beaker.png | Bin 0 -> 501 bytes release/font-awesome/beer.png | Bin 0 -> 393 bytes release/font-awesome/bell-alt.png | Bin 0 -> 548 bytes release/font-awesome/bell.png | Bin 0 -> 665 bytes release/font-awesome/bold.png | Bin 0 -> 548 bytes release/font-awesome/bolt.png | Bin 0 -> 483 bytes release/font-awesome/book.png | Bin 0 -> 625 bytes release/font-awesome/bookmark-empty.png | Bin 0 -> 383 bytes release/font-awesome/bookmark.png | Bin 0 -> 296 bytes release/font-awesome/briefcase.png | Bin 0 -> 384 bytes release/font-awesome/building.png | Bin 0 -> 545 bytes release/font-awesome/bullhorn.png | Bin 0 -> 572 bytes release/font-awesome/calendar.png | Bin 0 -> 485 bytes release/font-awesome/camera-retro.png | Bin 0 -> 572 bytes release/font-awesome/camera.png | Bin 0 -> 600 bytes release/font-awesome/caret-down.png | Bin 0 -> 238 bytes release/font-awesome/caret-left.png | Bin 0 -> 233 bytes release/font-awesome/caret-right.png | Bin 0 -> 240 bytes release/font-awesome/caret-up.png | Bin 0 -> 220 bytes release/font-awesome/certificate.png | Bin 0 -> 510 bytes release/font-awesome/check-empty.png | Bin 0 -> 382 bytes release/font-awesome/check.png | Bin 0 -> 533 bytes release/font-awesome/chevron-down.png | Bin 0 -> 352 bytes release/font-awesome/chevron-left.png | Bin 0 -> 346 bytes release/font-awesome/chevron-right.png | Bin 0 -> 341 bytes release/font-awesome/chevron-up.png | Bin 0 -> 364 bytes release/font-awesome/circle-arrow-down.png | Bin 0 -> 556 bytes release/font-awesome/circle-arrow-left.png | Bin 0 -> 518 bytes release/font-awesome/circle-arrow-right.png | Bin 0 -> 525 bytes release/font-awesome/circle-arrow-up.png | Bin 0 -> 559 bytes release/font-awesome/circle-blank.png | Bin 0 -> 567 bytes release/font-awesome/circle.png | Bin 0 -> 430 bytes release/font-awesome/cloud-download.png | Bin 0 -> 547 bytes release/font-awesome/cloud-upload.png | Bin 0 -> 543 bytes release/font-awesome/cloud.png | Bin 0 -> 470 bytes release/font-awesome/coffee.png | Bin 0 -> 414 bytes release/font-awesome/cog.png | Bin 0 -> 604 bytes release/font-awesome/cogs.png | Bin 0 -> 852 bytes release/font-awesome/columns.png | Bin 0 -> 292 bytes release/font-awesome/comment-alt.png | Bin 0 -> 643 bytes release/font-awesome/comment.png | Bin 0 -> 477 bytes release/font-awesome/comments-alt.png | Bin 0 -> 710 bytes release/font-awesome/comments.png | Bin 0 -> 592 bytes release/font-awesome/copy.png | Bin 0 -> 492 bytes release/font-awesome/credit.png | Bin 0 -> 304 bytes release/font-awesome/cut.png | Bin 0 -> 850 bytes release/font-awesome/dashboard.png | Bin 0 -> 658 bytes release/font-awesome/desktop.png | Bin 0 -> 318 bytes release/font-awesome/double-angle-down.png | Bin 0 -> 347 bytes release/font-awesome/double-angle-left.png | Bin 0 -> 297 bytes release/font-awesome/double-angle-right.png | Bin 0 -> 286 bytes release/font-awesome/double-angle-up.png | Bin 0 -> 328 bytes release/font-awesome/download-alt.png | Bin 0 -> 356 bytes release/font-awesome/download.png | Bin 0 -> 626 bytes release/font-awesome/edit.png | Bin 0 -> 568 bytes release/font-awesome/eject.png | Bin 0 -> 304 bytes release/font-awesome/envelope-alt.png | Bin 0 -> 495 bytes release/font-awesome/envelope.png | Bin 0 -> 497 bytes release/font-awesome/exchange.png | Bin 0 -> 330 bytes release/font-awesome/exclamation-sign.png | Bin 0 -> 490 bytes release/font-awesome/external-link.png | Bin 0 -> 483 bytes release/font-awesome/eye-close.png | Bin 0 -> 749 bytes release/font-awesome/eye-open.png | Bin 0 -> 653 bytes release/font-awesome/facebook-sign.png | Bin 0 -> 444 bytes release/font-awesome/facebook.png | Bin 0 -> 331 bytes release/font-awesome/facetime-video.png | Bin 0 -> 402 bytes release/font-awesome/fast-backward.png | Bin 0 -> 426 bytes release/font-awesome/fast-forward.png | Bin 0 -> 426 bytes release/font-awesome/fighter-jet.png | Bin 0 -> 482 bytes release/font-awesome/file-alt.png | Bin 0 -> 409 bytes release/font-awesome/file.png | Bin 0 -> 344 bytes release/font-awesome/film.png | Bin 0 -> 532 bytes release/font-awesome/filter.png | Bin 0 -> 297 bytes release/font-awesome/fire.png | Bin 0 -> 495 bytes release/font-awesome/flag.png | Bin 0 -> 366 bytes release/font-awesome/folder-close-alt.png | Bin 0 -> 402 bytes release/font-awesome/folder-close.png | Bin 0 -> 324 bytes release/font-awesome/folder-open-alt.png | Bin 0 -> 541 bytes release/font-awesome/folder-open.png | Bin 0 -> 464 bytes release/font-awesome/font.png | Bin 0 -> 578 bytes release/font-awesome/food.png | Bin 0 -> 388 bytes release/font-awesome/forward.png | Bin 0 -> 380 bytes release/font-awesome/fullscreen.png | Bin 0 -> 507 bytes release/font-awesome/gift.png | Bin 0 -> 505 bytes release/font-awesome/github-alt.png | Bin 0 -> 673 bytes release/font-awesome/github-sign.png | Bin 0 -> 640 bytes release/font-awesome/github.png | Bin 0 -> 747 bytes release/font-awesome/glass.png | Bin 0 -> 305 bytes release/font-awesome/globe.png | Bin 0 -> 716 bytes release/font-awesome/google-plus-sign.png | Bin 0 -> 673 bytes release/font-awesome/google-plus.png | Bin 0 -> 723 bytes release/font-awesome/group.png | Bin 0 -> 810 bytes release/font-awesome/h-sign.png | Bin 0 -> 425 bytes release/font-awesome/hand-down.png | Bin 0 -> 640 bytes release/font-awesome/hand-left.png | Bin 0 -> 611 bytes release/font-awesome/hand-right.png | Bin 0 -> 583 bytes release/font-awesome/hand-up.png | Bin 0 -> 666 bytes release/font-awesome/hdd.png | Bin 0 -> 498 bytes release/font-awesome/headphones.png | Bin 0 -> 639 bytes release/font-awesome/heart-empty.png | Bin 0 -> 639 bytes release/font-awesome/heart.png | Bin 0 -> 477 bytes release/font-awesome/home.png | Bin 0 -> 511 bytes release/font-awesome/hospital.png | Bin 0 -> 599 bytes release/font-awesome/inbox.png | Bin 0 -> 462 bytes release/font-awesome/indent-left.png | Bin 0 -> 302 bytes release/font-awesome/indent-right.png | Bin 0 -> 288 bytes release/font-awesome/info-sign.png | Bin 0 -> 517 bytes release/font-awesome/italic.png | Bin 0 -> 463 bytes release/font-awesome/key.png | Bin 0 -> 608 bytes release/font-awesome/laptop.png | Bin 0 -> 331 bytes release/font-awesome/leaf.png | Bin 0 -> 539 bytes release/font-awesome/legal.png | Bin 0 -> 494 bytes release/font-awesome/lemon.png | Bin 0 -> 603 bytes release/font-awesome/lightbulb.png | Bin 0 -> 603 bytes release/font-awesome/link.png | Bin 0 -> 636 bytes release/font-awesome/linkedin-sign.png | Bin 0 -> 489 bytes release/font-awesome/linkedin.png | Bin 0 -> 373 bytes release/font-awesome/list-alt.png | Bin 0 -> 392 bytes release/font-awesome/list-ol.png | Bin 0 -> 504 bytes release/font-awesome/list-ul.png | Bin 0 -> 424 bytes release/font-awesome/list.png | Bin 0 -> 287 bytes release/font-awesome/lock.png | Bin 0 -> 470 bytes release/font-awesome/magic.png | Bin 0 -> 534 bytes release/font-awesome/magnet.png | Bin 0 -> 479 bytes release/font-awesome/map-marker.png | Bin 0 -> 542 bytes release/font-awesome/medkit.png | Bin 0 -> 437 bytes release/font-awesome/minus-sign.png | Bin 0 -> 466 bytes release/font-awesome/minus.png | Bin 0 -> 195 bytes release/font-awesome/mobile.png | Bin 0 -> 312 bytes release/font-awesome/money.png | Bin 0 -> 537 bytes release/font-awesome/move.png | Bin 0 -> 468 bytes release/font-awesome/music.png | Bin 0 -> 435 bytes release/font-awesome/off.png | Bin 0 -> 693 bytes release/font-awesome/ok-circle.png | Bin 0 -> 665 bytes release/font-awesome/ok-sign.png | Bin 0 -> 545 bytes release/font-awesome/ok.png | Bin 0 -> 350 bytes release/font-awesome/paper-clip.png | Bin 0 -> 569 bytes release/font-awesome/paste.png | Bin 0 -> 402 bytes release/font-awesome/pause.png | Bin 0 -> 182 bytes release/font-awesome/pencil.png | Bin 0 -> 435 bytes release/font-awesome/phone-sign.png | Bin 0 -> 548 bytes release/font-awesome/phone.png | Bin 0 -> 491 bytes release/font-awesome/picture.png | Bin 0 -> 442 bytes release/font-awesome/pinterest-sign.png | Bin 0 -> 673 bytes release/font-awesome/pinterest.png | Bin 0 -> 755 bytes release/font-awesome/plane.png | Bin 0 -> 541 bytes release/font-awesome/play-circle.png | Bin 0 -> 645 bytes release/font-awesome/play.png | Bin 0 -> 309 bytes release/font-awesome/plus-sign.png | Bin 0 -> 505 bytes release/font-awesome/plus-sign2.png | Bin 0 -> 424 bytes release/font-awesome/plus.png | Bin 0 -> 290 bytes release/font-awesome/print.png | Bin 0 -> 461 bytes release/font-awesome/pushpin.png | Bin 0 -> 434 bytes release/font-awesome/qrcode.png | Bin 0 -> 476 bytes release/font-awesome/question-sign.png | Bin 0 -> 614 bytes release/font-awesome/quote-left.png | Bin 0 -> 424 bytes release/font-awesome/quote-right.png | Bin 0 -> 409 bytes release/font-awesome/random.png | Bin 0 -> 577 bytes release/font-awesome/refresh.png | Bin 0 -> 576 bytes release/font-awesome/remove-circle.png | Bin 0 -> 679 bytes release/font-awesome/remove-sign.png | Bin 0 -> 519 bytes release/font-awesome/remove.png | Bin 0 -> 414 bytes release/font-awesome/reorder.png | Bin 0 -> 267 bytes release/font-awesome/repeat.png | Bin 0 -> 629 bytes release/font-awesome/reply.png | Bin 0 -> 446 bytes release/font-awesome/resize-full.png | Bin 0 -> 407 bytes release/font-awesome/resize-horizontal.png | Bin 0 -> 288 bytes release/font-awesome/resize-small.png | Bin 0 -> 429 bytes release/font-awesome/resize-vertical.png | Bin 0 -> 307 bytes release/font-awesome/retweet.png | Bin 0 -> 465 bytes release/font-awesome/road.png | Bin 0 -> 497 bytes release/font-awesome/rss.png | Bin 0 -> 597 bytes release/font-awesome/save.png | Bin 0 -> 432 bytes release/font-awesome/screenshot.png | Bin 0 -> 636 bytes release/font-awesome/search.png | Bin 0 -> 627 bytes release/font-awesome/share-alt.png | Bin 0 -> 461 bytes release/font-awesome/share.png | Bin 0 -> 594 bytes release/font-awesome/shopping-cart.png | Bin 0 -> 438 bytes release/font-awesome/sign-blank.png | Bin 0 -> 293 bytes release/font-awesome/signal.png | Bin 0 -> 289 bytes release/font-awesome/signin.png | Bin 0 -> 428 bytes release/font-awesome/signout.png | Bin 0 -> 432 bytes release/font-awesome/sitemap.png | Bin 0 -> 479 bytes release/font-awesome/sort-down.png | Bin 0 -> 219 bytes release/font-awesome/sort-up.png | Bin 0 -> 217 bytes release/font-awesome/sort.png | Bin 0 -> 308 bytes release/font-awesome/spinner.png | Bin 0 -> 538 bytes release/font-awesome/star-empty.png | Bin 0 -> 630 bytes release/font-awesome/star-half.png | Bin 0 -> 327 bytes release/font-awesome/star.png | Bin 0 -> 483 bytes release/font-awesome/step-backward.png | Bin 0 -> 299 bytes release/font-awesome/step-forward.png | Bin 0 -> 296 bytes release/font-awesome/stethoscope.png | Bin 0 -> 614 bytes release/font-awesome/stop.png | Bin 0 -> 168 bytes release/font-awesome/strikethrough.png | Bin 0 -> 553 bytes release/font-awesome/suitcase.png | Bin 0 -> 348 bytes release/font-awesome/table.png | Bin 0 -> 435 bytes release/font-awesome/tablet.png | Bin 0 -> 297 bytes release/font-awesome/tag.png | Bin 0 -> 397 bytes release/font-awesome/tags.png | Bin 0 -> 468 bytes release/font-awesome/tasks.png | Bin 0 -> 312 bytes release/font-awesome/text-height.png | Bin 0 -> 494 bytes release/font-awesome/text-width.png | Bin 0 -> 508 bytes release/font-awesome/th-large.png | Bin 0 -> 313 bytes release/font-awesome/th-list.png | Bin 0 -> 417 bytes release/font-awesome/th.png | Bin 0 -> 525 bytes release/font-awesome/thumbs-down.png | Bin 0 -> 620 bytes release/font-awesome/thumbs-up.png | Bin 0 -> 625 bytes release/font-awesome/time.png | Bin 0 -> 619 bytes release/font-awesome/tint.png | Bin 0 -> 485 bytes release/font-awesome/trash.png | Bin 0 -> 436 bytes release/font-awesome/trophy.png | Bin 0 -> 597 bytes release/font-awesome/truck.png | Bin 0 -> 406 bytes release/font-awesome/twitter-sign.png | Bin 0 -> 546 bytes release/font-awesome/twitter.png | Bin 0 -> 592 bytes release/font-awesome/umbrella.png | Bin 0 -> 520 bytes release/font-awesome/underline.png | Bin 0 -> 495 bytes release/font-awesome/undo.png | Bin 0 -> 617 bytes release/font-awesome/unlock.png | Bin 0 -> 480 bytes release/font-awesome/upload-alt.png | Bin 0 -> 343 bytes release/font-awesome/upload.png | Bin 0 -> 633 bytes release/font-awesome/user-md.png | Bin 0 -> 688 bytes release/font-awesome/user.png | Bin 0 -> 513 bytes release/font-awesome/volume-down.png | Bin 0 -> 353 bytes release/font-awesome/volume-off.png | Bin 0 -> 247 bytes release/font-awesome/volume-up.png | Bin 0 -> 681 bytes release/font-awesome/warning-sign.png | Bin 0 -> 532 bytes release/font-awesome/wrench.png | Bin 0 -> 514 bytes release/font-awesome/zoom-in.png | Bin 0 -> 683 bytes release/font-awesome/zoom-out.png | Bin 0 -> 642 bytes release/index.html | 67 ++ release/shape-shifter.js | 740 ++++++++++++++++++++ release/site.min.css | 2 + scripts/color.js | 13 + scripts/dot.js | 113 +++ scripts/drawing.js | 56 ++ scripts/point.js | 8 + scripts/shape-builder.js | 126 ++++ scripts/shape-shifter.js | 32 + scripts/shape.js | 107 +++ scripts/ui-tabs.js | 39 ++ scripts/ui.js | 238 +++++++ styles/normalize.css | 375 ++++++++++ styles/style.css | 363 ++++++++++ 266 files changed, 2365 insertions(+) create mode 100644 Gruntfile.js create mode 100644 README.md create mode 100644 package.json create mode 100755 release/font-awesome/adjust.png create mode 100755 release/font-awesome/align-center.png create mode 100755 release/font-awesome/align-justify.png create mode 100755 release/font-awesome/align-left.png create mode 100755 release/font-awesome/align-right.png create mode 100755 release/font-awesome/ambulance.png create mode 100755 release/font-awesome/angle-down.png create mode 100755 release/font-awesome/angle-left.png create mode 100755 release/font-awesome/angle-right.png create mode 100755 release/font-awesome/angle-up.png create mode 100755 release/font-awesome/arrow-down.png create mode 100755 release/font-awesome/arrow-left.png create mode 100755 release/font-awesome/arrow-right.png create mode 100755 release/font-awesome/arrow-up.png create mode 100755 release/font-awesome/asterisk.png create mode 100755 release/font-awesome/backward.png create mode 100755 release/font-awesome/ban-circle.png create mode 100755 release/font-awesome/bar-chart.png create mode 100755 release/font-awesome/barcode.png create mode 100755 release/font-awesome/beaker.png create mode 100755 release/font-awesome/beer.png create mode 100755 release/font-awesome/bell-alt.png create mode 100755 release/font-awesome/bell.png create mode 100755 release/font-awesome/bold.png create mode 100755 release/font-awesome/bolt.png create mode 100755 release/font-awesome/book.png create mode 100755 release/font-awesome/bookmark-empty.png create mode 100755 release/font-awesome/bookmark.png create mode 100755 release/font-awesome/briefcase.png create mode 100755 release/font-awesome/building.png create mode 100755 release/font-awesome/bullhorn.png create mode 100755 release/font-awesome/calendar.png create mode 100755 release/font-awesome/camera-retro.png create mode 100755 release/font-awesome/camera.png create mode 100755 release/font-awesome/caret-down.png create mode 100755 release/font-awesome/caret-left.png create mode 100755 release/font-awesome/caret-right.png create mode 100755 release/font-awesome/caret-up.png create mode 100755 release/font-awesome/certificate.png create mode 100755 release/font-awesome/check-empty.png create mode 100755 release/font-awesome/check.png create mode 100755 release/font-awesome/chevron-down.png create mode 100755 release/font-awesome/chevron-left.png create mode 100755 release/font-awesome/chevron-right.png create mode 100755 release/font-awesome/chevron-up.png create mode 100755 release/font-awesome/circle-arrow-down.png create mode 100755 release/font-awesome/circle-arrow-left.png create mode 100755 release/font-awesome/circle-arrow-right.png create mode 100755 release/font-awesome/circle-arrow-up.png create mode 100755 release/font-awesome/circle-blank.png create mode 100755 release/font-awesome/circle.png create mode 100755 release/font-awesome/cloud-download.png create mode 100755 release/font-awesome/cloud-upload.png create mode 100755 release/font-awesome/cloud.png create mode 100755 release/font-awesome/coffee.png create mode 100755 release/font-awesome/cog.png create mode 100755 release/font-awesome/cogs.png create mode 100755 release/font-awesome/columns.png create mode 100755 release/font-awesome/comment-alt.png create mode 100755 release/font-awesome/comment.png create mode 100755 release/font-awesome/comments-alt.png create mode 100755 release/font-awesome/comments.png create mode 100755 release/font-awesome/copy.png create mode 100755 release/font-awesome/credit.png create mode 100755 release/font-awesome/cut.png create mode 100755 release/font-awesome/dashboard.png create mode 100755 release/font-awesome/desktop.png create mode 100755 release/font-awesome/double-angle-down.png create mode 100755 release/font-awesome/double-angle-left.png create mode 100755 release/font-awesome/double-angle-right.png create mode 100755 release/font-awesome/double-angle-up.png create mode 100755 release/font-awesome/download-alt.png create mode 100755 release/font-awesome/download.png create mode 100755 release/font-awesome/edit.png create mode 100755 release/font-awesome/eject.png create mode 100755 release/font-awesome/envelope-alt.png create mode 100755 release/font-awesome/envelope.png create mode 100755 release/font-awesome/exchange.png create mode 100755 release/font-awesome/exclamation-sign.png create mode 100755 release/font-awesome/external-link.png create mode 100755 release/font-awesome/eye-close.png create mode 100755 release/font-awesome/eye-open.png create mode 100755 release/font-awesome/facebook-sign.png create mode 100755 release/font-awesome/facebook.png create mode 100755 release/font-awesome/facetime-video.png create mode 100755 release/font-awesome/fast-backward.png create mode 100755 release/font-awesome/fast-forward.png create mode 100755 release/font-awesome/fighter-jet.png create mode 100755 release/font-awesome/file-alt.png create mode 100755 release/font-awesome/file.png create mode 100755 release/font-awesome/film.png create mode 100755 release/font-awesome/filter.png create mode 100755 release/font-awesome/fire.png create mode 100755 release/font-awesome/flag.png create mode 100755 release/font-awesome/folder-close-alt.png create mode 100755 release/font-awesome/folder-close.png create mode 100755 release/font-awesome/folder-open-alt.png create mode 100755 release/font-awesome/folder-open.png create mode 100755 release/font-awesome/font.png create mode 100755 release/font-awesome/food.png create mode 100755 release/font-awesome/forward.png create mode 100755 release/font-awesome/fullscreen.png create mode 100755 release/font-awesome/gift.png create mode 100755 release/font-awesome/github-alt.png create mode 100755 release/font-awesome/github-sign.png create mode 100755 release/font-awesome/github.png create mode 100755 release/font-awesome/glass.png create mode 100755 release/font-awesome/globe.png create mode 100755 release/font-awesome/google-plus-sign.png create mode 100755 release/font-awesome/google-plus.png create mode 100755 release/font-awesome/group.png create mode 100755 release/font-awesome/h-sign.png create mode 100755 release/font-awesome/hand-down.png create mode 100755 release/font-awesome/hand-left.png create mode 100755 release/font-awesome/hand-right.png create mode 100755 release/font-awesome/hand-up.png create mode 100755 release/font-awesome/hdd.png create mode 100755 release/font-awesome/headphones.png create mode 100755 release/font-awesome/heart-empty.png create mode 100755 release/font-awesome/heart.png create mode 100755 release/font-awesome/home.png create mode 100755 release/font-awesome/hospital.png create mode 100755 release/font-awesome/inbox.png create mode 100755 release/font-awesome/indent-left.png create mode 100755 release/font-awesome/indent-right.png create mode 100755 release/font-awesome/info-sign.png create mode 100755 release/font-awesome/italic.png create mode 100755 release/font-awesome/key.png create mode 100755 release/font-awesome/laptop.png create mode 100755 release/font-awesome/leaf.png create mode 100755 release/font-awesome/legal.png create mode 100755 release/font-awesome/lemon.png create mode 100755 release/font-awesome/lightbulb.png create mode 100755 release/font-awesome/link.png create mode 100755 release/font-awesome/linkedin-sign.png create mode 100755 release/font-awesome/linkedin.png create mode 100755 release/font-awesome/list-alt.png create mode 100755 release/font-awesome/list-ol.png create mode 100755 release/font-awesome/list-ul.png create mode 100755 release/font-awesome/list.png create mode 100755 release/font-awesome/lock.png create mode 100755 release/font-awesome/magic.png create mode 100755 release/font-awesome/magnet.png create mode 100755 release/font-awesome/map-marker.png create mode 100755 release/font-awesome/medkit.png create mode 100755 release/font-awesome/minus-sign.png create mode 100755 release/font-awesome/minus.png create mode 100755 release/font-awesome/mobile.png create mode 100755 release/font-awesome/money.png create mode 100755 release/font-awesome/move.png create mode 100755 release/font-awesome/music.png create mode 100755 release/font-awesome/off.png create mode 100755 release/font-awesome/ok-circle.png create mode 100755 release/font-awesome/ok-sign.png create mode 100755 release/font-awesome/ok.png create mode 100755 release/font-awesome/paper-clip.png create mode 100755 release/font-awesome/paste.png create mode 100755 release/font-awesome/pause.png create mode 100755 release/font-awesome/pencil.png create mode 100755 release/font-awesome/phone-sign.png create mode 100755 release/font-awesome/phone.png create mode 100755 release/font-awesome/picture.png create mode 100755 release/font-awesome/pinterest-sign.png create mode 100755 release/font-awesome/pinterest.png create mode 100755 release/font-awesome/plane.png create mode 100755 release/font-awesome/play-circle.png create mode 100755 release/font-awesome/play.png create mode 100755 release/font-awesome/plus-sign.png create mode 100755 release/font-awesome/plus-sign2.png create mode 100755 release/font-awesome/plus.png create mode 100755 release/font-awesome/print.png create mode 100755 release/font-awesome/pushpin.png create mode 100755 release/font-awesome/qrcode.png create mode 100755 release/font-awesome/question-sign.png create mode 100755 release/font-awesome/quote-left.png create mode 100755 release/font-awesome/quote-right.png create mode 100755 release/font-awesome/random.png create mode 100755 release/font-awesome/refresh.png create mode 100755 release/font-awesome/remove-circle.png create mode 100755 release/font-awesome/remove-sign.png create mode 100755 release/font-awesome/remove.png create mode 100755 release/font-awesome/reorder.png create mode 100755 release/font-awesome/repeat.png create mode 100755 release/font-awesome/reply.png create mode 100755 release/font-awesome/resize-full.png create mode 100755 release/font-awesome/resize-horizontal.png create mode 100755 release/font-awesome/resize-small.png create mode 100755 release/font-awesome/resize-vertical.png create mode 100755 release/font-awesome/retweet.png create mode 100755 release/font-awesome/road.png create mode 100755 release/font-awesome/rss.png create mode 100755 release/font-awesome/save.png create mode 100755 release/font-awesome/screenshot.png create mode 100755 release/font-awesome/search.png create mode 100755 release/font-awesome/share-alt.png create mode 100755 release/font-awesome/share.png create mode 100755 release/font-awesome/shopping-cart.png create mode 100755 release/font-awesome/sign-blank.png create mode 100755 release/font-awesome/signal.png create mode 100755 release/font-awesome/signin.png create mode 100755 release/font-awesome/signout.png create mode 100755 release/font-awesome/sitemap.png create mode 100755 release/font-awesome/sort-down.png create mode 100755 release/font-awesome/sort-up.png create mode 100755 release/font-awesome/sort.png create mode 100755 release/font-awesome/spinner.png create mode 100755 release/font-awesome/star-empty.png create mode 100755 release/font-awesome/star-half.png create mode 100755 release/font-awesome/star.png create mode 100755 release/font-awesome/step-backward.png create mode 100755 release/font-awesome/step-forward.png create mode 100755 release/font-awesome/stethoscope.png create mode 100755 release/font-awesome/stop.png create mode 100755 release/font-awesome/strikethrough.png create mode 100755 release/font-awesome/suitcase.png create mode 100755 release/font-awesome/table.png create mode 100755 release/font-awesome/tablet.png create mode 100755 release/font-awesome/tag.png create mode 100755 release/font-awesome/tags.png create mode 100755 release/font-awesome/tasks.png create mode 100755 release/font-awesome/text-height.png create mode 100755 release/font-awesome/text-width.png create mode 100755 release/font-awesome/th-large.png create mode 100755 release/font-awesome/th-list.png create mode 100755 release/font-awesome/th.png create mode 100755 release/font-awesome/thumbs-down.png create mode 100755 release/font-awesome/thumbs-up.png create mode 100755 release/font-awesome/time.png create mode 100755 release/font-awesome/tint.png create mode 100755 release/font-awesome/trash.png create mode 100755 release/font-awesome/trophy.png create mode 100755 release/font-awesome/truck.png create mode 100755 release/font-awesome/twitter-sign.png create mode 100755 release/font-awesome/twitter.png create mode 100755 release/font-awesome/umbrella.png create mode 100755 release/font-awesome/underline.png create mode 100755 release/font-awesome/undo.png create mode 100755 release/font-awesome/unlock.png create mode 100755 release/font-awesome/upload-alt.png create mode 100755 release/font-awesome/upload.png create mode 100755 release/font-awesome/user-md.png create mode 100755 release/font-awesome/user.png create mode 100755 release/font-awesome/volume-down.png create mode 100755 release/font-awesome/volume-off.png create mode 100755 release/font-awesome/volume-up.png create mode 100755 release/font-awesome/warning-sign.png create mode 100755 release/font-awesome/wrench.png create mode 100755 release/font-awesome/zoom-in.png create mode 100755 release/font-awesome/zoom-out.png create mode 100755 release/index.html create mode 100644 release/shape-shifter.js create mode 100644 release/site.min.css create mode 100644 scripts/color.js create mode 100644 scripts/dot.js create mode 100644 scripts/drawing.js create mode 100644 scripts/point.js create mode 100644 scripts/shape-builder.js create mode 100644 scripts/shape-shifter.js create mode 100644 scripts/shape.js create mode 100644 scripts/ui-tabs.js create mode 100644 scripts/ui.js create mode 100755 styles/normalize.css create mode 100644 styles/style.css diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..71dfcc5 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,68 @@ + +module.exports = function(grunt) { + + grunt.initConfig({ + + pkg: grunt.file.readJSON('package.json'), + + concat: { + scripts: { + src:[ + 'scripts/shape-shifter.js', + 'scripts/drawing.js', + 'scripts/point.js', + 'scripts/color.js', + 'drawing.js', + 'scripts/ui.js', + 'scripts/ui-tabs.js', + 'scripts/dot.js', + 'scripts/shape-builder.js', + 'scripts/shape.js' + ], + dest: 'release/shape-shifter.js' + } + }, + + watch: { + scripts: { + files: ['scripts/*.js'], + tasks: ['clean:scripts', 'jshint', 'concat'] + }, + css: { + files: ['styles/*.css'], + tasks: ['clean:css', 'cssmin'] + } + }, + + clean: { + scripts: ['release/*.js'], + css: ['release/*.css'] + }, + + cssmin: { + options: { + banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */' + }, + combine: { + files: { + 'release/site.min.css': ['styles/*.css'] + } + } + }, + + jshint: { + files: ['Gruntfile.js', 'scripts/*.js'] + } + + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-contrib-concat'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + + grunt.registerTask('default', ['watch']); + grunt.registerTask('release', ['clean', 'cssmin', 'jshint', 'concat']); + +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..0589b27 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ + +#Shape Shifter + +A canvas experiment. Check out the Demo. diff --git a/package.json b/package.json new file mode 100644 index 0000000..50585eb --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "shape-shifter", + "version": "1.0.0", + "description": "A canvas experiment", + "author": "Kenneth Cachia", + "devDependencies": { + "grunt": "~0.4.1", + "grunt-contrib-watch": "~0.5.1", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-cssmin": "~0.6.1", + "grunt-contrib-jshint": "~0.6.0", + "grunt-contrib-concat": "~0.3.0" + } +} \ No newline at end of file diff --git a/release/font-awesome/adjust.png b/release/font-awesome/adjust.png new file mode 100755 index 0000000000000000000000000000000000000000..ffd0d91767255b7e292eed831d6880fc82c3a5ba GIT binary patch literal 520 zcmV+j0{8uiP)DV1%*(Y)~cuCZOE_Hn>hu*Z_Z0A_ZTZSE-IjR@=+t z|6)7Nb=FPXW)tgowE(>UpNn0IeTfau*6y=~ssDRon{}L&N||#J@%9AhW$92n}F~Be)QIb;(9fyl4H}by&!&i|W8#xa}_iDA$0GJg}4} zVa3D!eL|eB77s9QRCjnVh#d!lX2u3%S^-9(jRA0(%=hGhD1Z(@G*$|z)dSHG=p;1H z?2aKYlW_85$i{RbA~7i()=_K;fmw(E*mo)BHpSDU_HQmD$ns%DjX%kj42XN0qg=%ES>|PpQA$p zVN}fU((>Nmh^+!6Pl{XapOIdOY$meHLfE9sml(0L}@3|T&Kt)C~&g|oTP0w?#rU#HFP*9ZEnpKh*yK_kaI3M%- zqyP}{+T4n+(2eMO0+vzJ9s5$d5lspJU#+FJC1u^u1n||`Dvd1i%j29Qij$fGOE=y% zTmm5`15r=gNV@=VCl1~%HUkd4 a6SxEC(I@Ul>t-ha0000TqC|>QG?foMC=0@Zr1T?=0U}zdJYEe0L_(e35nYITo0g3Y^etVAoo= zNu2kA*aX>vhKnK2W-^XT7EDn4#ZjhP4 zaO9&&!3mcIGo?9Zau*$_cj`JZ#h&BJa|e(2E0`S=FF5!F2y%JpeBy3MQs@!q>56eU zG0|iyd+Pxfg=@=K>dt68yjerHn9C7)yMZ1{Ab{af3uDoNCdbLV h>>3Pix0!i(7!0h{-+i4i?E%o!44$rjF6*2UngA=3Y4HF6 literal 0 HcmV?d00001 diff --git a/release/font-awesome/align-right.png b/release/font-awesome/align-right.png new file mode 100755 index 0000000000000000000000000000000000000000..a05285ce02b7bb4dbd2f0a0f100f4ca3c511fe18 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJo1QL?ArbD$DG~_>EDn4#7I@vj zu)z6q=7Sr(N30$&TqvrRvUqUV!Mfpv#)41|fwv7T2_KpbwjN|nTHJ6;?C@FX5IzRh zLYuRDy6!$`KB4HaxuxxVaPuif=?1;8%Zo)8q&TxLc*Noxg+vd(X8tmTc!)$ImoOZ((5U WmR@4hzTODvNd`|>KbLh*2~7ZW7;4o3 literal 0 HcmV?d00001 diff --git a/release/font-awesome/ambulance.png b/release/font-awesome/ambulance.png new file mode 100755 index 0000000000000000000000000000000000000000..1f17addf95ea92689eef2afa112e94f582b81583 GIT binary patch literal 491 zcmV#mDQ!A?#?@Hbx~%8+&Qkxek`e^GniJe-Q8md2 z1o?{)9^hFt1h*yKY@(7^D4M{;l z@g)e(jx_%y#8CjF$YxF<1>iXpU%Oc$x33cljSl>d=pnckG{^Vdib%HDj+~?@60xTE hK8Q$%e{MSph;NJ|atdAy7byS$002ovPDHLkV1g)6+Mxgd literal 0 HcmV?d00001 diff --git a/release/font-awesome/angle-down.png b/release/font-awesome/angle-down.png new file mode 100755 index 0000000000000000000000000000000000000000..525accd53418f732514f793be6101b2c6d15593f GIT binary patch literal 267 zcmV+m0rdWfP)TQyBdUB_&kc4?tzKtiB?7ws(orhnT~tTkYnX{rr?Fc1d9zz>acG$Di$ RCAa_p002ovPDHLkV1jw0XJ!BZ literal 0 HcmV?d00001 diff --git a/release/font-awesome/angle-left.png b/release/font-awesome/angle-left.png new file mode 100755 index 0000000000000000000000000000000000000000..5cb48d5a522dd6fbed71d153abab640682f09985 GIT binary patch literal 258 zcmV+d0sa1oP)U^?f|-5j_iN|u^ia}p!}^5P2n_2?YMFe zC>JO|3mAT=qC_CQfZEv&p94U0pn~QA5Yyce$mPI*I0C&OqPruom4tM41g@f(ZjQiL z8PUZNgsNk7M<~*>I)-Ikm?H{kQ9cj~0h*UbqYfAifdLNz0C9gMA?|sh7zjAeWSY># zDk2~vAd|qTs=&yuz^Li5V0zBUO&e+*-#_>Gb=Q4!S@G0Q&!_y=X5PS}!|1u7F)X7| zuS}OUq1o+4o0VA$!zopr0D_EKQ2+n{ literal 0 HcmV?d00001 diff --git a/release/font-awesome/angle-up.png b/release/font-awesome/angle-up.png new file mode 100755 index 0000000000000000000000000000000000000000..5f33938751577d7cf97392e3708fe7ac38f0cbc9 GIT binary patch literal 257 zcmV+c0sj7pP)8FBivkb@HlD z_OA%Q1egF5U;@?z8jS1#dO&OB__hFu`5U@GGjxlDC;_DAdhk$)UjV832ksNp?G#}U zIe?@2b&vmv?>!RY8$ixnuOJlS2v9N)he!de=AjS@;5E-dwB8w^06hv{kaW8?ob_MY z6H+S&S*(S!FTDbRkYaga-Zi3N`lq%uh`b=~{RChFOn?b&n(H(ncOc>m00000NkvXX Hu0mjf-rHf) literal 0 HcmV?d00001 diff --git a/release/font-awesome/arrow-down.png b/release/font-awesome/arrow-down.png new file mode 100755 index 0000000000000000000000000000000000000000..27434fa9da5aabb5bb31249f0d098d633e0a5e4c GIT binary patch literal 416 zcmV;R0bl-!P)6ib$a z6W@EB@kMky4{qHD^E){LBS+0af8m$+^hl<5Z(h6!iQ!$7FY$=So0bIjWPda zm1t663iwAW&}QJ@XMo4-sr)tXFkZwrN*%+{DHve=7QK(oV)f^g_{Z>o2j(7-XPQBM z35x(LCW{u~u07*|oT@p2H_WiS$|fbW0wK7IeU&LE@DqT$DPKY(kb*Pj8GYu0I{~J- zr;u3TnOG@y+a=R3!yYlQkODM1B?NejnfQ!s74N^4a{ivnkl&bKh6*Xb&$QatNZfLp z@JabasyOmxbT5e@oED+CVbc;(cub(l?MT8?0!>KN!s`TXkx;=k0yz?DxK_X-VS-x( zG!kaGRUjpi1pP{2?C4nP7pKms`6UP6yLX|dETr}S{#7*MS9;8UC4W3fzSek#GUTY;)DhuCJu^Q?ldPvEnaQ!G z?bPWC?r8Ak^9;GzIP(1A(QqR}x@MAw9YbH4sP!I~%vEvw(4;6^Phj)Col0 zeIPkR9RTJyDFg$+LaZckr>#mBfPui$T&4u5gD4#|42;Hs*gj#pk|Uu7z&U~W?ny5l jFwCF37%PBABO3b#Fx^BU-eg&T00000NkvXXu0mjf^81#K literal 0 HcmV?d00001 diff --git a/release/font-awesome/arrow-right.png b/release/font-awesome/arrow-right.png new file mode 100755 index 0000000000000000000000000000000000000000..02b820929bf58af396f837c571c0e5eef99dbd39 GIT binary patch literal 394 zcmV;50d@X~P)c+TRBMgQkZ0sRM)jl>p!fwju81D-yb6Vo0&vAMgIF+x1Yii^hh?Qf z5HSGA<_#eMpuny$pl!>&Afy20Di;pZsUb7~jX-DtqC@xqM1?2;*l0$|rb1&@8PAh$?DG!a$^0=$sDCX_4hTu0X`PGR3hw8Y$lqbyEwUw~-hJ^)e0wE)q@H2^f+ zDaM|g`het!Juzrt87MNGX};tX@C@^lye_=OHCs?ufgo`W0Pp=AS-mxb#WesNO9=i! op%<=58k6@(P)IxwB;cC-0liK{Ayg^JasU7T07*qoM6N<$f}T^J>i_@% literal 0 HcmV?d00001 diff --git a/release/font-awesome/arrow-up.png b/release/font-awesome/arrow-up.png new file mode 100755 index 0000000000000000000000000000000000000000..40b9f62c0ed8e57cdcb70f1b33ad23cbd972c729 GIT binary patch literal 403 zcmV;E0c`$>P)HU;@enumNQQn1HeYY{2`Z6!p?1O>&j0ldxo! zOZ@X3zc{Q{3(I=p{Hq)QhXQ>iEe!Zh-#aPaWJv{3D#NQI3&{_Xv&$hBKrNqJPog8O zzo&wj6Tpd*w>uADUllwWg3;FptEx~7>=UR=yNG!sZCs~gw*aFH%aFC6%Gw8j4d3xb#GW+ykp)wfRya?9#mXGf-ekBmgAWsXG^kvIh-<@XFz>e&s=k&s zzCfW#SQtl`og?%c!fmkL4m1UTp;YE%H>b!TO9ns-AR|Y&t&p5JPq8gHlOa_DVorg4 z45}arN&Y-%R!6MSi#g;#D~DXd#o`VQA|8s<*hranqX#MWG2%Y=Gd%PdabtY%$(Qz+ zgx<%9q8dj47z~qftff8xeSZOgo!w4INc;_P%>gQ93ci^@?Z6`jKyO~@50o24d+{B~ z|Nn$LcLIf)_~~dRw}idm+@FI3#9(6fX_B3eCJ9`>uqCSD*^`wG|&kxO)Y#i!U3G;$pZ3 zs8bN(Sx`aXIL1S$AclvLirD)B1(BYH3ZiXDSVRiIW56Q%j)*}}02bl3WEp}6Fo>up z93dn?h8Q)a5kdxx5Ls93AxeME|E>4n-kWl^lVg-~rH0B1OOh{wYWs757{uEP)(2fK$9#p;Jpag6xdu10f)d;^wK!OkechgR1xYoI}{uYUXgu@QE}&K)C~b2@D4Mw*~XIpjaoa>oI12*_%%{q%AODDCkhh4x1v`vR0tSBHS2+#bmxpk&}MEF6*mO15_Mc4wP*{094lqAZY@rhcyTB z$DfC*p&U;>T_fC)GzfDNup08BvH049L{kSm32nmSUe3h69a zK3yF9=f`$BpG_?DiSy6A0FDLp+yVAeK9|zk;rr|21yITNz!~&feha6s8^E3d!a`|4 zK4h1ci3b3bze};<-G>QSBk7hDFo1N42f$L1PNh)Ko6vQ-Gp*exSc(Gb15j#L z&iz*Mr%tGkU9(9hQUIWpsxPE(cKSYA@qLwY6=A1z?n?n!Xjk*pQdk7`NVu=}h3o>r zU2}Sb#JK|o5J)ZMDzX`tY2*>Rh0HU)Y1Tg05n*+59G6XPW<##dIdP_n8R4MQJn380G%BKa( r5fCuU_)ciGV&7vl0+zoaCkOBY`Z{AFEHYe)00000NkvXXu0mjf+dkKr literal 0 HcmV?d00001 diff --git a/release/font-awesome/beer.png b/release/font-awesome/beer.png new file mode 100755 index 0000000000000000000000000000000000000000..2e38bbc0086113f9a715b856bda465b161696a4d GIT binary patch literal 393 zcmV;40e1e0P)k+{~6osV%bdU~E0XonDDnJFO03DeEP=XSiGn3uPtk~RjH}WT$*_rI-KE9m0 zucXuPlQf*a69O;<>>&d1v=}1y-_7uyDrlc20%R`04g*_lWTF2C zc1IV0l8l7`G-f9_vy}ERC7`r~=xU-1eD|=S+8+QM_=gHX01sC#^cQGVlhr3g5Wp3Y zCQdZUrS!)Tn)194~_tAe9#%cv%9wsa91yqHyJ#&cK0m{nYTUMdp zymNrT%E}O$>%045-8029D}T$~H3ZN+vD-RYXd zmh`MDvNN6JNhPy;X)QgLe&)HEOs1KJE7|Qgwio)n&GeH6;8s6tf&#OUKILR0B?EH> zxRkoUzC}Ok;b{uU5C8(-NH+(jnR?i3>ccd#09fryLU0%GP8a89bWN}TNa^7aN4+_< z?staRSpYcN9^%L|=RnU^maPTwZ8?aHKWL2liAoHhlI64IATmxdZdvv*0E&p}FA*!l z(IQ+Z@<~Z_*%kp%K(5{9a+rk}BP=OE2b>MCD-SfFQZXA+Cv@U-}hsA4=P;%=t^6!RXS_0r2`maT!cZZXq{$or0000v{?f>;zdFJq0XJ7T6 z9!YFVpJZ7!%SD|uT6Qh%rQfA*b!HZeW#z(7>%N7x=lXkDX{QRnqF)E6z-**M zKr077q~pFg_cAlpYSOU<^sKfx!v1c`%FS8T>dI&uM`E)D|Aij8N&V3GmG0QBUKQuM~ zTB$XixrH|dvJTPnTtl`&0?c?La#_kaRHYA;E)Ko<#_7>VnxMR)$uI_Xyu5T zl8c6H@Ev&#K)LiMQ&tLqkyUU^@sbgMfT@zdVlI6l-}l^`00000NkvXXu0mjfi<%+_ literal 0 HcmV?d00001 diff --git a/release/font-awesome/bold.png b/release/font-awesome/bold.png new file mode 100755 index 0000000000000000000000000000000000000000..69d92c3c62719e2e634cdc884c6fdf4a24b3881d GIT binary patch literal 548 zcmV+<0^9wGP)jS3Y|GfbG5#$5E3u^*zl$0GUqv4A$$%`x?sM1l3NW7x z=VE(`GYhu8eiUik{4HhvgY=z=eWXCbGr*#ciqnthL5(Sv6)rA00eKuitB)-09T1CMI&Qh zx)<(mAOBN+0E8uj5WvbJ^&C@>xB>Y0Tk=t=@kL|>e-n}uv8-=G z?l2#fRJ55SlF7t m$C{UfFz;v5v(kjo0loogrFtQA94H3>0000J9dbXu>&x8vvXcAfK=|wFxlF9RuVR_VbzqHsSos z0hnQ}t4ZJp&L0hcci34U;X~Iz3-6Z(0*jCJ5k5451-$PW2wSj!hoi%xCh%(jJi|_T z`bJY)7eZhkj$RCqW7wb48uu|v{N-d;n4Oh}5NP4S(w}Prm;*h)FkcxR2Zg{QMK;z~ z@zoRpmi`{0Wy;K0(*O380Ml#f?>RrfA~RPsNWjzIavl;ros)p4KN}FA=#7ktz8S?C z(E9VqWkVt<&JL4TO%n+1ip;<~fehRDP5!w0=fQIKx&K7dJcO8Se$q1OqJ+|YJin~k_Z$x9V>HQ z209$tP6vyd&R7C0wvXD;dlG2`A~1#1T?f#Z%LN8+?29G>b2w}c zMBpCtP*9=O5jcnC^+4d9<^_Gf4T0YX_&dh9rk=I~qqV^B3eU4X1fn6VVZv~S`Lm1v zZ|F?qTtw9pFjUWG@?-pe^hnQaQvB{^&!7061mj#@lBwK=3ErI;FtT1aIU2zPNONvM zf^zHw{R#c3iU8N{)dAARMA4hViOW(;fJ(#UArKwB>S<3PZQma}tAKF{57AH2ld1^V z><=gKs3zD~V3@1LnC9NV^CA>`(m&lGvUrJfN`lUlC%13I@daTd)Im|^VFi{!ME zT85m7T`0*R0fvql+U3Bh;u5M=ZmAxWBEW;<%&E$2Cbe4HupX2Mq!>}*@B%d1Nv*`G z9^`)E62!J&6F}YjP%XDG?-U2<6j~yn4DADGeQouNZf8Yc8R1v;)3IK8ACSS2>O-{> zmsdZ#1j|q_wP97vtKWYRP_j({#=|Fi8zK?rz>wL`!jqtL+p+PvRQ+rObU-j^@|#MB zgy2@Q{t~x^ck|esj6ms#>;N8fQF0d!A8SYgOcb)``JHA=qikCco4}T}g>y&02Q-)J z0BbeD?M0*oX4JItB5O}WhK*$Uo`{TSl0~*wMBRr;U-d5kl@s^_+;(*#F3?6500000 LNkvXXu0mjfxsf6~ literal 0 HcmV?d00001 diff --git a/release/font-awesome/bookmark-empty.png b/release/font-awesome/bookmark-empty.png new file mode 100755 index 0000000000000000000000000000000000000000..e53f7774cd8fdefb1bfa32e9f93e0ea0f4f443b9 GIT binary patch literal 383 zcmV-_0f7FAP)FEYyeEcu|e5@Za^n!|F4RrJfv}epnHiW3v{vL z&ra^*j7I~@c;NUW0Pdw9(n&>_PtEl%J$Z8ifboN8c)|EqJ`2wefS+K5!_jjn81H2B zB;8B-pOqM3D$Cw;C>Vc}&1(Z_6=)S`6=)S`6}UwO9yKX_!(5s>=WlWt5qu}5dEv+g zf<7W8)dAw*7LW>Xe5W9)0?ZU-9Wwvc?~8OLy$j2bf~W?t2*JtvO9~7bQ;|LcQ3W6l zeo(M3WNb^2gSZ;N3+_Q&1u%)qp32;UryzK?lrqOfJ>f=aaYVM z#jZ9vC%F0Wedr?yo)-h~T0MuEaALQ+H<}3eKM0nC%4EgvhU{v~!t?RQI~g2EDn4#Zje!6 zIP%wFjf3m)7=~F_IgZG4%;YR$@Yral*qU-epXHUO!V>-`4gXt2CTi9TtT^8|;a(tn zPuqbE4rGEsQ}Kh~jU5^ck2oF9_^(*VIAwWO^Ap7j2N*IwpJninS2!dXQhdNQ<1*LI zM$aDQ6^|HlrX6;gKS5cejKS`7XCaF#pTe=C6nC8im$sFUL?zKD(q*#WQSP}E9WNkvw54jl)ESe@M@%dV2ZdeFl9jko4_S!k9&+O9x#ds j2XViX=F^ZUU}s=Ziw{)X=TamA^g4s5tDnm{r-UW|XQ6C- literal 0 HcmV?d00001 diff --git a/release/font-awesome/briefcase.png b/release/font-awesome/briefcase.png new file mode 100755 index 0000000000000000000000000000000000000000..88d2a5668776267d12abb627c7951e910da6bd26 GIT binary patch literal 384 zcmV-`0e}99P)PzfD=-3#6%ZB3EVhp`7v0OqSwcAw0eB>uY{ez! z^IqWb-If#`p8rPiY|a7t#L%k*Kro}^^tT0w;G0MQ1^Sg?HLU=qNFuJ%4k6gH$JRM) zQvoLDTK54ELR)MAw1ewR90C5K0wvapPi`ObVg>jZJ^RRxoN03x5Q1v7g?@nMHs(`b eya~OEcYrV67(Ee2?0LWd0000AWTe6}{N$yfb67``edERaKADW9ho&O^)~5oKN)PdtE07zen2FsdHigmogyQp=3{vZp>My09uVQ zBRbS~&p82X>!Wk&yYT}bC(>Q%o%B%yuK>(n@v^xA0I8EOmcU8qC7{J9 z!D%P~Bz!0>0ks^JgtVBGkZci9iNtf8rDcl^@3Dh`Jl|XnkRA2@lKN;SyDcfhiMk_X z$lh(H+V4m|N)edLK^q6SFPH@p-oXdaOb6Uc8L2*G-~v~+2LK|kh7yP&O`90x{~+px z0MI!H-~+Sr`H{%bLt+I}qR*2+$RX z4=WHtvk@?V#Y<5Dd<+6;SMdSHj|`F>0A%8(i+@C2g77(z`fKXd1)~Sx@If}8`w)%$ zp((KqDFFnoOG}V~8>h^Hl=xlHe3#9EzZ(GL^Six?0vw>eDFNz~VDCe!Qx~-O8RYTG j0K9((IVs^}k}@P)f^tYpG5~ z6E#mTc548PV|zYv4*a$hr~4|4TaJyRJ?gdoL?X=rgTwS$^{z(AqR|f;$3StN}Vt{kea3Y3 z8bpL;!S8{X3qUyM8KKovYE6(@K`g-mVabZ`0S4uApe+EL2oeomLRLsnmMZ%q%H0oM z4wM3eAg^NHgCnu!xsh|oo(_r4@wLuo%@y#w!i>w~uZWg=@Fqw%EK|&+wiEwA+ zo`!S`bKh)WR(KFln0nIAMBoV^2=H1dBRoN5ETERX5y--;{a$e(fc?357(D@**e$as zARd5-;~)Y77}(#m4JCj$>%v69Z)RCT3RrV*5`eDC#D%`g7I0SZMHE80ZE@QKbP3pJ zOy>;rA@4HB74RG?Gh&$A@1?^^dK)3)KJ2MDY^_5s zu7OFw=ozRpMZ>=53aw8OQiyI5e#wzunT1syfzozl<8waj9^ZaW!01~r379f4`e!&@ zMpF@vo&nwm>EpAs3xF>qZ4Wj+=fm#t!P&Zu7k}@P)WLobzYBv)CquCJ)yLbOzwFVem%d;T$K- zUx&31J@1wTGYCOX+W^1_+9stYQ6vU*5iXc~Vv`5(s_}Humu~$ebH6v;3gAdPCK&)$ z+4?^LysSWJE*q5oK{E$(jrc0K)W7GUKibGgo4?>AP#3He^8~_&mP#@C`?I>`@U4mRmtvdp0;c=t_ zc$cw3a8idS<5GGdwWDBdKdc+jC=sau&Sj;N8nui8VE2M|a;m{tT1aQ@HYTY6%qZn{ zD!7;sntmi#TmIaXIB(~WDppE)VWo=Gc3{ffclV4TPyy-RxppfyO zpHj=%N|W^_y*k?@X=w~lLL^ZaG9m}aT zSYtgPY{RFO$art6(gb1Bv#=F0H``M71bN%CJxe`%m!sIGMwskQ?k&WgT$|xQ%;a+v z0itUm4h1v;gyY3_?9vv1d^Boe7eH%3zI)6}u|0%>EBh$h6=b1FEBUgq2rcopGvAb(WDT4kypr;5*qR`Y@&HIid5@~M#*6^?=$ zg?>?R5RmltTq)zBl{kP9%S8%E>&KK=k!L01Lc~1BGL0`a#@fpI_VspFq>d}(x2*tE z1+BuaSC<1qk3bEqtpL-)o+_4_GA#$B`N_vA0*oy~9k!#Arwxt&u20My5LU%kIclUv z5#p=H^Fsg4(-Ozzf-sJ@4Gg{FFGD2?wDqKAl0000EDn4#?y*WR zVR3T?5^Sy<77X6b)m+|3_#OTVpEP6^VNy8z=Sha!$K*W?s?oEg)B#>B^NVz^hme| z94(6BQ+UF$Dzfi9;|>|e(9@ij40i=Xw$G7ZZ@41j@Y$k6O?&mj)3ciw=_%~|uwYr+ hMF9!kMi9Zspu{Gt_~gcei$D)Bc)I$ztaD0e0s!6bP(%O# literal 0 HcmV?d00001 diff --git a/release/font-awesome/caret-left.png b/release/font-awesome/caret-left.png new file mode 100755 index 0000000000000000000000000000000000000000..cd7009b130c9c5cca3b773b3511b14680342511e GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ4W2HJArbCxuU+J9FyLVc*xfjL zg>Z+kMbqjRYJCsbteTW7Sy?A;{d)YCQ z8GlcoT`0Aq{r4SC<1EH`4_7q=?2u9rTgT+l+ReP8Ado>lM#SLpm&T28N!dFT_MGSZ zFhAjN2#eDi#`&imJD4mu3K?1h7?%iSHApy#3OKD`)@#|X9_3TMPW$nx2Ya3VPWa$g h`EeTK8piAg3|1Re6#x93rvr35gQu&X%Q~loCIGmySxW!_ literal 0 HcmV?d00001 diff --git a/release/font-awesome/caret-right.png b/release/font-awesome/caret-right.png new file mode 100755 index 0000000000000000000000000000000000000000..0f2fb3b8730bb57d3e6e5e1538b4e799e216922a GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ?Vc`bN%;lKtPUs5+_e|}RIHe=`oG{Tfnd#gH_QE64VN01Gn?8T^L^}S zl&~;sh1)95-h=~*t$Z0R+zH$w51AbV6&ZL0nH>c3846vv97HB^CAfHReRfZHWy9Pi zYh8x+@86G|x!dqsZiD$kX$7fsiG~do6+8@_{EP_??HEk%upT%pf1u|4jvFhErhOMz nkNo!Z)6@2+I{LB!?+EDn4#?y*WR zVR3T?6Ad#23>d_&Gda{Wh#fUkWLII(oy)(qf^mZ1l5NT#EE#SV&Da}K&Z5Vjuz8MJ z-+^ZgHPeFc3clb|I99aEis>ffk_bOj_X9ExeNRIQSxzuciSXN~?7&ySaO6|SiTiC1 z#(ER7_)akLI=pdMxOFRHa z^7s~cHHfPyIG-P-Rj=qWZUZ3QO*Bga-8vjI<{;SZ>i1Oo8hmvQPXXeT;&3S?1E@!8 z88HE~CtG{#2BrWM6vdWHzU7E)xHAC#Q?BUp^Aa-R2EgzqBf!R;kuJep!5^fvOb`?> zyMtP26#z&(dzs*C*J}$Xn%A@RK7|3mn#>md-9zc56#Ab4um~A&dl_iRj$nH>DFE+d zLlB%LPS25*PB<1sXK-d7?}D)a(gSQ|1r1=V;1;YC;y;TJh~u^*EWQnCL{+F#ZZ>1c zhn&)g>ePAKirJ?a?q{N)@laoDTX7nz=wVd+IL>_`>3t)L`@yHyW+|mE4xKe|BRjHa z_PuXJ#KA!$wZ6@n?zxl#JPV*4>+|3PU!5}KT5i1^F#AtHfNa|>A?~&*~aTv zn`2J~Y*{Kj)X~zIKMI$W^S!rt0eU<34k!-r3%vJTAz~Uypa1{>07*qoM6N<$g02eN A%K!iX literal 0 HcmV?d00001 diff --git a/release/font-awesome/check-empty.png b/release/font-awesome/check-empty.png new file mode 100755 index 0000000000000000000000000000000000000000..0d46eaee93f4c125aaea2cd8b9d780fb69f442b9 GIT binary patch literal 382 zcmV-^0fGLBP)umxt5QL$FP(dyggjA4A2c&{rDu50`3D5ylK&T*;Kq?4yKq`Rwq_t#_x#O@U_~DgC zJkGm2J3h(dZs*3)y>b7}DS-zO`Va;Y#5T%Z3v*%DRL2o0wD3!)ni5((r}?MwU6%s^ zrv9@})-G*=7QK#^miqN-|DeWG6M>n@&bpV#=B`)YCVw;)=n)JQV85OP_N=;g>_8sx z(Lz`WZ*>Ir_VC?Ur{Ykm(2o^k8#bZBDBuXd61J(rCvdiQCXf}#3SAqAqtEI{9tNBGE+?q?!SQT3kC!V0Z&LwgsFfkG2u^7y-^(jo;kK| z-72Dc>E&+q9e;S%o;zEPL}OtX(b!M@H8rv1wReNli%Fpb;7`$(6HPI?7scIO%`Re{ ca#2>`03Cp4A+7DrTmS$707*qoM6N<$f~>Bk7XSbN literal 0 HcmV?d00001 diff --git a/release/font-awesome/check.png b/release/font-awesome/check.png new file mode 100755 index 0000000000000000000000000000000000000000..d68f93b3ca10e16da7d29a9de8a2517fc765d22a GIT binary patch literal 533 zcmV+w0_y#VP)wpQ8gOwT;D+;;bV2F3sw+IdHO2!QUOHL2Kp z_nAsiv3Lpq@fY!9r`T&Bk7OtD6o7Vy)rmpuEFJ?$E$Bm3iN^pIGJw!tQBVNu13A-LqH*G_VxH?%ZB-(PzvMKuIS2 zv^O%DR>rCTav(xyJ}N*8B35vt1B4(_)t(JNbsmc6UdI&X(pB|MtQF*co)dHcb|4;n zKcom*j7ulGcN3y^XeB>*)A|ypBZ3CNLY#L(>`t7UZ<8q!3$wdty=bQNtypPw!L|aR zF>^oUJ4Y5wKXD2`ik9Nn6~cDvo6F`pC2j$9GRJ}2U6e8*%7v9>nt`m~zX{ zcohTdk1{}ZAUp6=4oqk!oG40)8^yZ*Oc@m``thCuXCEjw{4nPLHk>JDtql*lUL-(3 z{Ky2WIHf0con~FZ*SMCgA^K!{cvLB7`tkfPa(0~z3d9C!hO0!ty$D4s0<0000U)uF` z)!@fbDfLenw?*EON90XeXP^PNKx~x=ZqTOZ;*bJ#i3iaMZW<|p1b`DK-93_)Miiw0 zIdKv-n}HH>vv0suoTiOi0&{T=z(u?dz)idhz*Rg2a2JmOYBUZR2T^Y|u5Q=`WT7Lb zqsrwWYo@XZL~KNB0Gz!cQYUnW=(1v0h`zJH4T3w2 zTp)5kB<2t~0NNC#5HpQIlmL`MsI0mapajAkfP;A8<=Aow;@asq@xseFlB`-Bk|l_X sPtn-54{BT+v2r^=3!v5e821Nw1DirZA(+f+AOHXW07*qoM6N<$f<|75C;$Ke literal 0 HcmV?d00001 diff --git a/release/font-awesome/chevron-right.png b/release/font-awesome/chevron-right.png new file mode 100755 index 0000000000000000000000000000000000000000..52a998229084607473533ceedb642beecc299b23 GIT binary patch literal 341 zcmV-b0jmCqP)954ys00~Io{~x%^_0l%$UBU~!%fZUn_pNJ^ zb)z4TF5!=Hd_k-cJz|e|csfb}!taQg0KV~k=_w%v&H!zdyLFY20x!TPndNqqkODWr zSB2;8B9ZO^ZoFxvgq8)N5~%=hp4kv4p$UXa^CJ+iw z1;XK}K#z%eA%UCnyjBoo8uI-=_d4bRPgh`viIZaN2G=&>6_Xnw;R?^CA?rC;gEjs8 nS$mYtzt>7}^M$Q{{0n>lcQ;ZYLG&_)00000NkvXXu0mjffdGg# literal 0 HcmV?d00001 diff --git a/release/font-awesome/chevron-up.png b/release/font-awesome/chevron-up.png new file mode 100755 index 0000000000000000000000000000000000000000..18be739a8578d30934a8bd018ba44ea145170638 GIT binary patch literal 364 zcmV-y0h9iTP)l05^cZ*}#b>CB_Dw zq(sw+mN*K#UPKi=uT7?i+r4NEQwE1y5&9VQ0pP8X0kQ*wJMadyTRS1~_Q!Vs0000< KMNUMnLSTZ%FpGo$ literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle-arrow-down.png b/release/font-awesome/circle-arrow-down.png new file mode 100755 index 0000000000000000000000000000000000000000..46e036a6a5dbd8854a323a33051e59e7ee111232 GIT binary patch literal 556 zcmV+{0@MA8P)DfC&g2zyy>DSfOkH8R!Ttpu=;D3{fd z{vHJ2OdK%RasWfcqhK{e3cwTp5S2D4(GNMRg0KLd_`Rsjl;W{mzm9>>0G>EHH{x?6 z_~UGJu@VuWks!}*#|#4??2|Z0w__3DR#vVz2*8QhF9A@dqYVNO`b4}lBd7qw=CeY4 zXb;5Dss34wV)o`C0l>a3g71cPuL0? z9j)1!JKSi+57bksj*S6n*15@oW2nXBGTGXbbs_g2Es+HvTV}a6AP5SCwwcOY->(K( z$Xj*`xJOn)4Op_L!L^YX39hZwghL^6;)pT}{(U9AW7rp>B>tVK$oh|{G>B>;O5$X1 zKV++Is2#-~geQ*Hp?GVXs?WzL2T>!Q974JRTqEH9f?0?f@pp;a*yf9s==(zwK{=wM z#cc&5R81vlS^!E`%sf|tJ`khDa}^j1QI)w@fw;~nrGaoh+xnvwpJBi(m3MwRN~KEu umY1HNDxg-0I_;2O?h7zjDEH#l0e%7J?tURYl_nej0000% literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle-arrow-left.png b/release/font-awesome/circle-arrow-left.png new file mode 100755 index 0000000000000000000000000000000000000000..102a9a758aac9d5491bb981499f8ce69baa715be GIT binary patch literal 518 zcmV+h0{Q)kP)HIJh=_lY61L~aNihT=0V3i{5=GoazxP!TDL{!hCteM~01d79 zmgyMIT!uZ;jaBB|S9*?5cVG;VTf`Da1ptnI@C;wXi3fm&IX70Q73XCy>0&S=Pyx_? z|Fbxje;{8=9ROf&o)rKqa{zAwWyi=)4I{hJ0I-;xc$T=o)B8`g#0GN*H#+ju z%!0jBGWQu;5RnlqtM{t_?f!_oL3AhxwYj6C_z)0hRDn*GrQ|TOAhafyI_eNYQ0Z|j zAtHy-C+Re@`IvCb4+%q5i^~cyRHUS6S^#+FW^PrW1fp8psz5D7DDzwe_&FvS8VHWj znjTslg8|bfKKSYIN~Qgld-00|s7pjM?O;DH1sE-4y*N3*7Q|R@A&9MoEdT%j07*qo IM6N<$g2D6A7XSbN literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle-arrow-right.png b/release/font-awesome/circle-arrow-right.png new file mode 100755 index 0000000000000000000000000000000000000000..98b8d187f495e2a261a7006b86c5c0247385abbd GIT binary patch literal 525 zcmV+o0`mQdP)o4h4XNq5yEfdo$f5q`S!`y_;TU_D90C)Iu=>WJ!ANGw~4uU6QCk4QQ*>?c2%LRhzDup=2fPqJF z2UyKtPI2j0196MNH?a-@n48Dw!v~&oMslUC2=AbQOzU4&mzQD=hG^@se7^JD?RIk4vry=?U7^ zYl%~rUhr?;bsR%&c4TR-t1==>oB(QSS82s5aRTfiy11}PFQY*Y`{R}qH@&6w zI_8O?4NFTEob;iqwpLNs{E!I5XmJwO{*tk136N^ZmCL|&{gk@ItsM|JZgtIXxm!F3 z!0)tD77&Au8D3ffN`qMhp}C`(Dk}xnfO!Da1)`a9us@dqR0~-HCkOZi`QUOPOZFLc P00000NkvXXu0mjfAC%s) literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle-arrow-up.png b/release/font-awesome/circle-arrow-up.png new file mode 100755 index 0000000000000000000000000000000000000000..33feac411bfc10ef3d7c7d3f5792cb32829f55b4 GIT binary patch literal 559 zcmV+~0?_@5P)yHU*do@QL`D_>1^Td|k5%4`8%}5)5ErD*-Ge%0)QR z-$VdT#Q}3|2w<#u5)4D+03zaVqQvp+6t)IF^aM9zh1E=J!hR z2*iy{T38(bIGcwIKy>HPnxJJB@^i7+7Kt$o%q6xeaUk!V_^X3?Gf;fpjZ;8SaXF00Hz`I z8qLeb*x;{~iVz4UlXAqd5&+{1@y4vtdh~+ME$MxRdT|86&ezYMY9pNt@K9<*I*6Bn z5BN-g;-Or;Vja;~OfNv?dej#UyA}{~|002ovPDHLkV1jsy@$vuw literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle-blank.png b/release/font-awesome/circle-blank.png new file mode 100755 index 0000000000000000000000000000000000000000..016c9f27a107a11e8f0244f1f72a13a4eb09b923 GIT binary patch literal 567 zcmV-70?7S|P)f5jYW$fs+9loCpws69F!0aa;T4gv1Y+O-UQ2O`E*kJ!fA^#`CCzCiOTs4* z1Ama$NkL67v}PK}Op=5nKqQZW2+m}KSgBN6crV>G8wi3dwZsu1z31lF8@&@%SD_@& zW)ml3D@A}b`K;gcj-#TZ6mUG1?b6uy_1>BhWPoAwZWf<3sq7lPzkZ>YZO?F}XNWBc z1gOoOv6HU8(K}bRtc>hBL|`VPKk-O^H6-+AFJQK@TXP44O;xmGJCX_!XqEO~5U?d6 zBRd_V4K1hP>`CB~n){1a*@O(Fqg-?Uq|kIewB>?gZoQANZ3r7=oK8g zRN|ORjB(Dhl_a>$fZIINL!Xb)&fqZu*oTtHM()_I;;z!zXncp(D5u5SPU002ovPDHLk FV1m#T00aO4 literal 0 HcmV?d00001 diff --git a/release/font-awesome/circle.png b/release/font-awesome/circle.png new file mode 100755 index 0000000000000000000000000000000000000000..43f9ae401dedec149887ff4b76c06608cf401250 GIT binary patch literal 430 zcmV;f0a5;mP)Z0@zzAV38R z>3AVHoxa0~2KEq=Eg)uxm~S)gE&x)#0v=Mey#lE=A$8dcTBl^nGQ2{ZCEuw6PNZl= zpU^q<0nFWssk>1X=UjmjvvVFs&L%{X6vy!iI($IqC)(T}B!lAi3g~w;RbTLm_W^J| z7D6OG1P}uu7WV=0J{t!&5RDzvb!f4{)P_y=W74Wubx{~VjUnpt70vm6%|uCJoE8W8 Y2jr|tAsNsWwEzGB07*qoM6N<$g5lt@@Bjb+ literal 0 HcmV?d00001 diff --git a/release/font-awesome/cloud-download.png b/release/font-awesome/cloud-download.png new file mode 100755 index 0000000000000000000000000000000000000000..c4ff7b8f414a431cc11f610f7755c3b8d5493c1a GIT binary patch literal 547 zcmV+;0^I$HP)DC=<{PXgA<{xwvN%H&SA_>ko9N zb6YFclVqtG4z@&wTf#Bu19B+%OX;%G7p?Q$fV?2Pa&#uWk^)kfnSQvHvi1@Sq^P1F zX$8iT3mHr;qtt#I2oUd1fN(bDI+b=VRT~HpsWMmr1G6t>4MH~K?~OAyfsAE&V|i@Z zCnML=yC|52KHp0xT}tyQV@mTE!lfqAACk%lY5Xz>KD18<#X__P4stR>=}eFlS-ctt zzG)x3SZ4Zi>;S=}(Os#GjAdxuk6aLj;CT#P2caxaiD>JA=7KctNelu6CGoUuE(mvo zyRw!5f^#xaIBT2>0>o5GE0^;nfOKuwT#yhi^M*;h1Y{(AFfxJh%$coV#$_bSmH=}E z2o9{aTa#O-R{LG<8;_JA-m-XMxvi51t5%O-nhK738pVZ=@*cq zDvuWgyE;r3L;zv+T-Z8jfZ=!VAlww}D$EgYtEFJb23gIK$9TjqbkbhVX+57^5l9Te zn4d~L?-V_KHXdU_^IkJgy#~-lBdNEgyF!rx0>%$jC?y3F_6mIKrR5)8 lENvj(!+*u@A7pDw^9?KZVqPmWZan}1002ovPDHLkV1k|H;MM>D literal 0 HcmV?d00001 diff --git a/release/font-awesome/cloud-upload.png b/release/font-awesome/cloud-upload.png new file mode 100755 index 0000000000000000000000000000000000000000..9a62cafa3247bd0cbabd37a4ed7fdf974a57a135 GIT binary patch literal 543 zcmV+)0^t3LP)DfDOU~zy!bq&X>BWLVoDUhPh zzSIaz%FYxpO9h3VcYy%$mI>hIrd&sIbE&#OfC!Z#l`t^7az3?s{5d*nanYMx&v>4Y3;6%BFNU&A593yY=PkrJn@rlf-u>mCwWtt7=#t3)h9j(5R@dg zWm6Cq7dLtJi7Y2x#oUL5-nFC2}*HgtlMId88(*q>eWt=yh#4A8b z`Mq(GSH({n|C#Iip>ZC%D6F#d;#yAVqX25l05(b002ovPDHLkV1kgI@v8s; literal 0 HcmV?d00001 diff --git a/release/font-awesome/cloud.png b/release/font-awesome/cloud.png new file mode 100755 index 0000000000000000000000000000000000000000..4f1fb0fd9778592da956e0a2afa1079b7de8e661 GIT binary patch literal 470 zcmV;{0V)28P)*08ju^Kv4iFU?^Y?r~@_!yiZTd32jLFm1aM<=e(!e znkLWv$Za;CZHdjdgk#nRnp4fNE~ibt-jEl?wz2TN->01G6u2t&C`z-y3uM1#+vAH@+1e z_ld~0bZ+^%O=#rXG4JI`qjH1TTUuKI4Vf+d~P|itYNSzntL?hk;f-rSsciAFB z*oM?c8y{$b=jOmV2x)nih)PIn)QJfK1S#pWWxGOCBh<=|RUj-*B$BQ(_8bpHCb5-^ z{!)R2+^#NG`VF0U4M-|I_VjFw$ACEkWGNkwG2?(a3XoW7F}W9jP%JwGycy%s91vba zoVcPIAW4~?=pX>ZF4#@gN9g-Bv{?3Jw)k8Wdl5)Bl!pmIo6n?!31Qx~7XJ)ZwqpRh zD3wBOX(E8btV0$G^PS>}(wJ{!7JiW$2Wc0`gc)*2voEv`RW_Ae4 z-R|St-McUxT)-G!0K=e%uq-qwaW50bkyEu1f7oZ$Zym&gOnQwBP<5BejYXRhOql;O z1n$4YW~fuAgck%LsF8X>+-W_KYV2B-rbcc&AuJeD9?(|`W7`c_76NmZcsUtCIA2c07*qo IM6N<$g4F-900000 literal 0 HcmV?d00001 diff --git a/release/font-awesome/cog.png b/release/font-awesome/cog.png new file mode 100755 index 0000000000000000000000000000000000000000..5fc591cc17c03299975de5b2b619f1c641d656c6 GIT binary patch literal 604 zcmV-i0;BzjP)B5$F^7-7OkO4S+3i@?ki-6yA8%0C2|9kqzbdqv7aAcxMrR zUw*%ofU+`x@_hh6dLM$JQQ*gRpM(K82+)AU23a9HF2w*)!~lkRqVAt^S~*R^+C=zM zIml{V_ymz84Zw1q3!vm4001#b1E7vqB^E1X-kr?NjUkN_k6ER^Iq?JGBpWjBfxh!M zm-QO-&qH4n^*}E~y^b9Kq?E~^XAUz!cjdnGWUMK8PAI&FXmmq0!W%n)vr7s97~GLF zTp}9A@6^$s${nLjNoFzvfUk^WuJy99#8YcJmYvH;DFAntgO`#C`cnX;mQs4OFaT&+)P6zTRm6)B)E>*`fJ6?3`uS__Eg#jZ*J@f=eEN|6Q7 zhy;zcs+X{LXniyOg0UVW(xpMr^_`qnPHNF0gC0{7>!O#W7yyEFH^w05b`t&{$zMKJ zW76*g&5JG{HQ5owkOcsK6TEcF8^Elmn&{gI6|%{%AT65$U62zZO81@e<*+1Na6cmu4Yj@$k(60000mmbrCz%&fVFVIExD1946%cd#L#@ z9*EW}tzPS~R%iP^?e|G)e%a=N-LtkzOG=s|XO_&7&z6(aG?G5a+gWC(Le!4e7oIa& z=je?#S~hcyEFJtVd0Gv?KBTe%!cYF4Vv*O*4-%x-CO|-!3yn~tyblHlIr)E>kdy&s zeDom)Q8yUo`BjU#!u|-Hh_FFVAM6lC=0q{UpCeKb2OaN3t=Hl#hB=SUI1Y~XPH~R} zkUS%z(UQX%BumA(H1sCw)_~mBiGsQU22bg>8eJ5K=X-Y`YpLmkV6HtkM}%TxQ9zAW zY|TOMV|$&M7H?6`^;$g9eO9qX8?9b)`_cvPO|i=|rfEySM~dx>aqbguUj`k(NT=Uj z*hBYZjxbr9q}*S$H|ee3`@%NUuYAQqDNO z$c~rZnse1lkK6&qKjW}Q=;rPf_9@OdSsB|H=L|JMeegsNeDpH}i4=AQ`#t$Wi(ou# zM+w(HjC|N}S5TCI!Wf2f!RI>&fP7FD%C|2YfPv!OkgtJ!2LTp&rf^#U66*%tX90;o z{dd0HmWCCe07FVVZHxfE+#vYez6X0JlGTsr8W6(mkzyakF=Dkd@M3g`R<8w6z(AY- zPRtov<3}Jh*-|^T8d+1mWk3EOqN9jn91$1!%Srf2p&RysZN&4zS!!+Xh!8ytLtO|Z eEf2`vdH(=AWx+cjyuoz<0000_cSc@D8^iB|FwXv2vS16wFNAH1H zZXn02h3Oi#Dwo3)^Xf$m4j$e-sq>ZprQ6T^qaMzEHJe%QfNTN#9maAfr7)BEOr!G2 z=371|3M?o4oS3s*_niXImgt7-iTX2`*mV!f|B`!mdKI;Vst04WS|#sB~S literal 0 HcmV?d00001 diff --git a/release/font-awesome/comment-alt.png b/release/font-awesome/comment-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..318b2d411c7fe65dfa089ca814efc527370210ce GIT binary patch literal 643 zcmV-}0(||6P)&?N$q9N(Ec!VekKHpf{Pz(kav2%kIV+ea(;xp53A=A~2y z;8-N@g=ZxicCvOG|5 zpJW~jZ!0`4E)zlI?%V?Me4{TX3jl!^;fY)Ql5r}$YG}B)9es(gMr0{-qLDeI05JY3 z%m}shI)v31jgbXFqG+ftd+<60glN3E#TyxyM1X{OcRxwA>y9C>5?{%N3*pQb0AgXT z8QfV5m2Ys_7?E-w1F3Gx7s9JXd%jz!bPO5@;Y*w^z0og09%OmnF|v!s)dMZ zJF}&jj-~aQBq1mIqGD^OjYq;;+l;7)gh%^(B6FhAmGGL@jzNeDIK?<0#dZt`4C_-X zbszxNlzd*tqJ-nl$@d;8cCPHKYFfuzz?13Bm3W@vHOKseLNB67cF~@pu@NLf)N$6K zR2ab8#*6y-E_EOTAQnLylIby|nS{)dyE zqNuLlyAR(v!$D>nX67IK3;0U}E|tC$lfue8S9)$@(t4eGrYhSX}`W4TYA%ARoB`O1)5UDeXpNb0Sa(>y*rfiz9lCfE?aie@6&N znR`FbQv`fv2*0IVBA^m%Pfx97ivU_BoiB$i5WsNx$iXhoN85;UrQzHP$dLwS!o&(- z4lt=w72{T1g|KmF0kuF+IO@3`=zwF$;qk{YB1+-32N8HZGpFun`_P4ig(R;? literal 0 HcmV?d00001 diff --git a/release/font-awesome/comments-alt.png b/release/font-awesome/comments-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..3558d09a3aa4990a48613dd959b0161676920fe5 GIT binary patch literal 710 zcmV;%0y+JOP);5Et)x7oB>~6} z)AO-lN&ueA$v5e{7H2nFf7!CP(fYBmGYCrtK$PDtY8?Cw(PgR^fgPSn4FV&lX4eZM z0$AzvC$k{8ynpHS@b>_Wt)7w%@By8r+HnJSU~xtsweuDSnHp95SifPi8OjFciwQ!Xd(>|GkDJq&RaXAl4)e|>WS=deeF zm3b#}DEEG64)}D80JiyKlt(E5C?voEWH&%8D%OcIO75l-^?v>=17Kq%^^a0rqAgv> ztN$^9{>a!`?>=Pruln5QLKofC?}bKnElh02Po_091gf0H}bZ0!Rfo6#x|wDgY{g{WOxt+!$LjdHmsK zZtTc+y4Bu8>Gw7){SC+O{R2p4V4#%kN*B@>>BnDF*aYA}n;%ItDetHifINFG^qi*x zsspgCP41+}shi0j5GN_jSOA>z-k-WdeCI-1#?ptF4XOZgIb6m#McUlR?xM{$09bbL z5O=DVQ4H92@6i7w&8$Op6fYA5 zw<45>erFDFvs#(k%Lt^CUyNhPVg5sRkUHwaw`tvVoa<}qr3BqjO-H!_OJ epb_N80el0b*k8~W&N$ov0000%6;ONoQ+O*`ih1mGUf8-f8??xv{}k)gn`PtnoJkaR_s#i^nMh#K>O+{G0%X^i;W0 z;+QE?4h+eEgm#nxUu*ng3IRj%8-X?k@JR&3$g$i4ZmHRtmT(GE3}n_Jt^vJ1SuV@(Fa&SgsEzXgohn{$TogMg?5ESOlI4=rtUK~6da^m+dGN@7w0 zer4}X0K_zw+@XUy?B}yPsRJc%?%g^F*t-L4*HoXkOeyQFKR@OUr$exkkC8=4v4C2r iYo+xkc1#2ZllBj=1D)FZwyG}x0000~XIpjaoa>oI12*_%%{i6;+N&KSVtW)8a3F` zz@SVcqec8^U4xcb2X9?7=n^Za)g+G=d>5e=A~rdgQkWW2s|uV^(*QK79?djZXkn9s zDJ3^V2fsr=!4Ja70M=H)CI?eTZhL0%<(dOPFWCbzhz4PL0s)|9pnes&6(0b^>*;Ab z7P}6@x||@#fG~R6ptbuzZR81{m>6`Oa9aDEp!oo5{Z(1#NB}SZ0000uzQ~;@fqXM7;oC<&nI4THKfT@5`LD1uoJnPHZ&Ig(N zK{N90?P~SD`q(}1@7=TP-!uN+e*(h{Orj)@LZ60y5B(LoxXUsX0l@D5 z-USf^9)_NUBC${&HY_GPZ9W? zU_c&^IG-iS2g#z3=V3!?*H9qJ%a1YwHhvv?hQLL7SR{clhgg4Y7RHEMJ-53@4*F+xQBY?y?)2Sf~jL#L){h%7Q=qPKv{41c52W?+-eaK1~2 zQi){shND>#>Iaz`Ys58wHz5ENfUJme5h_bXpa>zj^XlG2K&qdIDu*#=eMT&*w$s^^ z>I*$F3)S&_RL`tMUN1ueqH~TtH;Jg!osCRPlALU;9kGT8JESj3O8{$4vrE(&0Yv6W z#8EUB?NDTpy)UlywUbZ;hT!Teg;Gx@`CiAf(!9uZ``P~tm4$x5LWz*jD~Olh)%k2c zG*Z=F4rDo}Jj5}S@>YQ856T}Ri-8RvZbWNyYchbDW+9uvt<6HKL}LUBYZ3!MK1i~{ zXPb7!f%A2OK>L4S+p!eYG*O1lR^aVZ?GdP}+84AXDewz`*i~&0W84qCNp1Tf@~=sh zYt1yqAm>Dkh#M4f!1g;C2M7Rsmd3_i<7^gV4v-+gr=hDR+5$XW(i?nhRM~MwcL;cK zM0Uw-z{|Hl1SJa#lU4I-j7?v`CEMDxi|KXN+omgalgvsVPj#N>^E!U7Y`d-Nuk7SD chWAe3FBLtyzb$(+pa1{>07*qoM6N<$f&fc}H~;_u literal 0 HcmV?d00001 diff --git a/release/font-awesome/dashboard.png b/release/font-awesome/dashboard.png new file mode 100755 index 0000000000000000000000000000000000000000..35a6755a6387aa578478531540debe41df38edf9 GIT binary patch literal 658 zcmV;D0&V??P)rnzR5XYqgwF036r2?@6wF036?ZBe~r2?@6wF036wE~Y0v;y5<#+D{LFZMku%b8BkRt~mGoUI6hQ2D@aEpwSoTo{fYyVpg_6Dl4S>?^nuPpNglM&U zS*dvtv(p0rw`1URC7bVBjFei@`WXU%RyyzMUG%h|xy#``Mzoh>df0H zMe@{co3mM=k&^QO6lFBYo{_$KM3=Wh4^P2IjldkeIwd|?< zYn0R+U|ih+Kovujxr!!Qw48n6a*t8?251CUVGVG=!Z;`y!6ESyGPnS4DK)N<(H32J zyV!ch3B0)Uxoqc*^r$gYQ; s1wanzh;0y4)}_w^*oNZ`A3F!|3-t<#(9jq*$N&HU07*qoM6N<$g24JQGXMYp literal 0 HcmV?d00001 diff --git a/release/font-awesome/desktop.png b/release/font-awesome/desktop.png new file mode 100755 index 0000000000000000000000000000000000000000..035e5382e43a90773271cc99653a5c13347f49f5 GIT binary patch literal 318 zcmV-E0m1%>P)}HVD~0xZqAJNavzD0w=+*Z@+P}B%e)lM zxdCd9TA@l*Y8*khE%32JEmO01_&kN&gDZQiRF@LGjROfOAuZ?4 zk!}pl5pzWPYqE@3Ml2(e17b#Q=wPJ;=aF%D3`i;9i>p14n2_dbn2TXnJHn_~VcldF z@?=JsTu$$kOkz&ptth0y=cgnHT40|KvR}AhlMgltj0LNn;$z_z?mf^mLUC0gR!E6c zud0)sTceM!NEKp*R5(=|>@#|&DiuAhhK}%CGEWlNr+&i5IwFzx-v1jRZx($_8{*KK Q;Q#;t07*qoM6N<$f+U=OKmY&$ literal 0 HcmV?d00001 diff --git a/release/font-awesome/double-angle-down.png b/release/font-awesome/double-angle-down.png new file mode 100755 index 0000000000000000000000000000000000000000..5d294b2ccc2cecc9b809620a1e1d31099fef18b8 GIT binary patch literal 347 zcmV-h0i^zkP)DS0$70!V1lv%jKBztzzFzIjI1bW?bKEKNF=LLYx}MjU)r{r zd9^d+H2G`!G?rN<4yWmWPr%;S02W2CGKPYw~e?!-|vi6t8 zTYyGSimib}3=Y!83INwa!UbF^z^Z9TxPhk#3@PCXo+FSW0e8rOE86pTK;;mkIc&%d zh_~Yt<^(+?I2?dl44~D*gEovwF>LhjqM{op35E3pSgx(Q7;SWtnlfw0VA@^V$f}b&1 ze@KArKz6{=fi+n53UPsW3ftClCWp5GP~ZVELA)V$^v0jd+{UCRifRB{0FT`vj&xq; zPVoKK6Tn3rfwc~}iE99^;u64JoCAc2a{%=Bo^J79Zu^o$@Dgrmz^tftA2r(CcFmnN5w9d=%)hAj$$1JZp?X`F?1u}3RMbu<{ ktJWPk>xKL$%noD+{<8sCAuvJ21poj507*qoM6N<$g7W2bUH||9 literal 0 HcmV?d00001 diff --git a/release/font-awesome/double-angle-up.png b/release/font-awesome/double-angle-up.png new file mode 100755 index 0000000000000000000000000000000000000000..a23b4adec3caad3d54fcffa62dba85711c0b437d GIT binary patch literal 328 zcmV-O0k{5%P)j510BH;bQA9&A42#|6Fn$G0-r+D=3ejTLi=vw z(NC=3HGt;8-#9QwT9&A%IyEH@Q2dVCp!TSX5@HM>7B^ifL=M0cmqQEzq~cd7pHUCg zEKo?C@BlpVT@d9ykV2#YIdQXJ3K0Y3#5uP`u@xLL2m=@sw-_>l?7a-a08Uu(7#8MN zTF<>Ce&KT83i4fnu+kVTN1I>Zy a9rytGXh$K}EsKZ%0000Q zFIk@T9C^?BSptwcFht6h7-KDU73Rl~bV>mVh-@uFQ>@>l5HSH35HAxzav(Vn(}4*N z8)yfvG3PMF#?S{ISYwm2hOG}!{3^YT;r~ypjY0s}a!IZ`AZ5B>!#o6ld+0*>1;o7; zrwif~s12bIUg8vC4V<)F9_qDF2$Oh$!)7fT&iK7o058p-9p>E74qqp1H)kr_08MSs z0UrRLnsC`31;7Q-mGfu-CWtO^?uiPZAXvN=#tOsv)P4b=)oABb2D$chvI+@S`J{UcoGalcmNUcZ&BJ9*j@<20_4OIycH)X-n8PSeC~-;loY46K?n_y z6MvGZi@=#)$eb%DGrbTAfSo)$J2;auz>)!?3zI@SQNI`R{3yO_VzCLb)UgCWde6)_4IODEmDZvF ztZT%#Re%t=ag|mBx#sDB@3%k>I7_h0z zR_s3jbdGiifLm~r$%Z$qtKG|h3t*3cjO?`0DbQNn-s>Eb?i=25@sc9muSJS53SpZT zx9G@_c8WWC4Tm7CIJ&mBc%Kkw$x>C?M#N$ohrWtA2v6Kg|GmUp%%ZtjM^Sg|(L3e%h z4+)DoCTfL%O{+{`t|;xCXKTIUHUnvKB@a{njE)x10WiKQ#Nf^oZRh2nwlNhVEZ&!a z#6dxEwm9dk-|uM-4W?F3orJ9~1746q0X0fAENCZ=1(+<9Tex}M{P)!0}eT;l>LY~a>xm?<2$U)Uc& zX!w2fK2WD-ulxsqsNemUv1d)Tgdv#HZ0!5_kN?DDzgd6mSx7-JKj<1j z5#pSy{A70IK}87W2zJpWK%KY}`|Aoa*cCt%arBmHCvp*W0nl2!iwtCm=K@Il!_yiM zT)a#xX^)d_OCWK4QBSOhj=f(i-Zldg|MaVLmJm)JxYW8$GoZVTIH#G%_}EPE5^4My zdD~ksvW>j9tB>sn5yg2K@jkfmGOZ+G(+mgz!I?*oQvp;X*NblLW4hsu zc*t7;;N;KEc-E(C-WUKU2Z_3_)XN5jZgEZ@9P#^)c^z2#`)1Yor4LFlGUH%%{XwGA zaAP=($p%1Srf;@;>pz&0m7Er%$KQ1w0CS?%x-vt35ccwz=8PoM&pLgUlcJH?Rfcff z%Aq8i(>n18pv{GKuo%UrOo(#-8#QI1(c*0^`Ulu~2EGB(W30hsnAtG^0000WP`ksJ@V2>_y~02EmJKa6)?f0NJs>1aJ7U>Kmu1u z*aUpw!4hKvA@CpxlYj>9Ein{`0r!&V3dDqqC0c0000 CYjY$3 literal 0 HcmV?d00001 diff --git a/release/font-awesome/envelope-alt.png b/release/font-awesome/envelope-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..32dd52d204160e0a3154aa9aafc9c4f73d1e1c2f GIT binary patch literal 495 zcmV40<)E7132Zk-zjgd_3rkL=9O zU0`qD+mBl^os2Bgk?|)70)7TkmE$~8NlM|oNw*Lly-?^m(K#%o?5^FAi5tzAB#3BKBYCQlrSAz9Xdi}?l zSjqpbVUhvTU$Jq(ms)e_(VmHXx_;x@BLw_z*AVcz)PD(yea#1^UgiZ!zzn}xeGX89 zd(V(mEqBNUQF9)@7WJJr_^qUA5S1<)g|kVt=F-sb1dT>H@rR^Rt~>sIxE~# z)E@SIge+ojg0GvVgI%MT2BkMx5k6e>$#Dydjh+*=Z%@>mYm_bmc8HoixgT^d(bXg3 zJ|o; ln(sqt1P1!q{n+RPz5%~qS|Tc`z-|Bl002ovPDHLkV1iJq-o^j` literal 0 HcmV?d00001 diff --git a/release/font-awesome/envelope.png b/release/font-awesome/envelope.png new file mode 100755 index 0000000000000000000000000000000000000000..6a29a0b42859d4de20a588a16760e2a383d68efe GIT binary patch literal 497 zcmV>0DM`adC+-24}nE~)-m2d1k1_wnS zD3<_iP4QC4B8Iv&Xg98}Lx6iNTtxyv=N7FHfT74E0eIWL0iZpLFbDMi)e8+BV2#N< z{X>XD6VKWJSjV1oWjS&?5M}Uipo-9erB*NO8=L@QH4;Q_;y6H5S|I?|b3vix9VM7n z-i}?Ons_~gy=JbYz-Jy>2cTjs0>Zat&KGvm5D$22v&wxg0KyHow5i`XQMR}>7=Y*0=K}G<1m=O|^?o-o{0hJy#9Uytx5U@6ob`IY zM+a~>5c4TtnXtE{#rbM^CkMJ7-sk&0!2fc90Xk7~Bx3}71OxoRj}agEolX%8|6>9K nnMI;tduG4*`eTwbk^_7K;+uXAjmg7y00000NkvXXu0mjfog35! literal 0 HcmV?d00001 diff --git a/release/font-awesome/exchange.png b/release/font-awesome/exchange.png new file mode 100755 index 0000000000000000000000000000000000000000..58de63750f0d6098f25bc88419f59a40712e59a8 GIT binary patch literal 330 zcmV-Q0k!^#P)JrbCK1xq@J<8JWSg10z;tN{}7IRLB-EJAxq9IQIpFxbu$ z<{W_dnIh7b062`rB;q*-qBv-;BXJ3U$sF7PE{-2e0i-wpI*L}c{16^+ASbS@`$-P~ z4940_Q3wG5Ht#$EpzQ|1w?IPN32d+IOeZfQ4q>{6ywC{Y1`uarMIW_t3(Q`_$vUi_ c<{907*qoM6N<$f(|5n9smFU literal 0 HcmV?d00001 diff --git a/release/font-awesome/exclamation-sign.png b/release/font-awesome/exclamation-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..b8e716d353026c761640889d383d88b2ad1b72f7 GIT binary patch literal 490 zcmVy{A#{|Fx)DI<6nu`-VCv=vqs&`4g z7yl&fdbO~v7uH{S0X71BDSj>fEj|W+3!m=&v;ajDU>4|wSqh5gKWdxa}8+rgp+aS(`q(&gVXhGxvtpcu!BkKK0#+-e!4T=yi zSyNmCu%<)N{d;T@uK~<~FpIYUcu$Up;GCGHON$mGEzvns%%=S>&=w%y5ok8l1ayQl0bv6=0enx&MV95nj_tr7PC7YN zeEy!#XUARa)wf1NzR780wqC?~WW2vp%wuYt53sMmOZj=~08YPaJ-6NOr*53+Fa|)n z?&Q$t+L;13PH++g0L=QMYl(lAZ!;(mvJQpBUypaIk80?6G>lfa6$SJ~m#ou^?amcW> zT%*dlm|%lvOb!48B4&q4NSr>i0w6#p_>lQCw=B#K5L(h-TY{MQq$Oz8`%qr1Wq+QnZr$2TU%i)0Z9cpDoCgxP6dGqFckn5aOogako;%uoW3V}KFf|| zDauGA-_7mL|MPct;P7D2cDQH!gZ~8nNd<1yR}b=Q`Om2y`x^>00_h9T2mO97&&1x^ zwv`zu4Lr$v5Ms<(! zMfnavw;v_Gbr1MiX7DEkP$Hz|`FmP)q4&APP~w&RV@{S8K;EwffVEWeMIMbs<#7b9 zp3mj8loW!lTBG;pvIf;?%t09^K;k>wd|Q%303eL3g*pp4jaV}P`0h5h94jQ80QWb} z(j{cWNy+wFzepa6WCHgJv=&4O_G5mm5QOOPx1iJWr?QZ9qUx|;&zfb>@mi4DVxeqFx~2lH~gfAeF%wk~Pai zhvVVek(<5i6upjH5R3pglhbH!-ocqfCLIOUigBFfya)oYUdXv_Fy@NH^$9@V9I@Ka zVIPf6J~!V#{GrN&sMijph6EL4CHT&b2+KpK(+3n-Cp+M66zBvM0G`Rc z8S~Id1utJwmZ8O7Yz3S^CP1u_Q+Z53s_EqP0pG&%&~X9)bJy7uGlS!T$jZ^y2#|

|&|fC}{em<-s=?S}QAPfLi-ULHvU4{+s(`CwY zK#VoN4|s~Atu+8ZvL^)@y-!K4MJBngJjh|3a3U8hECAs9?}yL(5rp3L5sqvT3iN)K zoVAG!h`)GFv_V_E5a_#4cG+G^8Q5I%&62gbCW!BvcNo*yfTmoZL6_ z_$KrqIF8dO2m{1W0>R$A{0afKEtTDCKe%|2 z$W@;1t=x|RJ&JB;06L%ev+y7m_+z6=MlmlQCn2OX<+7)0WTRH6qQtxnhmh+R0FdV+L=?CgM ml{lteR8H>Wv}q-nKi>hfEOa4p!$ar*0000?zad4 literal 0 HcmV?d00001 diff --git a/release/font-awesome/facebook.png b/release/font-awesome/facebook.png new file mode 100755 index 0000000000000000000000000000000000000000..f577524c283fae2f365eec6480d5f836f77bc821 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFba9PIEF;HC#Ogx9I!a>%~+tQ zf$>7)HwPJpBm4_~Fio)II3mB|VMPvK0E5&V{;eWMj@T0ZuUB`^0tTwD)+x*2(URVyzrvnif0UhuQ;?E%MaA+SlKx> zOHX;>&?zKht8hQqR#3~~vHV@$1tRYqE@-D{Iq)$~Q2o7ehI27{Ly)n(K(mtqV>h$I z%Ou8G78>FKx?CHMS}$Z+nx&+2oUz3#z)7y*bTf}sDT7Xa^NTv2#BxE6wwO0fLh>t| z7I8_4+!S~=nNgeFP1Zn)X|W=N$Z%qKGJ)5j=bk2`>G2D*Q$kj9I<^I@O?6(^&31>8 Z;be%tV$EU0#lS#f@O1TaS?83{1OQ{M(zzx(5bOLb%Cy)_z0=<`b1WHRkLP>wnmW$JAxj(r)m<|BbFhekoF@jk_W)4O z4G;k7MhO8CK;W>~d00M2dFC3Q3W7m$`mwZ3WFp^^=&TSnAQ(BuFR3P#{`}AwaNe%08hR=p(*%4SLB;2f)vLf_x~+Gz1WA-yllE zeI$s*$_-5m<8zIOoi&Jt#%s2-#TTSnn67RMo$Ol!cPWgo^9T}N{z+x*Ef|2rWG{<1 zHI=SNcYAD_lYt8ANhy8r+H07*qoM6N<$f|mQG4gdfE literal 0 HcmV?d00001 diff --git a/release/font-awesome/fast-backward.png b/release/font-awesome/fast-backward.png new file mode 100755 index 0000000000000000000000000000000000000000..a07806f12707cd0d464d651384bb8008c587c352 GIT binary patch literal 426 zcmV;b0agBqP)bQ|$L>?e_ruBw-)+83VEf!T19&R*z&SgnwCm zt_2L?$YlYyaCE8xjKf*LU3d*34QBw8@VS6ocm&9X&jEPhC4d{Q0!rZ?pct+IqVOCb z3}*pMcnYAx82}qT2GHRVKnWiJCwud^!{H02cpK4^bso+KW*oG6wfe4vdoysh9{^Ab z4l+!?RB|)$Z6mCuQT`iWtv;yzyd}Ua9K^w}1f7a69Y(E)z-fqw@Tef7(@;SS$1$D* z8W91o3M^uLAD|HofJLMi5(>cr7)0(y6e1Krgz&CpMT80{Axd{b7cmFmA)-rZ7BLr) zLqq`dnILKaDS`n^5Ve3Yf(6_m0N7dG^!q+eH0WMa$xVU!(Yj UHdG-%b^rhX07*qoM6N<$f+WkU%K!iX literal 0 HcmV?d00001 diff --git a/release/font-awesome/fast-forward.png b/release/font-awesome/fast-forward.png new file mode 100755 index 0000000000000000000000000000000000000000..60b289f70bfe005f15b0d400a97b8de8aaa64751 GIT binary patch literal 426 zcmV;b0agBqP)9&;cD#0u`u1CFnp2+kvP+3v@sSI^Z7JNp8mcoHHw7lAFlOoju>qtnqd{ z`tcb5IDZ7d!D?sq5HJhtU0dyiIcUYat<|KTcLLyPb+K9rh^6(OtvaiXfWVCc5XK__ z@COAE0GOvBV!(R~umWMQ2oF#YRRFsZF@Qx-00xl)FbEn@L*xK8gajxdN`MkV2ILSm zKn~FaNFf+N3egOR5iB4^3<7urj#Qk4?C7i!C+1*4K;Spv$foywK-{hTQT%Zdve&#> zx9L@sb@FqYioB^c5Wk4>x2FQg=fKqq~Pzt93weTFE z7ES?}@DzXvuL9Wc7{G=X0ZOE0sLR(lPt?_o#Y1U9Y4sF9`h9fH04h zUq*pDjqj!a0>eYdlnW0TIg##zx2J;FG$S_cR)dWP2_S398nTq~5{O&Bq#!JgtN<5V z34}Q`EzJwmV9SBvj7B6oW`{rwh7#>0UTdzs43H)SJx!imN55N*S3NwFCE&Rl)K=qS z)&RMdEYNw6U}L5NX(EIBedKS9M~7$0(q;-E?*_u6I*A@>99Ecf@f-Su|L7THrPa<4D+jTC>>a2S7UQs=L_(Mh|Ys^IaY90;3J zx{^a6)cB@%)Z3kmo4JXd8MSA@GId zb~qXeQYzu#%+!EzL};Z|h(akkiLIHExmXPd&6pa^=~fn;*MPXJ_?VL!B+byAk;!J{ Y9|*WtAVlUiFaQ7m07*qoM6N<$f={Hvj{+T;-B66GEn+Y>+=H^UpAKz_u z_oCUTc{FSG-vB^Fb7@u%&xM56G;bVXp9}zCsO1yP?L%ilGpVTeCJunRd3vBV^%#t4 zf9S|ewGb}Ah>V>)04wvlTrm}d6yRzIdS(?vNCD2|cx)o3g3tgUAKF?7Edbtt3L*r6 z3PK8ia?SSuL}KogN0(97Stqo8fK!GOlHYqu)o$-{K!s{m0bm5Z015bMM6}VNiApJx z%k(7xz5oCacgybrAdxn{V;1ZW=oxNGbp)gUHi^{$D5t(40ysUcX*Gbr_lt@e01=o8 zC{Xu7B4AHYl_6LT;F@(?Di;JgL8^f3@ROW62mS!HMIa&1sn$E`$7ZrGBV?}qunge; zY2rw~P*J4=*D=~IG8YXf)WD&(oQQtKpVLsM7TI|Ks(^wagzOXw00000NkvXXu0mjf DU;m?C literal 0 HcmV?d00001 diff --git a/release/font-awesome/file.png b/release/font-awesome/file.png new file mode 100755 index 0000000000000000000000000000000000000000..c761bea430ec3290656fdbfd45239f357fb87ece GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFv@$nIEF;Hznz}Qd&oeb)tvP~ z!$Jlb2EGXld=88c7(^I^3K;kf98`J0a4&k-63Gp_zk2*yK0RjEo4DQi+hf@<{65_!-jeLnV>kAN6M9e=HMi)cgs0hW*a48krN z45zp5WH%7jUT@RZwP{`1p(^nPZ>LnKw-TStJC!PCg o=d<`@?YFXxyc$-B$v)uSJEu%>)5U2^fFZ`<>FVdQ&MBb@04M5=6#xJL literal 0 HcmV?d00001 diff --git a/release/font-awesome/film.png b/release/font-awesome/film.png new file mode 100755 index 0000000000000000000000000000000000000000..76d4ef328050871b7bf5a27daa5f1f0d177a7539 GIT binary patch literal 532 zcmV+v0_**WP)tFZb@*ale;|^)tcI3qbY-=u&>T1z?YgIReO){B8>XY{&^fKICNNOFot_U;GAs6lq{5Q92=Xrr1g09wsyD&JO%b{TAeyl4R^2nIDLzA@47 zxJv-d8OU$^TuyP;4b&8RK98wcr+nWOj6LaJzJblD9vXiJAg%cHg+naW&I(2L!-)DR z;~J@}#Z*96#%LC5Se#nP@*SlmY)glz%&B3FC*x|*Rz>~Y^FK+3UmfRG+g7IJQ5o3wBR9sU4> W=dPDBd0|2T0000yn9Nqd&`0q~*PWdwlqiR#UH0AS3Vz>D+;Edi|Mf`IvTO_^o*?Sj-0 zPID0bw_z#>lQ{>FVmr*{515hrPh|wyAONsWHe5{vGTGb_;tq&j06b1z-S*UP+_|&-AZci}y<}ga_amVyhsRZU_$m#aM{pXeAS-vakY#=?}&DD+r<<7Jwz9z7`^zv!DfF zwcjY0bq2pq={qR_aNloW=h}c$2kPID1MrBGlYN0ZMKy8&scJ6;euM*yRW(uo3@~gq zs$k+Y3IGq9Ba7<5*R&O58CXc+dGx<9>C`eY25^S}PnICw)pK49V2SUgh7;rC@!VL! z$NB}Ptv7^B?E+pnG~*ji%$WOPk^<-u^rS$*g5wp9{lYy`0Hr#hINNjey)f4ab6L2k zU3s6f8~|6?!or5MlhwP^t|`LahY+8E(wh|CK>#SSkSgyp@gd(120$Sm%?*s#aTeb3 zDC!7Ox{!oA%mzW$@~q~t0`!6eX{*&885l$JPYh;&mF_+JwLmP~=pcZ$?`y?ke#yo~ lfSTKn28st3v)sj;e*w)?L?II`@WTKA002ovPDHLkV1j+F)=~ff literal 0 HcmV?d00001 diff --git a/release/font-awesome/flag.png b/release/font-awesome/flag.png new file mode 100755 index 0000000000000000000000000000000000000000..503339d33f098cabc686033fe28a49662bf47eff GIT binary patch literal 366 zcmV-!0g?WRP)?9=j-o8DV zjYd{+G%Bv2*#ssc(-XEr5sR21uu{RPRdf)Ggdsr3bZ=s>$;hEXS8Hv7k!NqhDNr@? zUkrhbK8&pdbIno3M5|n%Y3zI{bk+AeVf};5MC*$(&yxTJ=zy;5?&*+M16%g^2DxZ} zTo8lwPd$GEj$e!10aGw(Q>o5h+5i9m M07*qoM6N<$g1G~nG5`Po literal 0 HcmV?d00001 diff --git a/release/font-awesome/folder-close-alt.png b/release/font-awesome/folder-close-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..2cabf3399775b5eefaef91b1b66798bf3c98a0cc GIT binary patch literal 402 zcmV;D0d4+?P)>+M{Ea+;L}WgN;T=-{y8k1jb&_@jwl=v>?75saK8`*<5LgNe>&yyS zY0=ucF%r7MQRw&t_wj)M3H!oM7(bZgd?)flwaNy8vyJkhF?|rxsRfZ)iR`C4%9=wM zLZC$MD_2zG46%*I$`VNIN?M@|tjeezM8M4(1`rr%&f3oFX*`4|5Rms~3;3`363iJY zy9HGVEERxP{#P(6MgmcRs6bR8D)1HxP@5^QJ`G9LTCi0BiV>|JEuN_bG?-K2TcFj- znuV&_3iA_P{|WS$D}lmf2=HK^b53hcOgNI#4`8%s{607WjIeQ?@e}fAA(5V3S?68+ wFoBt4S|<^?tE;Q$;U0UQhmH~_B!PJCGgdIKZ>HCq3YWbsTOd?kwPdITtpPmaS3PH~|%2 z&eBeTI*w-}e;!~Ds)?D51-zz&){~1frHSW@36(KZ2lv_Dt=ez?S68#ts}Aay9e4mm W{5v6rAjX~m0000L5~Rt6Hq1~Y(OUfeNN`wq)8Ol<-#4h z)Aef0(p#3T3AiDuh?cOVbqd}0hR6}vm5t=SBaRPF$i_|=618nC@~$8*{-^^8M|h$~bWpc06r=-3 zVaoB4#o9XjEf6ljvDOI%Uy(lv!lT9;5+d9h-m00Z@8g9(mW*7A-9#OQK(wvl7LJ=h z$iS^av^m>!e$fQtH$r+4*D&8SVrf17YuO{E1UH}2%2bM%O^ny zBbf%GvRNO*Igb9(;}N^!WN2lxfVhUl0WbcEP)1V;IMq*+~Nb zb{~6t+-A9$!C20KVc|j~0y>kW9R_`DLB{9Rp1=29Ei^W&Zv)z9`oL%DZ6w-A-ep!_gOw_=-M}F3J8ns zE$AsBSeB!xGh&Me2)jo9aZowL(&vLNWN#Wx!0leT{5FA)p ztl&nq55nEoi6+f literal 0 HcmV?d00001 diff --git a/release/font-awesome/font.png b/release/font-awesome/font.png new file mode 100755 index 0000000000000000000000000000000000000000..1555c055d9d41c4e4fb2cba502dcd99d5cd98902 GIT binary patch literal 578 zcmV-I0=@l-P)pH=_27Ju)yit3c?M>Nzf%80w*~6F>^Y} z?YPjf*h8Sh`ZMSYbQ8Lp0CT6Ll>h<10w6&sG8H429xtwxv=U(DyM_Kh8z>8rEJo59 zu9UPAV2;z}GTmByr!vBok`@Ac0D283(!F#ug`P;&1kRaL(n6rafegOS04m*`s*0Sy zg5Jr6+IxurgO677nL2ca@l-G_Fm6i85&;Ro19|XRv|yCir8=WTpvTSwiz^drOu?8V z&;<8a;t$)3!I&e!Ai97u_gRK>(kh-R_J9W4?qZ;YBzI&%&p$7Ulv%`!0-xz3uZG#!Q4Np!>FS2UN!N)O)lVCaOi;?669_95X#&ctNlPv+c zu_**{N5J2|dpYZS+c3)#)N-&A=EA^!9lsIRx^o~4ftZLE0$CzJF?x%MziixzmNW+_ zC{({L@rzSZ0yu^QJK*68ix2frJza7F%v}qV+>kVjNg+@oFi@gYjb!0J^&%#R&Nf`h zoZOOxAt!f@F9b>iN(BB*1bDb|No|w1bKvTDKLVU&%YcVp_3;wwlDo$H1aPntc!oRS i62d*8>+7BU&Erp1l&K*n0Hap`0000xKAU*W zC(fS%aI!jBy#&n4dbd_bVUODiz}xC(wGj|&>%Cf?t@a~`1i%ahkpS2?gvbF3A_oj1 zN&t%}0bzs(U=SW4gs1^}h#Ejfv;Zwc3m_qSfEuC)pb-qfLofge!2(JI3+N&gK#sss zjFXUE)x$~!Bn0k&3!DD!a}f~$<~^*IA^`2UHvsvqDBx)m76HJ{_WX?k?l#~McnkhL zJs|2Ufbg}I`XO|~RX_^I4;LWVZ$UL&0p#J>#{!z+ET9Z$0o`y0;Ds{)D!d1%h4%n- zcni=9Zvmw68lV?m1IXbXfC={iq3{yGhL?bFcn(m)bHGq|0!03rEx(7+8AC=E?t)3z a;D9=y4gd$BfTEz_033hC zE2f25i0*xvoY{!#6OlqN=DJ`J1R9WAZRVutl5sN)I5m&Mu!4uQz0{tR-)DF z24Kxuh;D#qQ9f&@5qz%`&I;=WfQTk$#*vxRNoW~m5O}3OWrS=McshUf#{?ZMJ9?uu xvBciM^U#R~G!WB$AR$(EJcM}}jjIz+egn+>lp$}%?ehQt002ovPDHLkV1kdM+Fbwu literal 0 HcmV?d00001 diff --git a/release/font-awesome/gift.png b/release/font-awesome/gift.png new file mode 100755 index 0000000000000000000000000000000000000000..0d1ad0830cc3cb44119cec6e1db66a48fce2ae23 GIT binary patch literal 505 zcmVDfC(rQ025F)fC)Gzplnbk04Ctr049L<6E@04$)&v_wSSx? zD_@TN@?zg*I9Rg`*BpPa@c{P4(6O|ZK1n|_jJX}l*u5^wY>t7k99&CjT>x>Ka9(Nd zEDFfn`63{40Os0!DE+d4oN&vSI0%@yRsX^Qy{X-n?${W+A`>Y91bZ}+oWh2`{3ILnl zZJm?O11AIy@0%+kcx^TSf|arKPI}n|0DGK9`Z)IhjB)PLw&vH@iXoSToQl)#l}?aY z=SoOU_7?>J&_r^@0-XRs>2s$kr!YdrATZaK`6Ol?1_Ho$5$3PKvy@=5Of^B$E+RKF z!v0Ts06ha6!GM<;wcA$rt5m_2l_w?I_@##*qPZ5mo>L{Y3V`^N-Y7#K^Zi-T=>3QCQ!<@ v)+BF)_}Y@+fmMTb+Mj!pb#m5aQxD(=2+4LKJlsny00000NkvXXu0mjf#1q~V literal 0 HcmV?d00001 diff --git a/release/font-awesome/github-alt.png b/release/font-awesome/github-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..2c93672fe5d9c902950e5606d47b4440d934b702 GIT binary patch literal 673 zcmV;S0$%-zP)DWLjOa{grH+?znSvj*;^;9vqJ^N3K;)Kf#&1r*NPJenswOQCM1 z090CJ2rYunWrQ}Zi3pV9$3<8UHW+L~p&oDm=!=1*(6805NA+7u%IQtgK_CKk$aWb-|DS1>WTUyc(Bnsx+0Y6O!bGu{hcbCY!e!cHls zl^MBJFw9z9W6eZN0r2y>uftX!C?t0|Dzxz|w#YPj4q$vra0bWf8bGn%^uvPit~rZd zX$-`JWiRIld#x1205&9mVLbVWtc*-Dw;${A7Z3Gx=VV&|;=9|XBl2;59BGZNNl~oF z1Bj#3YD21(+!^I^_a%WML?;Cx>tz6K_Y8WhPMW`B-->vMrx4)y<^U}<$artd76tD; zXK@hl&`r=)e^|INREe$N;#{L7*Y9I6wFcct6n(yX(u4;Fq94%CY8a3C$t5)q#!E5L zZpZ^*kwXKqwI#;+<`7{W`ooEL4De%1M0;+Zz9)qv&cp!h42n#GV5 z@Jvz;fEO-;M|cJCY^vA^5+yvu*f8)|z>@$Nt7IO5r33f@5pIVeszZwM00000NkvXX Hu0mjfH6kLy literal 0 HcmV?d00001 diff --git a/release/font-awesome/github-sign.png b/release/font-awesome/github-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..1d52b751056bb50e1fe01121171eacedf53a05f1 GIT binary patch literal 640 zcmV-`0)PF9P)IKCa~4T^|5ws7f7mDWSKUnddS9jhAYFD=Uo*E9`TMH^9u$i;sEAaf}7O-T0Cni>yU0xfm>_L^wc{u|*h0I)^^$d)&Kr{!f+ybOL@VeIdP)Zlpi{Cx|(K`^8~joC1*LcL6aBV9l}* z;6hejRxDkY=z)1Gy_fa?@JtHWtV{t!=YM2nU7QkS7K6Oe3(A8uL(~AG^KUY?YK=zw zfB=@PG(ltlJ11%!f1S-?JtNp58?z7*AVy9NNjG);CH*M9+ym3;-3KW>@m`88oIjd_ zFhH-3-;0A!`XrTcjaLTZW<&v!YiaR$V1AZGN*VX;HXDElUrTRF6d26_$?xP>1F&H& zeJ911aj(5FJhR#1amoJu6Xjj&jl;^adFj z2o9;u7bzpP4{!f2@tXEVXPw^B$l3ng5dbcvOuSe-K-`pvaByQ*m0(75hlQ<_8oeqo zoHO+y&N(v$5PNKwff@iWH&Tz*r692cvB#d8g-!|-L&Oj+Rdxa}wXI1^KX$P{5CimD^}Tnq~C!ICHWKK-=K7*u^}|3?o|K)002ovPDHLkV1oD=OK1Q9 literal 0 HcmV?d00001 diff --git a/release/font-awesome/glass.png b/release/font-awesome/glass.png new file mode 100755 index 0000000000000000000000000000000000000000..5f2dabd9b314de3e631bba30c7d44b55daf2eb2a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJAD%9bArbCxr@!TGG7xA>WHuL2 zzrcGW@Xi6>66HeXxej*@2-fsREZQnxuB&UGGnsp7qmBQ1&f{0Fo>@F^X1r!2t4m*p z+T;NKbMqp+799OEhjX2Qwa>2e$}cu-IIB{~*luQ<*6^%^M`fd*PGR-o`MVtWI`wyW zDl9$1e@AVC(;<#>P9M$0*5544CKMd9WHJ~lU88%Bz5KYQ(`SNge+m^*Q{4#S6`!MMnc6ljoFHL<03G%3g_skt0?AZ?YjDN6}z#zi!yaj3<{t~v>*C$EJvZHl?XWaPer(tlO2F4!aKo7`D;1bky_#8ohk;vD;Z#r5!d}?3Ng@(xW$u_L zK=uFv1jt((L=m>+TOe2^;RH5Xa3}X{3dt`%lQ960k48L{awUp!odAK(EW(K`?jb?O z_-vEk=t(UM^3lc^qG(^`0y+V*prSDj6*Abx0RB~2$TorVk3oP8euuADdS{Q<8rgrX zkk57%1Sp#8|0Do7g~zjGS!E$G$^FD*G5dvFbEgD@=9OemLoCi6J^+*+B2+ME0c2XX z(F8iE#})-%B0w-M6>qaNI9X%V&qEKg&B+p&G#Ixa#-nf`;YxVD`0pZKE%0IyrfrxDM5ZV~d(vv$lB`Q>r$(aKhAfH)Q7#DMsDSj4 zm~4$7wXN(KFCIh;#-q3vY-_+|L(fB`M+N@SpxDCF%cv(4=AZ;^I?6f1`A>jK@tTgY znwJri$)?l|Ibx6?FiLEU)SxGhqJFnfFFsyWzz5cnU|p`dA;I~8GDUC}FZyx^CDO|a zK<<_%c!>bt*C^phkTw4)=#r}JaUXIDtl19gV3eQA{U+=NuPNXpXdNWQIWcoBM~iKP y(+%BLQy>=vnVrxaK)V6ciE9b$3{+aUcLL8W)|4RtHHcFH0000CI0|5Jyj(72sxXbA?0AmT<1jB$Bnp!EmO(_Kc20z0W zneTv{@vMNvycGj}3;Q?}-ZVONdgqe>xEEiFKg5%iP>{yZei%3UUOCVnCns&i$h^7* zLV^B&1b|sEib4bcb0F@-XAz*O{{5+9ef;MDu(m5EH|7L@CV)sOM;O-u2Eq#@)?UhT zm@5IemJA;M2f%)QGDwNf{$0MKTaSI_Bay8TQJ@tl%8y@H-HE2 zAV-W)WMNpVnfX3IDdvdM!b?Uo4UWQ38*R#!A!4?+-~lH5sbU}`BN=Rz%NN#5Ntn$6 zHgXcWVTx!@)^Nrem%OzyfKrM15P0{ez^)7cWsUenyd7!2(En6C5tmAEr4V2c#nz!H z9hwD6M*Cz;FQ_q|iQs%XnFAzLCvL^u2N;Wq>-l+^_KNi^fOxM@I@a*gNri!BBGmxm zx*x**fU5?8aNOahnp<`g4(5R*+5r-==m8RtSVJUYmr2NV!jS|(nZX!r#FQVUXq}IX z$bgxPTMcquvlNDGE2hlu#N*6v;?HBkdPU8{B&90(AgOgJVd3sK5O|H}TOVTo%x@sm z`?%A;3;OKCCcOm@+X4P?SgC=^?)TD({I%Q{z=Hcd0FVKq^w>0D270QAn!Z4F5iaBx zC~h`9yQlyF<){e@REAYbO12AzQ+LZ;ey#UhDOR;>8wcb#22`9qHMi{`k0ZiHM1z;vi=hAN}QHUi5L0I=w z-Zj=40LEW~F-}h;Qeq%&&ce%niw<-2S&I-!&jAkj*Y_NNKu2N2iCRx64`igyhZ}%k zII5)w8PM_Yiw4Fq01)klm08k+dB65aW5=ri@Z(@!>w8)_O{F=~6S30}a?hJm8baXW zFDQ`HrA zkUT_sODY1CQ!XXaXdK#-1G|iRf$#uu%v*p{@lA=XgU*9>#;X9(JM7H~1Hfsi+c+S{ zDK_RbbuvKOdyjd5=Bj2fG629S_dD&U6fn8!=8eT5+7kL7AU4gUgdTxV7;Y<^+#VrY zErBlqAk|xmRw=wpGZkkz3dT zKuji#QstV6Xqm&CVAA#Ew%(XqX}~TU=7zGYS(gK|BGiiMu`OK-}V^h z7kL@0L%MS6c&;;$IClX;5kd*EWd|fPFmruWojqkX`~philOZjPDq#h)C#o~8RzelC6@Uc?u{_wM5~@iyuGjTkU70q9X` z+=%3}^hQVbqt>3LsGv5%uGO@*Z3a zWRU^2Q6f@_^Oy#`oQb_U`d#ryP$j&XtV9y4! zv};%+QUFo$I3eBUumm*S>#G(XgvBXjhhw6a@VUkY281kdR;0=lm?de4l-k<~`Tzt# z9ucr*|0O`uUf;AvXYhnDpa20{E9P`V?51FcKS1FJW?!QVfGpx#+fpAmtm&mdtUYU) z+yJtQOD%?TfIy{zmxAE^i+B{*=EM!HU?M3#mR?BpW|kPy>XN=Y|;5)Ovmm4yksc%+=L*$(G<3 z6FOuRW0$Q(fG{tJG*zO|FvbZt=pY6Rk=h0TLWc}7r~rU3h;^<4h&5&uLD^amoiJhN zc(Q^VP)4hMcpo*)f;nuAE;jHM4DmyT<2iu{xqS%PKKPLK)nE)fY_95x!8IEn0`}@puC9x*Brq=({+ub$W2zpboFEAhUqxU27YotkPTw) o8$k7Zm3jEMVaYPL@a8G}0gnKf>q|6ElK=n!07*qoM6N<$f(ICG0RR91 literal 0 HcmV?d00001 diff --git a/release/font-awesome/h-sign.png b/release/font-awesome/h-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..ab8f6ae528e22ef8bbd07bab25e8d61efbaa6aa7 GIT binary patch literal 425 zcmV;a0apHrP)3|N@3eXPdKuXXG#18Dhvl6rdr2@|i)C%-{Ov1!XFhTCPKiQcbxMcJ8 zWs__+u`&cA>`I_Upfm#P+_TI{ zxK=+$x|dB@a0(-nPESE4Fn9#mgsI#f5+lv_wh3!0t`RtD1aQXP?q#Y!)QmZ?#l}Jd ziVBiOhLqx=_>!77QfjHRGDNAOQg??fS~l+j3|~q;9ANjQu|$)}ZN6U5EY;Trvg+UDnJEJ1*kxDKm~k1ZzpeEc9Y$^++*IGmt-@u z^UdGg$yyq1NbFKvrHQvvjoyyMvzXo_al?Db9VE)mi@j)JcUb^q8`@8M`BvJLqkPaN#n+8S#>7{;74pGrhTu)IFbc`P@g!B zS3OHH9_5hj(MV}46+q#<#vt@0W~k&EN0&BycKZa==cj`dAyr+PJ zX)plf=Ufa3h;fSHVBur}vNQzG1OQ;j3Jt?3z>9=Dgss$~jb!S8h_nO%YZa;-Fk>0^ z?R>e9&O`(Nh{#d2S2IH%5;p)H8vw8zg$l0Fe`<-ltwH z$vIaoE-Q4z!Zd`Q&21I{24<~t7ISXNL6AcLP>PM|F>Xt1DF6UL_{lqUQHvQc&BAf_ a6u$u-PKzPt@^Y{M0000DpcBwe0NtQW08Bub0GNPu0_X(rU(VuurX;e5`anM*nEEK;kX1M7vM@xZi3f^##&lQ zccqPVFE8Jypd@~Oa3N8&bTX8?U zckK!Tfc`QVcZKecC;-=lD7m&K0H@OX;FapGodh_Vub4}eutBPTV9u(dn*cEStWz!lT`K~FopYj*X5V-M$XWmtrQLW+>%agW zWs9?i4%uGqyp_!s<)|)Ag8^WN+tftb?k+EYotW`mu&W*`{Yg);`-6??H%l)7A5sH! zOTtGaQUQ`EF?yTUI0xV-Y;wT4L0B1wQdXSGBFq6i6}}@K?P=(hzIKfr?i3hCUFSv) xfPu1F)LJ%-6t`X+B2;2WoEbJhM;ju!v`002ovPDHLkV1mD(1k(Tj literal 0 HcmV?d00001 diff --git a/release/font-awesome/hand-right.png b/release/font-awesome/hand-right.png new file mode 100755 index 0000000000000000000000000000000000000000..ffcd59678cd4b782dd35c0b864a27b70a411c8aa GIT binary patch literal 583 zcmV-N0=WH&P)`XzJyXJ zgq@K1pp6n;2+Wk=E+jh%1bAJADOu`yvmMoSo&16&E<0~&=)A>GB1I+>(`3Rdu$|p4~dcfts#4*F_vuUl`2k7 zbrWHGeyw^})xl|_qA5`5WhGFZi5kE zo)3lWl8;X?3-^o*f$$K!c?XU@Wh%=J~)@?|}|&YXICF99&;Ss= z>&jv)-@gE0J07KMM{ik01_(;4 zx}JGUKa$}rGzQ=+SUtghLp(+lpj1Rki4|hN|5XZEY`RnCcR?n-v52IKEO7NEHIf8U zwv}%Rgfp<<*Q{mjtmpM2+?DbGkC%cBKX!BwBT9vkLdW@h(XPC={4O2?&}Z zRF#+A$^cRV$87!-;8O&-bRup27J#(x7NlgrZ&d)AKI?z{{00EMf|AQD3j}Mdo>YLa zDWzl~v|&p)kWonmzyXcO+jA-eU&Lgi)`H!^H+LP3A%l5l<^TWy07*qoM6N<$f-AHo Af&c&j literal 0 HcmV?d00001 diff --git a/release/font-awesome/hdd.png b/release/font-awesome/hdd.png new file mode 100755 index 0000000000000000000000000000000000000000..f099dc63f6eebad17486f720297a3a7fc1afc808 GIT binary patch literal 498 zcmVGkd#sXKVktuIier zx$W*Z@AZ7lXA|3e;`*~SfF=euCC!n%=qb@saW7qBQvgZ@-ggOZ`34Y&ZF%YdSn<0B zeQ2!O5+weIy&aps)_AolM;*Y0KE9EE8~tBB01$F3Keq*J{|CUEp?}nf6n$-1fv*<4 zr;)r#3mGW%h0}kc-;2K0Ew0kICBKuyY%73}esmmaon#0Z$VI;c?<9i*$W6b4XqCYM zl!{>Q)BQQ25Y7t0`tQ+!3;t&8g*K#Bp$h$9(E~gv- zI6*mbNzUcPin-9914c&!5NmJB=Kufz literal 0 HcmV?d00001 diff --git a/release/font-awesome/headphones.png b/release/font-awesome/headphones.png new file mode 100755 index 0000000000000000000000000000000000000000..7bb3495418fe3eda4f596034f256170b0e7d6e11 GIT binary patch literal 639 zcmV-_0)YLAP)I%dec6mh8(!lL`yZ_eur0v*BBe+n@+DG>yox;c38o7G&Mrg_oYR~iK#&^;*2Xs zRm%?`yg(Fy4euhh=5%t^!?|vWK~UaPYf}Njx}S^EY=CpS6+36au0KG+!G$JK#ZbStL(_}k#D1dkNhmKMJslHe>1Js+$5>Rxd08r+jAYJx9o2~#j zru(Nk=Qzm$C^6Xpgudtk;5At)a(&+gK(he|5j71I7$?;Tktb6g0(Avw3#9k=e}Ii= Z;1{Zuf+4HaW$gd}002ovPDHLkV1nm555E8a literal 0 HcmV?d00001 diff --git a/release/font-awesome/heart-empty.png b/release/font-awesome/heart-empty.png new file mode 100755 index 0000000000000000000000000000000000000000..00d6424593865408e48676eb54ea44535043b050 GIT binary patch literal 639 zcmV-_0)YLAP){+^d#_yC7I25@H>812rI+wn<_cGpQ*VCfJ*NOoAqye~Zs2$Jj~eQ8DpaQxw(7z17= zL_3!r1dDz&PNbHVA|EqNkZH(IAdpJ$q&VnFL*{voAPosiE9C;bu5G5ZU(!AVo~5Lv zPV_z*NMMVwaqEDaJ*A+O0|<~ZB3W&WypXs2Z76^2n<)f-o%3@&=UWCUa+hf0m8?M^ zlOFFl16G1h2oN=AoKg&SlmRRI0s>YKu#ZSf%Ou#moB(8G_W)(!T(hgMS|(r_UmknA zic<}^3y?NXgO9Vih%8`Z#<-0Wk;pGQAE8e$UTa3w#!A6HfJD``TDMwU-++U$c58<1 z*uUquMZyRF*Dvz^2SO5TO3KqjNHcAk$a9-j(H{{cW>RZ5^nS)MGSp&g(}kU~hyXxg z$BQB1gO_&7G6GFW)CLEjia;!hDDb)j>XL{Ck0DS+q7is3fjknaE2CZGF~4TZ6IEvq zgh!9l!I8ATTbt)^noLA>(hJ-M~75I)QAU8(1b#ClEJ)3DgPH4PXPDz`6lWpx@;roLFj_q@{W1yhBs+ z-gle-j7OPmoLPV512`7kmHb-1kuT-%=Gn(>;|f)pm^k9s@>M;s2>?MWOfuIr9~Qvd0Qpf64`L3{zQlwW27SOHMVQ|56W%u~A#&<#g@WQ@r1t-6I>if1Yey%y{iA`3m_ zSYTJ2Ana~NEXhN3#fK4RFWEZ}u&dD$hZ+y`J6~>h(Z&PGp&<6en_9q*2Oys1eJ#wT`F4d1wYFK{%L4@W2<*j(hwAR?bpap=ml=%PP?B{8ND_5}vIG1A2$N6X Tll|hs00000NkvXXu0mjfz$DUJ literal 0 HcmV?d00001 diff --git a/release/font-awesome/home.png b/release/font-awesome/home.png new file mode 100755 index 0000000000000000000000000000000000000000..de909e221d9f7c1a85cb7c8b21fab362af3894ec GIT binary patch literal 511 zcmVLCCQwb)WgA>vJWtfUap zD6d^X=GzpAQUJ9Uc}Oe-6Q=>p)&Sf&YTxyHq1*|8U;q%+rWt^0x;`;90qE z=8y!LYz&rw0#9y140Wl55sCqzRUWvaYXk6RW5M%K5KvX9(CG6<`KV-Pq@tLCTB}&I zeVT%ddx|N3rR0CN2?Rv|Qf5Q{g_6$W_Vaa+0}}!cK+&8$2RPR4gx!XHX3KTv7i1^U zE#b|HZ#oB31Q5Hk)JC(>O-|cXQ;bEgwEAw%$y&_)1OWQX#);?k&K33JP!9FJfnO&l z0MHk032QdSU}l|w0en#_qdBQTQ!5sZ5`eY}V3@?|IkS}l^5&#rfPF{mE@(9FFO$-u z{`sP9_~!w9`2P&x=+t{(^wDfC=C~bSGJoAOV&3(n`A2Jb?klq+dyfJ6wZ%W^c3noqg5QiA|!?>rXk05}Eo1s5Ux;e7%4 zkiogo5WrcBLg>D+86P$_4l=+T0Eold^C{t_jU|t02p|@eQy$hp6D$bbZh-YZQVf6{ z*0$3*`T}+u{f4E`1_6*-H0OOW0Cvr(2#*@{uFGG7ow9&y13;CWBTAc|$%_F@G`Zbw zr+T+1M`)acFuAvLkKx`RM=^j}lTrV@{E)55?&Jpn02q0a!;)Xs?U-T!wr20g-vt12 z*8sJ|c%lLSE~u>8{x1fAn7GBl@4g%m-UoU&qLl++x6p^!{Dwnl zv9G4^7*YZkq37s*9Xs_Xn?4Y;)Te#124ai+4*-ady2lI+P~VtAb6 l>rMcEeg|18lBBbrd;>4~(;>tHZ887=002ovPDHLkV1mm`3OE1& literal 0 HcmV?d00001 diff --git a/release/font-awesome/inbox.png b/release/font-awesome/inbox.png new file mode 100755 index 0000000000000000000000000000000000000000..b78fbdce347014fd8e1b3e9cdc5bad9e3d39b628 GIT binary patch literal 462 zcmV;<0WtoGP)CLnA86A&fb5sG3w@H=Ld$?G0bq;k40p zfytx5U1DB&2&BMsfLITGtOjU506C`$rUDZ50q>$u=73pZycPHp%vV~xcm*XkW$T&6 zW02!DehQx#%+J~gq^-9H=WO9Pm8sx&A$-+>rUH~&wjN)wg)>Q;8(-74a8Ms65=dL` z2y2^vAixm3ciECu_K%T3jW1Sg-`30VrINBG8^uTh-vUiC{8FQQR!ee!N5Ph2?ItMx zyOa{horI*ay^Ou|q`5ea?(z~~z_u4nUSlpf*9Q?`l1hnQ1O?g>$Gt%WJP9nHiNK_Q zs(`nJtOE1wH(ELV81W(5wyA9_|0UZt0X6EDn4#Zjjl) z*zuG7grd9y-w%6-Y0Yb8OBr-{Id}q08ZIAbXmWhrz>=^*f}xNx>O;ek$15dLA{H~G zoUBo><2b^XG0l|W=hu)D1`BB=<{3{F40l;G+$;hTcZ*{9I1WtG)94f|kYYIcxlU(U zLN}9_&f!(!PZ(Gg_AwlJAu4oNhM`DO7(8A5T-G@yGywp(5@-bg literal 0 HcmV?d00001 diff --git a/release/font-awesome/indent-right.png b/release/font-awesome/indent-right.png new file mode 100755 index 0000000000000000000000000000000000000000..f08cd654f4d9d8a0b17cdc04085236705f1ee4b6 GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ=bkQ(ArbD$DG~_>EDn4#Zjjl) z*zuG7grd9y-w%6-Y0Yb8OBr-{Id}q08ZIAbXmWhmzYmuoy;7TN({5&IyhsKt~}7`a#T#@ zIKtmy*eYbYqw7((gR|^{K&Q^1EMJp~8SG9w-rPEW!OA1r2RfLX?3QOLsiat*h&L%_ zFr0Sz4C8`|ScjA*W>p`7WnvOCTNg52u>N%AlTha~8<`hsH!~KO6m02oyjie7YAHXP k>+A_f<~YYbU98B!@Hy3Hp&$ddF3`&ip00i_>zopr06&CgXaE2J literal 0 HcmV?d00001 diff --git a/release/font-awesome/info-sign.png b/release/font-awesome/info-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..ceab2d1e3185dcb85fcf8e28952dd123639cb6e0 GIT binary patch literal 517 zcmV+g0{Z=lP)Fw2m_dVSpaK^a_Nrr z?+Cz|7+}>^0vIbE1>F!DKutWYIVCwLJf;gG2dIhPiP&u>_+#X`3XuZT#L*cFz&$2J z1Zc$ZrP?v$00{dm#?kGq2yib~u6GE)iP*OQNYjx60Kccik2!JUxDS_;P>zl}86e1~ zGsqM-t$+STF|~QDM1Gg++F$|RlR3h3e4AVcfVEg{;xXCU0;F{eHN9R5HnLM1Ceisq zex$WegA4)a#UTS8fG9X-4y3RufTsl80_c^}+l1Q!U>02AKqM!{`DljT`r4(tkF!UwikAS`*C3Sa7PnmD7Qhq;w|EVJ>!g+j z!gy_KFD(X4o7mR=m}vQ3B|w`*bVzwRzScjZ(LsmYI6J^E%kOX@SGBls00000NkvXX Hu0mjfT3gl9 literal 0 HcmV?d00001 diff --git a/release/font-awesome/italic.png b/release/font-awesome/italic.png new file mode 100755 index 0000000000000000000000000000000000000000..e77305fbad6162141193d8fb9bd8e4b5188b738f GIT binary patch literal 463 zcmV;=0WkiFP)3q-)A`JIfgys4>SUE5W7L{kY5gxm#DdS*6y{_2t1)`;Q+3dj0?hzhG_)O(Pf0p zkax(5&~<}%Z^(6#RI71#Jg`F7rO>(67pHwZ1oFZU)v+IV;JhCk9s-p3B0+jCrsgOF z{sa^{o<==5ECp!BPXT3$cb?^G60`_#1w0B}tZ^oASztAi_Jc43l7vN|Qv+HAxDjmy zEpPEIcWZ1E)+sQ<*w-!%Xepqb2iCMT5~r@2H2%7lhQ zU=D;A0VUjk+A27j0W|_#W~Ye)ofxo6Aj88olJe67Y4G;LD>#379S^w;l?2$B;NBns z5)KKPFh^2$27k-{B>=&g+=QqOzn)jMkO)0m+c4^#z&~D}K_QY87qI{U002ovPDHLk FV1iN*x)J~Y literal 0 HcmV?d00001 diff --git a/release/font-awesome/key.png b/release/font-awesome/key.png new file mode 100755 index 0000000000000000000000000000000000000000..7cee3ee9dc423e035658b5a786ca476592c5a60c GIT binary patch literal 608 zcmV-m0-ybfP)14-ax?}s3p#b{=dL~kfe2cUqFZ$i+4mp5Ijh?IFl%Yl@Z#E(D0A`}}VW8qi z*~k91MhYNj{6nl9MwST4frh3SA_nk`rIGnxU7tmJs1nwT z2LROZo}RpyFC~^57Syi)C=_~%2LLt!F_J1L-hwYj`;d^iU;uFATeBloPVpYAFqi#+ zBdtdOKzutkHzK@ttkLmi`a7iu*WO0855hj@ zjozNUtFcW0&l7G5jsZ{%v270o&!)oB+XvQ(d+v+}LH2hq=U5)dd19_rGfEPsJYqdT uKcM5bV^x6{63VX<31!&r8#@HOdG!Y-j({OZ8UA|!0000gW2fCO*=3K$C593Wv1;Ju_JtgNHSj?s_1?f7D+(u)EP!P%`GMV}h!U|=@X9AJCLN6{qAH?_ zeEYC;M_TO&|1TGVKq)0-0kA&uh~)Dte13$UVIaxC!J6Vd3n4<*{AEkJGxohBsWQ(> zL}i{IKO8|YG!gu8Sy-8jz50tT}{A&Jl=(=7ip3cDlprcBC dUaE*I%@b_iOz+&~UDf~q002ovPDHLkV1grHgxdfB literal 0 HcmV?d00001 diff --git a/release/font-awesome/leaf.png b/release/font-awesome/leaf.png new file mode 100755 index 0000000000000000000000000000000000000000..6fa2370af42c9495e6ed22f33df584ebf6411031 GIT binary patch literal 539 zcmV+$0_6RPP)!FIwF0pNsX(kitw5+itw5+islZr)bYScNE71Kid(Lrea$zncf83cJ z;4ZuGy}i99{a(k`?-;+=Hi4lCzE{zA^0{u4z^MSfi4T-OCZ88=5CHH-{MG|^Cx4tm zU?f?7G!yEaGMAiv*4Qhv*{%d8s-`OGE`7bMLjV<5T0)wrNy}pd0DOs*F^NzW0nQNc z@NAO+!{9OkmkQn}n3c>Tfa1>`m4D0gEAh+&LBvT!!MjCZu1!}*{X!mkRPgY5j*!7q zWs8tNogfkdJQdH4>{Jlt3?8abW#f=QO#M<5J79N3hqBIWum(~Y0gi1D5?IUPK}iIv zC%RWPUL&Iawu^ir0XJI1B-gS)bud(NJyD%vXA->f36S{1$moMpfd@*Lf-JE!@hLfc z0x078`4)mdCjt}xrB&p(w_Zs69^m_-0;0SraBc=Oqp;X5n0o|L#dCuYQYg0waIOrF zrv7Su9A3W|SX<^QurF}Vd!ytb0|;2)1Rf>U+$_08Ad|&&Z^LydON>*zY&cmQ88ENv zQ4LfeoPJ{?m@>>4PgKS|iP+~wHOuYI5VG@TvA zY%beQ#b0CFe|F6R2i(Y>d+`(T7x9JoXW*RO7B2viza??ie3u{BQ3x-w5D`}ht|+&oYdwJfh^r_7fHbWI zun+OAsB&w%Ln;U0<4bYI>y!A|D1DW6M7g5;Wny-tXTJjE;}v2u;I)q=dXK`$prrViprH$|~a2-fx0e30L(R&(?wAyL(Og2Onp zv>c*bYeJ0Pf)auWhftXT6(rrQMy^6wUPHz*S9CO9srhK0{DBw&Xk;8tbiGMOW|*iW z`vqYI7#*tX9DZx~_#0y10BE})rU39jtfm66Lae6*us|%P2IxVoW%2G105yn5`R9^_ kLjjal%QW1w|G_E%js*HF05A0X5q|_`{njU_t^h_ddM!Q|vrZ8}c7qV>NAZ13 zDFuKC&9T@2a#16Lv%>_c1O1;@WtsqB@IgFw3OJnxt{Dn)WCx~9M2;NM1MVv5E@6lP z!1-%1f-sIJG37+W_Pf;LL`(^=(+Z&K{5C|;(N|Qg7XZ4Mbp48HIF#3=&H%>p^c=ih z=s8>0bI>;cPkO&;E5Tep_r)(E`b_>8b-xp1pPjHo)`UL#=yq8HO(9*H8mieg09JdZ z7z(-RFBm-4v-HLRK<9slkI}uF0Zl6aOFx}I5;H(@lL4r0YcenuUy3)Ceu8Pu05xG! zMYl*a zda+;0Mp4nS?|cR`}$%s5_^h?)#c`x>wd36X%DXaM88wunT_ pe=-A?75QEm3_vfXoWffN@DHw;fg!VvlJ5Wj002ovPDHLkV1mn*1(^T< literal 0 HcmV?d00001 diff --git a/release/font-awesome/lightbulb.png b/release/font-awesome/lightbulb.png new file mode 100755 index 0000000000000000000000000000000000000000..c75ef74f7073dfdc174a66dca3cd67ca3fcf2028 GIT binary patch literal 603 zcmV-h0;K(kP)(_^YQNUF8BWuaQ!I5we_> z#RO8@G{fE7uy&!P zKeQE<+PO23YbkZ1NJ7^!tEVzjcK!2?qnXsoc2?o((uM$V%C$^|#ECByA?}3`TvjAP z0EG22VGR%}XR(9;>~2UI&nmq`w!m^A2EcyNwk^@5kmU;|pA>T*wpJ04(^C&a3lC~#tAgmGmLj1WnT4tgLn8=uimHPAWnFEF8;0A$E03;>p)NF8V+Xw^zWAU$+;1L9gc_dz! z<^%v!@$0kzXRcQ-TGK0Wlh!C=0Km%6eP>5)HkSd%Y0#T|tF{SIKLD5Fw`Kr9B$zc+ zQI+Vs6W5&S4M4%E#kU(E?2b{%9@Bl=M3D%33(jOV)z6w$g6ek~L^zRl0E?`x5Ge#I z5yTgyTmmw-^PAD76eBrDgi7A%LjjBuUWw})f@%OVCbZmRG)aqfm6QNu6WGo}i7WA0 zv{(*+vFw&fHZgS#c16EGjwax+Y)1erhLl`UWX0Givd&W&q6c- zH0=mD%D0}kj@6t%dLaDMz6MbW&~z>B&B#HlT-#CrcBuJ*>|=8rewQAima+RPSqT8L zf1C4RM@Ub;XrB1vn@WS0a{87klmM{6uZhsL6x%sVl}Z784usb%fmZUhe{uCzfXC?F z=^Q~Ymf-fr?8@&&xh_?JxjwmQ^ANeklbpNg literal 0 HcmV?d00001 diff --git a/release/font-awesome/linkedin-sign.png b/release/font-awesome/linkedin-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..d891b130548a0226280eae7143f5ab177905d0ea GIT binary patch literal 489 zcmV-^%eJf05T+`5Zu@fIImrLE%`6QiJ!g2>^KN zFS}-{ze#&!iZp5fur}Fq7AH4L(NY)y*6AR3b<4k}D|_SL0Qij*zcOVCyB;S3yj7mZ zA%IT>9C|@Out!oD8?hV$s1$JO1p)J(qPlX70-zQEfMBokv#9~7S6fk*AeD_$;78T` zjlwx`EoX0_hBKB1FAWw@PS8HJMgg>fl(e!!T%7^dc%^KD@s<1`B3n{`p=F8foh$%6 zF&3(U3eN#$asbw!{ekTV5GT5S%MHL&?^qH4)nzCDB1d;jA3=XX{+9WlW~>(tg=;kWKP)0^qP(YT@CEkS#E=N*u$1mf8xI`|paA;aGm8{7~MLbDXIs zRNT97u8Jst+)U!zMFEpzX?cJWc~+r9f-Qwe)IKGUH}5ZIF^_9F?j>-}U@Hg4FIfV05gE&yo(P?Vvy*QjFp)1j0l&iZApo0NAObN2Zh^obuzv!Diojec zi9P9|Eu87A20ESz>^~7;GwRAO^2kJF_@z=^o3bYY9|_D%cn)gmh>@Ds7t%wTnLm{P zAL#@rEoKL~a$wgzW)W}&$umAR0(mBI?UPEt9!{KAJ%hAWi!fbnqzR&|6j%bmL|7F= zO7Ut0!>W1ay{jQW<}J1cSSf!;Cpo#t&_cs?`5M2<6M>mJu}=rn0IRhd1}(NUI&cjF z^AOcyYM`IUx$8=^#uMcYo%kV%jldn&ux1=U67EF+0000SEArC-0eua){i%RjDh{m{5XAFFXiQyr1U^T?`(|~)t8f8?e`s4d z*5>4d90$}um+iPsiBARiQDf(i0%N#&C*=GW30tT6Q8>E@5Wvo#gcr;CwZ?tnQfN#B z`Nuc6?K}k#uxl?oy56l&8)K_6yb;00j{QnLv54Rg7eEBKjv03XX@S%&Q~+oET_^;a zPi6D84}=Q17vYrvA>@n@rk#+;Aari)Z^NnGr2^(A{$39O9`YecCr1;;YzzO3R!s46 z6%UQ;m?&W6KjMpMLj-E!W<)@aM${Lf3!vyI$gx(8Kdcj$S{y)933NhkL*{Ow0-OXw z|2bKipsWHK+r5*fB52K7zK9ADA%uJn(~x9jzNz;C+A-)X^a$YlfSrdL0;qcbB}>W9 u_3#|ZuEh~Rlc|MLAO(<;hBlg<^}hhUE?acV1d=HL0000MOpE7_t0^nV`ju;03 zK#-kulmS3h1BClAVtlJJZk`=L)9v>1JhlM9Ex#iXSm>;<0DzCBbna4d(C>#+kBdSL zi!@a^lyx4!$zLk#m)PkP5fNrujp93Af7G{ZA2kAvF&v9M)`{0D$AK zi1AmQ?c6!P*@%dui_t7I!AGSP0A@tgl!BEau(U`4J__l~IXk&`hE!ODbV+KdrlA)c zjHTq;v<*|=>MDDkp<;@S8W>7TDZ}WqmYy6N(cwQLdJzCWn5c^!L{t@FlW{X5BIL1^ z%#4VdmQph!qW_tGVUAfy=K&wEwq@UlaDb!2b;4EseCx-Z+K6tw#9jYuJpyMJx<_EDn4#Zjjl) z*zt3sjFF(08pD$3%!VDyM1L?89jG_CEZz8rO`(k8(cdkbB-7rlU{1(nu$(8((9GWA zn6%)Fqc?*eGcy-kD>L7Mr!B1)Gy)pZoTJ(cyO&`mGv{Ujqrp5mhsRvD-9gr#HWDJa iPFcUZR6e^oGcX*Q;=t%o;#nP3Q30K6j^K8mmr&}D$CrU3Z@PPySpDnp4Spx(#GQ0On z#`kd#+5ocrAmBHPnNPYA^*WcHBY-0qhb&7iyGl3@7vRr&e_nV!;R5`9K{kf65H7$U z$yE8yz%qmjV6N`6Nu?idxBz=Aa_v5?y9jxDQT>1i%lEnk_+7y3hezr%gfGG9yMU_4 zI#kh1(8yurT~PE$CA}0D)jdl@meWlzHe1Oteg6xRgCYqV0i$Q&4}tMrAw&-<;s5{u M07*qoM6N<$f&}2mk^lez literal 0 HcmV?d00001 diff --git a/release/font-awesome/magic.png b/release/font-awesome/magic.png new file mode 100755 index 0000000000000000000000000000000000000000..e8845f047f99782a02550bb22626318155de329f GIT binary patch literal 534 zcmV+x0_pvUP)@X{S9TFmTC$11@8sh=z{u}whaR6YAjL9rM z)0DUe20)u+4uI#BxDu}e{a45cfOdmmCE{9@Hna;s1-O8`PJ8l0h?f9RiH$gC8Jo?V z_nm5CxvK2<=vx5-0KnC}SB+0cZ#1Z8f>Y)H*#JRk8;#_7RXl88>>05y@;+in!--!dGowFCfA;cA;3J|^T zz#+xGOPZ~~F75Dl;3^BQQt`&1HnxPk~B(CrGK*^p(YmW}_ Y3(eegA;SgxApigX07*qoM6N<$g0QsfN&o-= literal 0 HcmV?d00001 diff --git a/release/font-awesome/magnet.png b/release/font-awesome/magnet.png new file mode 100755 index 0000000000000000000000000000000000000000..7f28c0ade36a459d197778661a7ac5c1afecf5cf GIT binary patch literal 479 zcmV<50U-W~P)_1Z9!0XoI1B~Go_hLN+&Zn0JkP{<#FDlOJPC5{gP=L~)AL-1!A zJV-pr-W7?6R-R|AC(X;Pjv(k|(3dvMNGcIge}$pAdxCA>1*C^eSghCupc=dlfZr4qMb;MxGk6I=pCCN$SZ7naj>*JAhR1B$ zk!YNe*<0@cdY0k@472s8<5l#DBbXx(7&8Of&Jq{^r9jk-cU7y!JBSxim)7dd=Lg7_ VV}t48w3F`N**;yXOrA#aKOT$SiGLHQv~1*yY|IS zre2pr8}1;u62cMhMa{?z{3`2D_-4IB#Pvs|P}GbT05%+>;WM=a)GG#{>q%pmV0OPn z4TK-YLQy07P62Dmi1?Jm-r$L8l{}?vW;6sqqjY3lG`t<%5OTA@YS5ze6Op?KJG{%T z_GI4_ze5_E9bS750HgZK@hWs9QjSRlPEZN~Xt7`as8)?WR03ZXsz#pzfHR^4^Vx%WM5|J$ g1XUgRjBOmiAD|CaA^xT*UH||907*qoM6N<$f(q{CZU6uP literal 0 HcmV?d00001 diff --git a/release/font-awesome/medkit.png b/release/font-awesome/medkit.png new file mode 100755 index 0000000000000000000000000000000000000000..fe63312f9a7b02565943377ea649925cc075875e GIT binary patch literal 437 zcmV;m0ZRUfP)bKw1~b-Z~ewEKR4eydn*A8 zSKi=BBVW-1ywn>;QMo2moKY38Gk<{}O<3pVCtR;tn4Q0EjyPAhBBWa!3FN zz;{&S5`e92R*_w!`N^J!iF;tTtt)^z4CAGGW&-&C88}z5sqt^*Qk$Q>!ND2m0#GaX z>jcnO1~_zF&;TU|QKkJHPRPMM5I5g+5KS4NC%Dz{D@Tr{sVjT33F&aIVome;;5@2bU(pG`(0y-4HnsdSc`0~bQ0~pF;SMgkWOV;g*PK?U?cNm5M fC60REGdjQzjMcBfo*0wz00000NkvXXu0mjfS$etr literal 0 HcmV?d00001 diff --git a/release/font-awesome/minus-sign.png b/release/font-awesome/minus-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..503a705b49ec962c5cf78308922a2a1d43753bae GIT binary patch literal 466 zcmV;@0WJQCP)~4aoz^NslAGp$xFD#@`gt6AE4Om^J<$`uaUKqnFQe8yeTEV5i^O2vX*i! zjgr0407?X<;{702nC?qYS|a?STx#eJ13UPINLFb(0P#+>Q+1E{yI<#D0BBplY30W_`C3cc3x90*A$C=nwg5^Bux%*1Ws~QA#ZdIUjP6A07*qo IM6N<$f+V=jp#T5? literal 0 HcmV?d00001 diff --git a/release/font-awesome/minus.png b/release/font-awesome/minus.png new file mode 100755 index 0000000000000000000000000000000000000000..c8ed82ee22474a3de956ec8e0f32501b1d3de859 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJE>9Q7kO=qW6p4fb76-l=_gE#E zu(&w`2{u;_4F+%LdIhlsfh%_iX1rsKNo#g`z$kF~@`<7e8x=l_ezbgG&#T)m`IaL^ z=0F<128)}lL%)E*k*NZXfd-5npEGCh=`o!(J20KYv53#4=m2|7q(I8^1sWY0Pbwev k$nrK`6p(-tjQorYvGW8JEvFd=0A0o4>FVdQ&MBb@0GOaWbN~PV literal 0 HcmV?d00001 diff --git a/release/font-awesome/mobile.png b/release/font-awesome/mobile.png new file mode 100755 index 0000000000000000000000000000000000000000..4280680daac09110a048939563b8f2f855695c26 GIT binary patch literal 312 zcmV-80muG{P)%{b`eCN$=8o`+8Zs zx*FN)kqa=4(KZ$pxN(aD3e4CLFh(##~07y7V0InfUc&@DP0(b_u zz7>F{vUHT#CB$2K;_r4=Vn4xr0+Rc&Xw^BN?q0n>+jNs4-7g(h*gH4?bKfcepw4W_fuvIo*h_334z<>; z8Nw`qHk2|aQtL*%O)@+}ERJk{1CW5h6Ui+@4Zr{_V*Y333cLV8{97SPE<7Rt0000< KMNUMnLSTY0BYLU; literal 0 HcmV?d00001 diff --git a/release/font-awesome/money.png b/release/font-awesome/money.png new file mode 100755 index 0000000000000000000000000000000000000000..3c416f69dbf876cff3acebb3169393d27aba5536 GIT binary patch literal 537 zcmV+!0_OdRP)(MM&*!tpqcxH7nsAIZAns0(kwSVp@D|m8d`Pzk25D;KI{@*e@2^V+B>TI*m@$xN z4Jelka-w(-i-KHgz-i=0{TqXOJ3+#db zFl`m`kleKp*x%ZT0pF5RS4R;T4hAsic5oZyx^;-m-V13(z$6q|OeQi?u+xAOfOKg5Qi3mi$@>fdhGtbqq5u(kOwsb0Ak@rg z@yF5&DO=e{=+Xm*P8$762uy+`&mpiaPGE~Tsz_*6?b#oh@U z1Ig`-8LYo9m40=e09a!ntZo%g#llAp2=*yi z#X)=>%F%a`UgRQu-PRWF6Q2jN^W$`WCEwEsL=)~X2aXk3r0EBhddGZI{@VON#wB- zQf~^VpEHqLJFIL9bgO-cGLA~i3qWn0i0lk24Pg6x4gfAQfXD!)A%kLWI~xVwfCsaQ zE@w&$-TZD0AOILU;r7@LZ*L<3K+aFt(u9L603fkbZGuhL(REG%QTS;HMt7%+&_bY4 zE5dtoS9-iwg!+P8=OVprLk%%k8-6+G0;NHeA?5%WI4=RPM_bajuSrT(Mfmtbs#onb zWE5W|>Gh%i*YHK{;C;xcPS+&8-VYI?maI#Y zChwj7>^RfO$Tl4re^Q!2r43%nYx$de0XQ_Fmpl+D8EB2iGZ6=Kw~VLz(QybF^Jwh(F9&B$Eh5S1V)L#hgHdm)?Xv=F0e+9 zcIbeuhKdq+HlQc18&9o82z&_yFdokOIZz_m2#`+~G_)+U5!lILAcG@;{}X{qnmCm+ zh){}D#%s<#&?mxLAZr8mb=j6DGedGC>LS2w@EBMPMF`Mp&;AO5Yind%zV1wjaBjRj zl0Q1%t({Lv0WTi42=9ARLHlmx%dRv*fQ#%r#P+q~N)N%?GTi7G zjr1A>2s6V%h~4Q=>@=Gl8iAcJn^YzcAY=$_sFZm3Bg7^Z(7)fUf`u;D=Co5l$sgpp drkpHXz5!4;av?kczg++T002ovPDHLkV1lNxw4?w4 literal 0 HcmV?d00001 diff --git a/release/font-awesome/off.png b/release/font-awesome/off.png new file mode 100755 index 0000000000000000000000000000000000000000..a74e1c3de5a04c44f50dadd7ee087aeea02f893e GIT binary patch literal 693 zcmV;m0!safP)8d1T7O3CZL_5Faa?IIWS02y`;~ z<_wcwi9obR(ehHV;t9Z*CuW5-a66<#;J5aF1fCAH#$G6vz)Tu{1Fb!+U5p?==;;a6 zfE8-ttI$Ub5`n2U$-5Vy$5I5arEWT5-5tc*_Ywh^Z##u3bTtATu`8Sh&bFc`5P^ws z?+kcG=@r{@I1$l3oh|e=*WbF%Bdm z@Fb1YOuYV73$|FV^_#Uwye>MQg+Ygez_YWy)NcwYCq!W;bON``jpK-bebV#uAY@@mhz868b-MxlIw^$ zQWI@32YegPUdE2&sDI;#VuDC59oSR#zKP}L%KQ?R0KYrIw`JCGo|+B^_KOfq^~n^a zaq&HprOLNTo&X`F9{fDdoLyZ$mc~&@%M(DC5S|LQIaNJ51?I_2AbmxN2qXi-3X#@m zFiUV=tC_i<5`h#Aaz7RPe?5CMZcOUXt=`%i)(BW#Qp59t44=KwEgbWGC21kBl7pJj bhZA@K4kv#h*}S*$00000NkvXXu0mjfE9ozA literal 0 HcmV?d00001 diff --git a/release/font-awesome/ok-circle.png b/release/font-awesome/ok-circle.png new file mode 100755 index 0000000000000000000000000000000000000000..12d19a2706d139a675814a8f951408b9f73e29d7 GIT binary patch literal 665 zcmV;K0%rY*P)YU@FC${4!)<4=8U=r|a`8)Yf`9^+oND@7O=S6T)L;;9)S3nE~uwiQf ztQF4oO3lFBq841i32BpH0v7+|9|Y2r8e%kTn8P^Fm}0OdUoPp@@P zRwKr7#kX>nT|235j`cBb%@Xk%=R~DS8`dZFBDc^o}9VYY;VY z1gNCnTYOK5wPUs`VN^45B5TmH&(4Eo%T*deCdd9-<|lwPJMHS0t8JV4=~` zj}ddJSk|T|jnlZ|5lx#ABqN_=HWOVi6ZF|!=!RV%*SS@#*{|ZY0%X4f5oejmoPbtJ zs=+a(o%46Jrg*G?yDoB9 z{_=Nn7{FS^W-;S9?4q!J3u7fB5q&;r2s05a^a5j z*AW1x1u#@R3c4XQfU)955E5W2aW@19m|ENg5do0pFWHP4-r<>s;^_7)0^HJ@ z%i;0ckq~+!N4y;t4<}+T1%RwQ90~A1<2ND35q;JI;+UR$H3BPuV)Hqncnl@C^@d(t zOC11UZyptZk1&f|G2%1lVOI3;&Kgj%0o5@8ROC|REp*1-ZOHG96|%&!sz_>V1-D+^ zK|@2n&w6q3*sMX6iX+xJIg+$B4d9O6UMVx?5JSXG0J#NNc3dXftpB#yovi&<$Eq8x-*9HMI8cuKJaQ6dh2 z1Mr zw!A$nZULZuEQCuu1uzD}EuI6wdt^IK2pkoYUs`dwQDAE3S_wC|EcM4k8?<6T4HNa` jgxaSRV6c!iaCU$n8l-n2a-1o<00000NkvXXu0mjf(WTp` literal 0 HcmV?d00001 diff --git a/release/font-awesome/ok.png b/release/font-awesome/ok.png new file mode 100755 index 0000000000000000000000000000000000000000..9c5619598626c48245b8c505427b9310907e2bfa GIT binary patch literal 350 zcmV-k0iphhP)|Y+5%^Qtvuip&KJH!O@SEhJOYVY0u!eHxdJ%}6I>#Yk}$)i0{Fb!-~9xx w5x_YUh+t#M=}g>CXjw}&x5k!CBr*zo0R{X{A-AJ{`v3p{07*qoM6N<$g2o_=G`P)gb$(fb3GTC(&F#jAOIjC6OQVO zfy&$=0HB&Z=`pyGG2pk^6#{@(+Lf*(#yX8MIK;|mq#J2pvSFJv8~`xkjx!F_YQIj1 zSOLHilOX`Olx`(DJ_wG`IZN;}Bzg{@0O1zFgq;il0Ew`Xj$=DZy|XtEI{}by8;LpN z0%7|=oXj9dU=GCd!xbXliYp~d$Fx?PZ9wrJ;RcbO1t|pEE|WC2d=cy)f*7@|yG}z7 z2qrfDFr2-SJC3J9m`g+Xv-bi1@n0Z@ZbWN`7y_8;1jlyMHx6R}h9ExlK@la1S4XRM zcGv6$W-LGsqSgCjm=|siSVxuqh|dnTZJP@ue3h6B9OYbQ+yPQ2cyB@$ZcJ7+@58pe7d z*+s>EqjIiz2DKIktW&B5gvtqk+KlUenmrsClPCMl#sPi+q6D8IlS77<00000NkvXX Hu0mjf7L)Eu literal 0 HcmV?d00001 diff --git a/release/font-awesome/paste.png b/release/font-awesome/paste.png new file mode 100755 index 0000000000000000000000000000000000000000..3996b2caae97f479cb9594c74f0506ecc1a8645e GIT binary patch literal 402 zcmV;D0d4+?P)#U`MjFW3|YyjIp zfD8PlZ2;VS*3R-~Ys?MX0MM%Ds}EiR-vpZ7-vJ&VoIu!;;)vOXOv?Q8z4t=E{O=y1po^mLUaWnLUajW zg@^&b_S}gl&#z(|1Arf-htYyAmRk$}Cd?|4l8@^u#RAY)fbDsvQ4i2ppsxTcz)z-m zfzVordawJQBhXJ9^5o(l3=a=&(2;llRspo6roO-fZ##bn;1x@{6Z*UmkK%oO68bpQ wHch^CUU9hzn+)!g3&i{hZQ^g*KJid|0rH7<)30bl@&Et;07*qoM6N<$f_c-a)c^nh literal 0 HcmV?d00001 diff --git a/release/font-awesome/pause.png b/release/font-awesome/pause.png new file mode 100755 index 0000000000000000000000000000000000000000..0ccae0ad501f27c9825a76515e0f6ba384acbcdd GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJT2B|pkO=qW6p4fb76-l=H^@w2 zIP%fO;t6wruaZD>MvBA4x(UqxgcB`&JQXJxGWy!O{_-q!P`>bqjZ3CsVf_`x#fk<} zOxOr#J(i41hMEjzCQKbKWNjH%F|KrdKPzxaeL#s{=Leg&Qy3W9o|P!Z2z?d=I)uT~ L)z4*}Q$iB}NIo~K literal 0 HcmV?d00001 diff --git a/release/font-awesome/pencil.png b/release/font-awesome/pencil.png new file mode 100755 index 0000000000000000000000000000000000000000..97fe8dbb4bd0e58805fcada4585a3e2612d66da6 GIT binary patch literal 435 zcmV;k0ZjghP)DrGBD*tO+hsU{1hq>JtX9=y&HyL8 zerqJQH1DHJ1~mMI7lZ&>N#c{n-*Yumn*k3lYv&|PIBu#DsDgif!xOg4jMURN|jt)aMnSjBgec4Z~O3g zC%9w)dlf*O?T8v}Um?*ME&>;ZrtfQHr6dso*8+I211imu2!m?@yh!jk0NAkwBz_X9 zP`DNl&W0}5{0Abk6T;z^03HK6qF=DcUEr2LlJWn`yTL^O(OM04arGHhnBP3)eGfD* d*m}d@0)LvQXd&^c5nBKN002ovPDHLkV1ja2wBG;# literal 0 HcmV?d00001 diff --git a/release/font-awesome/phone-sign.png b/release/font-awesome/phone-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..9275df51d05fc463fc5b071a2046358572043eaa GIT binary patch literal 548 zcmV+<0^9wGP)efLVXr z?~e2rZqF?uD;fY)7WQ3=_Lk7_$z*cO0qjG*zXg9}AI*ZHz!8R2nf;xyXb_0(h4QGxk=fg58p1NdS#brpR{v zPywW?B>}`DfH-U5tgEt(O9G&;Uju#Zf@FXjK~%wP=lVX*oIS&n0T4V11V@&FT!v%- zgnSe@lx{N#wgMmuTp;1mnY$LY0${Q;mCIn(>;~%m-NDgKgzi+@?v1Sh(5@^UH3tx- zO9zmE#oEHGbppTvg8o4X^3oHwu7L7$C1~gIS zi)-iwASD_c*@*k2yEgzJ*q-G6IYn<82lxj(L~kLGeQyB(0000CBKn17(6<8I}fmH!II2E7*rvlf3RRJAX9Z&(kZ{{+Si6om1&;H}hyt%#I zB)=~&dC8m4Cbs#+`ZFJ3Q!vN!M$Yq@{M{PR0qjWVQO>WkD?Kd!3ZRqFVIaorcdes9 z1Wx1+iJ9K(eQOy709Na@Pw5=!!;2LJ0KI%WBY-#%CI-M~!N^-yd!Zx(q~o#xvZ@IH z41OBv{h@b_<@%$U%Yq|)@2aLXqLVv_$oY++pV_+mIu77QFV6#jTm8QnF`25S{!#oI z8NqxR{L3h|8GAu-2AEw+;cbXuxEBB;6-_Lx2ll1%98ofZh!rHQ0PZ3X+!?tVfqvYm zmt&SJRT0Iq0w$ISh%Ny1q1i7BIaxGlxsnW#utsnLB0#}{rLJ>ei3X8NS`L7+Y$>Nq zix~n8K6F+v5z;woIRMuIh}d0`n^^cQd8(EGFc`DE9;4{B)e&$VNl~J)HxeXU z)|E!U*KF4jDFJy>TQ+I(B&`APBf`=k5T2fIdPgebS^EiqKX9WzEDAmZS};TVWz7>geZCJPeVOV07*qoM6N<$fo&%=tTIa2Vg&9<6Zb(c$~7Q016Sf6fS#k95YeL;Z^Jf0EqfC zJeTCZHoF%xGUWpRqmcGxI>$Dpn8`2zsMAgd@4uq6-coN<&db_&fv9MX=Kf0L_E*DdZ8*fT@Jf8Un%=GT8u5MRMc}GNOmVMaaf$$c&1W^5ZT6 zq7?w^9B1qYjPu*miyRyaYnA|wyr*mcL^TZBJf9O0*<%Zsa?spcPA?n4fhZCchTcrn zG!cd=gReE`%(@bN<7Kh{d>MzO{MLGU<=FVzWfRL>766-m8-?FwWN5!3#hn4%icw}7 zQYSPQOT-dqei7L@$HsL7!1`5e5!no|co;dAReLNSdc%|U4(C=^<+4gJ7U}JvQOZ+$ zz?Ptrb8b&h=%G*Zen;MC0YJ}2qRpnpc^_-QCpl+2Af6A406~V_Oaaa0uTnc5^b8T(yCT-0*vu}0&tB|K02q#l)>0*Z#QI|)0JZ^%mJW|m zD)lPcDFf7(9)JpAKHqQzh!0^tW*AF=@ob__0Bm=cVm)=$&hcHpj((7|N!vWxc_8d~ z*RpKF)K*htwgFS!JJ;g6S2zB zsO$~w&k!Y0qSLjLZ8xJx+L-$`G!BjdpCk*Qjq%=OR}SDG@hYGp*D6D?00000NkvXX Hu0mjfwUjAW literal 0 HcmV?d00001 diff --git a/release/font-awesome/pinterest.png b/release/font-awesome/pinterest.png new file mode 100755 index 0000000000000000000000000000000000000000..749d4fc37bef24029287dffa7e3580c125749759 GIT binary patch literal 755 zcmV2iE@U^_lA|Iu{?3=;fEelGtipX8r!6U35$lR`KaQUqlCRfL2Xgmv3K z0UMz_?MC{)5dmj%ge}^ffSZyBVYi5ufZLK^OGFkhNB&!=tX-7*4w45NjOKSz&KEP` z0_MnH3-oR0owhLciU7Vs?3f0`>Az!k6@Oz@_V-Dp~gEsf()$XuM*h( z0zl+nENb2ZAc%XM&M*&27}!^EFDDHRB5J(d5E1L(%X%60Doat1j2qy$xE zV5=`rrGrG2Iej!B-bOYj$Zud)08Qq(A$iTNH6IU@GKwz|i1!Ra+yMVYF$NHuZG7|<-?k$dSwJ#n;zE5wT2w>g8nadU6=|}iaSEn(*C(KtC z0ydh>>4KDdWX&5B0A3wD(3PBs!x-o2Gse~45CA~yw;%w$Ei*UB*K$P0-`LA{ZfvaO zGOh%)Qf2{FhaunkqK(fr{@7S+HX+XdV^6DNcn^S_^5bd%4I#`E^{PS6;~eEtLDd%T zOk`n_(|FvxEFti#LIC7*wwIhkxixy(1?Wo+=oQ#T-usX0B6&*ybCes`5oPAhgNSqa zwW9ALpA!&(YYn*95HR<^vVd;#B>}7t1)a!S-H&A&%w*2KZrk~JoH@zc;A+Mq3Smy# lO_(?K3b--B(!qlZ_zO~1ts&ZMXM_L%002ovPDHLkV1jf)Q$zp& literal 0 HcmV?d00001 diff --git a/release/font-awesome/plane.png b/release/font-awesome/plane.png new file mode 100755 index 0000000000000000000000000000000000000000..eb30e0429437a8fb6da05cf9ae8a806b464f3771 GIT binary patch literal 541 zcmV+&0^SiMiH33m_ zNSPPs8?h@G0g$|O1+>&J)2}V0omQL6dFk}2sg*SdK>2Bg#65&fvir8r5qpt6Cj;)g ze_eJEz-}U~mJgXm>v)G)yVb>F9g%l0)d0Jtg1vFDwr*u>U4Yek$F%#i?`MsVrfo@asYKh}nYV~0u{0fL300000NkvXXu0mjfP5B#;ks{#}Pd?0!(`YKwBKCiQhK7h^EVc9wbz{_U~qA-AEOA4TpRZg>4 z`ZWaLP!zCUi2)3Ct`4&yLI63=zr@o<&-St)JV4Aj4sS$R6m44PrTp%RQj`>@mtF`9 z5Oe-0tIjfVdLcIRKxC2-3cyaD0y{X9F~B$tMZ5b{q2ZeRX)dIS+5 zydTc^q}{a+djQ6PBXUG4bmoEEHtP~Oz?K96a&zy-371_o1fWx}BUN{94WCw8b{PVw zWYBgz!e2PU6o8r%-b+zz5uEwL?(`i78c`dnP{rl|D2S#n1mIJA`#f_x%Gmte4-)PB)Cvn~C|Q_GjCRhmm!xwa0i9gQ!;p{Bm7T``7+)8n zcjrpmxg5+khC*aJPenjEC@6A^l4pBqsSORLHrn~<2-L>UP$~kUd4&OLjMJ2l zaFV`CZ(G0s;H|-Txen6DB|)YDC3n=>z%{+T0hCZI%|;qClU8#8C3L4V^30&H03a9P z1%%3B1t_6(QM~|kQKJAfQELIJMP&hmMP&knM9lzjiJA#86?OG%^H>64FX8JJ02c`z zq{q3fGh+rG8ho(q*-U_!o);LkxmW;LX9T-X%vyl63Wh@}R8atvU=|`TfJ-nYKu9na zKv=L^fNH^_05rk80Cd5u0QmmD=|*CChI-Fm{G3upFzGDq!Q`00000NkvXX Hu0mjfn>cs* literal 0 HcmV?d00001 diff --git a/release/font-awesome/plus-sign.png b/release/font-awesome/plus-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..47b59d6786c1adb7bf6e770babd9bd7935787ae9 GIT binary patch literal 505 zcmV3X$g z>D7{Dca}{ovx(zpZ2@utJ{CO{eG@H3U;F%s6u@2;a8U&XAe7Gv#K8b&mL`Bgyqudo z{TTvqA_`biVgOx(yMSg04WMuERuCb;P{GX*K7b`S6;DAr;WRuZ65W^%2Y}O;WW{9J zjo4fVcHf3|&td~?O&q|T%v>5Abp_x=>^A|hP4f`}aD60N>k;e#&E~@p9Fwj)5L>%x z#j!$qm$|T+6f%bTQY!GY>rlc1-pm7l!?5G6Wh^)Die|Qy!Fy$*)^`|Ki5>*TDs2m( zh1hDR>P*I;d_VsJKuZDDO4W9iD_MA}Eas9b!ySkfA*n%qd5|vv`+~!;8Ib}_=mlGa zy~|_xCBZrJTjHv67mbMBTgCv!ZpFksR8so;CM0KLUPjSl-S#@>3}1MKWVw#%sQf_n zi8l6wq%k;o8S_b&3?2huyb$g3B6dY?3f=_J2f`dY1;9Lwg91V+xbV`#h6Yo5I@li* vx1IiH?g6d5pqi~|EcVC5w0H=k$pL-c zhTk3e|22CSGP33a0Mn56T{_1$rN}Z20P1w&@ctFm^xUC`=&_jISP=le9Y)e9PNn!E00000EDn4#7I@9T zy1@B!;|+$B2jv^yxGC&&=v410J;1g=^us$*Im&KI^ zAqhQ(EaL~c`aRd$7ApenbXH?25DjB*{5dB;vT1vVq8W=rn+n55rb(In4R2Vdh|OPO l(GawI!z=mH0}bsA41E@wiqDp+NdP^~;OXk;vd$@?2>|($XA1xT literal 0 HcmV?d00001 diff --git a/release/font-awesome/print.png b/release/font-awesome/print.png new file mode 100755 index 0000000000000000000000000000000000000000..6226300fa89a3bcbc66b9f2972bfc9df027c7934 GIT binary patch literal 461 zcmV;;0W$uHP)#vZjsU3n!Z0LKNy zjwe#^y5|J2ac$ikYT?E#QjpZhnv?)=L7uh%sTtt>Xu*{Ch)@Xk`utXCHSSZu?qkYoYuQ4B>;#4#J)7QrTV~H5z-iZ zGrS}~|488)E{xi2Rr+8ajI{7evA?%{JZ8!7vIe@a4(WGje`K$ldxoO5%5_g+Rc!3pR0~Z9u?GqiP^O z(zm_z{VS!pNz0XiS^GP87=igc@X{jIOwupR5ik`zKh-Eqtgx6l0@$AXTIPjBMv9pu zfI9J!B3@{o7mF?;M*#6Cu^dDy-J%Zx1f^E=CV;f_r^U^fog|l#gU3~L@x=vDjOZDa c&1?dH0QEyaA%K5?ZU6uP07*qoM6N<$f?^iALI3~& literal 0 HcmV?d00001 diff --git a/release/font-awesome/qrcode.png b/release/font-awesome/qrcode.png new file mode 100755 index 0000000000000000000000000000000000000000..633a2fd2da57b20d00c5ea37fc1a268091330adc GIT binary patch literal 476 zcmV<20VDp2P)ruln5QLKopaaqYbdXR9E&(dQR1ivVD#3I>38n+60QQ?X%{bxYoa_YigPYk&qMW4F z-a}e0X13+b`!68S3SU7YJNY%jjj#>Q!RryZ(vW@YI))mnXlPgrf;$?`%uB zYkfwlppzeAdxEKdYlZJK*G4psqKA2l`sE1|MUX+FOh_k2*K^ER23KvC91e*Xk!SKu2Fm9HW5 Sl6oQl0000ck z-uc;i84lJg!!_d%x)K-};RDlS(^u2R^ktPGN(43?;MjpeAeK)@#FK$owd4p)%*$!D zr@w;`I5dS=QBnl@f_uPf5{f_#_?IDV6vC?_5fjLP-vzby>7_UJOfO8g1)(B|kU$EY zXz6;IEG0B6_m8@g@C1nDSzLZM8+)^2H~k(+1@Yv9Xu0tOZf)mWfRJ|5TPtLOw8!P3 zWLwIKC%~m$abVv$47WzM;CbTo!TpB&sbG|^`6Pt(hX5!2fQ2%)MOdoF*1Y*pu558B z{9T)ky(NJF4fZH55FvZ9b4Yk$42Ns%Q&ZK9>g+rN6VpBukNzN{c;c~6&4||A!7wvb zZ&)N{ZhCW>;a)5>>`m&T*-u=C7Du`gpf4CaYR;dT{XPTEmL$-n1av(>q0qzt$Ni$X z(6CLok!wQbKy@;us4XG0U@3dKXQ&7;FX(bFL|;3o80nl}lF}fG&(nY*fsw6iUyv%_ z;xAchdc_1(3BFaTgl)%cluKq{Y*zI#`Y!@<2;scua~zWBlL5*`fa>YC{uNIOHH`_R zz9XJ=7Cg>?zf>a81Sz2jQ6)w26anld5(&(Oxe7c-U=5@3wP zTa1^0!7I*{E$2;o32;Q>=Z@8d08IJ@U;*Pp!2Im?p4F+9d1gHUSh^o~l)1n0V}sK8JGR)7r$yWf=9WAe%gvh)OCB6h(kvBYHdfQ&4C z(-T%m_XWmvRlV1BUN!g0*xdTA&6}SPo4R|5K So(0MP0000V(%tw5+iI}j_-4%7~`0-ypd0V_~CpaiJ^-ZOh;DbAM*bv0m7V~HlFDi98o#uhQKgRpe4+5H0^ncY1N08`4$y%W^1kpckjJn}-(1Dt z6#%@7!}_Kf-C>d!>Sliy#|Ae6v_xw9@|9cLgRWAWnD4?4X zE$4IEYeh&e0l4wFN(OD_ib^7+w~k>6Kxk|a(76LgM=Wq5S0FRd00000NkvXXu0mjf D$SbO8 literal 0 HcmV?d00001 diff --git a/release/font-awesome/random.png b/release/font-awesome/random.png new file mode 100755 index 0000000000000000000000000000000000000000..001a2dc49d8da68f26e715a6828e85b1cf5d7f4d GIT binary patch literal 577 zcmV-H0>1r;P)cacWv34yt+govIJ`@*q-2jcLJo_}Cmq1f>nBLD|3l>NEv9MG8Hk8foczmijtfM84@*=ru?YPtTEr16|cLk-B0g22x6 z0N_v3%A^)*NLz!3@o@w&XUzld+KmHs<>X_xSCR_QwCaElN%*m{=K&jwxq$Z{r8*_D z(>wr>Z8|gAN?*k6dBA0EGoH%uSWt%OJituIp7O-TdOdp!k%`p4k}+OBwagM=f{YaZAafm(qo8!Y!R+6ReXjDG@uZ&-XE#Iafx P00000NkvXXu0mjfwnqXo literal 0 HcmV?d00001 diff --git a/release/font-awesome/refresh.png b/release/font-awesome/refresh.png new file mode 100755 index 0000000000000000000000000000000000000000..804ac475ec4c97a5cb0ae81370e7c8281a6e19d3 GIT binary patch literal 576 zcmV-G0>Ax+U;@enzyy>HV1r`<*nndKU;@enzy@UkU;^+bC8u2KCN_uEKUlJ= zHm={Zu%mV2z%q_CaH8kVKurw9LV%wDUy5>PcuUBTR_+i)-YEV7=lf{! zS_x?6E#HpBs4E%f1Sq&gh}JUQ#(WbwLyoK!1p=g(3ua#Jq_uX%%AMnbZ9+`~0rrR@ zS)0@0Z}yn)rB3;nfYu6iK*}?WINuP36i?Diq;AlZg@=GCrCy`S3H$(YP-`LW^#{5D O0000aofC3H$fC7pFKmkPobwF_d4vGRm0Yw4e;7|ZKAitSSNprc~z4Avhlj+@l zy_c74uH(^`ZMn}RD~HHnBo4fu~B?G(bRBH;=2fdhCa&Y^glz$fy1Bu-IMoZgBg zEP+1oXE}9Rk<*#1nFq>bNhkp#c?lx8k}-%i;``#!m1BjoNiYIc=zO~ zA4qoyEM&xXJmhc8s#+2cvS(`c0p<(4({~tX#jR9P#g<5TaCk%nG_@<9LkRd{v{Is? zy&Z!H_!OYXflEOST$g$hbD8irfsfSEGOsDZ8t{k&H|5NN$+H&sS_*R4(5s^xsS|P> z-HyI%$oB-SHPgku5s?NON0TJ8Kw5B7VQTA+I%CdeGD+3@Jb%a-0fzg1 zXX+!tX3|8I9M~o%9Lz_IcFwc6EVx%dH}{b!2rwMHj{xKUB~grA>2^L2CXP)>RDN)qsBCPy!nR^=;fbfnQErnj!gt@|*ww N002ovPDHLkV1lDUC#wJe literal 0 HcmV?d00001 diff --git a/release/font-awesome/remove-sign.png b/release/font-awesome/remove-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..e16df0fedfd20efcee2940d7b87ea46e9eabbe33 GIT binary patch literal 519 zcmV+i0{H!jP)n9n92^NICmeE}8#K80PtK41;(eauUg0QOqJsud-G9^Wm9zz{4vasZFWauv?> z{~!U*U<4};4`8Uc2!fK7{sAOwI_{^nH7C+2TpOQ$I5uVKfq zTPMdW=6Q6JAprOATpNBSC!AEYUM1}(k`H-`WsOIuizxnD1cIMNxTmPFR4baK&}X*;!%j? zSnu)}{(zE4er-rq4rxSQVR~Eo1m&d%;I(2cqLXVs1*}#~U9+i0E+dM_Wt6-DeDv2a zUPk}rjlPtm$0<7LaF8Ex)9!5}khTk_{h&Tf> zP>5kcq|Ue@B)|cRdxczsNQs9KE(i(0H1poI6+`62LyVDieG-5IQ{(Oe#8K3VcI1wY zu~iEaUh*@C+lXm!$UH*C7GeUbluCt9=Qh zuhq6&_;8eGSIIDvubTH2ok0DTBai?jo-59&_uPWGBG#-V16sgblhMvlyn$K2q&{Xr z9MIF@;xle>W=9)FyLb8y_%ufLL5@^CfX|AH<9FP~&sA)`g|>i_@%07*qo IM6N<$g5Zja<4NbwncNBNUROK~ zx;T3h&n|4R&Qcd}IKp~WKT_m_$idE+0c$N8l|`;D(ldE5!F>LCDLGcAb@}^i7uvA< zlqB>olwpypXmFIzv01>g=z&;;fUks?;s*x7gS!_TVGeuayq?upLi*45ziLGXT-Yll zkH#IBmN5CF){(*EDkK!Mw)aK7%bSKy1uO2bM)_OqJ{k%C-6{lB-yh)a2~|}*ymD6z P(02@;u6{1-oD!M+cNbTxXe^k?1$Fwx*^hS%Sk zv(bYt2~bJtfuR_KkUy%`-Z;rfo3*S9RdoVj;LngCNRd=3^L z>zjnjl}Zz>fZsvEdXez$c+J$|0)SBgqb=|yaBeF)3qW1Ox1=S!%#0Z1fBj> z&V3SH?EqMXh;7(+3EC&XR%PWeLR6v%(D4_gxKT`@IWwqn2sW>f{Zak* zLBcm73Ng~>xfMD{)&sV%Ja78i9;Gbu?}siO))@B*E-S!cqWAWO}`4Bfv*e=ER^FfHY^ycZk)&Ryoio`R5h%;zFtDm?F@L+m37(8WCDLlElA6=VSZ%UpVLsumEd zQx5`gUBAUjmFYdFsepDS9|3+cC2x{ug1bTK`k0l~&x$W@>L zF|+r9z9BZQvmgW!I*djr=@fdp|IYFI80nXT?=bQ~G(8Oo#AW{C0Xc?FLl;C-0OMQW zVe5dXSAnlmHbh$h<}V?0v8nxH7ZL_ah%PrG_DBUih<|%c0bo2EidsY5MA{B}+Yk0Y zTa(atY|4`e*riq=CyYFMoclmdGgmGNFxIHRH>kKT@U}G91mNXluK~cN$R$bL?gM=f o_CUR%X#kXRKhXgAQ*m{GUyk!g-}}|Nod5s;07*qoM6N<$g1T+Iy8r+H literal 0 HcmV?d00001 diff --git a/release/font-awesome/resize-full.png b/release/font-awesome/resize-full.png new file mode 100755 index 0000000000000000000000000000000000000000..0980e99978b0ebc4fe43de513d88906cc599b32d GIT binary patch literal 407 zcmV;I0cie-P)hZn$6GENL`uH>0*1i)C50`b)Xv623D1OPcL z5TO7G;?&?mIKWQCf4Tx_6Nf9zft>hX>4aXGApmvaMG2s*!yTYW{9FR)>Tul$EaGWB z0)ZpEt{!vJa`6xLj-#f zbPFp0qG^ZYNOgm-0BG?v^0{0bJZu1u&3fCEcud|EXHhY-)Xhvh7A7p?9Cp#p8m{{iv6P$38;cDMil002ovPDHLkV1gC< BtZV=P literal 0 HcmV?d00001 diff --git a/release/font-awesome/resize-horizontal.png b/release/font-awesome/resize-horizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..7af42e1d6161c445f78bf107655309ca47b451bf GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ=bkQ(ArbCxr(WbeWWeKcoA(Bb z8G~Abpai2?Bj+wAX$I*nvkjQaLt}P^g>atCtc!VBx9Y_AqRzS7R{q&K_3vzk4i=?G z4~6Lm*bc93mb-8}GhlAubC$ac*00NC%=p(-c7ff>g0VokdPRGmloNAC@vmtN33nx1 z7$S-zD@wf{%nO=YB+SBC^vrKxcd8o)(}|yJ60>Zpm?oq|AC{fhEW;QaA)S;k{iSz? z;*JBKgE5HJ(v2N9EG$ kuXa4Q5CS>x73Uv@xaYbLVq=&t1HH`P>FVdQ&MBb@0Lb=m&;S4c literal 0 HcmV?d00001 diff --git a/release/font-awesome/resize-small.png b/release/font-awesome/resize-small.png new file mode 100755 index 0000000000000000000000000000000000000000..f1ef565167f0cd63472c124bf2fb3afaf3ecb4c7 GIT binary patch literal 429 zcmV;e0aE^nP)5EbIhx7XPotX%R+IG{BD zesa#E;w2r>5Lx1u03R5f>mk{!rodmAQ3xvlS(ti@-oRJ_2*hK|g0=t;7_>%A5|g|S zY|VdNGyu2F4ncuf%U)!uRj2`0=&(+8!uKBpVLP|b6l^dmuh3XC1)y*W!W@7QHR7qk z26KQx9Y~4O6f*}x;=EWY#H%+QCIC(1+-`jF_}_~Iq{O9o$=l+OMPjRFedamviCC)a z*nQ6Tp#KKU5^72!04w?O60#o?os?Z?ISB=#S8+19ibxC`39BO+V=Zu||GdREn XBS%*ulN9nl00000NkvXXu0mjfhDx-s literal 0 HcmV?d00001 diff --git a/release/font-awesome/resize-vertical.png b/release/font-awesome/resize-vertical.png new file mode 100755 index 0000000000000000000000000000000000000000..61c74e607e7c994ae947e618d3a9588279b00357 GIT binary patch literal 307 zcmV-30nGl1P)_c9XZw zz#dbYzEa(()>N+!-OtmFu>&_Bwch}-$b!%Sx;gWuK}dkE=BW@2;5AQ!V1NsCSO!nj ziFC)H)|D~9mXs)r3DsDwe27E1Yj20Uc|>5{0{pszT8vw8i){F+O|&Oxm!ld&8SLuUoT>0G$sHt+=cVe$#0 z_vV1Jo@N$AN^=VUb9g05h_vQi01ScG(vxb{=YOux#2ZBMP9fK}GpPUo002ovPDHLk FV1lp5fp`D_ literal 0 HcmV?d00001 diff --git a/release/font-awesome/retweet.png b/release/font-awesome/retweet.png new file mode 100755 index 0000000000000000000000000000000000000000..fdca0812eab1188fa83f508005d7aad25543c91a GIT binary patch literal 465 zcmV;?0WSWDP)~k`m?1)Wwgkv&-q&qPx(uX3)JtX*tVtmIqZCi6Br&o?aLGNc4?DulHNRK~!a^v4BGDdnaZ%mC2c`Bpz+^$5Qpv(%fB=L6 ziZa{6tOdDK;LFTYk}m*Y>~X4G+w^n&aS;A&1;O#&keW;fW?}e77vN*HHG=R|B&TaY z#7c7JSs-7ER9A=-6rV>8RCLV(c~-PjH=_K0G;TD=Dc3BJG#HCqCpTk~x{F7@{|!RE z(FSHg5(*;bA=MWvuWafyUAKlLc8-FjEgk}7n|?GO0)!`JTaeyq0lX3vE(q=4IZZ$1 zS5}%k2PH>AL2MUflah_4p39d%-yuNKe$>`XV>fU7oM@_=O%%a5?MLb9z0x9vP^5;A zuY<9YRyr>enn0LDa&|RTL5bRk%R3DB*uEtjziUQCatZefCZb=DPiHO}00000NkvXX Hu0mjfGnm4i literal 0 HcmV?d00001 diff --git a/release/font-awesome/road.png b/release/font-awesome/road.png new file mode 100755 index 0000000000000000000000000000000000000000..df1a896cbcc4ee37091c71ea96cbada207e77292 GIT binary patch literal 497 zcmV|nDP18{^%Uxkwr1)z&OTb)}k19z}_C;*&eY@3XK z;{T~(|APMOe9QwVIixS9mJb`VMIn|Nw?XXP3@l+`iO-2+4*wHlDFZFsSmKiibeOgk zUQP;hT>U_d7Jw%{#(2ZSETyf%%e|AHffy|SPkd7V24b`TJn>Bd;M`t}8bDNhyk429 zv_w#a29_MI4WfQa~< zQ&u&+NCBezR~5lAUZ((2@rh3sBP=%ZrWGz0$4&rh#3#;<4S)^$!w>?n!lb9l+*+5| zD1dha_dcaLp9R1gQL7Er^@$U!l(Le-{kMP{jCmiV-tSld?Mo<5M**-@s@VdnpQlDU n1y#PhlB`mf_2vhFy=UMT6TDCx;|Lai00000NkvXXu0mjfIg-{< literal 0 HcmV?d00001 diff --git a/release/font-awesome/rss.png b/release/font-awesome/rss.png new file mode 100755 index 0000000000000000000000000000000000000000..37715ab2b724020a5fca5293f4a45795868b2ce5 GIT binary patch literal 597 zcmV-b0;>IqP)W

7Y?zotuzO6N{6|72Lw!R)!su10C{pshi*@t=dup?qV*X>(9Ss4 zMuz}!)2wq9uuz;4u?waWjHkpE^SAN^wQHNmk0QgZ+xFmjxLkJ9JrS?Vf^ZCM&bO(L3TeQtWBL>vj7lH>-o(6?n+ehZY&^ z?V1yNj3#vuA87G>N)-n4swfj8G<^8x$shZjf%k2Jk&(SH?}Gvs){wl#@>R zyYs!fRHA;#~%SOkuKfwRGy6nc$I!z2Lb@&E31RSu93}y^vhuTSAidA2szG` z^sd8sr~72-h3Y-Jiw_-dT{0wfZ-EE_aCn#2QeH`$tlabPnNI+J0y72`H9?#kfZ$ZY z3{e7r>X;!)0hl350>luFZcO73t2BUz_;i8&hkoEl1t5!ckj1smpSlJQ?3fd7q|efq zunKJel?=9VsSMXM*>p`lbOm$EQ5&}b5UZ8~ViEeCs)Q3%?3WB+37ldx09;-L7J9*c zl}mZo-nMaHJVzv{0&_XMTWTC< zU}*%X`KjnxP=AZ0)jqhBCnYJ8oD9^0c;z^b9pU_3bXvlokHAELZbd5veAWmLA_qi% z9IQd$B$q^r0N3qFqyCU5WL`uYQLbSqV6e}1+|~^UWM#r5K)rDe37nGwt1Uf1IZW8M znZOz(=oQXy1$GhV?^lmN=p>E=XLaC|DBB2qChvQqm!eJ5vu=0<0NfO%=93`+XTOrQ zSB-wxAvk9O0iv?nVN6sAnV{}(Lm&Yngg+GntOrpW)szdo4gu=5=0svkx%Gs2cpE&( zeOa7^8)N{+L((yH3;?F~ebVWRKS7`s$~0X{;;WcCXIHQ<1D*Lm1}aqyX~=s;;4tK9 zoZJ~dQQN5o75-lU!)?NtF~&3#Bew3XsK1E~BODp*9d8bh5t!1P0EDc`5Z?mMAVe7N zGXprs^|f=!I8xt&Ml6{5t&-r0*t!9-&d4 literal 0 HcmV?d00001 diff --git a/release/font-awesome/search.png b/release/font-awesome/search.png new file mode 100755 index 0000000000000000000000000000000000000000..b544ca810bfcbe23a817be1dda595c15df2722c2 GIT binary patch literal 627 zcmV-(0*w8MP)f5jYVb0xJU|up&SNRs@K^W`GRzr)ICF+DuRHU7hQyu6@i* z_uqd%_HH^^vrO0Qf8qtODL{8c>!6)n-$dU<`(=W#0O0gW^jNeqoP5dJqv)k5_oE~S zfJpBOjk*4qRl z#Z&;G3ejs{6cR?g0vkBgOdQI)E@uP)soX=oPKO6bEt{UzMza>B{Zp9n-LLq=J!+b3M9?sf??WG0M*_EdT)^?WtRd zsL6Tmn^8<-3;-jqMzlDmV_H!r8_rAPy7)cO{h3OIBLn6Z6GUo25FJs*({W`WauW(_ z0Ws$18U4-~Wwt(Q6)OFzuwZy#(Ly N002ovPDHLkV1gr74{rbf literal 0 HcmV?d00001 diff --git a/release/font-awesome/share-alt.png b/release/font-awesome/share-alt.png new file mode 100755 index 0000000000000000000000000000000000000000..ae75f8e04d0fda8b76314ea88d55f0e40c2f78c2 GIT binary patch literal 461 zcmV;;0W$uHP)anH(M1CKdP%)||uN;CH$8YY6B7y$#?V*UOZM+5*TN-o!>l1A|$XW4kw~V1~AzyI}q{-V4ftQ z1SlJ<8w23e1tIW90f8h52$1!w`^ES{^w|LcNCqJ=K0D5a=UtCjEzf8uW+foN0%b?` zJn%3;BYzya;DDCM8VLxHE!o_O0usu({K58=f+i~gfiGuqEWaEbUs`$DFG)4yb1Um4 zHt`7@$UA^4b9vCM8JokE1e~P^a18IqMs@LiY;~*x+81MUSnD&30L}KEL4K2UNa}I* z&Fe_tm`!dGAi!gU072NhWr85WDhI3pEjRK(B^%GNeY5B(p z%*9xzU?~B%g0CzRPT3Wg7y+2;QMA4hU5eqy=uH5CR+JA>X$1xo;F7`R^4AH_9NVH+ zsb{Wv=!w4KALlJ`Hm`H^03eLcv5y<1Y2@S_fj}jy-O9A%vOraah@buH@?iyp0HSQw zrX7G@d%k=%>80pxS_v>}*^09Pz`pB?yiiTXaTFW}C7{lgJfMCSeK`SY-4o0>A%VVN ggYEwb{CNew0h`TrDeO5QLKofC@+lKm~*fpaVh$&;g+WpaMb%bU^5U4mc_RDuDT-b99P)H}b_7|H0Dg z63e?YJG*|2M}^0@F#hPD018ZGmyuFDYpxo)L=XVvFaq?hxszQGm zdo4)-?BCJ^mLhOE5D8lXa35sXB?-&~{#25{MBpDK34r}A+Z%uc7aa=Q_rSJ|7|wkX z3FkjCvDI)7lDXF0b|^qMGYB3)_*S)9@f?AvB7_5p3nVaKXJ8S`0!LsX|ImnMP3g7; z?o)z`TIRmkpRuxZDZsmc?D^&zys*}f5rVoBp5EUMK^Z@?sBK)spFPl<2 z1?cwXg>;bE2iD&a*u0X-Vv*1g*5468vhx~{Q|&m`$sL5Ozav2HW-@BY^;{)n&r<8} g2qfaAFE38u4}H5$A!>^J^#A|>07*qoM6N<$g19lhkN^Mx literal 0 HcmV?d00001 diff --git a/release/font-awesome/sign-blank.png b/release/font-awesome/sign-blank.png new file mode 100755 index 0000000000000000000000000000000000000000..88ed37cafce51088213d1b9d1b19b438fecdef1a GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJH=ZtzArbD$DG~_>EDn4#USRFO z@M1xQ0^fqB!*&d3cQ72`Zv4Th_c?(tfI({o`y&>uh@P_@Yzq>U%{V78JM7!Xzce$& z{zimzM#q91j70~SGB#YkR5an{f)xii5`hXnF7eO4z3>?~Q)a-e2IdLO|1O^_nqb=M zV3VjI%iz_)yO>XcxACF?5^+(nVXLFldNW0hC$fz{7^*}h7+B9;UKsgJFr%Gmo0;N? zyebnP!zTF@!!^lFT&w{h7Z#P)2;LH4o!QSgVRzaBKCTtsY(+dA!CZ0OV literal 0 HcmV?d00001 diff --git a/release/font-awesome/signal.png b/release/font-awesome/signal.png new file mode 100755 index 0000000000000000000000000000000000000000..2daea72dabb1775a577b7b1d8281e3d6647d108e GIT binary patch literal 289 zcmV++0p9+JP)l|1Ui5YC;=+L9Y6`B0+J4(1E>IY8EM7{>2xyw$pfCb7we?` zymyk^ZZ-V08`f{V0m^V-jxv6FN_oUP#*b8HEdWKn5o^S+v*0z-M}(Mp=G~`h0rtop zBhHA4vlz#G&k!#^asz$i$U|-_04Mt(LMG6;C1POQTe*ov08%07#KC+$U3l36yFiK) z%w;(ih%8S~)PYn8_6d84P5e*>0(_alP#yW6wd@5FG){;Bv27%QX`QGXfFP0+wE##E zwE?x($ZlN4WJPI&H2G48hnPbp*=W|X> zJPM%sa%-WRs}ZjZKr3#yW~rA^ia5)+G1iUT9a7{rOc7^qZ4o`hpRd+ES&%K zvVB7F{DJiJ^-RaF`4ptM_>=(<(|7~?ZwGG3 Wsd6DmuWy{A-Jo;>m;grT2JoKblU&z6`=ZGF6HAt3 z{PBLi^T*N5?wp!C>(3^Dm<3w6PM6dD+B?!qP3gk9VJC9NdP#;3_$={{R!WX7G>Ah2QWhrKqjCM zcOw9pAbbG&kJhlJ&;l~P$Q?O=9pzeuU z07;0N00QykTeUX8zq_U;0L8hl{yb*20HWe_MU7*a6wd*$eTkfVALJp6omf@81fb*^ zNL|HQaRIov>-Gg@_|^{vC=wR{-sLpo9=R`34Elr?C>9rh79VowGZ2A%jpj0E&)OpnMJfkP5+E0 a3)}#bD{&!>EL}SQ0000^ z`*y##e>0tIn5G-{KS>3!Ex@PZ;|}1ZzF(zWDiy%Fj9(iL&Ll6qAW{M3GJI(mCj#iX zXaq1u;Lk-MQ)w@Z@;;IL!PNp%N{s+^0Rhj%3?=AJT#1YN>GeMdKrkLh<4_+F4jdW z03U`y!~g(DF82NrQKZk7Z7+aus}um4oLh@)wF^8E7yB>ArbD$DG~_>EDn4#?y*WR zVR3UtAsiGZFdX?PV&)^q@Kt?MGTRBp|0geYxb`atykS_GcF-xoZl%=4EBY;MDkqN} z5K`2TI#J4Ub6Rsu_Z;pMg)FYq7F#nMQ9mju65V%}@rYHE*0je(42tdnXNzk14m{;p z73Ft=@kQT)T~Ci#Ff2L7*umRS!E|!w91h;aQ!h5OGcYt?6;+g)Fl#Z;wG5uFelF{r G5}E+v08Qus literal 0 HcmV?d00001 diff --git a/release/font-awesome/sort-up.png b/release/font-awesome/sort-up.png new file mode 100755 index 0000000000000000000000000000000000000000..8e8c8a74d033d327fc8454747a234eeec0d2c18c GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ1)eUBArbCxr#$3rP!Mn{ZA!~( zc3Z)FYsIZ4f>KKbcQLbaUe@zh`N8rs{JR{#O}3Q$?HT!XiUt8o``(2u4qJD?$>v{SU0`lnyefen{dJv$(rR zv-XiK?~SF-5edsq-(L4bCazopr09oTo`Tzg` literal 0 HcmV?d00001 diff --git a/release/font-awesome/sort.png b/release/font-awesome/sort.png new file mode 100755 index 0000000000000000000000000000000000000000..3882b50143279f94b3c1d65e6897ed634f451e7e GIT binary patch literal 308 zcmV-40n7f0P)i7Pwgg0`IxeSg-hA5=`185V%O7+gZkQ&ZEwe>xAlr+6{k!Ra5}i@TfgI zZ~aT=RWBtf@G-*O_UdcMXhir~K_2yBwBl+wY^{%x3GNGEt~m}fJS0#mL4n5vauPIn zN+2ddh35o(2|Bz)0Bd#lRVpFI&$Dc_H4L6ia@;>(1y3t3y#fG7p< z+u`I**006_Fw+{J%4aM3B>JhwiSj(*=t0)zV*p6i80Tkd9B|LZ(T{uwEL;fE$is;! znduc<0wTUioB%+`0wC|yDf`jbImf?64@I+?@dCIOV-V0Q0RSyJ>pNrt5S?u^Qru`% zUI6T;ELqU0E&wqpriMiDC>ql51>oLS+J<$fFT0=ArH)5dLtORj|@j#8NmmJ~Z?^<6N-)kU9y&x8US#B(M^p9zpm8)$d$F| c_niay1H^|}A@&hQH2?qr07*qoM6N<$g7Nq2WdHyG literal 0 HcmV?d00001 diff --git a/release/font-awesome/star-empty.png b/release/font-awesome/star-empty.png new file mode 100755 index 0000000000000000000000000000000000000000..160505156a9826b5800e0fdd8d613dac05b807cb GIT binary patch literal 630 zcmV-+0*U>JP)SZX?C+T~=i(ao^X*`hKOCqpa>0@SAOQ4bMaRNTklX;cY5U}VCaH_#p z6?$a`Ecy@GuO;9kJ@0Esbj^T|{!)NL>7H~V-Tw;$K6=RPNFNd~1R&B$x?~`aew>g1 zt@9wk*(?IE>6Wq|8Hs0L}qoKMjmA1aiSC zYx3?l)H};UZZp*j)Ve0*9&Hf>aAxIHVv7Om8fmHA&h+gt5htKX?(}iQ0thg;b*pb2 z<7IliWs&SKK1dj3k$1E0u`}RF@PU$A>XLB*S*fz6KfpZ!#=k)#1kVYqnnWx3JOZmC zu@HEPz_KLR$}8#IJ$GkgHjEmPKNDSUyGDNbS9q0DmSHoB2v924T)6M2Is3w#en1AO zqK!72MKjRl&hW$`5SDY~cr4=!DP0h!iwb-HmKL{O(Gh`(oNw@t@jl*q9yTu!X@ zV(tB0FRvr!5doZUCIGU581Nu-3IV|Ez!`bkI%lFN5rNNSMH&$f7WHjHW|;enr_r2@ z0D3BI-M$imp^U8ph{^-wbSx!GWR&J)%Ves-K-yXfB?370Hzba8V24*E!iTUDN(6|I z3P7Hvq;!%a7UtNp-u^MdN{BLm6HaimAh2IXDPm71!*1B6!Bp^QH~A;<1$QTqAsHf( QK>z>%07*qoM6N<$f~<8HG5`Po literal 0 HcmV?d00001 diff --git a/release/font-awesome/star-half.png b/release/font-awesome/star-half.png new file mode 100755 index 0000000000000000000000000000000000000000..c226fd7146c71468d29724cba4c1d77a4deb910b GIT binary patch literal 327 zcmV-N0l5B&P)kYy%420^s2G;dY_aKEtvaPF~(CKYh*O#poNCIG(s zp8(8AW!beG+#h;9FLnly96~Ek4A%gN4KaWxsZ0}ML(5_STgra61b{XNLaYMLd@h7I zKyD>e0CFJI0LDV70*rxB2dIhS5@}C$fK*qg1K`=ex2(XG#MhPpEs4)90bYss!;#jp zO+_R0Ssv>E96ktRi;71GV5kE`g&lba!0&)N-Mo`>+%H+I0uVjXY>Mj~Nx=Oz6Jz=V Zya7HLIwAE9fO`M{002ovPDHLkV1hj;df)&6 literal 0 HcmV?d00001 diff --git a/release/font-awesome/star.png b/release/font-awesome/star.png new file mode 100755 index 0000000000000000000000000000000000000000..cd38ba3f9d333c1c8203209b223604f0f66a1bab GIT binary patch literal 483 zcmV<90UZ8`P)>Y5jYtTfs+9dxDbfI$v_6~G9Usg10tXwwXM$B?lC>P_sdjG?M&@- zzfbpkPMUa`is_Tox44U@nFNjZ#O|d7I12jsGK&H%#P+-szK}2dP>BF&^eWg&V?U%G z%)ol|s(U7lhX_Pz2GZzNb199JO#t*ouetyLQdCMZU`1b*g%SWS`fwIJfNk-5AeG3e z^FQR4gNen+RJ=>2?-l@Xj?m$n7;ONCD6Kf5>Zu9bN*x2hQMxsRQh|?q89QS<05t9j zjBAH7HPbF5-$(JLAbyBz1~j6vA%2Oc0QAR#=oRk+7z4r-w*ZEOaK$}^cDPr_Q6|J<=|0DLE5cX`K#+Cnfs;3VUvU6kkj3&`QvFB~uq4+l)c zLjiN)VSuIZ5WrfvJ76o^6`%=s18Bot08F?!;E>uY(^<_rVK1owuw@2#OY)ITx4sK- z3J(%tb^`f2Zb*bV00+PzTmTHh4WLE10yGGBz!o9|u!aZ&EFnSxbBJ)j6j1~)M(hS$ xWtVg6`}j3$Wpv~{fR2eZ?7HFCtY{Sn`~b{8Zy`HPhtmK6002ovPDHLkV1iD}bz1-c literal 0 HcmV?d00001 diff --git a/release/font-awesome/step-forward.png b/release/font-awesome/step-forward.png new file mode 100755 index 0000000000000000000000000000000000000000..8203a597eec63fbdcea395bc453a0d88fb942431 GIT binary patch literal 296 zcmV+@0oVSCP)fCga(kRnV0 z5`;Nm4&efrLbw6O5UzkBggc;*2m$1Xt;J3#-9@=$o>14)Td@?taUE(M33wuW6$N-8 zxQUtqhI0jke1s{SKQ8XeFc0U{y8`;*u7II%H^5l93t%eT955Gd3Xp`G0i@w308Myt uz|yPPB|8y$L?1QBX&U<%m(wNiVm%)eBZ47a6y7}m00008l2FC=H34jgC1~38qhhiy&q-lGVDj_Uc zZ4<}-ah&hYXA{eO;`lQkz`4L2N-ODo0$8c>GwF-;Y7FoIFsDbJ!vnq7K>+L?y|I-8 z%5$&);4`wC3@n0iGIJ7)z3Y2xaC9w90XWuNxHACVMS`tWM?Qcj=bW9QF}cy;uAA6* z&(Q$H&OMdgQWI7W{{X@aP%B*LMtbX>$vX9GVBI6wRFr3F5kzbCJ0^go0$)l$ToF?z zJJJWK&oMvnjR}BjOX@A4U#M^eobgM>1OSy^yFk2C3xFUa98XjLP)T7pxP6&24907H z!vn8Ul&izbK2V76uD)gF@QU-Qxo$4kBz|R5%Rb>zup<%WsH6BSW>jJ>CfD>pH zCB4?&3cb?>v9rF=%Ktu^E&#BvrAEKD9v}p_pf=w1xW4VX0>GAF)B$uH5*1w$CIwWq z@B6zRl7VnNy9NwrOwcA3AUED8136!V<|ha61?C@!AuUY8od5s;07*qoM6N<$f(sl4 A2mk;8 literal 0 HcmV?d00001 diff --git a/release/font-awesome/stop.png b/release/font-awesome/stop.png new file mode 100755 index 0000000000000000000000000000000000000000..e96b5839b6980549709bffe4f22fbb1fbb827065 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJd`}n0kO=qW6p4fb76-l=H^@w2 zIP$Ti-~{^u*-i(ZMGqOCH2g2wAd}{*IKePcLG}X2mOY7A7#AxVNHJj}l&x4cl=*Nq xI0`wm-@C}XKvrS5!LGED4bt01neSP%F=U>$Qmp@bN(g8*gQu&X%Q~loCIAG-G&2AI literal 0 HcmV?d00001 diff --git a/release/font-awesome/strikethrough.png b/release/font-awesome/strikethrough.png new file mode 100755 index 0000000000000000000000000000000000000000..4abb3146eec9b1733fc0cb7986076c8a1cbd2e3a GIT binary patch literal 553 zcmV+^0@nSBP)7q+<*D_(myAwJZgg-J7uQvR&x<+B2)QzTLU+ zkUSczK%)ScK@f{Dt|X>OG1K32pqawj9_ZQX@URqCe3Ri{Bq5zmL-rZv!e=E^V@g1v zpN;^v-qGQcm?aT%?{#FN&W-StQIcMw76FokO&AA*AabJ!q>9ZVKn?i~bF6i$6qUy! zKw@UddXQ@@k;I?QxkwhCB$pTU;_Nl?C(g(eXen4I18MU6SWlZ1U3q09xj4} zejKkph2%n(OMpPuX(&{OKJa@;uX-f}P~lXt4kRo2d^t9pA$d-YDIq{iPDoeo+SLyv zdkG{rRVyXnlOk~|pbAFfN~qoQx4Xxu*DM08kOT$sxxXtglCygPt5m!37J)DcWSAu# r9WLJ_qBMZtugFRW6a~(8o}Iuy^le)|U=7PS00000NkvXXu0mjf>)Y@R literal 0 HcmV?d00001 diff --git a/release/font-awesome/suitcase.png b/release/font-awesome/suitcase.png new file mode 100755 index 0000000000000000000000000000000000000000..75fb894ecf3f077eec7937c571553d095b9b9e0e GIT binary patch literal 348 zcmV-i0i*tjP)g>8;2Kn8I$(8``o{jY7K=)4= z0ipxZf#^VVAUY5osH7azPi0@nal_*{N1C;tFMv`Nr8OW}_p9&$&|O^gi%B7FWN1}6 u&2oH<(DnGT-1e5jt~aAGAbK@|1AG8^?P0-K4}quv0000PXc+p*1eTz?h;R047>KP?RCL-}9iTw4Rcjr^f-;WYhPKaS;GTL6vxXhZ;% zx|Kgh0N*1Qr`)@|?gIEq*Cqi~bvne$T|3l`ljNoq!{bGWF#%lY;j7aPNJD{p`O=Ab z3k9BZg;$o*cF1l5IMV}?SQeA_0g#IU{M`h=>i})GmH>jqHH8ZvPlzEFeYX-bEXJ4| zaNa3$+XS#usm3W6<) z?|$DQb&T0h8G_0iL~J0~r`#GueEC(77&6QaqCqkQ7_(s7jEZ(3cOZfNoE!T9*!n>7 zti+dcb}>sn5DfW5^N9La4DZ(=$;P3y3WZ_k7>3%;!v}BtF##Q5N*dj6(gJ()*R14M dXLC;-_yKG>pCJvfS;+tZ002ovPDHLkV1ir~xLyDN literal 0 HcmV?d00001 diff --git a/release/font-awesome/tablet.png b/release/font-awesome/tablet.png new file mode 100755 index 0000000000000000000000000000000000000000..5a5b5cf130ba6f33d99fe33c338007045fb87f3f GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ51uZLArbCx!w>QvG7!jCZ{XFC zE@4h!QCr~S;GUu0Aozl2Te zr-8}I&%x5^g79A550}m?XppkVo@H}Kt~~p!4p+iut_p^7-_H%ZkL+X;J0Q2?=(&Xr z+b5JOvlOr#&3_^-C7i%FgZWv5C75#PV&)NC+1c?vmLbjS*`Xy4LfTeGes?qQ?d@_t z)4wl>`@sX}gcaPg{wO`Oizopr024=eD*ylh literal 0 HcmV?d00001 diff --git a/release/font-awesome/tag.png b/release/font-awesome/tag.png new file mode 100755 index 0000000000000000000000000000000000000000..5bcebec3887be42649a32cef2209bd88e5f02f5f GIT binary patch literal 397 zcmV;80doF{P)5C&k_zzvKOs1v9Y=mzRWZlF$}Zh#Z08?b?Hp!X-OL8RP+HZ*An;c;KfwOpR{ z-145|XCAO2$eO{FbiJT{jEM%|AP8QKd8d;tbsRf40N#eTyy%%l3`7X!5dLSBY8F_82Vluz>2cey zb)tfaS*-_BBarN)`UvU;NovGj0n}6xr9xbqcGXZx78`-z``m5UKVPA(CX9s$28Vv-hhOT!7SmS=5>mBd`yKz_{nc+Re00000NkvXXu0mjfg7}`; literal 0 HcmV?d00001 diff --git a/release/font-awesome/tags.png b/release/font-awesome/tags.png new file mode 100755 index 0000000000000000000000000000000000000000..6c2528a4733b70425bca74134d20b524f0569fd1 GIT binary patch literal 468 zcmV;_0W1EAP)l0_#!_( z%d(`u>wpR06N0HgKnXX=(UXb!1Gn?(fcCA6O<5E;eu-@pG)Wq^g;#` zk~RXHg%IE7-hUmx(7X|lnRs9!X4ht#dI(~V(K_kSM8!b*Ag-JpJ_e4e2uK%#LDxE4 zr>j2$KFtORK``*%4F{VA(svvTI7T_Wuz}tgAlM}tWGFE8`We?hbxQ(Cy`nz2Xb?gi zp_*)BcV6WB5`r1;w$$p*JZ6s&f`Rv30m2-t`T?uu4HJk$bn|~{$9Rv%ttV=O@B&=Q z?*4^9x2UNNqU+58b5M8pRaUh?SoCQ2eL(x(2SHnD5S9iFl(Er5`8iP8`fAKlAYK4M zg$mtVkRSlv5rW7$8WVsOA_c?@5Cahd5(N+oVF8H-NP+NyBmtyCCPr%0-4>E4Xnxl0000< KMNUMnLSTY{<-+;^ literal 0 HcmV?d00001 diff --git a/release/font-awesome/tasks.png b/release/font-awesome/tasks.png new file mode 100755 index 0000000000000000000000000000000000000000..3ccc021ccb8e1a2e5cd81a805ae8146cff8dfb9e GIT binary patch literal 312 zcmV-80muG{P)y?0AhQhR8wEkMOZn2E3T+-C8~)B21P*x^8J8D z!H_D5K!wW#DkKa6pc(q)WWz?FrUoiFfb4>3z#TvZ&!ZXv%7&mgm8ZJN#2NSzV_=Qraho$d*C9_T99Xm0c00M_zZUhN**A_cAy%v z3!*{o08kT*lqdi-%fM~IK~WGT5E*yWR<>YJ6hzea6-nleh5!J>88V_KYj8mT0000< KMNUMnLSTZyG;d@8 literal 0 HcmV?d00001 diff --git a/release/font-awesome/text-height.png b/release/font-awesome/text-height.png new file mode 100755 index 0000000000000000000000000000000000000000..6079f8017f4c7f3cc0d276b5f1e2fa63e3961ab1 GIT binary patch literal 494 zcmVuCV*}L6A&hV4JZ?oPC%Fdm;nBZY{?vU;#4S6QBFFw zaenN7{~Y&sIvF^o1Ft`Uz>~64mWIqm*B{E6a=#vQG3TeAjzb(}mG z{w(0!fY-V{bc-KRV4no;v|tesTIu^DB=G6l@TgC2`k)1`rV`o{%Ion|N0mgV04;fl zNVg0LTnca#0WoCTL=VGi!p9(UYzQzfI6!YBdcsgx=CA=O0z@VvgLIX4wW38bnH$GZ|>(-Caw zFnS}9DrzJ!DzLi>thB8;UVStjL`|>t)(Thxw_3&i*5{lje?}m7%>Hiz-pTkXdso2z z7K{XTP61v&&XJi*?-w>Xe@yW5@8%uDY+&JXqYx06WTQ5vv0%{?CC0*=3yZ5XfZ-r% zNn4Zx;1zw;ZHy5}S?Hz(kaVF;nOgrW_YahKP+W5Dift4cAXjZAxk*rq;An0m02Umo k)!3Xpkilbn$lwIN0R}>oVGG80=l}o!07*qoM6N<$f~RWH8UO$Q literal 0 HcmV?d00001 diff --git a/release/font-awesome/text-width.png b/release/font-awesome/text-width.png new file mode 100755 index 0000000000000000000000000000000000000000..0f68da1e202816ff5ea158460c701a3b3aecf5d0 GIT binary patch literal 508 zcmV{0q!DfF{;0*#bw*Q9)Co=ZKWPHwa~s~*-ea3Ld%*9ia)j6tlCC$fJ^0kCf} z4gs+MU}-x78sBSdDDZa_E#SOq%g22{kX!6QI!TK3XT&jkD&@#dl64GZRc0!>-<;7J{X|(P~<>7Yh84JAXAJJFHUgibv*!GfMD9`x(68d>9Jr^ y_BWhX_3wfKlIL&AZQXr#Q%=GTs!<=JcL2Zngm5X0000M zGqAM-=Wm2S2O=vYnFHdEU$Mn_65xW?QMtC~N=|v`kQ#pmYPe0UN-7=~;?UNKEaBRLV)G z1J3?;{yv{gw{vCbUO9e;1QO}QY*9XQ{rF*yp6rwKF+$>dVZ4$6A8twj@%PRDBKsC0 zxP#b|z`+A>q%mvh)Y$Tv;y0vCz^4Y_@>aU5YYVFOb*aE(+tEaJTT!%roBum1I|T^G z>%L$nt42>Hy(G$+u`FcYm`3zqEEFZXGTNPwCUh5p0U(wz0L6n6K>QRT61x$t+dlAb z7#Lb1PGz|{qX`Vmq|YUY-}1R0f&GdW-A(~`=^0S2Vj4zX5`95KCBtq+BVr|EX;CjA zOYQ=!6IRcwC{%U=Sit}kmvuJ$6d^(vd=HJBo1Z1%^CGJC6!;|2KFMm`f<;AD|Hx0} zBdPQ=Vi9gALS92uw+oWT=cw?fB!3J^0u2?g7maB|p{x1x{FZ?u8HH1mJt#u-WMfObjlw{Rf}|% zteot3j_ue^#-lCMc+2~baG(<3+co6RvxGCN*w=b3zKl5DN&evJYJJ~|`L9oFusFcS zULq6d53K%9>tiNsH`2Ej^PRyiaUci6#<`g2CStOcA~FE37Qbe&<_HD{ay38}kHo8A z9ziAiN68W7&UGpyjWvYPr8ri!pVHAGV4zk^*Tl$l0Ysae1W-f`_o;m#iGPqAT zx!##UbYZg)3T!T+ODTF%d>qLD^~B(EMC7R>n34ffd>Ao^7(GP@l?MQ(K4=t)+JX1z0qQo&@B|jM2LkZbq=aC9q%8(IuV5u%0FGrVF4t0-}oj76e9Q zaEQ!s@f5KE2gKOki9v)njW{$5@RGa0kBaDH!(|~|*UJDyE|jsA)(dC z0$)%A3=68;ZQ>U>Rm|1uw;@izAtD(5afI#0?$O7CYjV0V?48&Fq@X=3VY3nM-zN=WgEZ z?SA|J4F?;h;fC!GmIZJi;78(Z@yOVHsrB+LzRz(k7XXG%#D)0O40q|DNZ?HTK2OjA z-~|RS6bWxJ8tGF97{OaNf*wHbnlR^wT>!2maNFgMeSg*SSzLE`254lq3_xoXhyWfS z80p81@ExNt@3~Y-@LK#RF57+rz^{G0(UYGrL^|-c$hDS`1;9fT3zWG}0kPM4u0lTU zXF7ohRAQFKJW94uCZbYu4<^fMp4yB)omk1Ky8we^-+tzD!J>*pud}>Tgidrrtz9tB z5fs!0f|QWMxZ6iM`{;-U#!K-e$|dJ>5W)aPxijztM7$TEm{#*Ugsb4ZN*Q*69014` zVs<-38c0WzeCq*>nV(I$08m(py_o#+;)X_g@ies6N)pr}08lU%Ggk35-f~C}1slQ5 zjmDw?nnNXeTFVkkr&j=Y%`tpNZujaBBR4>H;? zHPBk4u}lO|<^>lOFXTNxFAD%KnFkadQw~65duHX{h5i7o<%l8AG{=(w0000tcJh%XNY51b z6aYp@tyG{I=SW$4u^07(y;h{$%LxM(zcTdvpI*AEwdtHO1PiuO0AyT7 z%*Wh8ssOxJP@4lLE?zuVGl%&P0C9*30il>m+WPVJR+%YNGo*aaL5NY^VKF#xO8yk6Ar zWf_R$@4f>7Y7;M4EM!IKu2zycImcu|#YOPj< zy~)%tfFV3-Ul8vl-qysp`EQHuW`dBn-;?-FkLP2C3=E~0^+j0dHLo*1+|+PTU>Ku- zMCpF31jmGpEU02?VM|u##2B*^+d8{1g9QMm({&lBYcG4<+5!9le5Z;bY#iJN00000 LNkvXXu0mjf41@_( literal 0 HcmV?d00001 diff --git a/release/font-awesome/time.png b/release/font-awesome/time.png new file mode 100755 index 0000000000000000000000000000000000000000..9ff97a1dbae2c15f479055c6e8b8b8d44a86bc1f GIT binary patch literal 619 zcmV-x0+juUP)f5jYW$0Wu(i69FP{B0vTw0%V|H)efzg)pb?Z-OkQT zzy3_mPA6-Y>6-0Nh5|GKd?0!(`YO5*eO|?h8o*{}u)w$VRG~^W~GsV2hm;g0w;)4PZ9v(JvVP} zk&kNX7gd_PUM+T zT8RR%ZYjF0Hn{G<{_F_=xw$u%2$$DLh5*>KQa7#j2!Oe$?s$a1alB_}2mr=xVfXqD z12$CIiv0(GUTVhzWCAqN$JUF03t&?~M0P4E$N}g=OX<>cxuh0)U}zCi8@c*mUyfNS zUQW@GA?+3S&|{eM+#9#G#eKq&|0Ag?Z6jhajU#lYJJ!AM-^sjL4j|f!BN6agG3%%+ z9CIVk%4p;=ssS`Ifu;t87Pkp8A#xp4OdPLTI=HyFsBE6!WDE!0_0bO!7Lz7wg$+|E z*_ca=cFun*MdLOCY4KeCjQJQHY&-|R_^J?9&l9cpQMzg*!p2JxNDvehxkbsdzTeXv z8q7jz@1w)1jh~@X1iW>P0$M7gB^$+eLjgt`$}LxI1wNMD*{B|M1Tlv1}6i18OVV5ilKE)&&>7?_eWQC?bmd_ zH~lp`Yql)24E_$jUqN|2hYq#*<_Mg95+Lp)^yse%aL2m>bgy<4QW4;8@70bk@!Zvn zLW;lxfDRSdE1nqzUaN>jU;*z>213;+SOj{2&kX`qqYxty%f04uhZoBlInV^y?`vpV z;Cvrzo(t9`muLdlSbbXPbig{2m{gFGK&tR8PB-|#Vda)UU`*&W*a2R!Xk8KrtYCfY z^6+s!a5lJv1X}2e%lg~s1h?G8Xd!_PdNJDarvbZx1vy$spohkW4tsq8m4{IZAa}Ax zZD}+ZAj~TX+!k)jH5V)ba^71J(!5;V5UYU=Jh#F-?@Nl*odOLIoAYm(G-%R=S!^UiaD6S7k&iS5o+fOI7DW_3d@ocvoRS(iuxOL!=4xyhjq z4s_+RAW4Lp8bB;m?z;N_fDB_G5~d_8ouDh|q<;VjQqsGO3bl77Ib&2p;5Tr;eEt*I bdIa79IDSPTUkXx000000NkvXXu0mjftcA(I literal 0 HcmV?d00001 diff --git a/release/font-awesome/trash.png b/release/font-awesome/trash.png new file mode 100755 index 0000000000000000000000000000000000000000..6c0cc6df30be9d1c1b7fceb12d16b75676530a92 GIT binary patch literal 436 zcmV;l0ZaagP)r0CItxi!u+`Lg!DZhJ*lIO7UHU@+>+Ial_qDIL10Lbxc~HxX4-8MUgcCt)d$Q&Cbf z)wGin*CHw>4;k|30pLP%9G|yZB5yA!<|ZlDLb<8;PzE zi~vRtj2;+0Ft`UYwXb(;VeUP5GvbTRFYFubmx;(dxjSpcp@+=({r>_eWDSK$9m-%Tb0j$8wiYJshwR{SZ+_RY*}20LV!q29MNLnvN*>(4SG1 el0Hm>1Na6Hps^v+U~Rhq0000IqP)Qa&3<4PM6rx z&-0UPXFA!jOn01rk^|sSATOn}Ot8J|9;IE5y#?UTCC`Z!+RQZpn50+$zO4X>@37EV z{wV+pIX_zg65n6+jTl)B?91vPu%z~spj6)EcolI5*dQ>_N^eTD6!?A0=S1qIk z+mJ^8kn$Y9!GJ$(dc7Y>X%a7;UXFvZ=EjVQjpOO%U4vAQ%Z^$8%9~0&WWcA4v6)K&loX4Bzx*GF0!aaY@|s_=*dNg^5GepO8YS5FCiF?@fwr~; jmVfnks|TtRSOI`7%IrA64900000NkvXXu0mjfqCxm5 literal 0 HcmV?d00001 diff --git a/release/font-awesome/truck.png b/release/font-awesome/truck.png new file mode 100755 index 0000000000000000000000000000000000000000..22a46b680e58fd51fc02b13a6e89a6bf9fcd593c GIT binary patch literal 406 zcmV;H0crk;P)NNckOO{c{ zyZ7$y!MPgsysDo0M}vUe3Oq^6ma?aXT6f45uodD>A#%c8`xcOG!qOG^-vTh)n=%~c zD`mhRD}_7&`IqeHf`;>k@(Ix7AA-CY^g_;gNl{vWCSM8J-XZMNgfVh-bShwNOb3z9 z+!moz0Y}qcdX5<1`V#>qJr<4Sn$T7t3M%=+AYiCKY6ZTV6dbf80ciXB{?zC|cmH+?%07*qoM6N<$g5kxo AJOBUy literal 0 HcmV?d00001 diff --git a/release/font-awesome/twitter-sign.png b/release/font-awesome/twitter-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..d0955ef41a4861b67cbeb3f80f4abd066372686b GIT binary patch literal 546 zcmV+-0^R+IP)H*nqGBOhDNHCLm0}F#&8)n1C<=FaiA6vwOj@8`*7I-RaWC zvh@8WIU0|4EaM%=AB6z+1n5F~z5!t0^6@5plr|}U9>7EfH_~bYfnzRadU+dL005`{ zaL<9_FWjCuM*hVBK<#KBGC00TMTcPkkf)=eqdWimdQuxp0l@E;f)nOidS?aj-owm~ zqZ9@?)wJb&rr+p6a5xH)_q`1GeATj~Ekhyr#05?f_^O4|QUI6QNN}W*J_L@U1r^wE zmpqjMIMYT>;00&o&Qlt$hb++AFVf>u0QcH>72y_#QwJupynL1FEOQNXs&!SgV2#s% zCG5=r+BJ|7dtq8h!XFZDnAJo#4sf(wm2A;KxThEVFeWxeywB5ANQ0pcJ z2+S?Wecvb8G0MS!MN9y^qsG+$*XpN~C#U6mz_$VAe~x4U$Z>47jSeKWcBgJGt7EHO z=W=5t;|n*pdRW6QI>Z0~*~VZRZD$Vv7D&Yq(=oFpZH@nqcmOQWN>nyr!bzrt`Njo? k-K4YulmuCO&&~n-0il9#Aqy6Y@&Et;07*qoM6N<$g212cxc~qF literal 0 HcmV?d00001 diff --git a/release/font-awesome/twitter.png b/release/font-awesome/twitter.png new file mode 100755 index 0000000000000000000000000000000000000000..c12f91613ab9cc10394762a160b69653b8cf9b7f GIT binary patch literal 592 zcmV-W08l1i%J-uV?3+;5g17SKaB_ z{y1Glvq`H)QfZJ zw}HDdb_)vu(TDMx8pGIyu{)4HnBXBl07w*jD^m*r{hfJB`HotEkicsMfDi5-UkfqU z1Ld&-@u_qfQI1>LTtwK_nplWj7Bo^-fLk6iFK+NhY;l`vYmr_bs6}IB52LLfM z3z6#KIU*R_Lzml6F4oT%dZw3bW$6=L>3J^##G3dzy@mU_`AMpP;JfCtahtPEz%I7C zaw3re0;0n%k$U(PgEFQud#qFI`fe(}HfYVz8qAA_&unTAUW6zMWU`kuzgGdcTG8Td2awakG3aMUd7{jX(dxJ?!q9yU&tT-ob zMySM(Vlog(vJnDDU<1koumNQQn1C<=Faco$n1C<=?F5t!U;_9rIwQ+<8pkCqNImHk zCBD1={e3wPw$^NeO#B_?-OH!)BC|%FmP=ry+-C#Mt?|DJ9E$#dDKN9=OU_ZG$OqVw zoaa!E{7qJAp_D(Ql37H6M!S+$vXZ1;_B^{@4$ z&uW9fs&?-%+3c=QpwbJ224(afD!6gX=TMo>MA`^Y zu#k`C{%!ZJca9->eY^IbNC)op&2c=tAIE0K+0{C-4nA!&V{5u-pXz0000< KMNUMnLSTZsJLHD| literal 0 HcmV?d00001 diff --git a/release/font-awesome/underline.png b/release/font-awesome/underline.png new file mode 100755 index 0000000000000000000000000000000000000000..3c9c09ccf69b3d5f9a8e843b2f3cfbf333ae6504 GIT binary patch literal 495 zcmVDfC+#NU;@epFac!)n1HeYBa{h%3E+KFQk{Hpnw(IB5SFZ{ zIsZI6j^mC;jcMH2{|EpJ@t1fRIEQIpAK%26387oC9KfkSJhsdLH85)d0H@dDe*n!g5O37q0C1pUvb}v>FZj_6 zWSfbDq&a}t)~jlOU{bGRwwpN_7}N)_#jCYtjAo;70MLGq#l0uEE1#N(qGDH$hlM&Q zrELkm2jN|~|%8{4Ck_^DfC&f_022^4fC(rQ022@<04AVJ0BjI8fC=C~&hEL665HXf)txSh zBTHZ3vaQL+nq{))_!}hvwgh%hT1oe%U((h+pWSOxuCoc$-91D zOP@+m0N}?>X!JaH?__%;txKFaTL9n(hLREjz!(rPaW94Du|jY_B-w}o%LPEdTgOlvIIJ8~)X`y2paYFlAEx90pu%fuYE3U(wlOmR282031z@g;M;TOm zlc`&GwreQV6#zSu0>Feu>UT#D7K-=HFeDKYT9O<9V?fL_iSr{AvmkQ;;KZP(6U~Q=4A;DRlu!(26ydf7pwMr&`AnAaGVE%MWEN6#8D&RyhS2>I zO*+;0(&@Nr0PLn_RSZ~5&?#gXpa|n)fvW#XT!i@R9LpX6S8pgCsz#up*uri2sqbm* z2LRmt7>8##-&E{avFLx0v)Tf{m^I;2z+!>%(xrgnM`_&53|>Y)LyHCe z!2Fab_{hLdvZh8cSVCE0w8z}HIj5?5dK4qM_DL`W6a$?smF(4E zTzf$P_Bo{haU~;jkD*+9x6+ULykd}N7z03C#UK=8#MgSQzYqX#a9sen9S-D-+mIv& z;5IARXk#Hc0JqDP0$_)W%S3VjIA|tVjDGGW2Ve)yksRE&5QUQp=ztP*fJ)GT4$uJ|D1i>50(77R9q^tJb58DW?H-rgbgbZiVi~YOF>axp$p_Y&FzyNl|`d#~vE?S$E>kQ~x zYb>k`08^|Np{{iRf8oFZb?Yg$+u@pPRYQ6PxNoc^JmPxGm<~KNr43?kND08hsREo3 zPdWgJ1MHBm+G&FgXpX5jqVl$6B`_Qf=W@FMZg?Kfl!K+~D+#S{K}um$t`6YK0k&PW pK6R9Unx9r&hoDg-^lO+L_6d2BQX!L&9})ln002ovPDHLkV1oN)jPw8i literal 0 HcmV?d00001 diff --git a/release/font-awesome/upload.png b/release/font-awesome/upload.png new file mode 100755 index 0000000000000000000000000000000000000000..d5144a13accc0caee3a48779fec8561caa63376b GIT binary patch literal 633 zcmV-<0*3vGP)5v5EY;TQ2{Ct6`+Ht03Dc5-c3yAcK7CzKQiy_%iaF^ zer9%VHp9V&ZMb3mL0^DMfRCh|O8byDmG-ud6I}q?jbPn~0^seZ0Z|yh!d3#9$S&vM zo&F~Ra4Ze5PRjwTDz1WIh!j9X{8yB=I@}9Ecz~QZf_Ku`ls0R`YxzBpMpBZT-Z~*H zKu-Kcb{z%I^h)N86Ok!GC;**P~KZLf(Wqjx0`$> z?}Sn$>6Tp<3^qVTQUGRnjrt$2jLY9>a-QxJ&x z#BS9cI((>X#*&1$p1SZ(y#N|Z0r;bx--aasuQiqqpIo_e9tQA70MK5>%RT_9xm;3H zyLTiB?fgCfd_^bD5u4oeq3CC*`}6_uM{DzA!KLTt3lWPc9JUa#C<>68_bBT}{%HG_ z;s`*h6r)RC;n9nkSl zd8l*iqkl*cr?iqQY^b4RV=ghGz_YiaxQ~D?p2)*0e@1(Y=K$zm7oyX1rOlPmbs)mx zr3fe>3B}pcIA?pm>l_Nq)U?*0jzn%Ox=Im9t*Z>s%!rmWier5NRu;-F+&I7=hi8r< TuF0)F00000NkvXXu0mjfH|QUx literal 0 HcmV?d00001 diff --git a/release/font-awesome/user-md.png b/release/font-awesome/user-md.png new file mode 100755 index 0000000000000000000000000000000000000000..c2cee078942a45c4fc3bd2a4178a2fdc50216a7f GIT binary patch literal 688 zcmV;h0#E&kP)7X3V;eQ9Y6(`3KA;7Q~*@Kr2?P=jtU?ZB>xRkMzeRfr}cOy zn$g(a{gVDlTCGnu4=g7S9DmbFpcmoS(n0$9800eq9$V12`s_l`QQ!AQgzpE*8iAMc z`X%A{oiJAk+yt^l;HNB}Bpj20^8~Jmz*C`rG&p@@C226(RGX0c(r{TB1bm(aJ8r22 zG~RD1pDjWeC`VeB2y{ju?Z|-5WvDeFDZOZ9@Jx6bH!U>+*(>P5ZVo8f>LjF|XUXFn zGz-?|z)r#6CkR{%(><>~#FAc|4 zeIfP7iLBj9KV%ri40yV6v^8TKjZ&@`L8E{nFoY0>5E%EfH@hkiClEUx<~Zr4-wSI_ z{7=f5E{9Y}0MpgRbONKm-t9F4bEo-cC+EbF^9+FH_h~H!5GWs=76Pwi?>*vi$jl)1 zS9A_@&j|vNaZKCVYsksH{+$J64S@vZBC8QMNd^Qs0nHSHJFvI?M>A>knsY@jZGY4! z2ey3(?s!Xu{KEKI}yo^+9QMI(7N{pTb%RvD+oh&T!2L&SAno+D*FCaQM=UW1g7Py>{)eN)*I4XAWejYVS#n~OJ WqKF|m$MsSG0000O1 literal 0 HcmV?d00001 diff --git a/release/font-awesome/user.png b/release/font-awesome/user.png new file mode 100755 index 0000000000000000000000000000000000000000..ea5d1793d20adf652db67cb9211e2d98dbfcce39 GIT binary patch literal 513 zcmV+c0{;DpP)_DtQtw5|m?cl6HOW-Qd4x|LFK>tg26T-pn40nV{CJ^{L z^LJ+U!+N!_tryO}@)9UT_(tBy-wr|ELf|MQz1OwqByDxS2}HP`WH|!Yiu!Jd{2Ys)7UXoGR`N#! zfvqs50k;E55#R*;$Y}*KJTwm^-UKIjTw~_aCs1kSog5J&ITd&f(TYF>LX8~hjRVKC zXE~Vux+Iw{0d_JZJR~96(ATfjb6Ui;Z;;FiQzT%Wc*w9rN==n=_9Q@^0!0F?K-Ou` zCGEb4Eb7R0&>-Ob=y(W#O{yaVD3Rr;c@sxGvs0xi(CDRCay?|28zg$P1=gPqPtrbi zRBw3kw@+l_+QkVRkDUaVwemTRV7E9)0_Z$4I+rCs(^R04^ZPZICDkwvN3HCK)&h3^ zA+J(9>rQ7WAdWJ6e@44Gm?;wDS;Buq literal 0 HcmV?d00001 diff --git a/release/font-awesome/volume-down.png b/release/font-awesome/volume-down.png new file mode 100755 index 0000000000000000000000000000000000000000..591f5248625293d351d5e228dbd1cd44df3c8c3f GIT binary patch literal 353 zcmV-n0iOPeP)0(AqOK;6I*bOYVM5!^ukhZK&GmP-j2gdQAiAjyAR z|1~L#%u#06FFJs~tH2zdStC!#TMGZgRA2?cvlD&bIk5zg;?y+-@Wo95LgHosb>hhZ zXr{4es6NJ<29x<7;2!rjreqgO6!T2A##g6<^(uEoS#J%sVX2p0X;x3s3HXb%gqCd@j{MN%5D+?*fzbGMVKqw z@PhFYc}21kQ9%G6u_0>yi0Z&30DoFsuP(bJY&wpsO+yf7r(qq0833ylf-nULL6`&h z5Lo~!2=+bG{8Ad#-`dGBw_@#{QS&;0>=pO{>61SpT&mEDn4#?y*WZ z(dxipaP|rFM;C>A4!vKTy*N}Dbm#DI{h~0TY{7Eo3A*ezy~EiTMEixaCv2XR$9Evr z@~SL@m(RBhPA`TN`UfVTSTT$3-{gt2++_`f2YB(%dQpj*3afghfIs1bmmRQ+_vw|h%47-%sjxZXy`!EsFuZitQS^WQwFBrA22WQ%mvv4FO#nsnSY-eJ literal 0 HcmV?d00001 diff --git a/release/font-awesome/volume-up.png b/release/font-awesome/volume-up.png new file mode 100755 index 0000000000000000000000000000000000000000..42edb259a4f10211843df0c6a0ae8d465200be74 GIT binary patch literal 681 zcmV;a0#^NrP)m1`RYF*@ z?wZS;pMAE|@o2>|Ua|erp9IJi)i3F_^rJ1pLq}j+2A_k`g~l`KeG^1qfCC+N61+Yq%mvoY+Y+t(xdPWus~F#D}Xo7A$0%%ZH4HVp_zkV zejF2Y0f>#K07y8(z6gfq!PrXx<0k-sl+p%JXFLUvYvJ6TZN|6`V2Dm7a!mj!<0$~1 zPo&&8#*iH;5uiGNAVM3`vOEFEq`QusDb!?gN@7nq0|SURhH)T}nUthlx&{Df8hynB z;PHL{uyXVLU{h<0;LxSUTj|sc4grwsFuQxAuon(zPGrqvgChJ~Lm@)|a1I_>k1&r7 z>_KZZFvKbaNB{=|;4CXQ+AmEglRi2}nc8*nohWi_s0es~3;n?RCV(;zh63uy|&4>5+P4e;VT{;Py4b(qt{7dFLS`&a@!`PiOj&oE8 zP;X(Zbi(*>|2qW{w_^6>Qfo-$LMG*U5i38Rki`Ny&?a>dbpV!2 zGx`D$aW4EAAYrq7JkgA7N8((l-P<<;Z2+tj9TJd8w90P)v>Np<`~!Rg?2n!yD=$;o P00000NkvXXu0mjfbQ2vx literal 0 HcmV?d00001 diff --git a/release/font-awesome/warning-sign.png b/release/font-awesome/warning-sign.png new file mode 100755 index 0000000000000000000000000000000000000000..1dac8bd1bfb000303b9de173c6e74697e60c8253 GIT binary patch literal 532 zcmV+v0_**WP)2oul^2$PUb02`1IU;_BRiY3Rrv(JtKmaM3$@B7{P z@{>(fK3ar6PT^0u_9arAk|4y?n4dxH6@HJodZhqw*r*9M8}NJg7XaLt0MZ};LCmA1 z0#f#F!|W>L0<_raC6V48{_m|N$OT~I)d_JnA{){)asVEn_-sPZ!yOhfu#a{kQwzX z0IpK3j5<;P*HiYPfE9poQHxFiXr_|`FaSce=omnQK+SR`06up2O089kjsdXocm&co z;wAz8!Ax(I^=cI~05(p{a&rO5C0euwkh0tofN^TbS&<}w4l8`qk*dmP{3G}yJQ6AH z%%VepT+3CCT)ll}(IJ2(d#Zn9`Y#)Tvu`d8M6)Nz2dEJoe&=a=B|YG@W)|%O^jP7) zOk&9_0iZ5lW~^A{05r>8qXJIzWYG>F_MIm|EUf@F2h1G-8cfY{W5>Y9(0y>Q2{qS@ zX`BFZvo|!ldC5S4AM^4R77~DGp}j;_*m5R$BmmE^D?Gy`fK2?5`XE`dfhqRi0e%5g W(_QbOOcDP80000;nE#a&{tw5|mI}j^SD^M#?JHQIG1F-|`!1vt{X3ZslKwxKfE|-wJ zx4+4HwXm!g#$Tl%a3rHHrTfwk>65gI89F6_yatAVFQq1qLnNjkaHoUMYl~xs-fQ71 z1%Xo?`rML7Z(74M$wKg=!%qSPzG{nEZQcFhHWz+=aCA)*yW=g#gVdA4`A(9wJ^K zJmd)Vk6cS_AAsQF7y`HukXRl#UaTX0@8m~=tlm2)1Y72kTpFtcgSRtmtRLb5z-hY( zy}go#dO?gp6MOf;f0EFGvmf_D0{60Z&}O#Qg7-mR0zSCIfZhfA*WrO5&!@I07*qoM6N<$ Ef>HkC3jhEB literal 0 HcmV?d00001 diff --git a/release/font-awesome/zoom-in.png b/release/font-awesome/zoom-in.png new file mode 100755 index 0000000000000000000000000000000000000000..871278c674efb5eea60c45ec4cdf1c6cde9d678b GIT binary patch literal 683 zcmV;c0#yBpP) z9ZN4+QZgK@c?{QVf6x_RQ$Tk`#z`uJ2%$g#+%VB|~I9z`xixbHP0 z06e{GF>DQC{4BwAhOhwY^+jh5i!TxlKsrUk0oS1@J;oiS3!4>h+7` z-OPzd>rntOO5R&a5(%aGn92jC3BcH_5e*F5NF2&s6@>r*@9YV^Jq~n~09Xg=*%&M4 z0syKs-*+nyUMaQ#prbZXAbD}p9RLuX1GBo56yecNwlRj)h_K2_W=^05pt^ zY*mR#z}IM_Gp}bol{NAtA6xR^HYOqfVV*cjJd$}zv+K~3^C~L*=CI&xh%#5b^Qr() z4?0Tdxnofh-pks=alH+IhIMZCMX(LPSnh1;u&9Zc>uUqB`NZC+q8b3|{nPQ*tKSj; z5#tkXhv!K1jwXjH&NtWcKsT(iNuq^NhUAV8DhA`Wbw@|J0Kf!F`R%d;5CADpTS^m| z)Loe{)U5KznCNK1?OCT8L=&H1bT;jeHL>oXJ&2f6*ih(+b zcRZaT`T+FJgA&AvD4X|@RRW+tf@pqHRt*qAG;RJr0Du^Y%u+0m002ovPDHLkV1g>aFFpVO literal 0 HcmV?d00001 diff --git a/release/font-awesome/zoom-out.png b/release/font-awesome/zoom-out.png new file mode 100755 index 0000000000000000000000000000000000000000..32d806c9c4d40b3dd9464e6543793a3094323e66 GIT binary patch literal 642 zcmV-|0)737P)Nklf5jYVb0xJU|up&SNP6UX+W`GFjr)I9ETF*?ct8-J;wR=0C ze*N9O@o2?kykh+$FTlEhZi_TQW^#QIc@^mwF`@*3(hHG8kx4p{hJ8abbJP-S90x*!&pzafY~(W@dDn+jtF46o)X)sS&+;Q?u6(W6>e%mn~i5gJZ9uI0yHOR-m8 zAbBy;901^+JvF-}zc~ntzC5POny0W%=M(2}UKW6cv6jq6ViNG#shnjo)~(!Yk8a2_ zvoYZT2-C!g#1nZ=X?jO2Ijf?w?;Iwq4aLkY5LwX0gw7@5ttgp#O;6U*uuj!Ja-+$e z1pt$}bXXq~aR`UbC-xRA3IOW;-O%Fd<;gxg#w%Qpq9HLkTG^#Dx0h#h! z>#l|}%}&}VpIv$Y0wCq7O9`uqdG4K24Py#Wt9z7FF`WpV4du0VU45VE`m{pfh(K{k z5yEN^ScjEqcU&4ou0!EkAclONQSa=b7g+G7C$cRvm>gqW0zomMn}t2(68A2M8bIp$ zCj8)vf + + + + + + Shape Shifter + + + + + +

+ +
+ + +
+ +
+ + + + +
+
CommandsInfoShare
+ +
+
    +
  • TextType anythingDemo
  • +
  • Countdown#countdownnumberDemo
  • +
  • Icon#iconname (using Font Awesome)Demo
  • +
  • Time#timeDemo
  • +
  • Rectangle#rectanglewidth x heightDemo
  • +
  • Circle#circlediameterDemo
  • + +
  • Animatecommand1 |command2Demo
  • +
+ +
+
+

Shape Shifter

+

+ An experiment by Kenneth Cachia.
+
Font Awesome is being used to render all #icons. +

+
+
+ +
+
+

Sharing

+

Simply add ?a= to the current URL to share any static or animated text. Examples:

+

+ www.kennethcachia.com/shape-shifter?a=Hello
+ www.kennethcachia.com/shape-shifter?a=Hello|#countdown 3 +

+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/release/shape-shifter.js b/release/shape-shifter.js new file mode 100644 index 0000000..dede9cc --- /dev/null +++ b/release/shape-shifter.js @@ -0,0 +1,740 @@ +/* + * Shape Shifter + * http://www.kennethcachia.com/shape-shifter + * A canvas experiment + */ + +var S = { + init: function () { + var action = window.location.href, + i = action.indexOf('?a='); + + S.Drawing.init('.canvas'); + S.ShapeBuilder.init(); + S.UI.init(); + document.body.classList.add('body--ready'); + + if (i !== -1) { + S.UI.simulate(decodeURI(action).substring(i + 3)); + } else { + S.UI.simulate('Shape|Shifter|Type|to start|#icon thumbs-up|#countdown 3||'); + } + + S.Drawing.loop(function () { + S.Shape.render(); + }); + } +}; + + +window.addEventListener('load', function () { + S.init(); +}); + + +S.Drawing = (function () { + 'use strict'; + + var canvas, + context, + renderFn, + requestFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + window.setTimeout(callback, 1000 / 60); + }; + + return { + init: function (el) { + canvas = document.querySelector(el); + context = canvas.getContext('2d'); + this.adjustCanvas(); + + window.addEventListener('resize', function (e) { + S.Drawing.adjustCanvas(); + }); + }, + + loop: function (fn) { + renderFn = !renderFn ? fn : renderFn; + this.clearFrame(); + renderFn(); + requestFrame.call(window, this.loop.bind(this)); + }, + + adjustCanvas: function () { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + }, + + clearFrame: function () { + context.clearRect(0, 0, canvas.width, canvas.height); + }, + + getArea: function () { + return { w: canvas.width, h: canvas.height }; + }, + + drawCircle: function (p, c) { + context.fillStyle = c.render(); + context.beginPath(); + context.arc(p.x, p.y, p.z, 0, 2 * Math.PI, true); + context.closePath(); + context.fill(); + } + }; +}()); + + +S.Point = function (args) { + this.x = args.x; + this.y = args.y; + this.z = args.z; + this.a = args.a; + this.h = args.h; +}; + + +S.Color = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; +}; + +S.Color.prototype = { + render: function () { + return 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')'; + } +}; + + +S.UI = (function () { + var input = document.querySelector('.ui-input'), + ui = document.querySelector('.ui'), + help = document.querySelector('.help'), + commands = document.querySelector('.commands'), + overlay = document.querySelector('.overlay'), + canvas = document.querySelector('.canvas'), + interval, + isTouch = ('ontouchstart' in window || navigator.msMaxTouchPoints), + currentAction, + resizeTimer, + time, + maxShapeSize = 30, + firstAction = true, + sequence = [], + cmd = '#'; + + function formatTime(date) { + var h = date.getHours(), + m = date.getMinutes(); + + m = m < 10 ? '0' + m : m; + return h + ':' + m; + } + + function getValue(value) { + return value && value.split(' ')[1]; + } + + function getAction(value) { + value = value && value.split(' ')[0]; + return value && value[0] === cmd && value.substring(1); + } + + function timedAction(fn, delay, max, reverse) { + clearInterval(interval); + currentAction = reverse ? max : 1; + fn(currentAction); + + if (!max || (!reverse && currentAction < max) || (reverse && currentAction > 0)) { + interval = setInterval(function () { + currentAction = reverse ? currentAction - 1 : currentAction + 1; + fn(currentAction); + + if ((!reverse && max && currentAction === max) || (reverse && currentAction === 0)) { + clearInterval(interval); + } + }, delay); + } + } + + function reset(destroy) { + clearInterval(interval); + sequence = []; + time = null; + + if (destroy) { + S.Shape.switchShape(S.ShapeBuilder.letter('')); + } + } + + function performAction(value) { + var action, + current; + + overlay.classList.remove('overlay--visible'); + sequence = typeof(value) === 'object' ? value : sequence.concat(value.split('|')); + input.value = ''; + checkInputWidth(); + + timedAction(function (index) { + current = sequence.shift(); + action = getAction(current); + value = getValue(current); + + switch (action) { + case 'countdown': + value = parseInt(value, 10) || 10; + value = value > 0 ? value : 10; + + timedAction(function (index) { + if (index === 0) { + if (sequence.length === 0) { + S.Shape.switchShape(S.ShapeBuilder.letter('')); + } else { + performAction(sequence); + } + } else { + S.Shape.switchShape(S.ShapeBuilder.letter(index), true); + } + }, 1000, value, true); + break; + + case 'rectangle': + value = value && value.split('x'); + value = (value && value.length === 2) ? value : [maxShapeSize, maxShapeSize / 2]; + + S.Shape.switchShape(S.ShapeBuilder.rectangle(Math.min(maxShapeSize, parseInt(value[0], 10)), Math.min(maxShapeSize, parseInt(value[1], 10)))); + break; + + case 'circle': + value = parseInt(value, 10) || maxShapeSize; + value = Math.min(value, maxShapeSize); + S.Shape.switchShape(S.ShapeBuilder.circle(value)); + break; + + case 'time': + var t = formatTime(new Date()); + + if (sequence.length > 0) { + S.Shape.switchShape(S.ShapeBuilder.letter(t)); + } else { + timedAction(function () { + t = formatTime(new Date()); + if (t !== time) { + time = t; + S.Shape.switchShape(S.ShapeBuilder.letter(time)); + } + }, 1000); + } + break; + + case 'icon': + S.ShapeBuilder.imageFile('font-awesome/' + value + '.png', function (obj) { + S.Shape.switchShape(obj); + }); + break; + + default: + S.Shape.switchShape(S.ShapeBuilder.letter(current[0] === cmd ? 'What?' : current)); + } + }, 2000, sequence.length); + } + + function checkInputWidth(e) { + if (input.value.length > 18) { + ui.classList.add('ui--wide'); + } else { + ui.classList.remove('ui--wide'); + } + + if (firstAction && input.value.length > 0) { + ui.classList.add('ui--enter'); + } else { + ui.classList.remove('ui--enter'); + } + } + + function bindEvents() { + document.body.addEventListener('keydown', function (e) { + input.focus(); + + if (e.keyCode === 13) { + firstAction = false; + reset(); + performAction(input.value); + } + }); + + window.addEventListener('resize', function () { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(function () { + S.Shape.shuffleIdle(); + reset(true); + }, 500); + }); + + input.addEventListener('input', checkInputWidth); + input.addEventListener('change', checkInputWidth); + input.addEventListener('focus', checkInputWidth); + + help.addEventListener('click', function (e) { + overlay.classList.toggle('overlay--visible'); + + if (overlay.classList.contains('overlay--visible')) { + reset(true); + } + }); + + commands.addEventListener('click', function (e) { + var el, + info, + demo, + tab, + active, + url; + + if (e.target.classList.contains('commands-item')) { + el = e.target; + } else { + el = e.target.parentNode.classList.contains('commands-item') ? e.target.parentNode : e.target.parentNode.parentNode; + } + + info = el && el.querySelector('.commands-item-info'); + demo = el && info.getAttribute('data-demo'); + url = el && info.getAttribute('data-url'); + + if (info) { + overlay.classList.remove('overlay--visible'); + + if (demo) { + input.value = demo; + + if (isTouch) { + reset(); + performAction(input.value); + } else { + input.focus(); + } + } else if (url) { + window.location = url; + } + } + }); + + canvas.addEventListener('click', function (e) { + overlay.classList.remove('overlay--visible'); + }); + } + + return { + init: function () { + bindEvents(); + input.focus(); + + if (isTouch) { + document.body.classList.add('touch'); + } + + S.UI.Tabs.init(); + }, + + simulate: function (action) { + performAction(action); + } + }; +}()); + + +S.UI.Tabs = (function () { + var tabs = document.querySelector('.tabs'), + labels = document.querySelector('.tabs-labels'), + triggers = document.querySelectorAll('.tabs-label'), + panels = document.querySelectorAll('.tabs-panel'); + + function activate(i) { + triggers[i].classList.add('tabs-label--active'); + panels[i].classList.add('tabs-panel--active'); + } + + function bindEvents() { + labels.addEventListener('click', function (e) { + var el = e.target, + index; + + if (el.classList.contains('tabs-label')) { + for (var t = 0; t < triggers.length; t++) { + triggers[t].classList.remove('tabs-label--active'); + panels[t].classList.remove('tabs-panel--active'); + + if (el === triggers[t]) { + index = t; + } + } + + activate(index); + } + }); + } + + return { + init: function () { + activate(0); + bindEvents(); + } + }; +}()); + + +S.Dot = function (x, y) { + this.p = new S.Point({ + x: x, + y: y, + z: 5, + a: 1, + h: 0 + }); + + this.e = 0.07; + this.s = true; + + this.c = new S.Color(255, 255, 255, this.p.a); + + this.t = this.clone(); + this.q = []; +}; + +S.Dot.prototype = { + clone: function () { + return new S.Point({ + x: this.x, + y: this.y, + z: this.z, + a: this.a, + h: this.h + }); + }, + + _draw: function () { + this.c.a = this.p.a; + S.Drawing.drawCircle(this.p, this.c); + }, + + _moveTowards: function (n) { + var details = this.distanceTo(n, true), + dx = details[0], + dy = details[1], + d = details[2], + e = this.e * d; + + if (this.p.h === -1) { + this.p.x = n.x; + this.p.y = n.y; + return true; + } + + if (d > 1) { + this.p.x -= ((dx / d) * e); + this.p.y -= ((dy / d) * e); + } else { + if (this.p.h > 0) { + this.p.h--; + } else { + return true; + } + } + + return false; + }, + + _update: function () { + var p, + d; + + if (this._moveTowards(this.t)) { + p = this.q.shift(); + + if (p) { + this.t.x = p.x || this.p.x; + this.t.y = p.y || this.p.y; + this.t.z = p.z || this.p.z; + this.t.a = p.a || this.p.a; + this.p.h = p.h || 0; + } else { + if (this.s) { + this.p.x -= Math.sin(Math.random() * 3.142); + this.p.y -= Math.sin(Math.random() * 3.142); + } else { + this.move(new S.Point({ + x: this.p.x + (Math.random() * 50) - 25, + y: this.p.y + (Math.random() * 50) - 25, + })); + } + } + } + + d = this.p.a - this.t.a; + this.p.a = Math.max(0.1, this.p.a - (d * 0.05)); + d = this.p.z - this.t.z; + this.p.z = Math.max(1, this.p.z - (d * 0.05)); + }, + + distanceTo: function (n, details) { + var dx = this.p.x - n.x, + dy = this.p.y - n.y, + d = Math.sqrt(dx * dx + dy * dy); + + return details ? [dx, dy, d] : d; + }, + + move: function (p, avoidStatic) { + if (!avoidStatic || (avoidStatic && this.distanceTo(p) > 1)) { + this.q.push(p); + } + }, + + render: function () { + this._update(); + this._draw(); + } +}; + + +S.ShapeBuilder = (function () { + var gap = 13, + shapeCanvas = document.createElement('canvas'), + shapeContext = shapeCanvas.getContext('2d'), + fontSize = 500, + fontFamily = 'Avenir, Helvetica Neue, Helvetica, Arial, sans-serif'; + + function fit() { + shapeCanvas.width = Math.floor(window.innerWidth / gap) * gap; + shapeCanvas.height = Math.floor(window.innerHeight / gap) * gap; + shapeContext.fillStyle = 'red'; + shapeContext.textBaseline = 'middle'; + shapeContext.textAlign = 'center'; + } + + function processCanvas() { + var pixels = shapeContext.getImageData(0, 0, shapeCanvas.width, shapeCanvas.height).data, + dots = [], + x = 0, + y = 0, + fx = shapeCanvas.width, + fy = shapeCanvas.height, + w = 0, + h = 0; + + for (var p = 0; p < pixels.length; p += (4 * gap)) { + if (pixels[p + 3] > 0) { + dots.push(new S.Point({ + x: x, + y: y + })); + + w = x > w ? x : w; + h = y > h ? y : h; + fx = x < fx ? x : fx; + fy = y < fy ? y : fy; + } + + x += gap; + + if (x >= shapeCanvas.width) { + x = 0; + y += gap; + p += gap * 4 * shapeCanvas.width; + } + } + + return { dots: dots, w: w + fx, h: h + fy }; + } + + function setFontSize(s) { + shapeContext.font = 'bold ' + s + 'px ' + fontFamily; + } + + function isNumber(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + } + + return { + init: function () { + fit(); + window.addEventListener('resize', fit); + }, + + imageFile: function (url, callback) { + var image = new Image(), + a = S.Drawing.getArea(); + + image.onload = function () { + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.drawImage(this, 0, 0, a.h * 0.6, a.h * 0.6); + callback(processCanvas()); + }; + + image.onerror = function () { + callback(S.ShapeBuilder.letter('What?')); + }; + + image.src = url; + }, + + circle: function (d) { + var r = Math.max(0, d) / 2; + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.beginPath(); + shapeContext.arc(r * gap, r * gap, r * gap, 0, 2 * Math.PI, false); + shapeContext.fill(); + shapeContext.closePath(); + + return processCanvas(); + }, + + letter: function (l) { + var s = 0; + + setFontSize(fontSize); + s = Math.min(fontSize, + (shapeCanvas.width / shapeContext.measureText(l).width) * 0.8 * fontSize, + (shapeCanvas.height / fontSize) * (isNumber(l) ? 1 : 0.45) * fontSize); + setFontSize(s); + + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.fillText(l, shapeCanvas.width / 2, shapeCanvas.height / 2); + + return processCanvas(); + }, + + rectangle: function (w, h) { + var dots = [], + width = gap * w, + height = gap * h; + + for (var y = 0; y < height; y += gap) { + for (var x = 0; x < width; x += gap) { + dots.push(new S.Point({ + x: x, + y: y, + })); + } + } + + return { dots: dots, w: width, h: height }; + } + }; +}()); + + +S.Shape = (function () { + var dots = [], + width = 0, + height = 0, + cx = 0, + cy = 0; + + function compensate() { + var a = S.Drawing.getArea(); + + cx = a.w / 2 - width / 2; + cy = a.h / 2 - height / 2; + } + + return { + shuffleIdle: function () { + var a = S.Drawing.getArea(); + + for (var d = 0; d < dots.length; d++) { + if (!dots[d].s) { + dots[d].move({ + x: Math.random() * a.w, + y: Math.random() * a.h + }); + } + } + }, + + switchShape: function (n, fast) { + var size, + a = S.Drawing.getArea(), + d = 0, + i = 0; + + width = n.w; + height = n.h; + + compensate(); + + if (n.dots.length > dots.length) { + size = n.dots.length - dots.length; + for (d = 1; d <= size; d++) { + dots.push(new S.Dot(a.w / 2, a.h / 2)); + } + } + + d = 0; + + while (n.dots.length > 0) { + i = Math.floor(Math.random() * n.dots.length); + dots[d].e = fast ? 0.25 : (dots[d].s ? 0.14 : 0.11); + + if (dots[d].s) { + dots[d].move(new S.Point({ + z: Math.random() * 20 + 10, + a: Math.random(), + h: 18 + })); + } else { + dots[d].move(new S.Point({ + z: Math.random() * 5 + 5, + h: fast ? 18 : 30 + })); + } + + dots[d].s = true; + dots[d].move(new S.Point({ + x: n.dots[i].x + cx, + y: n.dots[i].y + cy, + a: 1, + z: 5, + h: 0 + })); + + n.dots = n.dots.slice(0, i).concat(n.dots.slice(i + 1)); + d++; + } + + for (i = d; i < dots.length; i++) { + if (dots[i].s) { + dots[i].move(new S.Point({ + z: Math.random() * 20 + 10, + a: Math.random(), + h: 20 + })); + + dots[i].s = false; + dots[i].e = 0.04; + dots[i].move(new S.Point({ + x: Math.random() * a.w, + y: Math.random() * a.h, + a: 0.3, //.4 + z: Math.random() * 4, + h: 0 + })); + } + } + }, + + render: function () { + for (var d = 0; d < dots.length; d++) { + dots[d].render(); + } + } + }; +}()); diff --git a/release/site.min.css b/release/site.min.css new file mode 100644 index 0000000..dd660ca --- /dev/null +++ b/release/site.min.css @@ -0,0 +1,2 @@ +/*! shape-shifter 2013-08-14 */ +/*! normalize.css v2.0.1 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}body{font-family:Avenir,"Helvetica Neue",Helvetica,Arial,sans-serif;background:#79a8ae;color:#666;font-size:16px;line-height:1.5em}h1{color:#111;margin:0 0 12px;font-size:24px;line-height:1.5em}p{margin:0 0 10x}a{color:#888;text-decoration:none;border-bottom:1px solid #ccc}a:hover{border-bottom-color:#888}body,.overlay{-webkit-perspective:1000;-webkit-perspective-origin-y:25%}.body--ready{background:-webkit-linear-gradient(top,#cbebdb 0,#3794c0 120%);background:-moz-linear-gradient(top,#cbebdb 0,#3794c0 120%);background:-o-linear-gradient(top,#cbebdb 0,#3794c0 120%);background:-ms-linear-gradient(top,#cbebdb 0,#3794c0 120%);background:linear-gradient(top,#cbebdb 0,#3794c0 120%)}.body--ready .overlay{-webkit-transition:-webkit-transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .7s cubic-bezier(0.694,.0482,.335,1);-moz-transition:-moz-transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .7s cubic-bezier(0.694,.0482,.335,1);-ms-transition:-ms-transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .7s cubic-bezier(0.694,.0482,.335,1);-o-transition:-o-transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .7s cubic-bezier(0.694,.0482,.335,1);transition:transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .7s cubic-bezier(0.694,.0482,.335,1)}.body--ready .ui,.body--ready .help{display:block}.ui{display:none;position:absolute;left:50%;bottom:5%;width:300px;margin-left:-150px}.ui-input{width:100%;height:50px;background:0;font-size:24px;font-weight:700;color:#fff;text-align:center;border:0;border-bottom:2px solid #fff}.ui-input:focus{outline:0;border:0;border-bottom:2px solid #fff}.ui-return{display:none;position:absolute;top:20px;right:0;padding:3px 2px 0;font-size:10px;line-height:10px;color:#fff;border:1px solid #fff}.ui--enter .ui-return{display:block}.ui--wide{width:76%;margin-left:12%;left:0}.ui--wide .ui-return{right:-20px}.help{display:none;position:absolute;top:40px;right:40px;width:25px;height:25px;text-align:center;font-size:13px;line-height:27px;font-weight:700;cursor:pointer;background:#fff;color:#79a8ae;opacity:.9;-webkit-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-moz-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-ms-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-o-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);transition:opacity .1s cubic-bezier(0.694,.0482,.335,1)}.help:hover{opacity:1}.overlay{position:absolute;top:50%;left:50%;width:550px;height:490px;margin:-260px 0 0 -275px;opacity:0;-webkit-transform:rotateY(90deg);-moz-transform:rotateY(90deg);-ms-transform:rotateY(90deg);-o-transform:rotateY(90deg);transform:rotateY(90deg)}.overlay--visible{opacity:1;-webkit-transform:rotateY(0);-moz-transform:rotateY(0);-ms-transform:rotateY(0);-o-transform:rotateY(0);transform:rotateY(0)}.ui-share,.ui-details{opacity:.9;background:#fff;z-index:2}.ui-details-content,.ui-share-content{padding:100px 50px}.commands{margin:0;padding:0;list-style:none;cursor:pointer}.commands-item{font-size:12px;line-height:22px;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:20px;background:#fff;margin-top:1px;color:#333;opacity:.9;-webkit-transition:-webkit-transform .7s cubic-bezier(0.694,.0482,.335,1),opacity .1s cubic-bezier(0.694,.0482,.335,1);-moz-transition:-moz-transform .1s cubic-bezier(0.694,.0482,.335,1),opacity .1s cubic-bezier(0.694,.0482,.335,1);-ms-transition:-ms-transform .1s cubic-bezier(0.694,.0482,.335,1),opacity .1s cubic-bezier(0.694,.0482,.335,1);-o-transition:-o-transform .1s cubic-bezier(0.694,.0482,.335,1),opacity .1s cubic-bezier(0.694,.0482,.335,1);transition:transform .1s cubic-bezier(0.694,.0482,.335,1),opacity .1s cubic-bezier(0.694,.0482,.335,1)}.commands-item--gap{margin-top:9px}.commands-item:hover{opacity:1}.commands-item:hover .commands-item-action{background:#333}.commands-item a{display:inline-block}.commands-item-mode{display:inline-block;margin-left:3px;font-style:italic;color:#ccc}.commands-item-title{display:inline-block;width:150px}.commands-item-info{display:inline-block;width:300px;font-size:14px;text-transform:none;letter-spacing:0;font-weight:400;color:#aaa}.commands-item-action{display:inline-block;float:right;margin-top:3px;text-transform:uppercase;font-size:10px;line-height:10px;color:#fff;background:#90c9d1;padding:5px 10px 4px;border-radius:3px}.commands-item:first-child{margin-top:0}.twitter-share{position:absolute;top:4px;right:20px}.tabs-labels{margin-bottom:9px}.tabs-label{display:inline-block;background:#fff;padding:10px 20px;font-size:12px;line-height:22px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:#333;opacity:.5;cursor:pointer;margin-right:2px;-webkit-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-moz-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-ms-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);-o-transition:opacity .1s cubic-bezier(0.694,.0482,.335,1);transition:opacity .1s cubic-bezier(0.694,.0482,.335,1)}.tabs-label:hover{opacity:.9}.tabs-label--active{opacity:.9}.tabs-panel{display:none}.tabs-panel--active{display:block}.tab-panel{position:absolute;top:0;left:0;width:100%}.touch .ui-input{display:none}@media screen and (max-height:600px){.ui-input{color:#111;border-color:#111}.ui-input:focus{border-color:#111}} \ No newline at end of file diff --git a/scripts/color.js b/scripts/color.js new file mode 100644 index 0000000..0a881bc --- /dev/null +++ b/scripts/color.js @@ -0,0 +1,13 @@ + +S.Color = function (r, g, b, a) { + this.r = r; + this.g = g; + this.b = b; + this.a = a; +}; + +S.Color.prototype = { + render: function () { + return 'rgba(' + this.r + ',' + this.g + ',' + this.b + ',' + this.a + ')'; + } +}; diff --git a/scripts/dot.js b/scripts/dot.js new file mode 100644 index 0000000..abc40d4 --- /dev/null +++ b/scripts/dot.js @@ -0,0 +1,113 @@ + +S.Dot = function (x, y) { + this.p = new S.Point({ + x: x, + y: y, + z: 5, + a: 1, + h: 0 + }); + + this.e = 0.07; + this.s = true; + + this.c = new S.Color(255, 255, 255, this.p.a); + + this.t = this.clone(); + this.q = []; +}; + +S.Dot.prototype = { + clone: function () { + return new S.Point({ + x: this.x, + y: this.y, + z: this.z, + a: this.a, + h: this.h + }); + }, + + _draw: function () { + this.c.a = this.p.a; + S.Drawing.drawCircle(this.p, this.c); + }, + + _moveTowards: function (n) { + var details = this.distanceTo(n, true), + dx = details[0], + dy = details[1], + d = details[2], + e = this.e * d; + + if (this.p.h === -1) { + this.p.x = n.x; + this.p.y = n.y; + return true; + } + + if (d > 1) { + this.p.x -= ((dx / d) * e); + this.p.y -= ((dy / d) * e); + } else { + if (this.p.h > 0) { + this.p.h--; + } else { + return true; + } + } + + return false; + }, + + _update: function () { + var p, + d; + + if (this._moveTowards(this.t)) { + p = this.q.shift(); + + if (p) { + this.t.x = p.x || this.p.x; + this.t.y = p.y || this.p.y; + this.t.z = p.z || this.p.z; + this.t.a = p.a || this.p.a; + this.p.h = p.h || 0; + } else { + if (this.s) { + this.p.x -= Math.sin(Math.random() * 3.142); + this.p.y -= Math.sin(Math.random() * 3.142); + } else { + this.move(new S.Point({ + x: this.p.x + (Math.random() * 50) - 25, + y: this.p.y + (Math.random() * 50) - 25, + })); + } + } + } + + d = this.p.a - this.t.a; + this.p.a = Math.max(0.1, this.p.a - (d * 0.05)); + d = this.p.z - this.t.z; + this.p.z = Math.max(1, this.p.z - (d * 0.05)); + }, + + distanceTo: function (n, details) { + var dx = this.p.x - n.x, + dy = this.p.y - n.y, + d = Math.sqrt(dx * dx + dy * dy); + + return details ? [dx, dy, d] : d; + }, + + move: function (p, avoidStatic) { + if (!avoidStatic || (avoidStatic && this.distanceTo(p) > 1)) { + this.q.push(p); + } + }, + + render: function () { + this._update(); + this._draw(); + } +}; diff --git a/scripts/drawing.js b/scripts/drawing.js new file mode 100644 index 0000000..a31252e --- /dev/null +++ b/scripts/drawing.js @@ -0,0 +1,56 @@ + +S.Drawing = (function () { + 'use strict'; + + var canvas, + context, + renderFn, + requestFrame = window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback) { + window.setTimeout(callback, 1000 / 60); + }; + + return { + init: function (el) { + canvas = document.querySelector(el); + context = canvas.getContext('2d'); + this.adjustCanvas(); + + window.addEventListener('resize', function (e) { + S.Drawing.adjustCanvas(); + }); + }, + + loop: function (fn) { + renderFn = !renderFn ? fn : renderFn; + this.clearFrame(); + renderFn(); + requestFrame.call(window, this.loop.bind(this)); + }, + + adjustCanvas: function () { + canvas.width = window.innerWidth; + canvas.height = window.innerHeight; + }, + + clearFrame: function () { + context.clearRect(0, 0, canvas.width, canvas.height); + }, + + getArea: function () { + return { w: canvas.width, h: canvas.height }; + }, + + drawCircle: function (p, c) { + context.fillStyle = c.render(); + context.beginPath(); + context.arc(p.x, p.y, p.z, 0, 2 * Math.PI, true); + context.closePath(); + context.fill(); + } + }; +}()); diff --git a/scripts/point.js b/scripts/point.js new file mode 100644 index 0000000..756fe60 --- /dev/null +++ b/scripts/point.js @@ -0,0 +1,8 @@ + +S.Point = function (args) { + this.x = args.x; + this.y = args.y; + this.z = args.z; + this.a = args.a; + this.h = args.h; +}; diff --git a/scripts/shape-builder.js b/scripts/shape-builder.js new file mode 100644 index 0000000..f5ab2ca --- /dev/null +++ b/scripts/shape-builder.js @@ -0,0 +1,126 @@ + +S.ShapeBuilder = (function () { + var gap = 13, + shapeCanvas = document.createElement('canvas'), + shapeContext = shapeCanvas.getContext('2d'), + fontSize = 500, + fontFamily = 'Avenir, Helvetica Neue, Helvetica, Arial, sans-serif'; + + function fit() { + shapeCanvas.width = Math.floor(window.innerWidth / gap) * gap; + shapeCanvas.height = Math.floor(window.innerHeight / gap) * gap; + shapeContext.fillStyle = 'red'; + shapeContext.textBaseline = 'middle'; + shapeContext.textAlign = 'center'; + } + + function processCanvas() { + var pixels = shapeContext.getImageData(0, 0, shapeCanvas.width, shapeCanvas.height).data, + dots = [], + x = 0, + y = 0, + fx = shapeCanvas.width, + fy = shapeCanvas.height, + w = 0, + h = 0; + + for (var p = 0; p < pixels.length; p += (4 * gap)) { + if (pixels[p + 3] > 0) { + dots.push(new S.Point({ + x: x, + y: y + })); + + w = x > w ? x : w; + h = y > h ? y : h; + fx = x < fx ? x : fx; + fy = y < fy ? y : fy; + } + + x += gap; + + if (x >= shapeCanvas.width) { + x = 0; + y += gap; + p += gap * 4 * shapeCanvas.width; + } + } + + return { dots: dots, w: w + fx, h: h + fy }; + } + + function setFontSize(s) { + shapeContext.font = 'bold ' + s + 'px ' + fontFamily; + } + + function isNumber(n) { + return !isNaN(parseFloat(n)) && isFinite(n); + } + + return { + init: function () { + fit(); + window.addEventListener('resize', fit); + }, + + imageFile: function (url, callback) { + var image = new Image(), + a = S.Drawing.getArea(); + + image.onload = function () { + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.drawImage(this, 0, 0, a.h * 0.6, a.h * 0.6); + callback(processCanvas()); + }; + + image.onerror = function () { + callback(S.ShapeBuilder.letter('What?')); + }; + + image.src = url; + }, + + circle: function (d) { + var r = Math.max(0, d) / 2; + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.beginPath(); + shapeContext.arc(r * gap, r * gap, r * gap, 0, 2 * Math.PI, false); + shapeContext.fill(); + shapeContext.closePath(); + + return processCanvas(); + }, + + letter: function (l) { + var s = 0; + + setFontSize(fontSize); + s = Math.min(fontSize, + (shapeCanvas.width / shapeContext.measureText(l).width) * 0.8 * fontSize, + (shapeCanvas.height / fontSize) * (isNumber(l) ? 1 : 0.45) * fontSize); + setFontSize(s); + + shapeContext.clearRect(0, 0, shapeCanvas.width, shapeCanvas.height); + shapeContext.fillText(l, shapeCanvas.width / 2, shapeCanvas.height / 2); + + return processCanvas(); + }, + + rectangle: function (w, h) { + var dots = [], + width = gap * w, + height = gap * h; + + for (var y = 0; y < height; y += gap) { + for (var x = 0; x < width; x += gap) { + dots.push(new S.Point({ + x: x, + y: y, + })); + } + } + + return { dots: dots, w: width, h: height }; + } + }; +}()); diff --git a/scripts/shape-shifter.js b/scripts/shape-shifter.js new file mode 100644 index 0000000..07aa990 --- /dev/null +++ b/scripts/shape-shifter.js @@ -0,0 +1,32 @@ +/* + * Shape Shifter + * http://www.kennethcachia.com/shape-shifter + * A canvas experiment + */ + +var S = { + init: function () { + var action = window.location.href, + i = action.indexOf('?a='); + + S.Drawing.init('.canvas'); + S.ShapeBuilder.init(); + S.UI.init(); + document.body.classList.add('body--ready'); + + if (i !== -1) { + S.UI.simulate(decodeURI(action).substring(i + 3)); + } else { + S.UI.simulate('Shape|Shifter|Type|to start|#icon thumbs-up|#countdown 3||'); + } + + S.Drawing.loop(function () { + S.Shape.render(); + }); + } +}; + + +window.addEventListener('load', function () { + S.init(); +}); diff --git a/scripts/shape.js b/scripts/shape.js new file mode 100644 index 0000000..ff6b704 --- /dev/null +++ b/scripts/shape.js @@ -0,0 +1,107 @@ + +S.Shape = (function () { + var dots = [], + width = 0, + height = 0, + cx = 0, + cy = 0; + + function compensate() { + var a = S.Drawing.getArea(); + + cx = a.w / 2 - width / 2; + cy = a.h / 2 - height / 2; + } + + return { + shuffleIdle: function () { + var a = S.Drawing.getArea(); + + for (var d = 0; d < dots.length; d++) { + if (!dots[d].s) { + dots[d].move({ + x: Math.random() * a.w, + y: Math.random() * a.h + }); + } + } + }, + + switchShape: function (n, fast) { + var size, + a = S.Drawing.getArea(), + d = 0, + i = 0; + + width = n.w; + height = n.h; + + compensate(); + + if (n.dots.length > dots.length) { + size = n.dots.length - dots.length; + for (d = 1; d <= size; d++) { + dots.push(new S.Dot(a.w / 2, a.h / 2)); + } + } + + d = 0; + + while (n.dots.length > 0) { + i = Math.floor(Math.random() * n.dots.length); + dots[d].e = fast ? 0.25 : (dots[d].s ? 0.14 : 0.11); + + if (dots[d].s) { + dots[d].move(new S.Point({ + z: Math.random() * 20 + 10, + a: Math.random(), + h: 18 + })); + } else { + dots[d].move(new S.Point({ + z: Math.random() * 5 + 5, + h: fast ? 18 : 30 + })); + } + + dots[d].s = true; + dots[d].move(new S.Point({ + x: n.dots[i].x + cx, + y: n.dots[i].y + cy, + a: 1, + z: 5, + h: 0 + })); + + n.dots = n.dots.slice(0, i).concat(n.dots.slice(i + 1)); + d++; + } + + for (i = d; i < dots.length; i++) { + if (dots[i].s) { + dots[i].move(new S.Point({ + z: Math.random() * 20 + 10, + a: Math.random(), + h: 20 + })); + + dots[i].s = false; + dots[i].e = 0.04; + dots[i].move(new S.Point({ + x: Math.random() * a.w, + y: Math.random() * a.h, + a: 0.3, //.4 + z: Math.random() * 4, + h: 0 + })); + } + } + }, + + render: function () { + for (var d = 0; d < dots.length; d++) { + dots[d].render(); + } + } + }; +}()); diff --git a/scripts/ui-tabs.js b/scripts/ui-tabs.js new file mode 100644 index 0000000..3fbc4bb --- /dev/null +++ b/scripts/ui-tabs.js @@ -0,0 +1,39 @@ + +S.UI.Tabs = (function () { + var tabs = document.querySelector('.tabs'), + labels = document.querySelector('.tabs-labels'), + triggers = document.querySelectorAll('.tabs-label'), + panels = document.querySelectorAll('.tabs-panel'); + + function activate(i) { + triggers[i].classList.add('tabs-label--active'); + panels[i].classList.add('tabs-panel--active'); + } + + function bindEvents() { + labels.addEventListener('click', function (e) { + var el = e.target, + index; + + if (el.classList.contains('tabs-label')) { + for (var t = 0; t < triggers.length; t++) { + triggers[t].classList.remove('tabs-label--active'); + panels[t].classList.remove('tabs-panel--active'); + + if (el === triggers[t]) { + index = t; + } + } + + activate(index); + } + }); + } + + return { + init: function () { + activate(0); + bindEvents(); + } + }; +}()); diff --git a/scripts/ui.js b/scripts/ui.js new file mode 100644 index 0000000..325f618 --- /dev/null +++ b/scripts/ui.js @@ -0,0 +1,238 @@ + +S.UI = (function () { + var input = document.querySelector('.ui-input'), + ui = document.querySelector('.ui'), + help = document.querySelector('.help'), + commands = document.querySelector('.commands'), + overlay = document.querySelector('.overlay'), + canvas = document.querySelector('.canvas'), + interval, + isTouch = ('ontouchstart' in window || navigator.msMaxTouchPoints), + currentAction, + resizeTimer, + time, + maxShapeSize = 30, + firstAction = true, + sequence = [], + cmd = '#'; + + function formatTime(date) { + var h = date.getHours(), + m = date.getMinutes(); + + m = m < 10 ? '0' + m : m; + return h + ':' + m; + } + + function getValue(value) { + return value && value.split(' ')[1]; + } + + function getAction(value) { + value = value && value.split(' ')[0]; + return value && value[0] === cmd && value.substring(1); + } + + function timedAction(fn, delay, max, reverse) { + clearInterval(interval); + currentAction = reverse ? max : 1; + fn(currentAction); + + if (!max || (!reverse && currentAction < max) || (reverse && currentAction > 0)) { + interval = setInterval(function () { + currentAction = reverse ? currentAction - 1 : currentAction + 1; + fn(currentAction); + + if ((!reverse && max && currentAction === max) || (reverse && currentAction === 0)) { + clearInterval(interval); + } + }, delay); + } + } + + function reset(destroy) { + clearInterval(interval); + sequence = []; + time = null; + + if (destroy) { + S.Shape.switchShape(S.ShapeBuilder.letter('')); + } + } + + function performAction(value) { + var action, + current; + + overlay.classList.remove('overlay--visible'); + sequence = typeof(value) === 'object' ? value : sequence.concat(value.split('|')); + input.value = ''; + checkInputWidth(); + + timedAction(function (index) { + current = sequence.shift(); + action = getAction(current); + value = getValue(current); + + switch (action) { + case 'countdown': + value = parseInt(value, 10) || 10; + value = value > 0 ? value : 10; + + timedAction(function (index) { + if (index === 0) { + if (sequence.length === 0) { + S.Shape.switchShape(S.ShapeBuilder.letter('')); + } else { + performAction(sequence); + } + } else { + S.Shape.switchShape(S.ShapeBuilder.letter(index), true); + } + }, 1000, value, true); + break; + + case 'rectangle': + value = value && value.split('x'); + value = (value && value.length === 2) ? value : [maxShapeSize, maxShapeSize / 2]; + + S.Shape.switchShape(S.ShapeBuilder.rectangle(Math.min(maxShapeSize, parseInt(value[0], 10)), Math.min(maxShapeSize, parseInt(value[1], 10)))); + break; + + case 'circle': + value = parseInt(value, 10) || maxShapeSize; + value = Math.min(value, maxShapeSize); + S.Shape.switchShape(S.ShapeBuilder.circle(value)); + break; + + case 'time': + var t = formatTime(new Date()); + + if (sequence.length > 0) { + S.Shape.switchShape(S.ShapeBuilder.letter(t)); + } else { + timedAction(function () { + t = formatTime(new Date()); + if (t !== time) { + time = t; + S.Shape.switchShape(S.ShapeBuilder.letter(time)); + } + }, 1000); + } + break; + + case 'icon': + S.ShapeBuilder.imageFile('font-awesome/' + value + '.png', function (obj) { + S.Shape.switchShape(obj); + }); + break; + + default: + S.Shape.switchShape(S.ShapeBuilder.letter(current[0] === cmd ? 'What?' : current)); + } + }, 2000, sequence.length); + } + + function checkInputWidth(e) { + if (input.value.length > 18) { + ui.classList.add('ui--wide'); + } else { + ui.classList.remove('ui--wide'); + } + + if (firstAction && input.value.length > 0) { + ui.classList.add('ui--enter'); + } else { + ui.classList.remove('ui--enter'); + } + } + + function bindEvents() { + document.body.addEventListener('keydown', function (e) { + input.focus(); + + if (e.keyCode === 13) { + firstAction = false; + reset(); + performAction(input.value); + } + }); + + window.addEventListener('resize', function () { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(function () { + S.Shape.shuffleIdle(); + reset(true); + }, 500); + }); + + input.addEventListener('input', checkInputWidth); + input.addEventListener('change', checkInputWidth); + input.addEventListener('focus', checkInputWidth); + + help.addEventListener('click', function (e) { + overlay.classList.toggle('overlay--visible'); + + if (overlay.classList.contains('overlay--visible')) { + reset(true); + } + }); + + commands.addEventListener('click', function (e) { + var el, + info, + demo, + tab, + active, + url; + + if (e.target.classList.contains('commands-item')) { + el = e.target; + } else { + el = e.target.parentNode.classList.contains('commands-item') ? e.target.parentNode : e.target.parentNode.parentNode; + } + + info = el && el.querySelector('.commands-item-info'); + demo = el && info.getAttribute('data-demo'); + url = el && info.getAttribute('data-url'); + + if (info) { + overlay.classList.remove('overlay--visible'); + + if (demo) { + input.value = demo; + + if (isTouch) { + reset(); + performAction(input.value); + } else { + input.focus(); + } + } else if (url) { + window.location = url; + } + } + }); + + canvas.addEventListener('click', function (e) { + overlay.classList.remove('overlay--visible'); + }); + } + + return { + init: function () { + bindEvents(); + input.focus(); + + if (isTouch) { + document.body.classList.add('touch'); + } + + S.UI.Tabs.init(); + }, + + simulate: function (action) { + performAction(action); + } + }; +}()); diff --git a/styles/normalize.css b/styles/normalize.css new file mode 100755 index 0000000..73abb76 --- /dev/null +++ b/styles/normalize.css @@ -0,0 +1,375 @@ +/*! normalize.css v2.0.1 | MIT License | git.io/normalize */ + +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects `block` display not defined in IE 8/9. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects `inline-block` display not defined in IE 8/9. + */ + +audio, +canvas, +video { + display: inline-block; +} + +/* + * Prevents modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/* + * Addresses styling for `hidden` attribute not present in IE 8/9. + */ + +[hidden] { + display: none; +} + +/* ========================================================================== + Base + ========================================================================== */ + +/* + * 1. Sets default font family to sans-serif. + * 2. Prevents iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Removes default margin. + */ + +body { + margin: 0; +} + +/* ========================================================================== + Links + ========================================================================== */ + +/* + * Addresses `outline` inconsistency between Chrome and other browsers. + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* ========================================================================== + Typography + ========================================================================== */ + +/* + * Addresses `h1` font sizes within `section` and `article` in Firefox 4+, + * Safari 5, and Chrome. + */ + +h1 { + font-size: 2em; +} + +/* + * Addresses styling not present in IE 8/9, Safari 5, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/* + * Addresses styling not present in Safari 5 and Chrome. + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + + +/* + * Corrects font family set oddly in Safari 5 and Chrome. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers. + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * Sets consistent quote types. + */ + +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} + +/* + * Addresses inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/* + * Prevents `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 + ========================================================================== */ + +/* + * Removes border when inside `a` element in IE 8/9. + */ + +img { + border: 0; +} + +/* + * Corrects overflow displayed oddly in IE 9. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* ========================================================================== + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE 8/9 and Safari 5. + */ + +figure { + margin: 0; +} + +/* ========================================================================== + Forms + ========================================================================== */ + +/* + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects 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 */ +} + +/* + * 1. Corrects font family not being inherited in all browsers. + * 2. Corrects font size not being inherited in all browsers. + * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome + */ + +button, +input, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 2 */ + margin: 0; /* 3 */ +} + +/* + * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +button, +input { + line-height: normal; +} + +/* + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Corrects inability to style clickable `input` types in iOS. + * 3. Improves 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], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to `content-box` in IE 8/9. + * 2. Removes excess padding in IE 8/9. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/* + * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Addresses `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; +} + +/* + * Removes inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE 8/9. + * 2. Improves readability and alignment in all browsers. + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/* ========================================================================== + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/styles/style.css b/styles/style.css new file mode 100644 index 0000000..18878dc --- /dev/null +++ b/styles/style.css @@ -0,0 +1,363 @@ + +/* ========================================================================== + Basics + ========================================================================== */ + +body { + font-family: "Avenir", "Helvetica Neue", Helvetica, Arial, sans-serif; + background: #79a8ae; + color: #666; + font-size: 16px; + line-height: 1.5em; +} + +h1 { + color: #111; + margin: 0 0 12px 0; + font-size: 24px; + line-height: 1.5em; +} + +p { + margin: 0 0 10x 0; +} + +a { + color: #888; + text-decoration: none; + border-bottom: 1px solid #ccc; +} + +a:hover { + border-bottom-color: #888; +} + +body, +.overlay { + -webkit-perspective: 1000; + -webkit-perspective-origin-y: 25%; +} + +.body--ready { + /* Ideas + background: -webkit-linear-gradient(top, #e2b986 -10%, #241c35 140%); + background: -webkit-linear-gradient(top, #c97369 -40%, #241c35 130%); + background: -webkit-linear-gradient(top, #fac4c4 -10%, #606386 140%); + background: -webkit-linear-gradient(top, #519ab0 0%, #414A6D 110%); + background: -webkit-linear-gradient(top, rgb(129, 0, 170) 0%, rgb(43, 4, 114) 110%); + background: -webkit-linear-gradient(top, rgb(163, 235, 189) 0%, rgb(16, 93, 145) 110%); + background: -webkit-linear-gradient(top, rgb(165, 103, 189) 0%, rgb(75, 233, 214) 120%); + */ + + background: -webkit-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%); + background: -moz-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%); + background: -o-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%); + background: -ms-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%); + background: linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%); +} + +.body--ready .overlay { + -webkit-transition: -webkit-transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1); + -moz-transition: -moz-transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1); + -ms-transition: -ms-transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1); + -o-transition: -o-transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1); + transition: transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1); +} + +.body--ready .ui, +.body--ready .help { + display: block; +} + + +/* ========================================================================== + UI + ========================================================================== */ + +.ui { + display: none; + position: absolute; + left: 50%; + bottom: 5%; + width: 300px; + margin-left: -150px; +} + +.ui-input { + width: 100%; + height: 50px; + background: none; + font-size: 24px; + font-weight: bold; + color: #fff; + text-align: center; + border: none; + border-bottom: 2px solid white; +} + +.ui-input:focus { + outline: none; + border: none; + border-bottom: 2px solid white; +} + +.ui-return { + display: none; + position: absolute; + top: 20px; + right: 0; + padding: 3px 2px 0 2px; + font-size: 10px; + line-height: 10px; + color: #fff; + border: 1px solid #fff; +} + +.ui--enter .ui-return { + display: block; +} + +.ui--wide { + width: 76%; + margin-left: 12%; + left: 0; +} + +.ui--wide .ui-return { + right: -20px; +} + +.help { + display: none; + position: absolute; + top: 40px; + right: 40px; + width: 25px; + height: 25px; + text-align: center; + font-size: 13px; + line-height: 27px; + font-weight: bold; + cursor: pointer; + background: #fff; + color: #79a8ae; + opacity: .9; + + -webkit-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -moz-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -ms-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -o-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); +} + +.help:hover { + opacity: 1; +} + +.overlay { + position: absolute; + top: 50%; + left: 50%; + width: 550px; + height: 490px; + margin: -260px 0 0 -275px; + opacity: 0; + + -webkit-transform: rotateY(90deg); + -moz-transform: rotateY(90deg); + -ms-transform: rotateY(90deg); + -o-transform: rotateY(90deg); + transform: rotateY(90deg); +} + +.overlay--visible { + opacity: 1; + + -webkit-transform: rotateY(0); + -moz-transform: rotateY(0); + -ms-transform: rotateY(0); + -o-transform: rotateY(0); + transform: rotateY(0); +} + +.ui-share, +.ui-details { + opacity: .9; + background: #fff; + z-index: 2; +} + +.ui-details-content, +.ui-share-content { + padding: 100px 50px; +} + +.commands { + margin: 0; + padding: 0; + list-style: none; + cursor: pointer; +} + +.commands-item { + font-size: 12px; + line-height: 22px; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; + padding: 20px; + background: #fff; + margin-top: 1px; + color: #333; + opacity: .9; + + -webkit-transition: -webkit-transform 0.7s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -moz-transition: -moz-transform 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -ms-transition: -ms-transform 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -o-transition: -o-transform 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + transition: transform 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1), + opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); +} + +.commands-item--gap { + margin-top: 9px; +} + +.commands-item:hover { + opacity: 1; +} + +.commands-item:hover .commands-item-action { + background: #333; +} + +.commands-item a { + display: inline-block; +} + +.commands-item-mode { + display: inline-block; + margin-left: 3px; + font-style: italic; + color: #ccc; +} + +.commands-item-title { + display: inline-block; + width: 150px; +} + +.commands-item-info { + display: inline-block; + width: 300px; + font-size: 14px; + text-transform: none; + letter-spacing: 0; + font-weight: normal; + color: #aaa; +} + +.commands-item-action { + display: inline-block; + float: right; + margin-top: 3px; + text-transform: uppercase; + font-size: 10px; + line-height: 10px; + color: #fff; + background: #90c9d1; + padding: 5px 10px 4px 10px; + border-radius: 3px; +} + +.commands-item:first-child { + margin-top: 0; +} + +.twitter-share { + position: absolute; + top: 4px; + right: 20px; +} + + +/* ========================================================================== + Tabs + ========================================================================== */ + +.tabs-labels { + margin-bottom: 9px; +} + +.tabs-label { + display: inline-block; + background: #fff; + padding: 10px 20px; + font-size: 12px; + line-height: 22px; + font-weight: bold; + text-transform: uppercase; + letter-spacing: 1px; + color: #333; + opacity: .5; + cursor: pointer; + margin-right: 2px; + + -webkit-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -moz-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -ms-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + -o-transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); + transition: opacity 0.1s cubic-bezier(0.694, 0.0482, 0.335, 1); +} + +.tabs-label:hover { + opacity: .9; +} + +.tabs-label--active { + opacity: .9; +} + +.tabs-panel { + display: none; +} + +.tabs-panel--active { + display: block; +} + +.tab-panel { + position: absolute; + top: 0; + left: 0; + width: 100%; +} + + +/* ========================================================================== + Mobiles/tablets + ========================================================================== */ + +.touch .ui-input { + display: none; +} + +@media screen and (max-height: 600px) { + .ui-input { + color: #111; + border-color: #111; + } + + .ui-input:focus { + border-color: #111; + } +}