Compare commits

...
Sign in to create a new pull request.

622 commits

Author SHA1 Message Date
dependabot[bot]
b59950a2d1
Bump addressable from 2.5.2 to 2.8.0 (#1537)
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.5.2 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.5.2...addressable-2.8.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 13:01:34 +01:00
dependabot[bot]
dbed87f837
Bump karma from 2.0.5 to 6.3.16 (#1544)
Bumps [karma](https://github.com/karma-runner/karma) from 2.0.5 to 6.3.16.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v2.0.5...v6.3.16)

---
updated-dependencies:
- dependency-name: karma
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-08 13:01:12 +01:00
Dishebh Bhayana
171c422b99 Update searchsettings.component.css (#1511) 2020-01-15 17:07:00 +01:00
Dishebh Bhayana
de4400a338 Updating the info-box (#1507)
* Update infobox.component.html

* Update styles.css
2020-01-15 15:49:07 +01:00
Dishebh Bhayana
9a37baeac8 Fixed some broken url (#1504)
* Update url_configuration.ts

* Update url_configuration.ts
2020-01-15 15:45:27 +01:00
Dishebh Bhayana
5f71e1785e Fixed some broken URLs (#1500)
* Update dropdown.component.html

* Update index.component.html

* Update footer-navbar.component.html
2020-01-08 23:39:27 +01:00
subhahu
1443ae7fb9 Fixing the bug
Update index.html
Update index.html
Fixing the bug
Merge remote-tracking branch 'origin/patch-23' into patch-23
2019-05-08 03:32:21 +05:30
Sakshee Jain
9be83ea290 fix #1485: make nav-bar color similar to Google (#1489) 2019-04-05 20:40:12 +05:30
Sakshee Jain
d2998f57c0 fix #1486: fix security vulnerabilities in the project (#1487) 2019-04-05 15:36:07 +05:30
subhahu
93a5eff519 Removing unused imports (#1472) 2019-03-27 20:29:47 +05:30
Raj Vaibhav Dubey
f998f2e7a5 Dropdown component refactored (#1367)
Dropdown Component has been refactored and some minor UI fixes have been done.
Also tests have been added for the basic skeleton of the dropdown component.

Fixes #1359
2019-03-22 11:35:15 +08:00
subhahu
3f2b860e2d Adding Resource prioritization ( increasing light house performance ) (#1425)
Update index.html
Update index.html
2019-03-22 11:35:04 +08:00
Prabhu Pant
4cfb87c2e8 Fix Dockerfile and docker doc (#1427) 2019-03-22 11:34:55 +08:00
Akshita Agarwalla
6212b90d35 Made some grammatical changes
Fixed some grammatical errors, re-framed some sentences and corrected the spelling of YaCy
2019-03-13 09:40:30 +05:30
Samagra Gupta
fd57cb46c4 On help page when hover on close button cursor is pointer (#1435)
* On help page when hover on close button cursor is pointer

* changed indentation
2019-03-08 12:39:29 +05:30
subhahu
8953eebedf Adding test for increasing the coverage (#1458)
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
Update speechtotext.component.spec.ts
2019-03-08 12:37:52 +05:30
Divyanshu Raj Srivastava
e6a0c4072e Changed shape of search-bar to curve shape (#1462)
* Changed shape of search-bar to curve shape

* Improved the corner of search-bar
2019-02-28 21:05:49 +05:30
samagragupta
cbb9a18b9a Removed fixed navbar for mobile 2019-02-13 07:03:02 +05:30
samagragupta
d3298db70d Search bar is fixed when scrolled 2019-02-13 07:03:02 +05:30
neeraj3029
e9f66ddfc0 type changed 2019-02-13 06:57:27 +05:30
neeraj3029
5d7e77aa51 refactored 2019-02-13 06:57:03 +05:30
subhahu
763b627426 Adding a lang attribute to the html element 2019-02-13 06:56:16 +05:30
subhahu
ed4dc86c79 Update about.component.html 2019-02-13 06:55:23 +05:30
subhahu
f4a6fa3f67 Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
Update about.component.html
2019-02-13 06:55:23 +05:30
Sangatdas
99df7d6466 Update dropdown.css
To hide overflow along x-axis in the dropdown to give UI effect similar to that of Google Search
2019-02-13 06:53:12 +05:30
humble_D
5221a578dd Fixes #1317: Reducers and Actions cleaned (#1318) 2019-01-27 14:33:49 +01:00
humble_D
2691fd63e9 Fixes #1327: Contact componnet refactored (#1328) 2019-01-27 14:33:34 +01:00
Shreyansh Dwivedi
c6de390e12 Refactors Theme Component and added tests for coverage 2019-01-22 05:04:48 +05:30
subhahu
11c1b88dad Fixing not found result page
Update results.component.ts
Update results.component.ts
Update results.component.html
Update results.component.html
2019-01-22 04:57:18 +05:30
subhahu
74ab79e0e0 Adding rel="noopener" for fixing cross-link links 2019-01-22 04:56:26 +05:30
Valentin Bercaru
bd28928203 Fix #1388 : did you mean content is now clickable 2019-01-22 04:54:51 +05:30
Shreyansh Dwivedi
c2586a5bdb Added sidebar for Privacy page and tests to increase coverage 2019-01-14 21:43:52 +05:30
Shreyansh Dwivedi
005e042120 Added sidebar menu on Terms page and tests to increase coverage 2019-01-14 21:40:44 +05:30
subhahu
655259f389 Fixing the susper logo alignment and its container
Fixing alignment for all screen sizes
Fixing width of div
Update index.component.html
Update index.component.css
Update index.component.html
Update index.component.css
Update index.component.css
Update index.component.css
Update index.component.css
2019-01-14 21:34:45 +05:30
neeraj3029
60019dd3a7 depth field only accepts numbers 2019-01-14 21:33:05 +05:30
neeraj3029
b76b6dc625 cursor chnages to hover 2019-01-14 21:29:00 +05:30
Shreyansh Dwivedi
1b2fc9f636 Refactored Help Component and Added tests for increasing coverage 2019-01-10 01:25:41 +05:30
Shreyansh Dwivedi
181b848931 Added share link and made styles changes to infobox-share-popup (#1349) 2019-01-04 22:36:46 +01:00
subhahu
2df849dff2 fixing (#1351)
Update contact.component.ts
Update contact.component.html
2019-01-04 22:36:27 +01:00
Raj Vaibhav Dubey
4c4b598174 Tests Added (#1278)
* Tests Added

Some of the tests for the files have been added

* Tests Added

Some of the tests for the newly added functions have been added
2019-01-04 22:33:26 +01:00
Shreyansh Dwivedi
cee3bc03a4 Fixed UI of Advanced Search Page 2018-12-30 12:08:08 +05:30
Samagra Gupta
875c1e8f6b Analytics border lie inside the window (#1346) 2018-12-29 19:32:23 +05:30
Prateek Gogia
a0d1a93113 Fixed clear search issue #1230
Fixed double quotes to single quotes

Fixed reference for navbar html

Fixed spacing issues in constructor scope

Fixed clear search issue #1230
2018-12-28 01:12:04 +05:30
Shreyansh Dwivedi
40df5645a8 Made active theme button different from others 2018-12-26 18:53:11 +05:30
Shreyansh Dwivedi
c4cf69e031 changes title according to search 2018-12-22 07:41:57 +05:30
AakashMallik
efaa062310 Fixes #1322: About component refactored and cleaned up 2018-12-22 07:40:01 +05:30
Shreyansh Dwivedi
4da663f06b Added/Updated tests 2018-12-22 01:17:30 +05:30
AakashMallik
7efa87c353 Fixes #1310: Travis issue fixed 2018-12-20 04:30:03 +05:30
Prabhu Pant
59481bb3e8 Fixes #1242 corrections in crawl job page (#1243) 2018-12-18 14:03:15 +01:00
SHUBHAM KUMAR
c6901e142f Fix 1268 - Fix overlapping Help Section with footer (#1271)
* Updated Badgeyay's icon (#1203)

The badgeyay's icon on susper.com has been updated.

Fixes #1201

* "Commit "
2018-12-18 14:02:54 +01:00
subhahu
931eb2777b Fixing the hovering and visited color of links (#1293)
* Changing color of hovering , Visited link 

Ignoring the overriden of tags of hover and visited

* Changing color
2018-12-18 14:01:39 +01:00
subhahu
2de0a243b9 Fixing About page css (#1298) 2018-12-18 14:01:26 +01:00
humble_D
77af9f3c59 Fixse #1306: Removed redundant package delarations (#1307) 2018-12-18 14:01:05 +01:00
humble_D
e7bee72685 Fixes #1308: Refactor app.modules.ts (#1309) 2018-12-18 14:00:48 +01:00
humble_D
e8177c25da Loading animation added to result component (#1204) 2018-12-18 14:00:32 +01:00
Shreyansh Dwivedi
f548aea2a3 Fixed minor link and ui issues 2018-12-14 15:11:12 +05:30
subhahu
33d0ec5df4 Update README.md 2018-12-14 05:01:00 +05:30
subhahu
758a1c6f13 Susper logo Addition 2018-12-14 05:01:00 +05:30
rajvaibhavdubey
4ee488487a New Design of about component
The design of the about component has been changed

Fixes #1221
2018-12-12 23:34:53 +05:30
Shreyansh Dwivedi
8c909d3bb6 Fixed a typo in the contact form 2018-12-11 22:57:42 +05:30
Shreyansh Dwivedi
2b529f9c12 Fixed formatting of code 2018-12-11 22:57:42 +05:30
Shreyansh Dwivedi
fdbcf22c8e Fixed linting issue 2018-12-11 22:57:42 +05:30
Shreyansh Dwivedi
6bb8b139fd Fixed validations in Contact form 2018-12-11 22:57:42 +05:30
srihari unnikrishnan
4ba4009c42 fix footer 2018-12-09 03:48:34 +05:30
AakashMallik
c298117a56 Fixes #1267: Infobox share modal, styling fixes, redundancies removed 2018-12-09 03:35:18 +05:30
Saarthak Chaturvedi
b8e5e5f2de Style and link fixes on the Privacy and Terms page(#1261) 2018-12-08 20:14:54 +05:30
srihari unnikrishnan
75f57a80d2 add a share button to infobox
add a share button to infobox

fix indentation

add modal

add icons

fix linting errors

fix icons

fix travis build errors

fix whitespace

fix whitespace

format HTML

add borders

improve styles

increase padding
2018-12-06 21:08:24 +05:30
sk9331657@gmail.com
5a2abb6ad9 Fix 1179 - Add SUSI.AI for Magic Mirror, Yaydoc, Meilix and Phimp.me in Projects section under the menus icon in the navbar 2018-12-06 15:04:04 +05:30
Nitesh Kumar Niranjan
37c3ec2da3 Fixed Contact Form UI (#1257) 2018-12-06 15:01:28 +05:30
Saarthak Chaturvedi
34c3637918 (#1207)Added link to map address 2018-12-05 08:14:03 +05:30
Ryan10145
1f5b90c655 Add Flex Slider to Help Videos (#1234)
Switch

Lint
2018-11-30 10:26:21 +08:00
Sahil Saha
c67c5f129f Added YouTube link in the infobox (#1247) 2018-11-30 10:25:52 +08:00
Srihari
b8c7444ea5 add twitter links (#1236) 2018-11-24 15:11:23 +01:00
Supun Tharinda Edirisuriya
2456b60ade Fixed overlapping footer, #1216 (#1224) 2018-11-20 02:21:24 +01:00
SHUBHAM KUMAR
699b5f94a9 "Update the issue template " (#1219) 2018-11-20 02:20:32 +01:00
Mario Behling
99b6bae0fc
Revert "Center Settings and Tools Menu Items" (#1231)
* Revert "Fixes #1225 adding help in footer (#1226)"

This reverts commit a727075569.

* Revert "Fixes #1227 close button to the right (#1228)"

This reverts commit ae71a6a268.

* Revert "Center Settings and Tools Menu Items"

This reverts commit d20bbcd237.
2018-11-20 02:19:46 +01:00
Prabhu Pant
a727075569 Fixes #1225 adding help in footer (#1226) 2018-11-20 02:07:17 +01:00
Prabhu Pant
ae71a6a268 Fixes #1227 close button to the right (#1228) 2018-11-20 02:06:57 +01:00
ryan10145
d20bbcd237 Center Settings and Tools Menu Items 2018-11-19 22:52:43 +05:30
Prabhu Pant
464b7c6387 Fixes #956 content for help section 2018-11-18 12:43:14 +05:30
Raj Vaibhav Dubey
ce84043a42 Updated Badgeyay's icon (#1203)
The badgeyay's icon on susper.com has been updated.

Fixes #1201
2018-11-13 21:27:23 +05:30
ryan10145
8101ece81e Centered Voice Search Icon 2018-11-13 17:05:54 +05:30
Raj Vaibhav Dubey
77d19e5e08 Footer Fixed at bottom (#1205)
The footer bar of susper has been fixed at the bottom with the help of css.

Fixes #1199
2018-11-11 13:08:30 +05:30
Prabhu Pant
1432a231b0 Fixes #1192 correct about yacy link (#1193)
* Fixes #1192 correct about yacy link

* Add variable for yacy site
2018-10-27 00:42:47 +05:30
Prabhu Pant
24469e85ea Fixes #1189 nodejs docker installation 2018-10-26 20:11:47 +05:30
Nancy-Chauhan
3db3c788ed Fixes #1184 Updating Contact Page 2018-10-26 20:10:32 +05:30
rkpattnaik780
4f8ca181f9 Remove sort by date (#926) 2018-10-25 20:17:51 +05:30
Prabhu Pant
89a4c412a7 Fixes #1188 correction in docker doc 2018-10-24 23:22:24 +05:30
Prabhu Pant
9237c1fa03 Add space between banner image and heading 2018-10-24 12:20:00 +05:30
Nancy Chauhan
309dcc7a60 Add Mailto Tag in Contact Page (#1178)
* mailto tag added

* Update contact.component.html
2018-10-18 20:51:41 +02:00
shaharyarshamshi
2389ae594d Security Vulnerability in Gemfile.lock and package-lock.json #1176 (#1180)
* command to setup locally corrected

* security vulnerability corrected
2018-10-18 20:50:38 +02:00
Prabhu Pant
88f6ef10ff Remove $ sign 2018-10-09 14:42:33 +05:30
Prabhu Pant
33f32e8ecb Minor corrections 2018-10-09 14:42:33 +05:30
Prabhu Pant
941b0e150b Minor improvements in README.md 2018-10-09 14:42:33 +05:30
Prabhu Pant
311b505691 Readability improvements in README.md 2018-10-09 14:42:33 +05:30
Prabhu Pant
465819b506 Minor improvement in readability 2018-10-09 14:42:33 +05:30
Nancy-Chauhan
4902686d83 Phase name change to Angular Installation 2018-10-03 18:14:55 +05:30
Nancy-Chauhan
7e10226ea0 Remove useless Commands 2018-10-03 18:14:55 +05:30
shaharyar-shamshi
d31d8e309d command to setup locally corrected 2018-10-01 05:10:34 +05:30
Khyati Doshi
2cd7322f02 Fixes #1122 Next Button Location (#1146)
* Fixes #1122 Next Button Location

* Fixed movement of pagination

* Made Next and Previous text in line with page numbers
2018-08-23 01:09:52 +08:00
Praveen Ojha
ae941b0b94 Fixes #1161 #1163: Removed GitHub Links of Images and Added Badgeyay logo to service box. (#1165)
* Fixes #1161: Removed GitHub links of images

* Fixes #1163: Added Badgeyay Logo to the service box
2018-08-13 12:04:44 +02:00
Praveen Ojha
f83b3e084e Fixes #1162: Reverted color of 'More at Wikipedia' text (#1164) 2018-08-13 12:04:17 +02:00
Praveen Ojha
1dc367100a Fixes #1159: Removed hardcoded url from RSS and JSON links (#1160) 2018-08-09 08:54:54 +08:00
Praveen Ojha
8ea82321d4 Fixes #1157: Restored Node to version 6 in .travis.yml (#1158) 2018-08-09 08:54:46 +08:00
Praveen Ojha
bc53354169 Fixes #1153: Added RSS and JSON link (#1154)
* Fixes #1153: Added RSS and JSON link

* Made JSON and RSS links at bottom in large screens
2018-08-07 08:59:34 +08:00
Praveen Ojha
1ab06b6df8 Fixes #1132: Suggestion box do not move text content. (#1147)
* Fixes #1132: Suggestion box do not move text content

* Fixed overlap in some screen

* Fixed unalignment
2018-08-06 06:40:59 +08:00
Praveen Ojha
20ab0bba5b Fixes #1150: Added a link to JSON file of News Organisations (#1151)
* Fixes #1150: Added a link to JSON file of News Organisations

* Changed Message
2018-08-06 06:26:14 +08:00
div12gau
059a4325fd Fixes #1155: Corrected http to https in Readme file (#1156) 2018-08-06 00:56:52 +05:30
Praveen Ojha
cd21eb76f6 Fixes #1148: Reverted Changes to remove Wikipedia Logo from Infobox (#1149) 2018-08-04 09:38:10 +08:00
Praveen Ojha
b068362d09 Fixes #1124: Improved Sidebar Top providers and Top authors (#1145)
* Fixes #1124: Improved Sidebar Top providers and Top authors

* Clicking on link hides the lightbox

* Made Requested changes
2018-08-04 09:37:59 +08:00
Praveen Ojha
8d4cfc30cd Fixes #1141: Added wikipedia logo and improved design of infobox (#1142)
* Fixes #1141: Added wikipedia logo and improved design of infobox

* Decreased size of logo

* Added end of line in svg image
2018-08-03 09:29:52 +05:30
Praveen Ojha
cf44dd73d0 Fixes #1143: Aligned upper settings options and made bottom setting options similar to Google (#1144) 2018-08-03 09:29:52 +05:30
Praveen Ojha
ac639f966e Address #1117: Added URL for logos (#1140) 2018-08-03 09:29:52 +05:30
Praveen Ojha
573c49b375 Addresses #1136: News Tab show total results (#1139) 2018-08-03 09:29:52 +05:30
Praveen Ojha
9397914b21 Fixes #1137: Infobox do not overlap with navbar (#1138) 2018-08-03 09:29:52 +05:30
Praveen Ojha
3d7368a291 Fixes #1129: Fixed two tabs issue (#1133) 2018-08-03 09:29:52 +05:30
Praveen Ojha
3afd20ffe7 Fixes #1131: Analytics box do not overlap without infobox (#1134) 2018-08-03 09:29:52 +05:30
Praveen Ojha
1f37092aff Fixes #1116 #1098: Fixed appearance of images for different browsers and different screen sizes. (#1128) 2018-07-27 10:28:41 +02:00
Praveen Ojha
1444f86f97 Fixes #1121: Links and text length similar to Google (#1127) 2018-07-26 14:23:28 +02:00
Praveen Ojha
ee4ff991fb Fixes #1123: Fixed appearance of Intelligence box (#1126) 2018-07-26 14:22:41 +02:00
Praveen Ojha
1ca3e6e554 Fixes #1116: Fixed streching/squeezing of images (#1120) 2018-07-24 16:16:28 +02:00
Praveen Ojha
368fe9fe84 Fixes #1117: Fixed hardcoded URL (#1119)
* Fixes #1117: Fixed hardcoded URL

* Added field value pair for object.
2018-07-23 21:09:00 +02:00
Mario Behling
5ea923f2d0
Update README.md 2018-07-22 13:55:04 +02:00
Praveen Ojha
92ffeed9cc Fixes #1114: Implemented small description for each query (#1115) 2018-07-21 09:48:44 +02:00
Praveen Ojha
aac4376f85 Fixes #1111 and #1112: Sentences do not terminate in infobox (#1113) 2018-07-20 00:32:38 +02:00
Khyati Doshi
3942e9d5eb updating pagination bar fixes #1104 (#1110) 2018-07-19 17:00:47 +05:30
Praveen Ojha
38cd989d02 Fixes #1107: Fixed CORS error by providing a check for empty query (#1108) 2018-07-18 20:54:40 +02:00
Praveen Ojha
627ab4f626 Fixes #1105: Active tabs do not behave as links (#1106) 2018-07-17 23:05:52 +02:00
Praveen Ojha
562e4a6fb2 Fixes #1000: Different results open in newtab without flickering (#1103) 2018-07-16 18:23:09 +02:00
Praveen Ojha
742ce8f2a7 Fixes #862: Removed Github icon as it was pointing to same link as code icon (#1102) 2018-07-16 18:22:17 +02:00
Praveen Ojha
b3e7c9e4b3 Fixes #1098: Fixed overlapping heading (#1101) 2018-07-15 13:12:07 +02:00
Praveen Ojha
94c38b6a56 Fixes #1096: Infobox now shows results for multi word query (#1097) 2018-07-14 12:26:01 +02:00
Praveen Ojha
46e2723ca5 Fixes #1094: Fixed errors in console (#1095) 2018-07-14 12:25:45 +02:00
Praveen Ojha
152232f99d Fixes #778: Voice Output now working as earlier. (#1093) 2018-07-13 08:06:54 +02:00
Praveen Ojha
3e44c2ac94 Fixes #1091: Added Tools Tab below screen width 496px (#1092)
* Fixes #1091: Added Tools Tab below screen width 496px

* Fixed display of dropdown

* Maintained ratio of images in mobile
2018-07-13 08:06:31 +02:00
Praveen Ojha
d7b438069d
Fixes #1089:Updated Project's Readme (#1090) 2018-07-10 19:04:26 +05:30
Praveen Ojha
2337bb43c5 Fixes #1066: Used a simple light box to display charts (#1088) 2018-07-09 17:31:53 +02:00
Praveen Ojha
55ed160abd
Fixes #1086: Updated Travis to build from development branch (#1087) 2018-07-09 16:08:25 +05:30
Praveen Ojha
62bb9c801f
Fixes #1082: Made toggle analytics button similar to Google (#1083) 2018-07-08 00:32:02 +05:30
Praveen Ojha
543370105b Addresses #1066: Implemented a button to Show and Hide Charts (#1081) 2018-07-07 10:18:07 +02:00
Praveen Ojha
c71ec9da7f Fixes #1064: Sidebar appears on small and mobile screens (#1080)
* Fixes #1064: Sidebar appears on small and mobile screens

* Fixed Alignment and position of statistics box
2018-07-07 10:16:57 +02:00
Khyati Doshi
941b780662 Fixes #1063: Match the Top gray bar to Google (#1074)
* changed the color of top gray bar

* fixing the alignment issue of #1074
2018-07-07 10:16:31 +02:00
Praveen Ojha
a70e524fe2 Fixes #1060: Hide infobox if no results are present from a query (#1079) 2018-07-07 10:16:00 +02:00
Praveen Ojha
d91d2f3e34 Fixes #1065: Removed boldness and rounded corner from numbers in sidebar (#1078) 2018-07-05 19:36:40 +02:00
Praveen Ojha
b35f05b5fb Fixes #1061:Fixed height of pictures on contact and about page (#1077) 2018-07-05 19:34:52 +02:00
Praveen Ojha
84e42beec2 Fixes #1059: All images now are within infobox (#1076) 2018-07-05 19:34:29 +02:00
Praveen Ojha
c6c4984ba8 Fixes #1062: Sidebar stays next to main area on the left in larger resolutions (#1075) 2018-07-03 19:53:34 +02:00
Praveen Ojha
314dd22ace Fixes #1059: Fixed overlapping images in infobox (#1071) 2018-07-03 19:51:17 +02:00
Bhavesh Anand
3c23da45a2 Update Node Version (#1073) 2018-07-03 08:15:32 +05:30
Praveen Ojha
151cad7a1f Fixes #1069:Fixed security vulnerability in hapijs/hoek (#1070) 2018-07-03 00:48:28 +02:00
Praveen Ojha
2902432f26 Fixes #1067:Fixed Flickering of susper.com (#1068) 2018-07-03 00:48:16 +02:00
Praveen Ojha
6a3a50a61a
Modifying node version in package.json and removed Yarn (#1058) 2018-07-01 17:34:26 +05:30
praveenojha3
7a1562164f Resolving Travis errors 2 2018-07-01 17:01:33 +05:30
praveenojha3
a6c8628485 Resolving Travis errors 2018-07-01 16:51:03 +05:30
praveenojha3
9c84c685b4 Created heroku deployment 2018-07-01 16:36:57 +05:30
Praveen Ojha
be34963e16 Fixes #1054: Restored Video tab (#1055) 2018-06-29 16:08:57 +02:00
Praveen Ojha
3323046fba Fixes #1051:Fixed distortion in UI by hiding Tools tab in smaller devices (#1052) 2018-06-29 12:04:43 +02:00
Praveen Ojha
17e6bd1fa9 Fixes #933: Search Bar is visible while typing in mobile. (#1053) 2018-06-29 12:04:30 +02:00
Praveen Ojha
3bbd002c06 Fixes #448:Created a list of News Organisation in a JSON file and used it to show results in News Tab (#1049) 2018-06-28 13:48:32 +02:00
Praveen Ojha
537041beb0 Fixes #1000: Different result sections can be opened in New Tab (#1043) 2018-06-25 00:34:05 +02:00
Praveen Ojha
f42e68aaf0 Reverted Changes to fix deployment issue (#1044) 2018-06-24 18:13:41 +02:00
Praveen Ojha
f4a091efa1 Fixes #1041:Removed unnecessary and unused variables (#1042) 2018-06-22 21:30:16 +02:00
Praveen Ojha
530ba21e4c Fixes #1039: Updated Node version and Parallelize independent process in Travis (#1040) 2018-06-22 00:22:22 +02:00
Praveen Ojha
a046061cc4 Addresses #1025: Added some tests for Infobox Component (#1032) 2018-06-22 00:22:02 +02:00
Praveen Ojha
f8e8866769 Fixes #1037:No error occurs in pr_deploy.sh in Travis (#1038)
Fixes #1037: No error occurs in pr_deploy.sh in Travis
2018-06-21 05:23:43 +02:00
Praveen Ojha
1062dffd85 Fixes #1035: Corrected description of gh-pages branch in readme.md file (#1036) 2018-06-21 05:23:06 +02:00
Valentin Bercaru
799d7c3bdf Fixed the links of results from news tab (#1034) 2018-06-18 20:29:21 +02:00
Praveen Ojha
2344f8c873 Adresses #1025:Added test for Knowledge API (#1030) 2018-06-17 05:05:59 +02:00
Praveen Ojha
f8614c3bb8 Fixes #1028:Infobox now changes color according to Theme (#1029) 2018-06-17 05:05:27 +02:00
Praveen Ojha
bb06cca850 Basic News Tab (#1023) 2018-06-17 05:04:53 +02:00
Praveen Ojha
0969cc81a2 Fixes 1026:Implemented State Management For Images in Infobox (#1027) 2018-06-14 18:33:41 +02:00
Praveen Ojha
70d096ba9e Fixes #181 and #904: Added Image in Infobox (#1024) 2018-06-14 13:06:23 +08:00
Praveen Ojha
25fe54ce9a Fixes #1021:Created an effect for KnowledgeAPI (#1022) 2018-06-11 06:47:33 +08:00
Praveen Ojha
c3af2a56b4 Fixes #1018:Removed some security vulnerability from the project (#1019) 2018-06-11 06:47:05 +08:00
Praveen Ojha
a7eea34b65 Fixes #1016 #1014 and #1013:Fixed UI of Infobox and Analytics box and made it responsive for all screen sizes. (#1017) 2018-06-11 06:46:45 +08:00
Praveen Ojha
7de60cf919 Fixes #797:Used Wikipedia API to implement infobox. (#1011) 2018-06-02 10:54:06 +08:00
Praveen Ojha
02dc30ad01 Parent #797:Removed Infobox that used DBpedia API (#1008) 2018-06-01 04:51:14 +08:00
Praveen Ojha
e109ff4259 Fixes #1005:Optimized app and upgraded node version in travis (#1006) 2018-06-01 02:48:12 +08:00
Praveen Ojha
9a15060b84 Fixes #1003:Added package-lock.json file to the project (#1004) 2018-06-01 02:48:03 +08:00
Praveen Ojha
d446d9985c Fixes #1001: Added error handling and retry service (#1002) 2018-06-01 02:47:53 +08:00
Praveen Ojha
de8afee996 Fixes #997:Added Yarn as Dependency Manager along with NPM (#998) 2018-06-01 02:47:43 +08:00
Praveen Ojha
b7274fec01 Fixes #995:Reverted some unnecessary inert changes. (#996) 2018-05-21 23:33:54 +02:00
Praveen Ojha
ee396d5554 Fixes #959:Suggestion box closes on clicking outside of it. (#969) 2018-05-12 16:28:46 +02:00
Valentin Bercaru
49be8c7732 Added some test buttons to theme component (#983)
* Added dependencies to Gemfile.lock

* Added some test buttons to theme component
2018-05-12 16:28:33 +02:00
Sathira Umesh
897197a6d2 Made the footer positioned ath the bootom of the page in contact,about and searchsetting pages (#953) 2018-05-12 16:28:06 +02:00
Valentin Bercaru
2c7a0f1d3a Fixed #954 : Related search does not overlap with analytics section (#972) 2018-05-12 16:27:19 +02:00
Valentin Bercaru
81b692bf3c Fixed #950 : result content is kept when typing in search-bar (#973)
* Fixed #950 : result content is kept when typing in search-bar

* Fixed #950 : result content is kept when typing in search-bar

* Fixed #950 : result content is kept when typing in search-bar
2018-05-12 16:26:56 +02:00
Sathira Umesh
1e74ecd175 Added the previous arrow symbol to the paginaton bar using cahracter enchoding (#981) 2018-05-12 16:26:31 +02:00
Sathira Umesh
0e184eebf0 Made all the cahnges in pr 986 976 and 971 into one (#989) 2018-05-12 16:25:58 +02:00
Praveen Ojha
8d19f8fa7d Updated Gemfile.lock (#984)
* Updated Gemfile.lock

* Fixes #876 :Added a link to SUSPER source code on SUSPER logo on homepage.
2018-04-30 19:44:15 +08:00
Praveen Ojha
81fcf1474e Fixed #932:loklak Logo redirects to loklak.org (#979) 2018-04-09 12:28:37 +08:00
Sathira Umesh
11a9beb7c7 prevented from appending the same filter two times when clicked to the seach query (#978) 2018-04-09 12:21:39 +08:00
Sathira Umesh
3923cce798 closed the css style statments and corrected the spelling mistake associated with the font family name (#965) 2018-04-02 02:11:55 +08:00
Sathira Umesh
2d17e2c8b0 Terminated the string literals appropriately (#941) 2018-04-02 02:10:50 +08:00
Akalanka Gamage
7257c2db62 hover effect for the search bar (#949) 2018-04-02 02:10:31 +08:00
Praveen Ojha
84c967d647 Fixes #934:Video Search shows date and description (#935) 2018-04-02 02:10:01 +08:00
Sathira Umesh
1e4eb70b00 corrected the syntax error (#958) 2018-04-02 02:09:46 +08:00
Valentin Bercaru
f57a89ff38 Fixed #634 : no empty images are displayed (#943) 2018-04-02 02:09:27 +08:00
Sathira Umesh
02a9253b85 made the images in the contact and about page correctly responsive (#925)
Removed the image as a background and added just as an image and made the image correctly continously responsive
2018-04-02 02:09:03 +08:00
Valentin Bercaru
01ee7a352e Fixed #843 and #914 : Added a more complex night theme (#929) 2018-04-02 02:08:41 +08:00
Saurabh Shubham
4933d1acf5 Fixed some grammatical mistakes. (#907) 2018-04-02 02:08:12 +08:00
Sathira Umesh
218fd2acb9 Fixes:# 967 prevented the link from analytics being re appende again and again to… (#968)
* prvented the link from anlaytics  being reappended again and again to query

* rebuild
2018-04-02 02:07:22 +08:00
Hashan Malawana
8b6bbe9d98 added Bootsrap to the technology stack in readme.md (#966) 2018-04-02 02:06:03 +08:00
Praveen Ojha
f0a6f5c2a7 Fixes #945:Reverted the changes made in Footer. (#947) 2018-03-18 13:53:18 +01:00
Valentin Bercaru
97c4ef961e Fixed #892: sort by date append once (/date) (#912) 2018-03-07 10:29:37 +01:00
rupav jain
6873eadb41 Fix typos. (#906)
should be 'Same-origin policy' instead of 'same orgin policy', and space between 'of' & 'the'.

Typos fix
2018-03-07 10:28:51 +01:00
Valentin Bercaru
39c2ca68db Fixed #699 : removed whitespaces from mobile version (#915) 2018-03-07 10:28:36 +01:00
Valentin Bercaru
ad6eff95e5 Fixed #917 : video link redirects you fine (#918)
* Fixed #917 : video link redirects you fine

* Fixed #917 : video link redirects you fine

* Fixed #917 : video link redirects you fine

* Fixed #917 : video link redirects you fine

* Update results.component.html

* Update results.component.html

* Fixed #920 for video tab : link color modifies according to the selected theme

* Fixed #920 : auto-correct colors

* Fixed #920 : auto-correct colors

* Removed auto-correct colors

* Update element theme service from public to private from auto-correct

* Updated to previous version

* Fixed #920 : auto-correct colors

* Setted member ThemeService from private to public
2018-03-07 10:28:06 +01:00
Sathira Umesh
fb34143df5 modified the README.md file,Added the npm install after going into the cloned folder step when deploying localy (#919) 2018-03-07 10:27:46 +01:00
Sathira Umesh
9620757ca1 Fixes:#921 Fixed the issue on positioning the footer in appropriately with respective to different devices (#922)
* modified the README.md file,Added the npm install after going into the cloned folder  step when deploying localy

* solved the issue on the positioning of footer in appropriately with respect to different  devices

* Made some updates to the issue of postioning the footer and resolved a code error
2018-03-07 10:27:22 +01:00
Piyush Raj
009e98d3e1 Fixes #858 : Integrated Twitter to Susper.com, Enhanced meta-data, did SEO optimization (#859) 2018-03-07 10:26:56 +01:00
Raghav Jajodia
0041e9a3c9 Fix design for Advanced Search modal (#896) 2018-01-29 14:56:59 +05:30
Yash Kumar Verma
bf8dd4a330 Deployment link added to PR template : Fixes #851 (#852)
* Deployment link added to PR template : Fixes #851

Deployment link is now added to the pull request template itself.

* Fixes #834 : Refactored 'deploy.sh' (#856)
2018-01-28 22:24:03 +05:30
Subramanyam Makam
ed338e00da fixed bug in fetching results from intelligence component (#846) 2018-01-28 22:05:11 +05:30
Pradeep Yarlagadda
5db5a79341 Fixed the 'next' button of the pagination bar (#841) 2018-01-28 21:48:04 +05:30
Praveen Ojha
1c2c580dd2 Fixes #897: Changed color of links in statsbox and infobox according to theme (#902) 2018-01-28 21:31:48 +05:30
Parth
20f7c03b36 Addresses#898 Increases PWA audit (#900) 2018-01-28 21:20:35 +05:30
Naveen Rajan
427b183fcf Added Meta Content (#850) 2018-01-20 14:38:19 +01:00
samyakbvs
1c80dffb14 Improve code quality (#868) 2018-01-20 14:03:59 +01:00
Naveen Rajan
799a182eb2 Update .editorconfig (#882) 2018-01-20 14:03:35 +01:00
samyakbvs
1d0c41ce1c Fixed #879: Added a sister project (#884)
* Added PSlab

* Added image

* Revised image
2018-01-20 14:03:00 +01:00
Abishek V Ashok
1e7c06c3c2 Makes footer responsive (#890)
The footer was unresponsive in smaller screens, make it work in all
screen sizes and allows the dropdown that follows to be visible by
making changes to the css file.

Fixes #836
2018-01-20 14:02:37 +01:00
Yash Kumar Verma
4886de034d Added documentation to travis.yml (#869) 2018-01-15 12:42:44 +05:30
Pradeep Yarlagadda
f90e7ac113 Storing the theme preference of the user in localstorage (#857)
* Storing the theme preference of the user in localstorage

* Fixed the lint error
2018-01-13 13:02:10 +05:30
Piyush Raj
a63000b656 Fixes #834 : Refactored 'deploy.sh' (#856) 2018-01-04 12:34:53 +05:30
Naveen Rajan
ee84ae4e4b Fixes #847: Added Documentation regarding Contributions Best Practices (#848) 2017-12-29 21:01:01 +05:30
Abishek V Ashok
64a4d8b8ab src/app/about/about.component.html: Formats code (#835)
Formats and intends code in `src/app/about.component.html`.
Consistently intends the code with 2 white spaces.

Signed-off-by: Abishek V Ashok
2017-12-16 16:09:49 +05:30
Aashutosh Rathi
4b232fe6b2 Fixes:#822: Correction in README (#824) 2017-12-13 00:03:21 +01:00
Harshit Prasad
eb98f48530 Fixes #806 and #677: Intelligence component now works after switch to HTTPS (#823) 2017-12-13 00:03:00 +01:00
Harshit Prasad
ca8262d8cd Fixes #827: Auto deploy to surge on every pull request. (#828)
Slight modifications

Correction in deployment link

Adds documentation for the surge deployment
2017-12-13 00:02:47 +01:00
Bhavesh Anand
59b59ebba1 Fixes #830 Minor bug: Links not working for terms and privacy routes (#831) 2017-12-13 00:02:31 +01:00
Akshay Shrimali
b0223ed852 Added privacy page and linked it to the footer (#826) 2017-11-24 09:39:08 +01:00
Parth
5f737fdeb2 Fixes#820 updation of logo (#821) 2017-11-18 22:11:38 +01:00
Aashutosh Rathi
92582ca83f Fixes #814: search query is not selectable (#818) 2017-11-18 22:08:46 +01:00
Bhavesh Anand
a8bdd8342d Fixes #760 Make documentation to Susper using Yaydoc (#810) 2017-11-13 22:13:51 +01:00
Vivek Iyer
828474ffc6 Fixes issue #769 (#811) 2017-11-13 14:21:42 +01:00
Mario Behling
7bc37251d5
Create LICENSE (#809) 2017-11-05 01:05:47 +01:00
Bhavesh Anand
1d77a27fa6 Add CONTRIBUTING.md and Modify templates (#799) 2017-11-02 17:42:02 +01:00
Bhavesh Anand
a8f038691e Initial commit for Docker image (#801) 2017-11-02 17:14:13 +01:00
Bhavesh Anand
e5df2365c3 Added heroku deployment (#803) 2017-11-01 20:57:12 +05:30
Shubham Mangal
22156b3954 Fixes #776 : Firefox Search Engine Installation (#793) 2017-10-28 04:09:54 +02:00
Vivek Iyer
cc1f8aef6f Made UI improvements in Advanced Search (#795)
Label is aligned with the text-field; All other changes have been undone

Squashed the commits
2017-10-28 04:06:55 +02:00
Shubham Mangal
1fcf28ec87 Fixes: Empty Spaces around no results text (#792) 2017-10-23 19:33:40 +02:00
Ajay NS
b180404a60 Fixes positioning of no results text in image search (#785)
* Fix no results text positioning for image search

* Fix line height issue in mobile screens

* Fix responsiveness issue
2017-10-21 15:44:13 +02:00
Shubham Mangal
e66b72c0e9 Fixes #789 : Hiding card in case of no search results (#790) 2017-10-12 22:03:36 +02:00
Ajay NS
01fa3dfb58 Fix: Correct positioning of Susper logo in navbar (#780)
* Fix navbar-logo image positioning

* Add mobile responsiveness to logo

* Reindent stylesheets

* Rollback and correct indentation
2017-10-09 18:51:20 +02:00
Jan Lindgren
567f74f12f Improve dropdown menu UI (#782)
* Improve dropdown menu UI

* remove !important
2017-10-09 18:50:28 +02:00
Shubham Mangal
d5b414617c Fixes #786 Current Page Redirection to Previous Page (#787) 2017-10-09 18:49:33 +02:00
Harshit Prasad
1e25956e49 Fixes #722: Typing on start page search box moves search bar upwards (#788)
Minor change in the code

Fix search-setting bug

Changes in boolean
2017-10-09 18:49:14 +02:00
Shubham Mangal
ca5463bad9 fix: #759 search results from browser's address bar (#775) 2017-10-03 08:30:05 +02:00
Shubham Mangal
9f1f47178d fix: #783 Travis CI build failed (#784) 2017-10-02 21:26:34 +02:00
Shubham Mangal
68293c9df9 fix: mic not working on https (#774) 2017-09-27 23:28:21 +02:00
Vaibhav Singh
ce167a4871 Fixes #773: Added https to scripts (#773) 2017-09-26 00:03:21 +02:00
Harshit Prasad
ed255527d0 Addresses #761: Improvements in organizing the code (#762)
Fix <p> element error

Remove lint errors

Minor changes in indentation
2017-09-04 18:43:02 +05:30
Harshit Prasad
51d20049f5 Addresses #761: Organizing code properly for services and results component (#763) 2017-09-04 18:10:24 +05:30
Soumya Vadlamannati
891e31a671 Fixes #765, scroll feature errors fixed (#766) 2017-09-04 17:39:24 +05:30
Harshit Prasad
5fb5953e6e Fixes #749: Pagination bar changed for small devices (#755)
Design similar to Google

Minor changes in pagination structure
2017-08-31 00:38:26 +02:00
Soumya Vadlamannati
8075552259 Fixes #756, menu icon visible in all devices (#757) 2017-08-22 00:41:42 +02:00
Soumya Vadlamannati
b6aad7f22b Fixes #750, drop down box for mobiles (#754)
Hiding related searches

Changing button style
2017-08-21 15:00:51 +02:00
Nikhil Rayaprolu
45fb50728d Fixes #747 text to speech works now (#748)
* speech to text works now

* cancelling previous voices

* changes to remove bug

* recent changes

* tested on different systems

* removed lint errors
2017-08-18 11:53:33 +02:00
Nikhil Rayaprolu
2e791f6f2c Addresses #733 sidebar is showing links (#746)
* Addresses #733 sidebar not showing links

* showing status bar at bottom

* showing status bar at bottom
2017-08-18 11:43:55 +02:00
Harshit Prasad
1f105197a9 Fixes #751: require chart.js is not defined (#753)
Added Chart.bundle.min.js
2017-08-16 21:27:22 +02:00
Soumya Vadlamannati
c277125d21 Fixes #742 Infobox and Analytics box changed for chrome only (#743) 2017-08-15 11:04:07 +02:00
Harshit Prasad
c68e8476de Addresses #729: Dropdown menu has sufficient space to right side (#734)
Fix responsiveness issue of dropdown menu

Fix dropdown responsiveness on smaller screen size

Remove unecessary code

Change in screen size
2017-08-15 08:21:08 +02:00
Soumya Vadlamannati
eba4e5e016 Fixes #740 Customization shifted from Tools drop-down to settings (#744) 2017-08-13 22:06:53 +02:00
Soumya Vadlamannati
2e1c8b0131 Fixes #739, Intelligence component position fixed (#741) 2017-08-13 18:05:17 +05:30
Soumya Vadlamannati
1f95311e64 Addresses #729, changes color of analytics box, results feed font size (#736) 2017-08-13 12:09:39 +02:00
Parth
5dbc279f89 Update README.md (#738)
* Update README.md

* Update README.md
2017-08-12 15:43:17 +02:00
Soumya Vadlamannati
a2dac3992c Fixes #725, Aligning the Analytics box at sizes less than 1034 px (#731)
Responsive for all changes and changed protocol message

Made responsive with widths following market leader
2017-08-12 15:42:26 +02:00
Harshit Prasad
a51ca4569a Fixes #730: Instant predictions settings shows correct results per page (#735) 2017-08-12 12:24:20 +02:00
Harshit Prasad
494d57730e Fixes #711: Removes flickering of text-animation (#727) 2017-08-10 20:36:26 +02:00
Harshit Prasad
36bd18158e Fixes #716: Made dropdown menu responsive for screen size 768px (#726) 2017-08-10 17:03:12 +02:00
Nikhil Rayaprolu
c66ff9849a Addresses #635 implemented statistic infobox similar to loklak (#704)
* Addresses #635 implemented statistic infobox similar to loklak

* fixed lint errors

* requested changes made

* requested changes made

* added graphs to statsbox

* made requested changes

* requested changes made

* statistics is changed to analytics

* changed the font size of analytics

* removed all extra modules in tests

* rearranged positions
2017-08-08 20:54:57 +02:00
Harshit Prasad
b09e6bc58e Made footer responsive for small screen size-320px (#715)
Fix footer-navbar for screen size greater than 320px

Fix minor issues
2017-08-08 20:53:48 +02:00
Soumya Vadlamannati
c6e30426c5 Fixes #633, auto correct aligned for index page, search bar design changed (#723)
Fixed linting errors
2017-08-08 20:55:08 +05:30
Soumya Vadlamannati
561e6efc94 Fixes #718, margin for autocorrect and results fixed (#719) 2017-08-07 21:13:48 +02:00
Nikhil Rayaprolu
0b55edf917 Fixes #714 results are displayed according to date or context rating (#721) 2017-08-07 18:04:01 +02:00
Soumya Vadlamannati
7ebad2fecb Fixes #683, susper now responsive on screen greater than 1920px (#720) 2017-08-07 07:26:38 +02:00
Soumya Vadlamannati
c5cb5cb040 Fixes #705, Makes intelligence component responsive (#708) 2017-08-06 09:46:28 +02:00
Soumya Vadlamannati
9d687a848d Fixes #683, Susper now responsive on large screens, cleans css (#688)
* Fixes #683, Susper now responsive on large screens

Fixes infobox position

Fixes related searches position

* Infobox and related searches changes

Making footer stick to the bottom
2017-08-05 19:17:52 +02:00
Harshit Prasad
63a73e2b60 Addresses #647: Make speech UI responsive on homepage (#706)
Remove commented code

Centre position of microphone
2017-08-04 13:20:34 +02:00
Soumya Vadlamannati
10202f6aa5 Fixes #702 removes auto correct messages from image section (#707)
Adds space to bottom
2017-08-04 09:10:15 +02:00
Harshit Prasad
5b50c6f63e Addresses #680: Search icon appears for small mobile screen (#703)
Fixed for medium mobile screen size
2017-08-03 08:56:54 +02:00
Soumya Vadlamannati
bab70c4f43 Fixing #700, Related Searches heading doesnot display if there are no results (#701)
fixing position
2017-08-02 10:27:52 +02:00
Harshit Prasad
4217056eee Fixes #695: Meta tags for general purpose information (#696)
Change titles dynamically
2017-08-01 20:06:22 +02:00
Harshit Prasad
59cbb6eb38 Fixes #689: Arrange services in a separate folder (#694) 2017-08-01 14:11:05 +02:00
Nikhil Rayaprolu
0441a0c617 Fixes #661 results per page working now (#690)
* Fixes #661 results per page working now

* resolved travis errors
2017-08-01 08:14:01 +02:00
Nikhil Rayaprolu
2cc2aca758 Fixes #676 infinite scroll feature implemented for images (#692)
* Fixes #676 infinite scroll feature implemented for images

* resolve conflicts
2017-08-01 07:47:08 +02:00
Harshit Prasad
3624d504c4 Fixes #589: Text-to-Speech feature (#673)
TTS-2

TTS-3

Done feature

Speak when results are loaded

async data

TTS-working

Remove unnecessary code

Add provider

Resolve errors

Resolve testing errors

Add provider in results component

Add Observable <mode> in store

Speech mode setup

SpeechMode activate

Add speechMode

Resolve travis errors

Remove unecessary code

Pause utterance

Cancel utterance

Remove cancel()
2017-07-29 01:03:30 +02:00
Nikhil Rayaprolu
4ea8ddcb9f Addresses #147 implementation of image viewer (#687)
* Images responsive

Expand feature

Expandable area-2

* Addresses #147 implementation of image viewer

* minor changes

* lint errors

* removed console errors  and center aligned image
2017-07-27 00:35:22 +02:00
Soumya Vadlamannati
92a8c850e2 Fixes #681, eliminates white space on top at mobile-phone widths (#682) 2017-07-23 11:14:15 +02:00
Soumya Vadlamannati
7c5b9585e6 Fixes #669 Result page made responsive (#674)
Making results responsive

Fixing pagination bar position

made tools dropdown responsive until 290px

Fixes spacing

Dropdown changes

More changes
2017-07-21 22:01:30 +02:00
Soumya Vadlamannati
6f7734545f Fixes #678, hides infobox, if no results are present (#679) 2017-07-21 21:58:58 +02:00
Nikhil Rayaprolu
68e12a7c2c Fixes #671 Getting back to results page works (#675) 2017-07-20 21:41:01 +02:00
Harshit Prasad
e3740e4ad8 Fixes #664: Longer suggestions in related searches (#667)
Rearrange the suggestions
2017-07-20 15:51:23 +02:00
Soumya Vadlamannati
0a0a88be5b Fixes #662, Makes drop down responsive on results and index page (#670)
second changes

few more changes at 819px to 767 px
2017-07-19 19:53:23 +02:00
Harshit Prasad
9d029fd968 Fixes #648: Listening...message added to speech UI (#663)
Applied transition effect

Add animation delay

Fix timer
2017-07-18 16:12:49 +05:30
Soumya Vadlamannati
8f74b5a2cf Fixes #665, fixes menu box position, removes duplicate code (#666) 2017-07-18 11:21:28 +02:00
Soumya Vadlamannati
a564ed73c1 Makes search bar and drop-down responsive, cleans css (#659)
Changes to dropdown in index page
2017-07-17 21:21:25 +02:00
Soumya Vadlamannati
1c871c2ea1 Fixes #657, Result count and Auto correct messages positioned properly at all sizes (#658)
made changes in results component, code clean up
2017-07-17 16:57:32 +02:00
Nikhil Rayaprolu
f9af644a76 Fixes #646 deactivated voice search when completed (#654)
* Fixes #646 deactivated voice search when completed

* fixing lint errors

* smalll fixes to cover all cases
2017-07-17 14:31:12 +02:00
Soumya Vadlamannati
24042eb7e4 Fixes Travis failing (#660) 2017-07-17 15:50:17 +05:30
Harshit Prasad
8dced8ed10 Fixes #649: Throws audio level message when user does not speak. (#653)
Solve lint errors

Add microphone color as grey when disabled

Fix index page rendering
2017-07-16 16:05:00 +02:00
Nikhil Rayaprolu
b3bde950a6 Fixes #645 enhancement of UI in resultspage (#655) 2017-07-16 16:04:35 +02:00
Soumya Vadlamannati
b9b7fecbb3 Fixes #637, search button fixed at all dimensions(big and small) (#650)
Removing wrong test

Removing lint errors
2017-07-15 22:48:34 +02:00
Soumya Vadlamannati
d7172dfd94 Fixes #640, Result count and auto correct positions swapped (#641)
Minor change
2017-07-15 09:27:02 +05:30
Harshit Prasad
73a9a1992b Fixes #627: Make results feed responsive (#639) 2017-07-14 17:09:37 +02:00
Soumya Vadlamannati
d317a46cb1 Fixes #642, Autocorrect message hidden when empty (#643) 2017-07-14 12:34:58 +05:30
Soumya Vadlamannati
a459d68f42 Fixes #604 suggestion box aligned properly at all sizes (#636)
* Fixes #604 suggestion box aligned properly at all sizes

Minor change

Adjusting sug box slightly

solving build errors

Solving more build errors

* Solving build errors
2017-07-13 22:21:10 +05:30
Nikhil Rayaprolu
0209802c43 Fixes #589 speech UI changed (#624)
* Fixes #589 speech UI changed

* fixing travis errors

* added UI for results page
2017-07-12 23:56:09 +02:00
Soumya Vadlamannati
a1697c8efc Addresses #3, added new tests for Search Settings and Related Searches component (#575)
Solved linting errors

Requested changes

Few more changes
2017-07-12 10:34:52 +02:00
Nikhil Rayaprolu
c2a78f0664 Fixes #593 now morethan one query doesn't make susper slower (#631)
* Fixes #593 now morethan one query doesn't make susper slower

* intelligence to optimised
2017-07-12 10:34:22 +02:00
Soumya Vadlamannati
b2d4cb6d83 Fixes #625, search bar and tabs position adjusted accordingly (#626)
Responsive tabs added

Fixed minor error

Minor change

Few more changes

Small change
2017-07-12 13:01:26 +05:30
Soumya Vadlamannati
49fa06eb68 Fixes #623, Intelligence is displayed only on the first page (#628) 2017-07-12 12:09:55 +05:30
Nikhil Rayaprolu
bc3e883591 Fixes #595 now user can get back to home page (#632) 2017-07-10 19:53:07 +02:00
Harshit Prasad
4b946e0369 Fixes #594: Query is empty/erased then susper hides intelligence (#613)
Fix query issue

Hides intelligence component

Susper hides intelligence now
2017-07-10 19:52:04 +02:00
Harshit Prasad
494ff0a6fc Fixes #607: Increase search bar input area (#621)
Add typescript code

Added typescript code and removed document method
2017-07-10 19:51:07 +02:00
Harshit Prasad
b8a09e0191 Fixes #609: Improve auto correct UI (#616)
Fix alignment of Did you mean

Fix mobile responsiveness issue
2017-07-10 19:49:54 +02:00
Soumya Vadlamannati
d1699cedf5 Fixes #629, Info box is displayed only on the first page (#630) 2017-07-10 16:13:35 +05:30
Soumya Vadlamannati
a9fb4c50d7 Fixes #611, Auto correct shown in the first page only (#615)
Minor enhancements

Removing console messages

Made code more efficient
2017-07-10 00:36:22 +02:00
Harshit Prasad
c889eed995 Fixes #612: Proper alignment in videos section (#619) 2017-07-08 21:51:31 +05:30
Soumya Vadlamannati
0cfae52507 Fixes #617, question mark in the query is not shown as incorrect (#618)
Enhancements

lint errors
2017-07-08 14:07:27 +02:00
Soumya Vadlamannati
7d050977df Fixes #610, autocorrect not displayed when wrong query is removed (#614) 2017-07-08 12:22:40 +02:00
Nikhil Rayaprolu
444970f1e0 Fixes #596 now susper works faster (#597)
* Fixes #596 now susper works better

* removing search tests
2017-07-08 11:42:57 +02:00
Harshit Prasad
1179ac12ec Fixes #507: Changes in width and height of search bar similar to market leader (#599) 2017-07-08 11:41:30 +02:00
Soumya Vadlamannati
4bb359115a Fixes #600, Repositions text and images to center highlight boxes for dropdowns (#601) 2017-07-08 11:36:34 +02:00
Soumya Vadlamannati
83cfa391dd Fixes #128, Adds auto correct feature (#586)
Imported intelligence module

Solving ng test errors
2017-07-07 09:22:21 +05:30
Soumya Vadlamannati
ed895e9d03 Fixes #602, Fixes dropdown positioning for all sizes (#603)
Changes for index component
2017-07-07 09:15:19 +05:30
Nikhil Rayaprolu
a808a88aa6 Fixes #572 Travis is fixed (#598) 2017-07-06 15:16:09 +02:00
Harshit Prasad
4b0389f66d Fixes #591: Dropdown menu appearing on homepage (#592)
Align search bar at center

correction in alignments

Fix responsiveness
2017-07-06 03:11:35 +02:00
Harshit Prasad
920b85391e Addresses #3: Added tests for Search Service (#590)
resolve errors
2017-07-06 03:11:05 +02:00
Nikhil Rayaprolu
11fdbcb4b1 Addresses #3 Added tests for Infobox component and Search-bar component (#581)
* Addresses #3: Added tests for Infobox component and Search-bar component

* Address #3 Added tests for Infobox component and Search-bar component
2017-07-04 01:13:56 +08:00
Soumya Vadlamannati
ea3c7e68d2 Fixes #383, Results are displayed in the same tab as before (#582) 2017-07-03 16:34:59 +05:30
Harshit Prasad
e2347b4d20 Fixes #577: Error in angular.cli.json file (#578) 2017-07-01 19:50:54 +05:30
Harshit Prasad
a3af9fe204 Fixes #566: Solve form submission error (#567) 2017-06-29 16:38:10 +05:30
Soumya Vadlamannati
778c72d328 Addresses #3, wrong test causing problems, wrong component was compiled (#570)
Small change
2017-06-29 16:29:40 +05:30
Harshit Prasad
7b8794b5ce Addresses #3 Testing using MockBackend for KnowledgeAPI service (#561)
Solve testing issues

Add more tests to solve errors

Fix MockConnection issue

Changes in mock.ts

Resolved error due to http

Remove unnecessary comments
2017-06-29 12:51:33 +05:30
Soumya Vadlamannati
eb8b36a95f Adding basic tests for results component (#560)
Additional tests

More changes

Solved linting errors
2017-06-29 12:35:23 +05:30
Nikhil Rayaprolu
c279618d55 Fixes #512 Fixed travis errors (#574) 2017-06-29 07:02:24 +08:00
Nikhil Rayaprolu
7e81a0aa8b Fixes #572 fixed travis error (#573)
* Fixes #572 fixed travis error

* change the alt to susper
2017-06-29 04:20:52 +08:00
Nikhil Rayaprolu
f6b9b7c746 Fixes #564 now susper answers questions (#569)
* Fixes #564 now susper answers questions

* made requested changes
2017-06-29 04:20:29 +08:00
Nikhil Rayaprolu
a3788b8303 Fixes #527 now search button is removed similar to google (#540)
* Fixes #527 now search button is removed similar to google

* small type removed

* center the logo
2017-06-29 00:27:54 +08:00
Soumya Vadlamannati
790f1ff051 Fixes #562, changes link-styling on hover and active similar to market leader (#563) 2017-06-28 15:12:49 +05:30
Harshit Prasad
dcea087922 Fixes #365: Add steps in documentation (#557)
Remove useless information

Remove unwanted code
2017-06-27 16:18:02 +05:30
Harshit Prasad
47c19dae20 Fixes #548 Flat UI for pagination bar (#549) 2017-06-27 16:11:54 +05:30
Soumya Vadlamannati
8f498d5d72 Fixes #554, coming back to home page shows no query (#556)
Requested change of adding extra call
2017-06-26 20:30:50 +05:30
Harshit Prasad
8be0f8ee2b Fixes #558 Removal of unnecessary code (#559) 2017-06-26 16:37:09 +08:00
Harshit Prasad
858a939ce0 Fixes #490 Related searches size changed and aligned (#547)
Fix skew issue
2017-06-26 16:35:41 +08:00
Soumya Vadlamannati
790fce4f8e Fixed #552, added a tip to top of drop down (#553) 2017-06-25 08:35:50 +08:00
Soumya Vadlamannati
116383796c Fixes #550, Images and vidoes are working now (#551)
small changes
2017-06-24 10:14:36 +05:30
Nikhil Rayaprolu
2188e2725f Fixes implement option to customise the result count (#546) 2017-06-23 15:21:14 +08:00
Nikhil Rayaprolu
612249cc24 Fixes #528 now whenever 'never show instant results' works in all situations (#544) 2017-06-23 06:50:22 +08:00
Nikhil Rayaprolu
63bdfa78b1 Fixes #542 related searches being shown in all times (#543) 2017-06-23 06:49:49 +08:00
Nikhil Rayaprolu
f7c449b066 Fixes 539 Dbpedia results are displayed now (#541) 2017-06-23 06:49:17 +08:00
Soumya Vadlamannati
88002b96e8 Fixes #533, sets page number to zero on new query (#535) 2017-06-22 19:37:17 +05:30
Harshit Prasad
694d2461ab Fixes #507 Match the width and height of search box of market leader and related areas (#526)
Fix codacy error

Fix dimensions of search bar

Did changes in alignment

Corrected alignments
2017-06-22 19:27:18 +08:00
Harshit Prasad
5f8beaed80 Fixes #509: Improve dropdown menu (#537)
Adjust dropdown-menu on homepage

Add colorful icons

Add fossasia logo

Finishes dropdown menu

Resolve test issues

Solve issues related to test

Removed tests which are not working

Fixing lint issues

Solve requested changes
2017-06-22 19:25:47 +08:00
Soumya Vadlamannati
f1126aa361 Fixes #532, no extra pages shown at end of pagination bar (#538) 2017-06-22 02:55:42 +08:00
Nikhil Rayaprolu
adab0db84a Fixes #512 crawl button design enhanced (#519)
* Fixes #512 crawl button design enhanced

minor changes

* margin increased at buttom
2017-06-21 03:59:10 +08:00
Soumya Vadlamannati
613edb57f0 Fixes #515, footer sticks to bottom of the page (#531) 2017-06-20 23:54:15 +05:30
Soumya Vadlamannati
dbf9f1f458 Fixes #521, design bugs in crawl page removed (#522)
Minor changes

adding ngModel params in .ts file

minor change

Minor optimization
2017-06-20 23:38:41 +05:30
Soumya Vadlamannati
6e83a5793a Fixes #516, footer navbar enhanced and decluttered (#529)
Aligning drop down contents
2017-06-20 23:31:50 +05:30
Soumya Vadlamannati
bba0356ee8 Fixes #523,Pagination bar now appears (#530) 2017-06-20 23:24:24 +05:30
Soumya Vadlamannati
d6d973b9d4 Fixes #514, Tools dropdown made to resemble dropdown in Google (#520) 2017-06-20 20:32:06 +08:00
Nikhil Rayaprolu
af90b021ba Fixes #513 search results are being displayed now (#518) 2017-06-20 20:27:52 +08:00
Soumya Vadlamannati
ebf09b5674 Fixes #483, Added settings tab with a drop down (#492)
Responsiveness added

changes in footer-navbar

Slight changes

Changes to copy Google style
2017-06-19 14:22:28 +05:30
Harshit Prasad
3a1cdc50f7 Fixes #508 Implement Voice Search for Susper (Chrome only) (#510)
Add default language en-US

Fix testing issues

Fix minor error

Changes in microphone property

Add microphone.png

Fixes conlicts issue
2017-06-19 14:16:09 +05:30
Mario Behling
22af8a1b55 Substitute references to Angular branch 2017-06-19 09:02:36 +02:00
Nikhil Rayaprolu
324efb8316 Fixes #504 query removed on user is back to front page (#505) 2017-06-19 14:55:17 +08:00
Nikhil Rayaprolu
b7a30af416 Addresses #413 crawl start UI implemented (#415)
* Ref to issue #413 crawl start UI implemented

* add crawljob in footer

* removing codacy errors

* errors removed

* added authentication

* final fixes

* changed localhost to yacy
2017-06-19 13:56:53 +08:00
Nikhil Rayaprolu
6dd587b48b Fixes #487 configured codecov to avoid failing PRs (#511) 2017-06-19 06:20:31 +08:00
Nikhil Rayaprolu
a39529f22f Fixes #495 about results message is shown (#496)
* Fixes #495 about results message is shown

* responsively designed
2017-06-19 06:20:00 +08:00
Nikhil Rayaprolu
df967c80f2 Fixes #479 Instant results turning on and off implemented (#503)
* Fixes #479 instant results on and off implemented

* slight modification

* removed error

* lint errors removed
2017-06-19 06:18:08 +08:00
Nikhil Rayaprolu
652cc8bc52 Fixes #371 now only page is rendered instead of one page (#502) 2017-06-17 21:15:48 +08:00
Soumya Vadlamannati
5ba96a7b6c Fixes #498, displays appropriate message when no results are displayed (#506) 2017-06-17 18:24:19 +05:30
Nikhil Rayaprolu
dab6dc0493 Fixes #493 infobox appearing even on refresh (#494) 2017-06-17 03:08:07 +08:00
Soumya Vadlamannati
28844bf556 Fixes #482, changes design of search settings (#488)
More design enhancements
2017-06-16 22:37:24 +08:00
Nikhil Rayaprolu
11919cbc4d Fixes #475 now old results are removed on query change (#481)
* Fixes #479 now old results are removed on query change

* removed failing test
2017-06-16 02:33:06 +08:00
Harshit Prasad
fe557d7caa Fixes #487 Avoid failing of PRs if code coverage decreases (#489)
Decrease code coverage for testing purpose

Revert back changes-1

Fixes #487 Avoid failing of PRs if code coverage decreases

Decrease code coverage for testing purpose

Revert back changes-1

Revert back changes-2

Checking coverage

Checking coverage-2

Add new changes in codecov.yml

Changes done which works

Changes done which are working
2017-06-15 10:22:19 -07:00
Nikhil Rayaprolu
1728c7fcf2 Fixes #485 results are removed when the query is quickly removed (#486) 2017-06-15 22:09:49 +08:00
Soumya Vadlamannati
e439929eb6 Fixes #463, Changes pagination bar in Susper to resemble market leader (#470)
fixed minor error

Hiding prev and next

Fixing codacy issues

Minor error
2017-06-15 09:57:49 +05:30
Soumya Vadlamannati
059e358831 Fixes #417, makes cursor default between tabs and changes margin and padding (#477)
Solving codacy issues
2017-06-14 20:49:37 +05:30
Soumya Vadlamannati
073827b3ad Fixes #462, width and position of Infobox more like market leader (#469)
Responsive design

Made more responsive
2017-06-13 23:14:32 +08:00
Nikhil Rayaprolu
3d37ba1459 Fixes #466 infobox appears now when search is fired (#474) 2017-06-13 20:17:00 +05:30
Nikhil Rayaprolu
1aac079c64 Address #270 basic component for search settings implemented (#451)
* Addresses #270 basic component for search  settings

* errors removed

* errors removed
2017-06-13 19:06:38 +05:30
Soumya Vadlamannati
fcba9b1020 Fixes #449, related searches are displayed independent of infobox status , for all queries (#473)
removed comments
2017-06-13 06:54:01 +08:00
Soumya Vadlamannati
103832aed4 Fixes #457, blinking cursor hidden on hitting enter (#465) 2017-06-10 15:36:29 +08:00
Soumya Vadlamannati
1921093972 Fixes #464, Images are being displayed (#467) 2017-06-10 06:12:58 +08:00
Soumya Vadlamannati
af9f08c34e Fixes #460, Video search provides video results (#468) 2017-06-10 06:12:36 +08:00
Soumya Vadlamannati
e5efee772b Fixes #455, advanced search is properly linked (#456) 2017-06-09 07:14:04 +08:00
Soumya Vadlamannati
c57fe67a1b Fixes #458, changes link styling in About page (#461) 2017-06-09 07:12:18 +08:00
Harshit Prasad
06754e1902 Addresses #3 Added tests for FooterNavbar Component and Navbar Component (#452) 2017-06-09 07:08:44 +08:00
Harshit Prasad
1b6229b147 Fixes #250: Update branch to get correct Codecov reports (#453) 2017-06-09 04:45:50 +08:00
Nikhil Rayaprolu
926559322c Fixes #447 searches related is showing query now (#450) 2017-06-09 04:44:47 +08:00
Harshit Prasad
f1961588d1 Fixes #432 Remove language search option from Advanced search page (#435)
Fixes #432 Remove language search option from Advanced search page

New changes in language search option

Fix minor issue
2017-06-09 00:53:33 +05:30
Harshit Prasad
011952c46a Addresses #3 Added tests for About Component (#444)
Fix testing errors

Remove one test suite (not necessary)
2017-06-08 19:53:19 +08:00
Harshit Prasad
b78a39e8f3 Addresses #3 Added tests for Terms Component and Contact Component (#445)
Tests for terms component

Fix lint errors

Addresses #3 Added tests for About Component

Fix testing errors

Remove About Component

Remove one test suite
2017-06-08 19:35:41 +08:00
Soumya Vadlamannati
d15afb3ac6 Fixes #443, advanced search changed more like market leader (#446) 2017-06-08 15:29:35 +08:00
Nikhil Rayaprolu
92f99f176f Fixes #371 now each character input doesn't render a new page. (#440)
* Fixes #428 now dropdown is hidden there is no query observable call

* now showing suggestions for query<2

* Fixes #371 now each character doesn't render a page

* removed empty else
2017-06-08 15:25:02 +08:00
Soumya Vadlamannati
91850895b3 Fixes #437, Hovering over search options doesnot change cursor to pointer (#439) 2017-06-08 12:11:13 +05:30
Soumya Vadlamannati
7e92440b8c Fixes #434, Improves front-end for advanced search (#442)
A small change due to padding
2017-06-08 05:06:21 +08:00
Nikhil Rayaprolu
a69e1370dc Fixes #422, errors in console fixed for Knowledge effect results (#441)
* Fixes #422, errors in console fixed for Knowledge effect results

* lint errors fixed
2017-06-08 05:05:49 +08:00
Nikhil Rayaprolu
088111b592 Fixes #427 when there are no search suggestions drop down is hidden (#430)
* Fixes #427 when there are no search suggestions

* removed autocomplete

* removed query
2017-06-08 00:51:26 +05:30
Nikhil Rayaprolu
47df6673b4 Fixes #428 now dropdown is hidden when there is query<2 (#429)
* Fixes #428 now dropdown is hidden there is no query observable call

* now showing suggestions for query<2
2017-06-07 18:22:40 +05:30
Nikhil Rayaprolu
2b19887ddd Fixes #417 repeated lines removed (#418) 2017-06-07 14:04:57 +05:30
Nikhil Rayaprolu
ce15af2b6d Fixes #419 Now only one call is made to DBpedia (#426) 2017-06-07 13:58:55 +05:30
Harshit Prasad
bb302e7b42 Fixes #433 Improve the font-size of headings and sub-contents in Advanced Search page (#436) 2017-06-07 13:28:40 +05:30
Harshit Prasad
68cb035166 Fixes #385 Match the results width exact with search bar's width (#431)
Fix minor issue of responsiveness
2017-06-07 13:15:18 +05:30
Soumya Vadlamannati
62b430b921 Addresses #269, Implements more themes for Susper (#425)
Fixed linting errors
2017-06-06 21:29:34 +05:30
Soumya Vadlamannati
ff954759a8 Fixes #422, errors in console fixed for KnowLedge API service results (#423) 2017-06-06 20:58:36 +05:30
Soumya Vadlamannati
09aa7956fa Fixes #410 changes auto complete API to Yacy from dbpedia prefix API (#424)
More modifications

Addresses #410, changing API from dbPedia to Yacy

Fixed errors

Small change

Linting error

Limiting number of results to 5
2017-06-06 20:33:31 +05:30
Harshit Prasad
940d27d0f0 Testing Codecov (#420)
Space issue solved
2017-06-06 11:01:59 +05:30
Harshit Prasad
c46d663dc4 Fixes #381 Match alignment of text similar to market leader (#416) 2017-06-05 22:07:02 +05:30
Soumya Vadlamannati
f1761c9c1b Fixes #408, pagination bar works as expected and every page link points to its own page (#409)
Made changes to function and first four pages

Rectifying an error
2017-06-05 15:31:57 +05:30
Soumya Vadlamannati
b3a074b82d Fixes #378, Search bar at center of page for all sizes, made responsive (#412)
Minor changes pushing to right
2017-06-05 15:51:36 +08:00
Nikhil Rayaprolu
43a3ed8264 Fixes #390 changed 'showing results' to 'About' (#400) 2017-06-04 14:19:34 +05:30
Nikhil Rayaprolu
cff10afa06 Fixes #388 , #389 , #404 , #395 now pagination bar is displayed even when user directly enters search query on URL bar (#405)
* Fixes #404 now pagination bar is displayed

* removing lint errors
2017-06-03 12:10:10 +02:00
Soumya Vadlamannati
5a53abf364 Fixes #370, no dropdowns are shown unless they have autocomplete suggestions (#407) 2017-06-02 22:40:40 +05:30
Harshit Prasad
f825194cf4 Fixes #379 Update package.json file (#380)
Update packages

Update all the packages in package.json
2017-06-02 13:50:16 +05:30
Soumya Vadlamannati
f58e23ad8e Fixes #383, every tab shows its own result (#403) 2017-06-01 23:56:45 +05:30
Harshit Prasad
57ca96aa37 Fixes #401 Add template for issue and pull request (#402) 2017-06-01 23:14:52 +05:30
Soumya Vadlamannati
fb8efadeb7 Fixes #393, The search-result page will be loaded only on entering query (#399)
Fixing linting errors
2017-06-01 16:23:02 +05:30
Harshit Prasad
81975404f1 Fixes #382 Clicking on search icon shows the surrounding of the icon (#394) 2017-05-31 23:48:00 +05:30
Harshit Prasad
99329c4199 Fixes #391 Remove 'showing result' from images section (#396) 2017-05-31 23:32:10 +05:30
Nikhil Rayaprolu
8e2b03b3c5 Fixes #376 now index page is stable (#377) 2017-05-30 19:45:41 +02:00
Nikhil Rayaprolu
3aff5d83e7 Fixes #374 now stylesheets are not referenced from components (#375) 2017-05-30 19:45:15 +02:00
Nikhil Rayaprolu
c2fc7abab2 Fixes #372 now href links don't load whole application (#373)
* Fixes #372 now links doesn't load whole application

* extra links modified
2017-05-30 19:42:46 +02:00
Soumya Vadlamannati
899ae3cb38 Fixes #358 partially, autocomplete disappears once user presses enter (#369) 2017-05-30 17:36:14 +05:30
Soumya Vadlamannati
fef378fc4a Fixes #359, Suggestion box activated only once keyup in query box occurs (#368)
Fixed linting errors
2017-05-29 19:29:32 +02:00
Soumya Vadlamannati
2e26c48688 Fixes #366, Browser autocomplete disabled for search box (#367) 2017-05-29 19:29:15 +02:00
Harshit Prasad
81bfd36642 Addresses #269 Theme feature for Susper (#360)
Implement theme feature for Susper

Add Theme services and components
2017-05-29 19:28:53 +02:00
Chinmaya B
afccd5cff7 Please read this angular-cli package is renamed and so the updated command is updated in documentation (#329)
please refer for more details (https://stackoverflow.com/a/42452061)

Readme Update correction in typing mistake

Changes in Susper description, typo correction

Please read this angular-cli package is renamed and so the updated command is updated in documentation
please refer for more details (https://stackoverflow.com/a/42452061)

Readme Update correction in typing mistake

Changes in Susper description, typo correction
2017-05-29 19:28:19 +02:00
Harshit Prasad
797ab48b79 Fixes #361 Design the front end for suggestion box (#363) 2017-05-28 11:00:05 +05:30
Harshit Prasad
dab9fef548 Fixes #314 Remove 'Add Search provider' feature from Chrome (#362) 2017-05-28 10:46:59 +05:30
Nikhil Rayaprolu
be08dd8b01 Fixes #354 now all three related searches, infobox and the results change at the same time (#355)
* Fixes #354 now both infobox and results change at a time

making similar changes to the related search bar

* updating infobox component after merge

* updating related search after merge
2017-05-27 20:37:40 +05:30
Nikhil Rayaprolu
67cb01f751 Fixes #343 removing the related search results when there is no query (#345) 2017-05-27 17:24:58 +05:30
Soumya Vadlamannati
0dcd5d74e5 Addresses #121, uses dbpedia prefix searching to implement autocomplete (#350)
Fixed linting errors

Fixing errors with ng test
2017-05-27 13:54:06 +05:30
Nikhil Rayaprolu
685ab9181b Fixes #334 removes previous and next button on single page (#341)
removing the testcase failed
2017-05-27 12:13:50 +05:30
Nikhil Rayaprolu
be05db3621 Fixes #342 removing the search text now makes the infobox dissapear (#344) 2017-05-27 12:04:51 +05:30
Nikhil Rayaprolu
79c978590d Fixes #356 now no results are shown when there is no response from dbpedia (#357) 2017-05-27 10:29:41 +05:30
Soumya Vadlamannati
f26d7d91d3 Fixes #346, Related searches enhanced to show all relevant links (#347)
Linting errors
2017-05-26 17:59:25 +05:30
Harshit Prasad
4062a24951 Fixes #351 Hide infobox for smaller screens (#352) 2017-05-26 11:52:21 +05:30
Nikhil Rayaprolu
6195533a72 Fixes #335 infobox gives irrelevant information at times (#340) 2017-05-25 13:39:37 +05:30
Nikhil Rayaprolu
b306a8e154 Fixes #338 related searches being displayed before the actual search results are displayed (#339) 2017-05-25 13:06:10 +05:30
Soumya Vadlamannati
64054fab49 Fixes #336, The keyword appears without refresh (#337) 2017-05-25 12:00:04 +05:30
Soumya Vadlamannati
49f50e6d83 Fixes #188, Related searches implemented similar to market leader (#332)
Fixing errors by ng test

fixing further build errors
2017-05-24 21:54:52 +05:30
Soumya Vadlamannati
84e60bde3b Fixes #325, Email address linked and minimum 100 words implemented (#327) 2017-05-23 09:44:12 +05:30
Soumya Vadlamannati
9f151d6dd2 Fixes #321, Text now aligned properly for all links in menu (#328) 2017-05-23 09:38:21 +05:30
Soumya Vadlamannati
87e9e749bf Fixes #316, Padding for contact form link removed (#317)
Removed padding-right as suggested
2017-05-23 09:25:34 +05:30
Soumya Vadlamannati
9dc3635949 Fixes #324, Phone number accepts positive numbers only (#326)
Fixed linting errors
2017-05-22 16:58:10 +05:30
Harshit Prasad
24e2ee9f08 Fixes #319 Search type buttons aligned with search-bar (#323)
Search menu buttons alignment fix

Fixed alignment of results
2017-05-22 11:22:35 +05:30
Harshit Prasad
96617a2d93 Fixes #320 Search option buttons touches bottom (#322) 2017-05-22 10:32:38 +05:30
Nikhil Rayaprolu
f81bbf0af4 Fixes #311 2873bf22c3 (#315) 2017-05-22 09:26:50 +05:30
Harshit Prasad
8b19a3f678 Fixes #298 Design the info box similar to market leader (#299)
Remove infobox from css

Revert back to Related Searches
2017-05-22 09:21:45 +05:30
Nikhil Rayaprolu
65b0c4bbc5 Fixes #310 on hover the contact link should show as a link (#313)
* Fixes #310 on hover the contact link should show as a link

* color change
2017-05-21 21:06:40 +05:30
Nikhil Rayaprolu
2a331753e1 Fixes #304 Contact form on Susper doesnot work (#312)
* Fixes #304 Contact form on Susper doesnot work

* updating the lenghth and removing the error
2017-05-21 19:46:32 +05:30
Nikhil Rayaprolu
9469416933 Fixes #305 Links in infobox gives 404 error (#309) 2017-05-21 19:38:52 +05:30
Soumya Vadlamannati
6d0eaecd16 Refer #250, Fixed wrong link for codecov in README.md (#307) 2017-05-21 17:32:46 +05:30
Harshit Prasad
2873bf22c3 Fixes #114 Video section loading .mp4 files (#301) 2017-05-21 08:09:48 +05:30
Chinmaya B
b61718f914 Fixes #303 : Removing Step 3 from 'How to Deploy'
* Correction in 'How to Deploy'

'How to Deploy' -> 'Running on Localhost' -> Step 3 correction `git checkout master` which was previously `git checkout angular`.

* Removed Step 3

No reason for its existence https://github.com/fossasia/susper.com/pull/302

* Readme Update correction in typing mistake

Changes in Susper description, typo correction
2017-05-21 08:04:15 +05:30
Soumya Vadlamannati
5a9cc33b14 Fixes #291, Initial gap between images removed, image display made similar to market leader (#297) 2017-05-20 14:12:23 +05:30
Harshit Prasad
c7fc5d9e03 Fixes #279 Searching a keyword will not show loading (#300)
Fix a bug
2017-05-20 08:33:10 +05:30
Nikhil Rayaprolu
4f95351cfd Fixes issue #289 Pagination error (#295) 2017-05-19 22:03:11 +02:00
Soumya Vadlamannati
e1a3f981cd Changes codecov, temporarily removes Docker, to first let codecov work without it (#292) 2017-05-19 22:02:46 +02:00
Soumya Vadlamannati
7ddef0a1de Fixes #293,Fixed Infobox Position (#294)
Removing Infobox for images and videos
2017-05-19 18:26:51 +05:30
Nikhil Rayaprolu
d300f98749 Fixes #181 get an info box on right (#288) 2017-05-17 07:12:42 +02:00
Harshit Prasad
41b553e1ad Fixes #280 Align results page link titles (#283)
Fix link-alignment for videos

Fix line-height and responsiveness issues
2017-05-16 19:20:02 +05:30
Nikhil Rayaprolu
96df2b2207 Fixes #254 Pagination bar of images not working (#276) 2017-05-16 15:15:25 +02:00
Soumya Vadlamannati
05e5cf4d0c Fixes #286, Top nav bar in advanced search resembles other pages (#287) 2017-05-16 15:12:54 +02:00
Soumya Vadlamannati
eb70741107 Fixes #284, Updates links in menu (#285) 2017-05-16 15:11:58 +02:00
Soumya Vadlamannati
9b702984d6 Fixes #281, Minimum height of the body is fixed, to push footer down (#282) 2017-05-16 15:10:10 +02:00
Harshit Prasad
0310e8456d Fixes #257 Match the position of Tools following the market leader (#262)
* Fixes #257 Match the position of Tools following the market leader

Revert back package.json

Fix responsiveness issues

Fix dropdown menu

* Resolve conflicts

* Resolved conflicts
2017-05-14 06:05:55 +02:00
Harshit Prasad
5d70319e49 Fixes #261 Alignment of rendered images (#273)
Partial fix of images with broken link

Fix cropping of images
2017-05-14 06:03:24 +02:00
Soumya Vadlamannati
49f32fb06c Fixes #272, Makes About, Contact and Terms page more responsive (#275) 2017-05-14 05:57:17 +02:00
Nikhil Rayaprolu
b4a8650b52 Fixes #244 Fix the footer-navbar for the results section. (#278) 2017-05-13 10:56:47 +05:30
Soumya Vadlamannati
c26e471619 Fixes #268, Rendered images cover the white space on the sides (#274) 2017-05-12 19:53:11 +05:30
Soumya Vadlamannati
d786e9a938 Fixes #249, The top menu is made responsive for mobile view, like loklak (#266) 2017-05-12 08:55:46 +02:00
Nikhil Rayaprolu
d9dd8db191 Fixes #256 Results of actual search shown (#271) 2017-05-12 02:40:46 +02:00
Soumya Vadlamannati
e05fd46a0d Fixes #260, Top navigation bar, sticks to the top of the screen without white space (#265)
Arranges responsive widths in ascending order and minimizes them
2017-05-11 18:01:46 +05:30
Soumya Vadlamannati
3a590e1269 Fixes #258, Prevents search bar overlap with logo (#259)
Further modification of search-bar position
2017-05-11 10:04:05 +02:00
Nikhil Rayaprolu
0c32bf71a1 In reference to issue #126 search option enhancement (#255)
* initial component

lint errors

changing css

tests resolved

lint errors

alignments setting

changing color of advanced search

* button change
2017-05-10 21:32:28 +05:30
Soumya Vadlamannati
fb1e5c19a0 Fixes #252, Images are now clickable (#253) 2017-05-10 21:09:19 +05:30
Harshit Prasad
cce3b7f8bd Partially Fixes #182 Logo and search bar are centered (#247)
Fix responsiveness issue
2017-05-10 17:11:38 +05:30
Harshit Prasad
a6aa8f823c Fixes #244 Footer-navbar position for results section (#246) 2017-05-10 10:43:44 +02:00
Harshit Prasad
b07d100008 Fixes #205 Add top menu links on right on contact and terms page (#240)
Fix responsiveness issue and add routerLink
2017-05-10 09:07:41 +02:00
Soumya Vadlamannati
adc76a22c6 Fixes #214, Install box overlap with search bar avoided for all screen sizes (#248) 2017-05-10 08:44:08 +02:00
Harshit Prasad
d1890737a5 Fixes #239 Overlap issue of search bar and footer navbar (#245)
Remove HEAD
2017-05-10 08:43:18 +02:00
Soumya Vadlamannati
5829c439ad Fixes #238, Rectifies Search Bar Position (#243) 2017-05-09 20:03:18 +05:30
Soumya Vadlamannati
30ec82e357 Revert "Fixes #239 z-index changed in search-bar on homepage (#241)" (#242)
This reverts commit 4ebf52d326.
2017-05-09 17:10:31 +05:30
Harshit Prasad
4ebf52d326 Fixes #239 z-index changed in search-bar on homepage (#241) 2017-05-09 16:33:34 +05:30
Harshit Prasad
069f5a20fb Fixes #183 Add susper as standard search engine to Chrome (#220)
Change in address for default.js

Delete scripts folder

Remove default.js link
2017-05-09 10:46:25 +02:00
Soumya Vadlamannati
a2ef8d7348 Fixes #182, Search bar responsive to all window widths (#236) 2017-05-08 22:46:10 +02:00
Nikhil Rayaprolu
904f49470c Fixes #116 advanced search not working properly (#225) 2017-05-08 19:51:07 +02:00
Soumya Vadlamannati
b2f470e158 Fixes #184, Search bar and header more like market leader (#235) 2017-05-08 19:47:29 +02:00
Nikhil Rayaprolu
e053afd945 Fixes #167 reloading the page is avoided (#234)
updated routes
2017-05-08 21:27:34 +05:30
Isuru Abeywardana
5ce2547666 Fixes #207 stick the navigation to bottom on image search (#224) 2017-05-08 20:05:35 +05:30
Isuru Abeywardana
a829ed3997 fine tune bottom bar position (#223) 2017-05-08 12:37:11 +02:00
Nikhil Rayaprolu
541163419f Fixes #212 issue avoided redirection to home page
making link redundant

Indentation and spacing fixes
2017-05-08 15:37:20 +05:30
Nikhil Rayaprolu
abe26c3333 Fixes #226 lint errors and settings (#227)
* Fixes #226 lint errors and settings

* resolving lint issues
2017-05-08 13:27:34 +05:30
Nikhil Rayaprolu
eadc38517c Add Heroku generated app.json (#230)
* Add Heroku generated app.json

* Update app.json

* updated package.json

* updated package.json

* updated package.json

* updated angular cli

* updated package.json

* updated package.json

* updated package.json

* updated package.json
2017-05-08 12:05:37 +05:30
Soumya Vadlamannati
d1ebd06195 Adding to #206, Repositions the footer (#229)
* Adding to #206, Repositions the footer

* Adding to #206, Editing position

* Adjusts footer position to avoid extra spacing
2017-05-07 19:43:02 +02:00
Nikhil Rayaprolu
6713638c55 Add Heroku generated app.json 2017-05-07 21:55:48 +05:30
Soumya Vadlamannati
986921ceab Fixes #197, Tools dropdown menu visible on screen (#228) 2017-05-07 11:42:27 +02:00
Nikhil Rayaprolu
81a3bdbcf2 Fixes #203 search word missing (#219) 2017-05-07 11:41:48 +02:00
Harshit Prasad
df44146fff Fixes #142 Match the search box position, design, width, height, font, and submenu to the search box of market leader (#222) 2017-05-07 11:57:39 +05:30
Harshit Prasad
51a26005fa Fixes #185 Make results more compact and match them with market leader (#221) 2017-05-07 11:56:52 +05:30
Soumya Vadlamannati
735b5e42a1 Fixes #204,Fixed scroll position to top on routing (#217) 2017-05-07 11:55:32 +05:30
Harshit Prasad
a6ac0316e7 Fixes #190 Reduce the size of menu icons to half (#198)
* Fixes #190 Reduce the size of menu icons to half

* Fix alignment and resize of icons

* Fix width problem
2017-05-06 16:23:02 +02:00
Harshit Prasad
fd30f9b1b5 Fixes #205 Improve top menu on pages and add links (#210)
Fix top-margin

Remove topbar component

Removed TopbarComponent from not-found file

Remove comma from not-found file

Revert back to 1.0.0
2017-05-06 16:18:54 +02:00
Soumya Vadlamannati
f799c965ae Changes Bottom Bar Design, Removes Menu icon, made responsive for mobiles, design matched with loklak.net (#211) 2017-05-06 16:17:34 +02:00
Nikhil Rayaprolu
985f32144e Fixes issue #209 , stopped reloading pages (#216) 2017-05-06 19:43:29 +05:30
Nikhil Rayaprolu
3e186debc0 Fixes #206 issue regarding navbar being fixed (#213)
* resolving issue regarding navbar #206

* indentation error
2017-05-06 13:01:24 +05:30
Soumya Vadlamannati
de2234890b Fixes #186, Top bar is fixed to avoid page seperation (#208)
* Fixes #186, Top bar is fixed to avoid page seperation

* Indentation rectification
2017-05-05 22:39:47 +05:30
Harshit Prasad
2556d3d2dd Fixes #189 Match the color and font of info about search results (#199) 2017-05-02 08:30:48 +02:00
Isuru Abeywardana
aae08f6132 add footer navigation bar to result page (#202) 2017-05-02 08:30:21 +02:00
Isuru Abeywardana
1e92208b82 add terms page (#200)
added terms page and connected it to footer navbar

replace loklak with susper

change top line of terms
2017-05-01 23:39:32 +02:00
Nikhil Rayaprolu
1b04b83033 changed the travis settings from angular to master (#192) 2017-04-29 14:34:23 +02:00
Harshit Prasad
068ac0cd2c Fixes #169 Remove instant preview (#173)
the instant preview that is tested is removed.
2017-04-27 01:03:30 +05:30
neha
14297cf515 Match the search box . (#164)
* search bar edited

* fontsize matched and tools positioned
2017-04-26 09:15:17 +02:00
Harshit Prasad
d9c339b4ec Fixes #121 Add autocomplete configuration (#172)
Add searchService in constructor

Remove the if-statement
2017-04-26 09:14:21 +02:00
Isuru Abeywardana
31d904ed27 clean up the code (#178)
resolve conflicts
2017-04-26 09:13:55 +02:00
Isuru Abeywardana
c6088a9b22 connect contact button with contact page and fine tune (#175)
remove target='_blank'atribute
2017-04-26 09:13:04 +02:00
Isuru Abeywardana
ca2108d5f6 show empty result when nothing in search field (#176) 2017-04-26 09:12:20 +02:00
Isuru Abeywardana
f4201a93b9 hide next, previous buttons when no results found (#177)
solve test failure
2017-04-26 09:03:00 +02:00
Isuru Abeywardana
fcc25c304d add contact page (#162)
resolve test failure

remove extra spaces and comments

add missing coverage snippet
2017-04-22 20:43:02 +05:30
Harshit Prasad
1768e45a4c Add deployment scripts in package.json (#166) 2017-04-21 10:19:41 +05:30
GAURANG BANSAL
f1c8e076b3 Update README.md (#163)
Just a  little spelling bug in 1'st line.
2017-04-16 09:08:59 +02:00
Harshit Prasad
3b96af15f0 Addresses #132 Added Codecov (#151)
* Addresses #132 Added Codecov

* Addresses #132 Fixed parse error

* Addresses #132 modified travis.yml

* Addresses #132 Added Dockerfile

* Addresses #132 Fixed minor error

* Addresses #132 Correction in project directory

* Fixes #132 Correction in Dockerfile and created a new shared folder

* Fixes #132 Added coverage.txt

* Fixes #132 Solved 'mv' error

* Fixes #132 Edited Dockerfile

* Fixes #132 Remove 'mv' statement

* Fixes #132 Fix syntax error in Dockerfile
2017-04-15 08:30:41 +02:00
Harshit Prasad
c9cea4ab4c Fixes #139 Update README.md (#154) 2017-04-15 08:30:17 +02:00
neha
58fe583c54 bottom bar's font fixed (#160) 2017-04-15 08:29:45 +02:00
neha
87bd1454c4 Matched the design of the bottom page number menu (#156) 2017-04-14 10:22:49 +02:00
Harshit Prasad
f9379e45fb Fixes #144 show "About" instead of "About Susper" 2017-04-13 19:58:38 +05:30
Isuru Abeywardana
4d5529497e add styles to about us page and fixes #150 (#152)
* add styles to about us page and fixes #150

add contact us details area to page, add bottom navigation bar, make a new compponent and that includes footer navigation bar

* make footer nav bar in about page

* remove encapsulation and changeDetectionstrategy from ts file

* import modules and declare components in every spec file
2017-04-12 17:49:47 -03:00
Harshit Prasad
5ac46abc8b Fixes #125 Preview feature (#140)
* Fixes #125 Preview feature

* Addresses #125 Preview Feature

* Fixed lint errors

* Fixed Linting

* Addresses #125-Removed internal scroll bars
2017-04-08 10:48:40 -03:00
Harshit Prasad
39a8ecff6b Fixes #145 Updated top right expansion menu (#149) 2017-04-07 10:06:09 -03:00
Harshit Prasad
3b08374dc7 Fixes #144 Created a bottom bar in gray same as loklak.net (#148) 2017-04-07 09:36:12 -03:00
Bharadwaj Turlapati
4a384d355d Issue: #139 (#141)
Problem :
Readme.md file has few typos.
Solution:
Fixing typos in readme.md file (verified using drillinger.md (Online markdown viewer))


Signed-off-by: Bharadwaj Turlapati <tbj.name@gmail.com>
2017-03-30 17:56:39 -03:00
Soumya Vadlamannati
e4bec2a694 Merge pull request #118 from nikhilrayaprolu/testspull
Testspull
2017-03-25 16:48:35 +05:30
Soumya Vadlamannati
5439f48de4 Merge branch 'angular' into testspull 2017-03-25 11:53:42 +05:30
Isuru Abeywardana
f12345b21f fixes #123. This shows meta description (#134) 2017-03-25 11:52:52 +05:30
Harshit Prasad
6502adf72e Fixes #97 Routing of About Page. (#122)
* linking of about page

* linking about page

* linking

* Fixes #97 Routing of About Page

* fixed lint errors
2017-03-22 23:00:45 +05:30
Nikhil Rayaprolu
f68bab7600 Merge branch 'angular' into testspull 2017-03-22 10:23:21 +05:30
Sandeep Mahapatra
452355af82 fixed merge conflicts from before (#117)
* fixed merge conflicts from before

* code optimization
2017-03-22 10:22:01 +05:30
Nikhil Rayaprolu
afc8af8cf6 Merge branch 'angular' into testspull 2017-03-15 14:48:32 +05:30
Nikhil Rayaprolu
8f2c2b0a70 resolving issues regarding tests 2017-03-15 14:37:42 +05:30
Harshit Prasad
4c190e3eee Addresses #37 and #15 Videos section fix (#113)
* Addresses #37 and #15 Videos section fix

* Fixed bugs

* Recovered data
2017-03-15 10:26:58 +08:00
Isuru Abeywardana
a80ec9dc19 fixes #96 the pagination bar problem (#109)
* fixes #96 the pagination bar problem

* keep 10 as the maximum page number

* add a new line at end of file

* solution for lint error
2017-03-15 09:38:21 +08:00
Harshit Prasad
a0de5ce4b1 Addresses #15, #37, #97 - Designing similar to loklak.net and created an about page (#115)
* Addresses #97 and #37 About Page layout similar to loklak.net

* Addresses #15 some tweaks in susper homepage
2017-03-15 01:26:31 +08:00
Harshit Prasad
644f609ee0 Fixes #108 Images now render correctly (#112) 2017-03-14 12:49:08 +08:00
Harshit Prasad
4d60122723 Addresses #37 and #15 Styling closer to Google-search bar (#111)
* Addresses #37 Styling closer to Google-search bar

* Improvements in code
2017-03-14 05:46:28 +08:00
Sandeep Mahapatra
c9b35d98b8 responsive results page (#107) 2017-03-13 21:59:38 +08:00
Sandeep Mahapatra
6bdaae2abf Fixes #105 improvements in menu (#110)
* improvements in menu

* merge conflict fix
2017-03-13 19:09:45 +08:00
harshit98
5d2038d366 Fixes #3 Added more tests and updated travis.yml 2017-03-12 17:35:17 +05:30
Mario Behling
d5c5b6225f Merge branch 'angular' into test 2017-03-06 08:46:44 +08:00
Soumya Vadlamannati
72f1a120cd Fixes #99 Advanced Search working like before (#100) 2017-03-06 08:45:58 +08:00
Sandeep Mahapatra
6a5aec65de Fixes #98 consistent-search-bar (#101)
* fixed search bar shift

* fixed search bar in 404 page

* css code optimization

* fixed search button spacing problem
2017-03-06 08:35:34 +08:00
Sandeep Mahapatra
92161290db Fixes #80. Default box now doesn't appear in chrome. (#91)
* fixed default box problem for chrome

* inline css replaced and added in css file
2017-03-01 23:53:44 +08:00
Sandeep Mahapatra
5b3e66740d made home page responsive (#95) 2017-03-01 23:04:51 +08:00
harshit98
f2f97ceff2 Fixes #3 Added Tests 2017-02-25 04:38:43 +05:30
Harshit Prasad
dce4b313d3 Fixes #68 Pagination shift (#89)
* Fixes #68 Pagination shift

* Fixes #68 Pagination state
2017-02-24 23:58:49 +08:00
Nikhil Rayaprolu
36b12176ed imagedouble click to single click (#88) 2017-02-24 09:29:41 +08:00
Harshit Prasad
07d5f46db2 Fixes #83 Design changes- 2 (#87)
* Fixes #83 Design changes

* Resolved conflicts.

* resolved conflicts-2
2017-02-24 09:23:29 +08:00
Harshit Prasad
0c6313cdc8 Fixes #79 Removed homepage link (#81) 2017-02-21 09:19:12 +08:00
Bhavesh Gupta
cea5f18fb1 Search bar not display (#78)
* Search bar not display

* remove link From Homepage to homepage

* Revert "remove link From Homepage to homepage"

This reverts commit 9952cb4c04.
2017-02-19 12:25:04 +05:30
Harshit Prasad
8f9ce59791 Fixes #2 Added test (#72)
* Fixes #2 Added test

* Fixed HTML Lint Errors
2017-02-18 18:51:11 +05:30
Soumya Vadlamannati
ae97a7da67 Merge pull request #62 from nikhilrayaprolu/htmllinter
add susper as default toast
2017-02-18 16:01:20 +05:30
Soumya Vadlamannati
9d11544f8b Merge branch 'angular' into htmllinter 2017-02-18 16:00:50 +05:30
Soumya Vadlamannati
ab68049cb4 Merge pull request #75 from nikhilrayaprolu/resolvingredirectiontoloklak.net
resolving redirection on 404.html page
2017-02-18 16:00:46 +05:30
Nikhil Rayaprolu
f78fdef26e resolving redirection on 404.html page 2017-02-18 13:31:36 +05:30
Nikhil Rayaprolu
19659f3dc3 Merge branch 'angular' into htmllinter 2017-02-18 13:24:51 +05:30
Harshit Prasad
fe23d3ed69 Fixes #66 used icons instead of images (#71) 2017-02-18 03:43:00 +07:00
Nikhil Rayaprolu
0662ac3c54 fixes #49 load custom 404 (#60)
* load custom 404 when called

* correctly deploying 404.html page
2017-02-18 03:42:10 +07:00
Soumya Vadlamannati
c6e4f0dd58 Fixes #67, links work correctly (#70) 2017-02-17 22:08:46 +05:30
Soumya Vadlamannati
314b22d8b7 Fixes #63, Images are displayed (#65) 2017-02-15 15:35:51 +05:30
Nikhil Rayaprolu
209d6ede01 Merge branch 'angular' into htmllinter 2017-02-15 15:06:55 +05:30
Soumya Vadlamannati
3c6f49df65 Fixes #45, Added new apps icon with icons for pre existing links (#59)
* Added new apps icon with icons for pre existing links

* Fixing errors

* Added text to images

* Aligning text
2017-02-15 14:44:31 +05:30
Mario Behling
b39c960ad1 Merge branch 'angular' into htmllinter 2017-02-14 20:21:41 +01:00
Nikhil Rayaprolu
808426fb59 auto search implementation (#61) 2017-02-14 20:21:20 +01:00
Nikhil Rayaprolu
72d69f9c0e changing url 2017-02-14 23:23:14 +05:30
Nikhil Rayaprolu
87de3e76d4 add susper as default toast 2017-02-14 23:00:32 +05:30
Soumya Vadlamannati
732085309b Fixes #56 Created independent component for search bar (#58)
* Created independent component for search bar

* Indenting the html pages
2017-02-14 21:06:57 +05:30
Soumya Vadlamannati
44d452c30d Fixes #48, Removes loading information (#57) 2017-02-13 23:36:37 +01:00
Soumya Vadlamannati
48f519f0e5 Fixes #46, search bar fixed and changes in styling (#47) 2017-02-13 22:14:59 +05:30
Harshit Prasad
eada1cb181 Letter appearing full (#43) 2017-02-12 11:03:43 +05:30
Nikhil Rayaprolu
4399729010 advanced search tools have been added to susper (#52)
* addition of advanced search results

* adding sidebar

* display results count
2017-02-11 13:04:00 +01:00
Isuru
a072890e09 removing extra white spaces of 404 page (#41)
* removing extra white spaces of 404 page

* link logo to home page in nav bar and 404 page
2017-02-11 12:50:35 +01:00
Soumya Vadlamannati
bdb843bc24 Addresses #37 and #15, styling closer to google (#38) 2017-02-03 00:09:14 +00:00
Soumya Vadlamannati
ddcd616979 Fixes #35 (part 1), implements images and updates styling (#32)
* Fixes #6 implements images and their pagination, also added susper icon

* Adds styling and improves pagination bar

* Fixes first issue in #35, previous and next buttons fixed

* Code formatting
2017-02-01 07:48:15 +00:00
Isuru
e67010cabc 404 page with styles (#30) 2017-01-30 14:19:27 +05:30
Nikhil Rayaprolu
73bee3b338 final pull request for deployment (#21)
* test1

* test2

* test3

* test4

* test5

* finalcheck

* resolving route issues

* changing deployment to angular branch
2017-01-28 10:44:15 +00:00
Nikhil Rayaprolu
608c53c4f2 change of matrix to query params (#22) 2017-01-28 15:46:52 +05:30
Nikhil Rayaprolu
9dc04c73ac language exceptions 2017-01-28 15:46:21 +05:30
Mario Behling
dc13c0d417 Merge pull request #17 from nikhilrayaprolu/indentation
resolving indentation issues
2017-01-27 09:48:18 +00:00
Nikhil Rayaprolu
6dd5da96c8 resolving indentation issues 2017-01-26 19:19:23 +05:30
Mario Behling
f89da67a02 Merge pull request #11 from Marauderer97/searchtools
Partially resolves #5 Searchtools
2017-01-25 10:42:35 +00:00
Mario Behling
3c74f57ce1 Merge pull request #14 from isuruAb/angular
adding 404 page
2017-01-25 10:42:25 +00:00
Soumya97
50d77d69e1 Fixes #13 Placeholder and enhancing pagination bar 2017-01-25 15:56:05 +05:30
Isuru
f68d0811aa adding 404 page
set routings and made separate component without styles
2017-01-25 11:54:53 +05:30
Soumya97
5a24b9efd6 Resolving merge conflicts 2017-01-23 19:37:01 +05:30
Soumya97
93d8a55aea Added search tools, enhanced pagination and added css 2017-01-23 19:24:51 +05:30
Soumya97
d40de3131c Fixing linting 2017-01-21 16:00:35 +05:30
Nikhil Rayaprolu
10ff3f773c adding search functionality to navigation bar 2017-01-21 16:00:35 +05:30
Soumya97
ccc5f5b00e Updating pagination 2017-01-21 15:47:15 +05:30
Nikhil Rayaprolu
9e525fc81f updating README regarding installation (#62) 2017-01-19 12:46:21 +01:00
Soumya Vadlamannati
34de9874ad Resolves #51 Implementing basic search functionality (#58)
* initialised angular2 project

* Deleting old files

* deploying to travis

* fixing the travis errors

* fixing the travis errors

* fixing the travis errors

* fixing the travis errors

* upgrading to newer version of angular-cli

* resolving travis errors

* resolving test errors in travis

* implementation of search query

* adding search functionality to navigation bar

* Added progress bar, pagination bar(needs a few further modifications
2017-01-18 22:08:52 +01:00
Soumya97
f4d4d26003 Added progress bar, pagination bar(needs a few further modifications 2017-01-19 02:21:18 +05:30
Soumya97
a35755d3d6 Resolving conficts 2017-01-18 18:41:17 +05:30
Soumya97
76b8481aec implementation of search query 2017-01-18 18:17:04 +05:30
Nikhil Rayaprolu
a9d7fb4223 initialising the angular project (#50)
* initialised angular2 project

* Deleting old files

* deploying to travis

* fixing the travis errors

* fixing the travis errors

* fixing the travis errors

* fixing the travis errors

* upgrading to newer version of angular-cli

* resolving travis errors

* resolving test errors in travis
2017-01-18 00:14:42 +01:00
Nikhil Rayaprolu
643b533692 resolving test errors in travis 2017-01-17 23:41:24 +05:30
Nikhil Rayaprolu
c35963a684 resolving conflicts with the base branch 2017-01-17 22:29:32 +05:30
Nikhil Rayaprolu
900cdd15b7 resolving travis errors 2016-12-28 16:57:46 +05:30
Nikhil Rayaprolu
1391ee4b92 upgrading to newer version of angular-cli 2016-12-28 16:43:34 +05:30
Nikhil Rayaprolu
29210e6378 fixing the travis errors 2016-12-28 16:34:56 +05:30
Nikhil Rayaprolu
3c3d09f285 fixing the travis errors 2016-12-28 16:32:45 +05:30
Nikhil Rayaprolu
91b435498f fixing the travis errors 2016-12-28 16:25:34 +05:30
Nikhil Rayaprolu
9a8ab7810d fixing the travis errors 2016-12-28 16:20:31 +05:30
Nikhil Rayaprolu
c29b11350a deploying to travis 2016-12-28 16:15:54 +05:30
Nikhil Rayaprolu
a87142ea5c Merge pull request #1 from Marauderer97/ng2-susper
Ng2 susper
2016-12-28 15:15:58 +05:30
Soumya97
ebb45ad9bc Resolving conflicts 2016-12-28 15:12:34 +05:30
Soumya97
be5269148a Deleting old files 2016-12-28 15:11:16 +05:30
Nikhil Rayaprolu
27bdb9b3ed initialised angular2 project 2016-12-28 15:02:40 +05:30
270 changed files with 29011 additions and 9214 deletions

View file

@ -1,14 +1,15 @@
[default]
bears = SpaceConsistencyBear, LineLengthBear
files = **.html, **.yml, **.css, **.js, **.md
max_line_length = 1000
use_spaces = True
[html]
bears = HTMLLintBear
bears = HTMLLintBear, BootLintBear
files = **.html
htmllint_ignore = indentation, optional_tag, concerns_separation, capitalization
[js]
bears = JSHintBear
files = **.js
ignore = **.min.js, **/lib/**, bootstrap/**, _site/**
[css]
bears = PHPCodeSnifferBear
files = **.css
ignore = **.min.css, bootstrap/**, _site/**

27
.editorconfig Executable file
View file

@ -0,0 +1,27 @@
# Editor configuration, see http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,py}]
charset = utf-8
[Makefile]
indent_style = tab
[lib/**.js]
indent_style = space
indent_size = 2
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
[*.md]
max_line_length = off
trim_trailing_whitespace = false

1
.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
src/assets/* linguist-vendored

20
.github/CONTRIBUTING.md vendored Normal file
View file

@ -0,0 +1,20 @@
## Contributions Best Practices
**Commits**
* Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)
* Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (More info at https://github.com/blog/1506-closing-issues-via-pull-requests )
* When you make very very minor changes to a PR of yours (like for example fixing a failing travis build or some small style corrections or minor changes requested by reviewers) make sure you squash your commits afterwards so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at https://davidwalsh.name/squash-commits-git )
* When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change or a link to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker.
**Code Styleguide**
* Do follow the .editorconfig file regarding maintaining of code style (It's mandatory).
* For more information regarding .editorconfig file, see [editorconfig](http://editorconfig.org/#download)
**Feature Requests and Bug Reports**
* When you file a feature request or when you are submitting a bug report to the [issue tracker](https://github.com/fossasia/susper.com/issues), make sure you add steps to reproduce it. Especially if that bug is some weird/rare one.
**Join the development**
* Before you join development, please set up the project on your local machine, run it and go through the application completely. Press on any button you can find and see where it leads to. Explore. (Don't worry ... Nothing will happen to the app or to you due to the exploring :wink: Only thing that will happen is, you'll be more familiar with what is where and might even get some cool ideas on how to improve various aspects of the app.)
* If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely.
Do read the [Open Source Developer Guide and Best Practices at FOSSASIA](https://blog.fossasia.org/open-source-developer-guide-and-best-practices-at-fossasia).

14
.github/ISSUE_TEMPLATE.md vendored Normal file
View file

@ -0,0 +1,14 @@
**I'm submitting a ...**
- [ ] bug report
- [ ] feature request
**Current behavior:**
<!-- How the bug manifests. -->
**Expected behavior:**
<!-- Behavior would be without the bug. -->
**Screenshots of the issue:**
<!-- Attach a screenshot of the issue here. -->
**Will work on the issue:**

22
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View file

@ -0,0 +1,22 @@
<!-- Add issue number here. If you do not solve the issue entirely, please change the message e.g. "Addresses #IssueNumber -->
Fixes #
#### Checklist
- [ ] I have read the [Contribution & Best practices Guide](https://blog.fossasia.org/open-source-developer-guide-and-best-practices-at-fossasia) and my PR follows them.
- [ ] My branch is up-to-date with the Upstream `master` branch.
- [ ] I have added necessary documentation (if appropriate)
- [ ] Added Surge preview link
<!-- Replace "PR_NUMBER" with your pull request number. This link is generated when your PR passes the travis tests.A sample link can look like https://pr-200-fossasia-susper.surge.sh -->
#### Changes proposed in this pull request:
<!-- Changes: Add here what changes were made in this issue and if possible provide links. -->
-
<!-- Demo Link: Add here the link where you changes can be seen. -->
- https://pr-XXXX-fossasia-susper.surge.sh
<!-- Screenshots for the change: Add here the screenshot of the fix. -->
-

37
.gitignore vendored Normal file → Executable file
View file

@ -1,4 +1,35 @@
.idea/
# See http://help.github.com/ignore-files/ for more about ignoring files.
src/app/mocks/
# compiled output
/dist
/tmp
# dependencies
/node_modules
/bower_components
# IDEs and editors
/.idea
/.vscode
.project
.classpath
.c9/
*.launch
.settings/
_site/
Gemfile.lock
# misc
/.sass-cache
/connect.lock
/coverage/*
/libpeerconnection.log
npm-debug.log
testem.log
/typings
# e2e
/e2e/*.js
/e2e/*.map
#System Files
.DS_Store
Thumbs.db

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>yacy_webclient_bootstrap</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>
</projectDescription>

55
.travis.yml Normal file → Executable file
View file

@ -1,16 +1,43 @@
language: ruby
rvm:
- 2.3.3
services: docker
install:
- bundle install
# Using a sudo enabled, Linux trusty distribution, VM
sudo: required
dist: trusty
# versions of node to use
language: node_js
node_js:
- 6
# Running javascript tests in browser
before_install:
#set CHROME_BIN as chromium-browser
- export CHROME_BIN=chromium-browser
#set up a fake DISPLAY
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
# Build a production build of the project
before_script:
- ng build --prod --build-optimizer
# Check for coverage, and linting
script:
- bundle exec jekyll build
- bundle exec htmlproofer ./_site
- touch .gitignore
- >
docker run --volume=$(pwd):/app --workdir=/app coala/base:0.9 /bin/bash -c
"coala --non-interactive"
- ng test --single-run --code-coverage --reporters=coverage-istanbul
- ng lint
# Notify codecov, deploy to surge
after_success:
- bash <(curl -s https://codecov.io/bash)
- bash ./pr_deploy.sh
- bash ./deploy.sh
# enable node_modules dir to avoid re-download everytime
cache:
bundler: true
directories:
- node_modules
#specify branches to process
branches:
only:
- gh-pages
only:
- master
- development

11
.yaydoc.yml Normal file
View file

@ -0,0 +1,11 @@
metadata:
author: FOSSASIA
projectname: "Susper"
version: master
build:
theme:
name: sphinx_fossasia_theme
source: .
publish:
ghpages:
docurl: susper.fossasia.org

13
404.html Normal file
View file

@ -0,0 +1,13 @@
<!doctype html>
<html>
<head>
<!-- This stores the URL the user was attempting to go to in sessionStorage,
and then redirects all 404 responses to the apps index.html page -->
<script>
sessionStorage.redirect = location.href;
</script>
<meta http-equiv="refresh" content="0;URL='https://susper.com/'"></meta>
</head>
<body>
</body>
</html>

1
CNAME
View file

@ -1 +0,0 @@
susper.com

29
Dockerfile Normal file
View file

@ -0,0 +1,29 @@
FROM node:8
MAINTAINER Mario Behling <mb@mariobehling.de>
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN apt-get update && apt-get clean && rm -rf /var/lib/apt/lists/*
# install deps
RUN apt-get install curl
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash
RUN apt-get install -y --no-install-recommends nodejs && apt-get clean -y
# copy requirements
COPY package.json /usr/src/app/
COPY app.json /usr/src/app/
COPY tslint.json /usr/src/app/
COPY angular-cli.json /usr/src/app/
# Bundle app source
COPY . /usr/src/app
# install requirements
RUN npm install -g @angular/cli@latest
RUN npm install
EXPOSE 4200
CMD ["ng", "serve"]

11
Gemfile
View file

@ -1,5 +1,6 @@
source "https://rubygems.org"
gem "jekyll"
gem "github-pages"
gem "html-proofer"
source 'https://rubygems.org'
gem 'github-pages'
gem 'html-proofer'
gem 'jekyll'
gem 'percy-cli'
gem 'fastimage'

301
Gemfile.lock Normal file
View file

@ -0,0 +1,301 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (4.2.10)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
colorize (0.8.1)
commander (4.4.6)
highline (~> 1.7.2)
commonmarker (0.17.13)
ruby-enum (~> 0.5)
concurrent-ruby (1.0.5)
dnsruby (1.61.7)
simpleidn (~> 0.1)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
ethon (0.14.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
excon (0.84.0)
execjs (2.7.0)
faraday (1.5.1)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
faraday-patron (~> 1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
fastimage (2.1.4)
ffi (1.15.3)
forwardable-extended (2.6.0)
gemoji (3.0.0)
github-pages (192)
activesupport (= 4.2.10)
github-pages-health-check (= 1.8.1)
jekyll (= 3.7.4)
jekyll-avatar (= 0.6.0)
jekyll-coffeescript (= 1.1.1)
jekyll-commonmark-ghpages (= 0.1.5)
jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.10.0)
jekyll-gist (= 1.5.0)
jekyll-github-metadata (= 2.9.4)
jekyll-mentions (= 1.4.1)
jekyll-optional-front-matter (= 0.3.0)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.2.0)
jekyll-redirect-from (= 0.14.0)
jekyll-relative-links (= 0.5.3)
jekyll-remote-theme (= 0.3.1)
jekyll-sass-converter (= 1.5.2)
jekyll-seo-tag (= 2.5.0)
jekyll-sitemap (= 1.2.0)
jekyll-swiss (= 0.4.0)
jekyll-theme-architect (= 0.1.1)
jekyll-theme-cayman (= 0.1.1)
jekyll-theme-dinky (= 0.1.1)
jekyll-theme-hacker (= 0.1.1)
jekyll-theme-leap-day (= 0.1.1)
jekyll-theme-merlot (= 0.1.1)
jekyll-theme-midnight (= 0.1.1)
jekyll-theme-minimal (= 0.1.1)
jekyll-theme-modernist (= 0.1.1)
jekyll-theme-primer (= 0.5.3)
jekyll-theme-slate (= 0.1.1)
jekyll-theme-tactile (= 0.1.1)
jekyll-theme-time-machine (= 0.1.1)
jekyll-titles-from-headings (= 0.5.1)
jemoji (= 0.10.1)
kramdown (= 1.17.0)
liquid (= 4.0.0)
listen (= 3.1.5)
mercenary (~> 0.3)
minima (= 2.5.0)
nokogiri (>= 1.8.2, < 2.0)
rouge (= 2.2.1)
terminal-table (~> 1.4)
github-pages-health-check (1.8.1)
addressable (~> 2.3)
dnsruby (~> 1.60)
octokit (~> 4.0)
public_suffix (~> 2.0)
typhoeus (~> 1.3)
highline (1.7.10)
html-pipeline (2.8.4)
activesupport (>= 2)
nokogiri (>= 1.4)
html-proofer (3.9.2)
activesupport (>= 4.2, < 6.0)
addressable (~> 2.3)
colorize (~> 0.8)
mercenary (~> 0.3.2)
nokogiri (~> 1.8.1)
parallel (~> 1.3)
typhoeus (~> 1.3)
yell (~> 2.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.7.4)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-avatar (0.6.0)
jekyll (~> 3.0)
jekyll-coffeescript (1.1.1)
coffee-script (~> 2.2)
coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.2.0)
commonmarker (~> 0.14)
jekyll (>= 3.0, < 4.0)
jekyll-commonmark-ghpages (0.1.5)
commonmarker (~> 0.17.6)
jekyll-commonmark (~> 1)
rouge (~> 2)
jekyll-default-layout (0.1.4)
jekyll (~> 3.0)
jekyll-feed (0.10.0)
jekyll (~> 3.3)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-github-metadata (2.9.4)
jekyll (~> 3.1)
octokit (~> 4.0, != 4.4.0)
jekyll-mentions (1.4.1)
html-pipeline (~> 2.3)
jekyll (~> 3.0)
jekyll-optional-front-matter (0.3.0)
jekyll (~> 3.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.2.0)
jekyll (~> 3.0)
jekyll-redirect-from (0.14.0)
jekyll (~> 3.3)
jekyll-relative-links (0.5.3)
jekyll (~> 3.3)
jekyll-remote-theme (0.3.1)
jekyll (~> 3.5)
rubyzip (>= 1.2.1, < 3.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.5.0)
jekyll (~> 3.3)
jekyll-sitemap (1.2.0)
jekyll (~> 3.3)
jekyll-swiss (0.4.0)
jekyll-theme-architect (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.5.3)
jekyll (~> 3.5)
jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.0)
jekyll-theme-slate (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.1.1)
jekyll (~> 3.5)
jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.1)
jekyll (~> 3.3)
jekyll-watch (2.1.2)
listen (~> 3.0)
jemoji (0.10.1)
gemoji (~> 3.0)
html-pipeline (~> 2.2)
jekyll (~> 3.0)
kramdown (1.17.0)
liquid (4.0.0)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
mini_portile2 (2.3.0)
minima (2.5.0)
jekyll (~> 3.5)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.11.3)
multipart-post (2.1.1)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
octokit (4.21.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
parallel (1.12.1)
pathutil (0.16.1)
forwardable-extended (~> 2.6)
percy-cli (1.4.0)
addressable (~> 2)
commander (~> 4.3)
percy-client (~> 2.0)
thread (~> 0.2)
percy-client (2.0.4)
addressable
excon
faraday (>= 0.9)
public_suffix (2.0.5)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rouge (2.2.1)
ruby-enum (0.7.2)
i18n
ruby2_keywords (0.0.4)
ruby_dep (1.5.0)
rubyzip (1.2.2)
safe_yaml (1.0.4)
sass (3.6.0)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
simpleidn (0.2.1)
unf (~> 0.1.4)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread (0.2.2)
thread_safe (0.3.6)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.4.0)
yell (2.0.7)
PLATFORMS
ruby
DEPENDENCIES
fastimage
github-pages
html-proofer
jekyll
percy-cli
BUNDLED WITH
1.16.1

504
LICENSE Normal file
View file

@ -0,0 +1,504 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random
Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View file

@ -1,3 +0,0 @@
LICENSE
This is licensed under Creative Commons Attribution 2.0 License (CC-BY 2.0).

171
README.md Normal file → Executable file
View file

@ -1,81 +1,113 @@
# susper.com
![susper.com](src/assets/images/susper.svg)
Susper is a decentral Search Engine that uses the peer to peer system yacy and Apache Solr to crawl and index search results.
[![Build Status](https://travis-ci.org/fossasia/susper.com.svg?branch=gh-pages)](https://travis-ci.org/fossasia/susper.com?branch=gh-pages)
master: [![Build Status](https://travis-ci.org/fossasia/susper.com.svg?branch=master)](https://travis-ci.org/fossasia/susper.com)
development: [![Build Status](https://travis-ci.org/fossasia/susper.com.svg?branch=development)](https://travis-ci.org/fossasia/susper.com)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/2ba119419e7444b3b505bb37b4525deb)](https://www.codacy.com/app/shiven15094/susper-com?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=fossasia/susper.com&amp;utm_campaign=Badge_Grade)
[![Code Climate](https://codeclimate.com/github/fossasia/susper.com/badges/gpa.svg?branch=gh-pages)](https://codeclimate.com/github/fossasia/susper.com)
[![codecov](https://codecov.io/gh/fossasia/susper.com/branch/gh-pages/graph/badge.svg)](https://codecov.io/gh/fossasia/gh-pages)
[![codecov](https://codecov.io/gh/fossasia/susper.com/branch/master/graph/badge.svg)](https://codecov.io/gh/fossasia/susper.com)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/fossasia/susper.com?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/fossasia/susper.com.svg)](http://isitmaintained.com/project/fossasia/susper.com "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/fossasia/susper.com.svg)](http://isitmaintained.com/project/fossasia/susper.com "Percentage of issues still open")
##Communication
Our chat channel is on gitter here: https://gitter.im/fossasia/susper.com
Susper is a decentralized Search Engine that uses the peer to peer system YaCy and Apache Solr to crawl and index search results.
You can test the branches of susper here:
* Development branch: https://susper-dev.herokuapp.com
* Master branch: https://susper.com
## Communication
Our chat channel is on gitter: https://gitter.im/fossasia/susper.com
## Components and Technology
This is a search front-end for YaCy. Retrieval of search results using YaCys search API and display using AJAX technology.
This is a front-end for Susper running on YaCy server. The retrieval of search results is done using YaCy search API.
* Solr, JSON(P) and JavaScript / backbone.js - driven
* Solr and Javascript(JSON)
Search results are displayed using AJAX-technology from a Solr server which is embedded into YaCy. All search results must be provided by a YaCy search server which includes a Solr with a specialized JSON result writer. When a search request is made in one of the search templates, a http request is made to YaCy. The response is done in JSON because that can much better be parsed than XML in JavaScript. To overcome the same orgin policy in JavaScript, the result is capsuled into a JSONP response. This enables you to run YaCy anywhere and to use the results from this server somewhere else, maybe in static web pages, even from a file system. We implemented a proper model view of search results using the MV*-Fra­me­work backbone.js.
Search results are displayed using Solr server which is embedded into YaCy. All search results must be provided by a YaCy search server which includes a Solr with a specialized JSON result writer. When a search request is made in one of the search templates, an HTTP request is made to YaCy. The response is done in JSON because that can much better be parsed than XML in JavaScript. To overcome the same origin policy in JavaScript, the result is capsuled into a JSONP response.
* Industry-Strength Search Efficiency
## Technology Stack
* HTML - Structure of the web page generated.
* Bootstrap-3.3.7 - Used for responsive design.
* CSS - Styling options and details of the web page.
* Javascript(JSON) - Used to store information for deploying the application such as dependencies.
* Angular-4 - Structure for deployment of the web page.
Because the search results come right from a Solr instance using a specialized result writer, these templates can provide industry-strength search portals. This is an unique combination of Solr, JSON(P), flexible JavaScript presentation the beautiful YAML4 CSS Framework and the easiness of web index creation with YaCy.
## Requirements
* [Angular-cli](https://github.com/angular/angular-cli#installation)
* node --version >= 6
* npm --version >= 3
* Standard Compliance
## Angular Installation
First, we will need to install angular-cli by using the following command:
```sh
npm install -g @angular/cli@latest
```
There are standards for search request queries (i.e. SRU) and search request responses (i.e. opensearch). YaCy provides both! Actually these search templates send SRU requests to YaCy and the jsonp result writer in Solr (inside YaCy) returns a into-JSON transformed version of openseach. If you like, then you can also get search results from the same query url by replacing the "wt=yjson"-parameter by "wt=opensearch".
## How to deploy?
* Beautiful CSS Framework
[![Deploy to Docker Cloud](https://files.cloud.docker.com/images/deploy-to-dockercloud.svg)](https://cloud.docker.com/stack/deploy/?repo=https://github.com/fossasia/susper.com) [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/fossasia/susper.com)
These pages are made with the YAML4 CSS Framework and it will serve you very well for the creation of own search portals. Just use the template as provided in the git repository (see below: 'Clone This!') and create your own search portal.
### Running on localhost:
* **Step 1:** Fork susper repository and clone it to your desktop
* **Step 2:** Then cd into that cloned folder
* **Step 3:** Then execute the command: ```npm install```
* **Step 4:** Deploy locally by running this:```ng serve```
* **Step 5:** Go to [localhost:4200](http://localhost:4200) where the application will be running locally
## Installation
### For deploying with [Github Pages](https://pages.github.com/):
With these very simple steps you can have susper deployed:
### How do I install on a Server
* **Step 1:** Fork susper repository and clone it to your desktop
* **Step 2:** Then checkout to your master branch `git checkout master`
* **Step 3:** Deploy by running this: ```ng build``` and then ```npm run deploy```
* **Step 4:** Visit `https://yourusername.github.io/susper` and you should see the Susper search running
* **Step 5:** As you search you might see that it can't find anything, to resolve this, on search you will see there is a red shield on the search bar, click on it and allow to load unsafe scripts
* **Step 6:** Reload and you will have a fully functioning Susper search deployed on GitHub pages
Please check out [the documentation here](/docs/INSTALLATION.md).
### For deploying with [Surge](https://surge.sh/):
### How do I install on my local machine
Please check out [the documentation here](/docs/INSTALLATION_LOCAL.md).
### How do I install on Google Cloud
To install the system on Google Cloud please refer to the [Google Cloud installation readme](/docs/INSTALLATION_GOOGLE.md).
#### How do I install on AWS
To install the system on AWS please refer to the [AWS installation readme](/docs/INSTALLATION_AWS.md).
#### How do I install on Digital Ocean
To install the system on Digital Ocean please refer to the [Digital Ocean installation readme](/docs/INSTALLATION_DIGITALOCEAN.md).
#### How do I deploy Web App Generator with Heroku
Please read how to deploy to [Heroku here](/docs/INSTALLATION_HEROKU.md)
Surge will automatically generate a deployment link whenever a pull request passes
CI.
Suppose pull request number is 200 and it passes Travis CI. The deployment link can be found here: `https://pr-200-fossasia-susper.surge.sh`
## Contributions, Bug Reports, Feature Requests
This is an Open Source project and we would be happy to see contributors who report bugs and file feature requests submitting pull requests as well. Please report issues here https://github.com/fossasia/susper.com/issues
## Contributions Best Practices
**Commits**
* Write clear meaningful git commit messages (Do read http://chris.beams.io/posts/git-commit/)
* Make sure your PR's description contains GitHub's special keyword references that automatically close the related issue when the PR is merged. (More info at https://github.com/blog/1506-closing-issues-via-pull-requests )
* When you make very very minor changes to a PR of yours (like for example fixing a failing Travis build or some small style corrections or minor changes requested by reviewers) make sure you squash your commits afterwards so that you don't have an absurd number of commits for a very small fix. (Learn how to squash at https://davidwalsh.name/squash-commits-git )
* When you're submitting a PR for a UI-related issue, it would be really awesome if you add a screenshot of your change or a link to a deployment where it can be tested out along with your PR. It makes it very easy for the reviewers and you'll also get reviews quicker.
**Feature Requests and Bug Reports**
* When you file a feature request or when you are submitting a bug, report to the [issue tracker] (https://github.com/fossasia/susper.com/issues)
* Make sure you add steps to reproduce it, especially if that bug is some weird/rare one.
**Join the development**
* Before you join development, please set up the project on your local machine, run it and go through the application completely. Press any button you can find and see where it leads to. Explore. (Don't worry ... Nothing will happen to the app or to you due to the exploring :wink:. Only thing that will happen is, you'll be more familiar with what is where and might even get some cool ideas on how to improve various aspects of the app.)
* If you would like to work on an issue, drop in a comment at the issue. If it is already assigned to someone, but there is no sign of any work being done, please free to drop in a comment so that the issue can be assigned to you if the previous assignee has dropped it entirely.
Do read the [Open Source Developer Guide and Best Practices at FOSSASIA](https://blog.fossasia.org/open-source-developer-guide-and-best-practices-at-fossasia).
## Issue and Branch Policy
Before making a pull request, please file an issue. So, other developers have the chance to give feedback or discuss details. Match every pull request with an issue please and add the issue number in description e.g. like "Fixes #123".
We have the following branches
* **development**
All development goes on in this branch. If you're making a contribution,
you are supposed to make a pull request to _development_.
PRs must pass a build check and unit-tests check on Travis
* **gh-pages**
This contains shipped code. After significant features/bugfixes are accumulated on development, we make a version update, and make a release.
Before making a pull request, please file an issue so that other developers have the chance to give feedback or discuss details. Please match every pull request with an issue and add the issue number in description e.g. like "Fixes #123".
We have the following branches:
* **development**
All development goes on in the development branch. If you're making a contribution, please make a pull request to _development_. PRs to the branch must pass a build check and a unit-test check on Travis.
* **master**
This branch contains shipped code. After significant features/bug-fixes are accumulated on development, the development branch is merged into the master branch.
* **gh-pages**
This branch contains the auto-generated build artifacts of the master branch that is generated by Travis. The build artifacts on this branch are used to build the site on susper.com .
## LICENSE
@ -85,5 +117,48 @@ The repository is licensed under Creative Commons Attribution 2.0 License (CC-BY
The project is maintained by
* Michael Christen ([@Orbiter](https://github.com/Orbiter))
* Mario Behling ([@mariobehling](http://github.com/mariobehling))
* Mario Behling ([@mariobehling](https://github.com/mariobehling))
## Development server
Run `ng serve` for a dev server. Navigate to [localhost:4200](http://localhost:4200). The app will automatically reload if you change any of the source files.
## Code scaffolding
Run `ng g component component-name` to generate a new component. You can also use `ng g directive/pipe/service/class`.
## Build
Run `ng build` to build the project. The build artefacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
## Running unit tests
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
Before running the tests make sure you are serving the app via `ng serve`.
## Update Angular-CLI
To update Angular-CLI to a new version, you must update both the global package and your project's local package.
Global package
```bash
npm uninstall -g @angular/cli
npm cache clean
npm install -g @angular/cli@latest
```
Local package
```bash
rm -rf node_modules dist # use rmdir /S/Q node_modules dist in Windows Command Prompt; use rm -r -fo node_modules,dist in Windows PowerShell
npm install --save-dev @angular/cli@latest
npm install
```
## Extras
### Add Susper as default Search Engine in Google Chrome
![](https://media.giphy.com/media/JJW5Aj8LRIGbu/giphy.gif)

62
angular-cli.json Executable file
View file

@ -0,0 +1,62 @@
{
"project": {
"name": "susper"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"assets": [
"assets",
"favicon.ico",
"manifest.json"
],
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"serviceWorker": true,
"styles": [
"styles.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"files": "src/**/*.ts",
"project": "src/tsconfig.json"
},
{
"files": "e2e/**/*.ts",
"project": "e2e/tsconfig.json"
}
],
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"class": {
"spec": false
},
"component": {
"spec": true,
"inlineStyle": false,
"inlineTemplate": false
}
}
}

22
app.json Normal file
View file

@ -0,0 +1,22 @@
{
"name": "susper.com-1",
"scripts": {
},
"env": {
"LANG": {
"required": true
}
},
"formation": {
},
"addons": [
],
"buildpacks": [
{
"url": "heroku/nodejs"
}
]
}

Binary file not shown.

View file

@ -1,476 +0,0 @@
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default:disabled,
.btn-default[disabled] {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary:disabled,
.btn-primary[disabled] {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success:disabled,
.btn-success[disabled] {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info:disabled,
.btn-info[disabled] {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning:disabled,
.btn-warning[disabled] {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger:disabled,
.btn-danger[disabled] {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,288 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 106 KiB

BIN
bootstrap/js/.DS_Store vendored

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,8 +0,0 @@
/*
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);

View file

@ -1,51 +0,0 @@
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
/*!
* Copyright 2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
(function () {
'use strict';
function emulatedIEMajorVersion() {
var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
if (groups === null) {
return null
}
var ieVersionNum = parseInt(groups[1], 10)
var ieMajorVersion = Math.floor(ieVersionNum)
return ieMajorVersion
}
function actualNonEmulatedIEMajorVersion() {
// Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
// IE JavaScript conditional compilation docs: http://msdn.microsoft.com/en-us/library/ie/121hztk3(v=vs.94).aspx
// @cc_on docs: http://msdn.microsoft.com/en-us/library/ie/8ka90k2e(v=vs.94).aspx
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line
if (jscriptVersion === undefined) {
return 11 // IE11+ not in emulation mode
}
if (jscriptVersion < 9) {
return 8 // IE8 (or lower; haven't tested on IE<8)
}
return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
}
var ua = window.navigator.userAgent
if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
return // Opera, which might pretend to be IE
}
var emulated = emulatedIEMajorVersion()
if (emulated === null) {
return // Not IE
}
var nonEmulated = actualNonEmulatedIEMajorVersion()
if (emulated !== nonEmulated) {
window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
}
})();

View file

@ -1,22 +0,0 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014 Twitter, Inc.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
// See the Getting Started docs for more information:
// http://getbootstrap.com/getting-started/#support-ie10-width
(function () {
'use strict';
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild(
document.createTextNode(
'@-ms-viewport{width:auto!important}'
)
)
document.querySelector('head').appendChild(msViewportStyle)
}
})();

File diff suppressed because one or more lines are too long

View file

@ -1,13 +0,0 @@
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')

View file

@ -1,5 +0,0 @@
/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
* */
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);

File diff suppressed because one or more lines are too long

71
codecov.yml Executable file
View file

@ -0,0 +1,71 @@
codecov:
branch: master
bot: null
coverage:
precision: 2
round: down
range: "70...100"
notify:
slack:
default:
url: null
threshold: null
branches: null
attachments: "sunburst, diff"
hipchat:
default:
url: null
notify: no
threshold: null
branches: null
card: yes
only_pulls: null
message: null
gitter:
default:
url: null
threshold: null
branches: null
message: null
webhook:
default:
url: null
threshold: null
branches: null
only_pulls: null
irc:
default:
server: null
channel: null
branches: null
threshold: null
message: null
status:
project:
default:
target: 0%
threshold: null
branches: null
patch:
default:
target: 0%
branches: null
changes:
default:
branches: null
ignore: null
comment:
layout: "header, diff, changes, sunburst, uncovered, tree"
branches: null
behavior: default

BIN
deploy.enc Normal file

Binary file not shown.

61
deploy.sh Executable file
View file

@ -0,0 +1,61 @@
#!/bin/bash
# SOURCE_BRANCH & TARGET_BRANCH stores the name of different susper.com github branches.
SOURCE_BRANCH="master"
TARGET_BRANCH="gh-pages"
# Pull requests and commits to other branches shouldn't try to deploy.
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then
echo "Skipping deploy; The request or commit is not on master"
exit 0
fi
# Store some useful information into variables
REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`
# Decryption of the `deploy.enc`
openssl aes-256-cbc -k "$super_secret_password" -in deploy.enc -out deploy_key -d
# give `deploy_key`. the permission to read and write
chmod 600 deploy_key
eval `ssh-agent -s`
ssh-add deploy_key
# Cloning the repository to repo/ directory,
# Creating gh-pages branch if it doesn't exists else moving to that branch
git clone $REPO repo
cd repo
git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH
cd ..
# Setting up the username and email.
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"
# Cleaning up the old repo's gh-pages branch except CNAME file and 404.html
find repo/* ! -name "CNAME" ! -name "404.html" -maxdepth 1 -exec rm -rf {} \; 2> /dev/null
cd repo
# commit the changes, move to SOURCE_BRANCH
git add --all
git commit -m "Travis CI Clean Deploy : ${SHA}"
git checkout $SOURCE_BRANCH
# Actual building and setup of current push or PR. Move to `TARGET_BRANCH` and move the `dist` folder
npm install
ng build --prod --build-optimizer
mv susper.xml dist/
mv 404.html dist/
git checkout $TARGET_BRANCH
mv dist/* .
# Staging the new build for commit; and then commiting the lastest build
git add .
git commit --amend --no-edit --allow-empty
# Actual push to gh-pages branch via Travis
git push --force $SSH_REPO $TARGET_BRANCH

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
## Deploying

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -1 +0,0 @@
# How to install

View file

@ -0,0 +1,22 @@
# Docker
[![Deploy to Docker Cloud](https://files.cloud.docker.com/images/deploy-to-dockercloud.svg)](https://cloud.docker.com/stack/deploy/?repo=https://github.com/fossasia/susper.com)
* Get the latest version of docker. See the [offical site](https://docs.docker.com/engine/installation/) for installation info for your platform.
* Install the latest version of docker-compose. Windows and Mac users should have docker-compose by default as it is part of Docker toolbox. For Linux users, see the
[official guide](https://docs.docker.com/compose/install/).
* Run `docker` and in terminal to see if they are properly installed.
* Clone the project and cd into it.
```bash
git clone https://github.com/fossasia/susper.com.git && cd susper.com
```
* In the terminal window, run `docker build -t susper:latest .` to build susper.com's docker image. This process can take some time.
* After build is done, run `docker run -d -p 4200:4200 susper:latest` to start the server.
* Navigate to [localhost:4200](http://localhost:4200/) in your browser to see Susper up and running.

View file

@ -0,0 +1,21 @@
# Heroku
One-click Heroku deployment is available:
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/fossasia/susper.com)
### Steps for Manual Deployment
* We need to install heroku on our machine. Type the following in your linux terminal:
* ```wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh```
This installs the Heroku Toolbelt on your machine to access heroku from the command line.
* Next we need to login to our heroku server (assuming that you have already created an account). Type the following in the terminal:
* ```heroku login```
* Enter your credentials and login.
* Once logged in we need to create a space on the heroku server for our application. This is done with the following command
* ```heroku create```
* Add nodejs build pack to the app
* ```heroku buildpacks:add --index 1 heroku/nodejs```
* Then we deploy the code to heroku.
* ```git push heroku master``` or
* ```git push heroku yourbranch:master``` if you are in a different branch than master

0
dummy Normal file
View file

14
e2e/app.e2e-spec.ts Executable file
View file

@ -0,0 +1,14 @@
import { SusperPage } from './app.po';
describe('susper App', function() {
let page: SusperPage;
beforeEach(() => {
page = new SusperPage();
});
it('should display message saying app works', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('app works!');
});
});

11
e2e/app.po.ts Executable file
View file

@ -0,0 +1,11 @@
import { browser, element, by } from 'protractor';
export class SusperPage {
navigateTo() {
return browser.get('/');
}
getParagraphText() {
return element(by.css('app-root h1')).getText();
}
}

16
e2e/tsconfig.json Executable file
View file

@ -0,0 +1,16 @@
{
"compileOnSave": false,
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"outDir": "../dist/out-tsc-e2e",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
}
}

BIN
id_rsa.enc Executable file

Binary file not shown.

View file

@ -1,200 +0,0 @@
<!DOCTYPE html>
<html>
<!--
(C) by Michael Peter Christen, mc (at) yacy.net
licensed under a Creative Commons Attribution 2.0 Generic License (CC-BY 2.0)
-->
<head>
<title id="title"></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<!-- scary MS stuff ahead to prevent that IE runs in "IE=EmulateIE10" mode which cannot run our JS code for some reason -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--
if you don't see the glyphicons in firefox and you opened this file from a local filesystem,
then a CORS security setting in firefox caused that.
No other browser is that strict and there is no work around. To see the glyphicons in firefox,
open about:config and set security.fileuri.strict_origin_policy to false.
-->
<link rel="shortcut icon" type="image/x-icon" href="/susper.ico" >
<meta name="Content-Language" content="English, Englisch" >
<meta name="keywords" content="YaCy HTTP search engine spider indexer java network open free download Mac Windows Linux Software development" >
<meta name="description" content="Software HTTP Freeware Home Page" >
<meta name="copyright" content="Michael Christen et al." >
<!-- Ensure proper rendering and touch zooming on mobile devices -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap core CSS -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<script src="bootstrap/js/jquery.min.js" type="text/javascript" ></script>
<script src="bootstrap/js/bootstrap.min.js" type="text/javascript" ></script>
<script src="bootstrap/js/docs.min.js" type="text/javascript" ></script>
<script src="js/setup.js" type="text/javascript"></script> <!-- customization -->
<!-- Custom styles for this template, i.e. navigation (move this to base.css) -->
<link href="css/bootstrap-base.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="bootstrap/js/html5shiv.js"></script>
<script src="bootstrap/js/respond.min.js"></script>
<![endif]-->
<!-- old css styles -->
<link rel="stylesheet" type="text/css" media="all" href="css/base.css" >
<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" >
<!--[if lt IE 6]>
<link rel="stylesheet" type="text/css" media="screen" href="css/oldie.css" >
<![endif]-->
<!--[if lte IE 6.0]>
<link rel="stylesheet" type="text/css" media="screen" href="css/ie6.css" >
<![endif]-->
<!--[if lte IE 7.0]>
<link rel="stylesheet" type="text/css" media="screen" href="css/ie7.css" >
<![endif]-->
<script type="text/javascript" src="./bootstrap/js/typeahead.jquery.min.js"></script>
<script type="text/javascript">
//<!--
var suggestMatcher = function() {
return function opensearch(q, cb) {
$.getJSON(suggestUrl + "&q="+ q, function(data) {
var parsed = [];
for (var i = 0; i < data[0][1].length; i++) {
var row = data[0][1][i];
if (row) {
parsed[parsed.length] = {
data: [row],
value: row,
result: row
};
};
};
cb(parsed);
});
};
};
$(document).ready(function() {
$('#search').typeahead({hint:false,highlight:true,minLength:1}, {
name: 'states',
displayKey: 'value',
source: suggestMatcher()
});
});
//-->
</script>
<link rel="search" type="application/opensearchdescription+xml" title="susper.com'" href="http://susper.com/susper.xml" >
<style type="text/css">.twitter-typeahead {margin: 0px;padding: 0px;top:2px;}</style> <!-- fix for input window -->
</head>
<body id="index" onload="document.getElementById('search').focus()">
<div id="set-susper-default">
<h3>Set Susper as your default search engine on Mozilla!</h3>
<ol>
<li><button id="install-susper">Install susper</button></li>
<li>Mark the checkbox to set Susper as your default search engine</li>
<li>Start searching!</li>
</ol>
<button id="cancel-installation">Cancel</button>
</div>
<script>
$(document).ready(function(){
var isFirefox = typeof InstallTrigger !== 'undefined';
if(isFirefox === false){
$("#set-susper-default").remove();
}
$("#set-susper-default").hide();
if(window.external && window.external.IsSearchProviderInstalled){
var isInstalled = window.external.IsSearchProviderInstalled("http://susper.com");
if(!isInstalled){
$("#set-susper-default").show();
}
}
$("#install-susper").on("click", function(){
window.external.AddSearchProvider("http://susper.com/susper.xml");
});
$("#cancel-installation").on("click", function(){
$("#set-susper-default").remove();
});
});
</script>
<!-- top navigation -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a id="navbar-homepage" class="navbar-brand" href="http://susper.com" style="position:absolute;top:-6px;display:inline;white-space:nowrap;">
<img id="logo" class="yacylogo" src="images/susper.svg" alt="YaCy" style="height:auto; width:auto; max-width:200px; max-height:32px;vertical-align:middle">
</a>
<span id="topmenu" style="position:absolute;top:12px;left:80px;display:inline;white-space:nowrap;font-size:2em;"></span>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li id="header_help" class="dropdown">
<a href="#" data-toggle="dropdown" class="dropdown-toggle" data-proofer-ignore><span class="glyphicon glyphicon-question-sign"></span></a>
<ul class="dropdown-menu">
<li id="header_profile"><a href="yacysearch/about.html">About This Page</a></li>
<li id="header_tutorial"><a href="http://yacy.net/tutorials/">YaCy Tutorials</a></li>
<li class="divider"></li>
<li id="header_download"><a href="http://yacy.net" target="_blank"><i>external</i>&nbsp;&nbsp;&nbsp;Download YaCy</a></li>
<li id="header_community"><a href="http://forum.yacy.de" target="_blank"><i>external</i>&nbsp;&nbsp;&nbsp;Community (Web Forums)</a></li>
<li id="header_wiki"><a href="http://wiki.yacy.de" target="_blank"><i>external</i>&nbsp;&nbsp;&nbsp;Project Wiki</a></li>
<li id="header_git"><a href="https://github.com/yacy/yacy_search_server/commits/master" target="_blank"><i>external</i>&nbsp;&nbsp;&nbsp;Git Repository</a></li>
<li id="header_bugs"><a href="http://bugs.yacy.net" target="_blank"><i>external</i>&nbsp;&nbsp;&nbsp;Bugtracker</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="container-fluid">
<div class="starter-template">
<h2 class="yacy"><a href="http://yacy.net" class="yacylogo" id="homepage"><img src="images/susper.svg" alt="YaCy" id="biglogo" style="margin: auto;"></a></h2>
<h2 class="yacy" id="greeting"></h2>
<form class="search form-inline" action="yacysearch/index.html" method="get" id="searchform" accept-charset="UTF-8">
<fieldset class="maininput">
<div class="input-group">
<input name="query" id="search" type="text" size="40" maxlength="80" value="" autofocus="autofocus" onFocus="this.select()" class="form-control searchinput typeahead" >
<div class="input-group-btn">
<button id="Enter" name="Enter" class="btn btn-primary" type="submit">Search</button>
</div>
</div>
<input type="hidden" name="verify" value="false" >
<input type="hidden" name="nav" value="filetype,protocol,hosts,authors,collections,namespace,topics,date" >
<input type="hidden" name="startRecord" id="startRecord" value="0" >
<input type="hidden" name="indexof" value="off" >
<input type="hidden" name="meanCount" value="5" >
<input type="hidden" name="resource" value="global" >
<input type="hidden" name="prefermaskfilter" value="" >
<input type="hidden" name="maximumRecords" value="10" >
<input id="timezoneOffset" type="hidden" name="timezoneOffset" value="" >
</fieldset>
<script >document.getElementById("timezoneOffset").value = new Date().getTimezoneOffset();</script>
</form>
</div>
</div>
<!-- modify content according to query url attributes -->
<script type="text/javascript">
document.getElementById("title").appendChild(document.createTextNode(headline));
document.getElementById("topmenu").appendChild(document.createTextNode(headline));
document.getElementById("greeting").appendChild(document.createTextNode(greeting));
document.getElementById("navbar-homepage").setAttribute("href", homepage);
document.getElementById("homepage").setAttribute("href", homepage);
document.getElementById("logo").setAttribute("src", logo.replace("../",""));
document.getElementById("biglogo").setAttribute("src", logo.replace("../",""));
document.getElementById("search").setAttribute("placeholder", queryplaceholder);
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,26 +0,0 @@
/*
* setup.js
* customization values for the yacy_webclient_bootstrap templates
* (C) 2014, 2015 by Michael Peter Christen, licensed under a
* Creative Commons Attribution 2.0 Generic License (CC-BY 2.0)
*
* HOW TO USE:
* Just change the server address to your own search server address!
* For example, if you want to use your local YaCy, set it to
*
* var server="localhost:8090";
*
* The address may be different from the place where this wab pages application is hosted
* because the content is fetched using JSONP.
*
* After each update, you must change this again or save the address before doing an update.
*/
var server="yacy.searchlab.eu";
var searchURL='http://' + server + '/solr/select?callback=?';
var suggestUrl='http://' + server + '/suggest.json?callback=?';
var homepage="http://susper.com";
var logo="../images/susper.svg";
var headline="";
var greeting="";
var queryplaceholder="";

View file

@ -1,386 +0,0 @@
/*
* yacysearch.js
* Models, Collections and Views for the yacy_webclient_bootstrap web-page templates
* (C) 2014, 2015 by Michael Peter Christen, licensed under a
* Creative Commons Attribution 2.0 Generic License (CC-BY 2.0)
*/
// model for search result evaluation
var SearchModel = Backbone.Model.extend({
defaults:{hl:'false',query:'',start:'0',rows:'100',layout:'paragraph',startTime:new Date(),servlet:"index.html",contentdom:"text"},
url:function(){
u = searchURL + '&hl=false&wt=yjson&facet=true&facet.mincount=1&facet.field=host_s&facet.field=url_file_ext_s&facet.field=url_protocol_s&facet.field=author_sxt&facet.field=collection_sxt&start=' + this.attributes.start + '&rows=' + this.attributes.rows + '&query=' + this.attributes.query;
if (this.attributes.layout == "images") u += "&fq=url_file_ext_s:(png+OR+jpeg+OR+jpg+OR+gif)";
return u;
},
parse:function(resp){
return resp[0].channels[0];
},
rowCollection:function(){
var rc = new RowCollection();
rc.add(this.attributes.items);
return rc;
},
totalResults:function(){
var tr = this.attributes.totalResults.replace(/[,.]/,"");
if (this.rowCollection().length > tr) tr = this.rowCollection().length;
return tr;
},
navigationCollection:function(){
var navigationCollection = new NavigationCollection();
navigationCollection.add(this.attributes.navigation);
return navigationCollection;
},
renderNavigation:function(title, layout) {
var html = "";
// image navigation selection
var u = this.attributes.servlet + "?query=" + this.attributes.query + "&startRecord=" + this.attributes.start;
if (this.attributes.layout == "paragraph" || this.attributes.layout == "table") {
html += "<button type=\"button\" class=\"btn btn-default active\">All</button>";
html += "<button type=\"button\" class=\"btn btn-default\" onclick=\"window.location.href='" + u + "&maximumRecords=100&layout=images&contentdom=image'\">Images</button>";
}
if (this.attributes.layout == "images") {
html += "<button type=\"button\" class=\"btn btn-default\" onclick=\"window.location.href='" + u + "&maximumRecords=10&layout=paragraph&contentdom=text'\">All</button>";
html += "<button type=\"button\" class=\"btn btn-default active\">Images</button>";
}
// in case of document: document type navigation
if (this.attributes.layout == "paragraph" || this.attributes.layout == "table") {
var u = this.attributes.servlet + "?query=" + this.attributes.query + "&startRecord=" + this.attributes.start + "&maximumRecords=" + this.attributes.rows;
html += "<p class=\"navbutton\"></p><div class=\"btn-group btn-group-justified\">";
/* if (this.attributes.layout == "paragraph") {
html += "<div class=\"btn-group btn-group-xs\"><button type=\"button\" class=\"btn btn-default active\">Paragraph Layout</button></div>";
html += "<div class=\"btn-group btn-group-xs\"><button type=\"button\" class=\"btn btn-default\" onclick=\"window.location.href='" + u + "&layout=table&contentdom=all'\">Table Layout</button></div>";
}
if (this.attributes.layout == "table") {
html += "<div class=\"btn-group btn-group-xs\"><button type=\"button\" class=\"btn btn-default\" onclick=\"window.location.href='" + u + "&layout=paragraph&contentdom=text'\">Paragraph Layout</button></div>";
html += "<div class=\"btn-group btn-group-xs\"><button type=\"button\" class=\"btn btn-default active\">Table Layout</button></div>";
} */
html += "</div>";
}
return html;
}
});
var RowModel = Backbone.Model.extend({
// default keys are: title, link, code, description, pubDate, size, sizename, guid, faviconCode, host, path, file, urlhash, ranking
scriptline:function(type) {
if (this.attributes.link == null) return "";
if (this.attributes.link.indexOf("smb://") >= 0)
return "smbget -n -a -r \"" + this.attributes.link + "\"";
else
return "curl -OL \"" + this.attributes.link + "\"";
},
renderRow:function(style) {
var link = this.attributes.link;
if (link == null || link == "") link = this.attributes.image;
if (link == null) return "";
var image = this.attributes.image ? this.attributes.image : link;
var protocol = "";
var host = "";
// extract the path
var path = link;
var file = "";
var p = link.indexOf("//");
if (p > 0) {
protocol = link.substring(0, p - 1);
q = link.indexOf("/", p + 2);
if (q > 0) {
host = link.substring(p + 2, q);
path = link.substring(q);
} else {
host = link.substring(p + 2);
path = "/";
}
}
var q = path.lastIndexOf("/");
if (q > 0) {
file = path.substring(q + 1);
path = path.substring(0, q + 1);
} else {
file = path;
path = "/";
}
var title = this.get("title");
var description = this.get("description");
path = unescape(path);
var origpath = path; // save this for later in the link, this may be shortened now
if (path.length >= 40) path = path.substring(0, 18) + "..." + path.substring(path.length - 19);
if (title == "") title = path;
if (title.length >= 130) title = title.substring(0, 65) + "..." + title.substring(title.length - 65);
var pd = this.get("pubDate");
if (pd == undefined) pd = "";
var comma = pd.indexOf(",");
if (comma > 0) pd = pd.substring(comma + 2);
if (pd.substring(pd.length - 6) == " +0000") pd = pd.substring(0, pd.length - 6);
var pdnt = pd;
if ((p = pdnt.lastIndexOf(' ')) >= 0) pdnt = pdnt.substring(0, p);
pd = pd.replace(" ","&nbsp;").replace(" ","&nbsp;").replace(" ","&nbsp;");
// make table row
var html = "";
if (style == "paragraph" || style == "paragraph") {
html += "<div class=\"searchresults\">";
html += "<h4 class=\"linktitle\">";
html += "<a href=\"" + link + "\" target=\"_self\">" + title + "</a></h4>";
if (title != description) html += "<p class=\"snippet\"><span class=\"snippetLoaded\">" + description + "</span></p>";
html += "<p class=\"url\"><a href=\"" + link + "\" target=\"_self\">" + link + "</a></p>";
html += "<p class=\"urlinfo\">" + pdnt + "</p>";
html += "</div>";
}
if (style == "imageCell") {
if (file.length == 0 || file == "/") file = "[image]";
html += "<a href=\"" + link + "\" name=\"" + file + "\">";
html += "<img src=\"" + image + "\" width=\"96\" height=\"96\" />";
html += "</a>";
}
// return entry
return html;
}
});
var RowCollection = Backbone.Collection.extend({
model: RowModel,
resultScript:function() {
var script = "";
for (var i = 0; i < this.length; i++) { script += this.at(i).scriptline() + "\n"; }
return script;
},
resultList:function() {
var html = "";
if (this.length > 0) {
for (var i = 0; i < this.length; i++) { html += this.at(i).renderRow("paragraph"); }
}
return html;
},
resultTable:function() {
var html = "";
if (this.length > 0) {
for (var i = 0; i < this.length; i++) { html += this.at(i).renderRow("paragraph"); }
}
return html;
},
resultImages:function() {
var html = "";
for (var i = 0; i < this.length; i++) { html += this.at(i).renderRow("imageCell"); }
return html;
}
});
var FacetModel = Backbone.Model.extend({
facetElements:function() {
var elts = {};
for (var fc = 0; fc < this.attributes.elements.length; fc++) {
elts[this.attributes.elements[fc].name] = this.attributes.elements[fc].count;
}
return elts;
},
facetBox:function(servlet, modifierKey, modifierValue, maxfacets, search) {
var html = "";
var elements = this.facetElements();
var extnav = "";
var ftc = 0;
for (var key in elements) if (elements[key] > 0) ftc++;
var display = ftc < maxfacets ? "block" : "none";
ftc = 0;
var query = decodeURIComponent(search.attributes.query);
for (var key in elements) {
if (elements[key] > 0) {
var keyquote = (key.indexOf(' ') > 0) ? "(" + key.replace(/ /g, " ") + ")" : key;
if (keyquote == modifierValue) {
var nq = servlet + "?query=" + query.substring(0, query.length - modifierKey.length - modifierValue.length - 1) + "&startRecord=" + search.attributes.start + "&maximumRecords=" + search.attributes.rows + "&layout=" + search.attributes.layout
extnav += "<li style=\"display:" + display + "\" id=\"" + this.attributes.displayname + "_" + ftc + "\">";
extnav += "<a href=\"" + nq + "\" class=\"MenuItemLink\"><input type=\"checkbox\" checked=\"checked\" onchange=\"window.location.href='" + nq + "'\"/> " + key + " (" + elements[key] + ")</a></li>";
} else {
var nq = servlet + "?query=" + query + " " + modifierKey + keyquote + "&startRecord=" + search.attributes.start + "&maximumRecords=" + search.attributes.rows + "&layout=" + search.attributes.layout
extnav += "<li style=\"display:" + display + "\" id=\"" + this.attributes.displayname + "_" + ftc + "\">";
extnav += "<a href=\"" + nq + "\" class=\"MenuItemLink\"><input type=\"checkbox\" onchange=\"window.location.href='" + nq + "'\"/> " + key + " (" + elements[key] + ")</a></li>";
}
ftc++;
}
}
extnav = "<ul class=\"nav nav-sidebar menugroup\"><li style=\"cursor: pointer; cursor: hand;\"><h3 onclick=\"toggleVisibility('" + this.attributes.displayname + "', " + ftc + ");\">" + this.attributes.displayname + " [" + ftc + "] <span style=\"float:right\" id=\"chevron-" + this.attributes.displayname + "\" class=\"glyphicon glyphicon-chevron-down\" title=\"click to expand facet\"></span></h3></li>" + extnav + "</ul>";
if (ftc >= 1) {
html += extnav;
}
return html;
},
tagCloud:function(servlet, modifierKey, modifierValue, maxfacets, search) {
var html = "";
var elements = this.facetElements();
var extnav = "";
var ftc = 0;
for (var key in elements) if (elements[key] > 0) ftc++;
var display = ftc < maxfacets ? "block" : "none";
ftc = 0;
var query = decodeURIComponent(search.attributes.query);
for (var key in elements) {
if (elements[key] > 0) {
var nq = servlet + "?query=" + query + " " + key + "&startRecord=" + search.attributes.start + "&maximumRecords=" + search.attributes.rows + "&layout=" + search.attributes.layout
var newlink = "<a rel=\"" + elements[key] + "\" href=\"" + nq + "\" style=\"text-decoration:none;font-size:" + (7 + parseInt(elements[key])) + "px;\">" + key + "</a> ";
extnav += newlink;
ftc++;
}
}
extnav = "<div id=\"tagcloud\" style=\"text-align:justify\">" + extnav + "</div>";
if (ftc > 1) {
html += extnav;
}
return html;
}
});
var NavigationCollection = Backbone.Collection.extend({
model:FacetModel,
genericfacets:function() {
var elts = [];
var fc = 0;
for (i = 0; i < this.length; i++) {
var facet = this.at(i);
var elements = facet.attributes.elements;
if (elements[0].modifier === undefined) continue;
var modifier = decodeURIComponent(elements[0].modifier);
var mix = modifier.indexOf("/vocabulary", 0);
if (mix == 0 || mix == 1) elts[fc++] = facet.attributes.facetname;
}
return elts;
},
facet:function(name){
for (i = 0; i < this.length; i++) {
var facet = this.at(i);
var facetname = facet.attributes.facetname;
if (facetname == name) return facet;
}
return null;
}
});
var ModifierModel = Backbone.Model.extend({
defaults:{key:'',value:'',query:''},
initialize: function() {
this.attributes.value = "";
var matcher = " " + this.attributes.key;
var query = decodeURIComponent(this.attributes.query);
if (query.length > matcher.length) {
for (var extl = 2; extl < 120; extl++) {
if (query.length - matcher.length - extl < 0) break;
var subquery = query.substring(query.length - matcher.length - extl, query.length - extl);
if (subquery == matcher) {
this.attributes.value = query.substring(query.length - extl);
if (this.attributes.value.charAt(0) == '(') {
p = this.attributes.value.indexOf(')');
this.attributes.value = this.attributes.value.substring(0, p + 1);
} else if ((p = this.attributes.value.indexOf(' ')) >= 0) {
this.attributes.value = this.attributes.value.substring(0, p);
}
break;
}
}
}
}
});
// helper functions
function addHover() {
if (document.all&&document.getElementById) {
var divs = document.getElementsByTagName("div");
for (i=0; i<divs.length; i++) {
var node = divs[i];
if (node.className=="searchresults") {
node.onmouseover=function() {
this.className+=" hover";
}
node.onmouseout=function() {
this.className=this.className.replace(" hover", "");
}
}
}
}
}
function fadeOutBar() {
if (document.getElementById("progressbar")) document.getElementById("progressbar").setAttribute('style',"transition:transform 0s;-webkit-transition:-webkit-transform 0s;backgroundColor:transparent;");
}
function statistics(startRecord, maximumRecords, totalcount, navurlbase) {
if (totalcount == 0) return;
if (startRecord >= 0) document.getElementById("startRecord").setAttribute('value', startRecord);
// compose page navigation
var results_from = parseInt(startRecord) + 1;
var results_to = Math.min(parseInt(startRecord) + parseInt(maximumRecords), totalcount);
document.getElementById("progressbar_text").innerHTML = "showing results " + results_from + " - " + results_to + " of " + totalcount;
var resnavElement = document.getElementById("resNav");
if (resnavElement != null) {
var resnav = "<ul class=\"pagination\">";
thispage = Math.floor(startRecord / maximumRecords);
if (thispage == 0) {
resnav += "<li class=\"disabled\"><a href=\"#\">&laquo;</a></li>";
} else {
resnav += "<li><a id=\"prevpage\" href=\"";
resnav += (navurlbase + "&amp;startRecord=" + ((thispage - 1) * maximumRecords));
resnav += "\">&laquo;</a></li>";
}
numberofpages = Math.floor(Math.min(10, 1 + ((totalcount - 1) / maximumRecords)));
if (!numberofpages) numberofpages = 10;
for (i = 0; i < numberofpages; i++) {
if (i == thispage) {
resnav += "<li class=\"active\"><a href=\"#\">";
resnav += (i + 1);
resnav += "</a></li>";
} else {
resnav += "<li><a href=\"";
resnav += (navurlbase + "&amp;startRecord=" + (i * maximumRecords));
resnav += "\">" + (i + 1) + "</a></li>";
}
}
if (thispage >= numberofpages) {
resnav += "<li><a href=\"#\">&raquo;</a></li>";
} else {
resnav += "<li><a id=\"nextpage\" href=\"";
resnav += (navurlbase + "&amp;startRecord=" + ((thispage + 1) * maximumRecords));
resnav += "\">&raquo;</a>";
}
resnav += "</ul>";
resnavElement.innerHTML = resnav;
}
}
function toggleVisibility(name, count) {
if (document.getElementById(name + "_0").style.display == "none") {
for (i = 0; i < count; i++) document.getElementById(name + "_" + i).style.display="block";
document.getElementById("chevron-" + name).className = "glyphicon glyphicon-chevron-up";
} else {
for (i = 0; i < count; i++) document.getElementById(name + "_" + i).style.display="none";
document.getElementById("chevron-" + name).className = "glyphicon glyphicon-chevron-down";
}
}

48
karma.conf.js Executable file
View file

@ -0,0 +1,48 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular/cli'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular/cli/plugins/karma'),
require('karma-coverage')
],
files: [
{ pattern: './src/test.ts', watched: false },
'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js',
'https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.4.2/js/swiper.min.js'
],
preprocessors: {
'./src/test.ts': ['@angular/cli'],
'src/app/**/*.js': ['coverage']
},
client: {
clearContext: false
},
mime: {
'text/x-typescript': ['ts', 'tsx']
},
coverageIstanbulReporter: {
reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
angularCli: {
environment: 'dev'
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul']
: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};

13544
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

81
package.json Normal file
View file

@ -0,0 +1,81 @@
{
"name": "susper",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"start": "node server.js",
"lint": "tslint \"src/**/*.ts\"",
"test": "ng test --single-run --code-coverage --reporters=coverage-istanbul",
"pree2e": "webdriver-manager update",
"e2e": "protractor",
"postinstall": "ng build --prod --build-optimizer",
"deploy": "ng build --prod --build-optimizer --base-href=/susper.com/ && cp ./dist/index.html ./dist/404.html && ./node_modules/.bin/angular-cli-ghpages --no-silent"
},
"private": true,
"dependencies": {
"@angular/animations": "^4.3.6",
"@angular/cdk": "^2.0.0-beta.8",
"@angular/common": "4.1.3",
"@angular/compiler": "4.1.3",
"@angular/core": "4.1.3",
"@angular/forms": "4.1.3",
"@angular/http": "4.1.3",
"@angular/material": "^2.0.0-beta.8",
"@angular/platform-browser": "4.1.3",
"@angular/platform-browser-dynamic": "4.1.3",
"@angular/router": "4.1.3",
"@angular/service-worker": "^1.0.0-beta.16",
"@ngrx/core": "^1.2.0",
"@ngrx/effects": "^2.0.3",
"@ngrx/router-store": "^1.2.6",
"@ngrx/store": "^2.2.2",
"@ngrx/store-devtools": "^3.2.4",
"bootstrap": "^3.3.0",
"chart.js": "^2.6.0",
"codecov.io": "^0.1.6",
"core-js": "^2.4.1",
"express": "^4.16.3",
"hoek": "^5.0.3",
"ng2-bs3-modal": "^0.10.4",
"ng2-charts": "^1.6.0",
"ngrx-store-freeze": "^0.1.9",
"ngx-infinite-scroll": "^0.5.1",
"path": "^0.12.7",
"reselect": "^3.0.1",
"rxjs": "^5.5.6",
"ts-helpers": "^1.1.2",
"zone.js": "^0.8.11"
},
"devDependencies": {
"@angular/cli": "^1.1.0",
"@angular/compiler-cli": "4.1.3",
"@types/jasmine": "2.5.48",
"@types/jquery": "^3.3.20",
"@types/node": "^7.0.23",
"angular-cli-ghpages": "^0.5.1",
"codecov": "^3.0.2",
"codelyzer": "~3.0.1",
"enhanced-resolve": "^3.3.0",
"jasmine-core": "2.6.2",
"jasmine-spec-reporter": "4.1.0",
"jquery": "^3.2.1",
"karma": "^6.3.16",
"karma-chrome-launcher": "^2.1.1",
"karma-cli": "^1.0.1",
"karma-coverage": "^1.1.1",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "^1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-remap-istanbul": "^0.6.0",
"protractor": "^5.3.2",
"ts-node": "3.0.4",
"tslint": "^5.4.0",
"typescript": "~2.3.4",
"webdriver-manager": "12.0.6"
},
"engines": {
"node": "8.2.1",
"npm": "6.0.1"
}
}

14
pr_deploy.sh Normal file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
echo "Not a PR. Skipping surge deployment"
exit 0
fi
npm i -g surge
export SURGE_LOGIN=test@example.co.in
# Token of a dummy account.
export SURGE_TOKEN=d1c28a7a75967cc2b4c852cca0d12206
export DEPLOY_DOMAIN=https://pr-${TRAVIS_PULL_REQUEST}-fossasia-susper.surge.sh
surge --project ./dist --domain $DEPLOY_DOMAIN;

32
protractor.conf.js Executable file
View file

@ -0,0 +1,32 @@
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/docs/referenceConf.js
/*global jasmine */
var SpecReporter = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
jasmine.getEnv().addReporter(new SpecReporter());
}
};

16
server.js Normal file
View file

@ -0,0 +1,16 @@
//Install express server
const express = require('express');
const path = require('path');
const app = express();
// Serve only the static files form the dist directory
app.use(express.static(__dirname + '/dist'));
app.get('/*', function(req,res) {
res.sendFile(path.join(__dirname+'/dist/index.html'));
});
// Start the app by listening on the default Heroku port
app.listen(process.env.PORT || 8080);

View file

@ -0,0 +1,80 @@
#about{
min-height:100vh;
position: relative;
}
footer{
position: absolute;
bottom: 0px;
width: 100%
}
.navbar-nav > li > a {
text-align: left;
}
.navbar-right {
border-top:none;
}
.navbar-logo {
height: 30px;
margin-top: 8px;
padding-left: 20px;
}
.about-navbar {
position: relative;
top: -5px;
}
.navbar {
margin-bottom: 0px !important;
}
.nav-about {
clear: both;
margin: -57px 0 0 0
}
a {
text-decoration: none;
color: rgb(119,119,119);
padding-right: 0px;
}
.navbar-collapse.navbar-right {
padding-top: 15px;
}
a:hover {
color: rgb(51,51,51);
text-decoration: none;
}
.navbar-brand {
padding-left: 100px;
}
.contact-container {
margin-bottom: 64px;
}
@media screen and (max-width:990px) {
.navbar-collapse.navbar-right {
text-align: right;
}
}
@media only screen and (max-width: 768px) {
.navbar-logo{
margin-left: -77px;
margin-top: 0px;
}
}
@media screen and (max-width: 768px ){
.contact-container {
margin-bottom: 88px;
}
}

View file

@ -0,0 +1,218 @@
<div id="about">
<nav class="navbar navbar-default nav-about">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#dropmenu">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand about-navbar" routerLink="/" title="Susper Search Engine">
<img alt="brand" class="navbar-logo" src="../../assets/images/susper.svg" />
</a>
</div>
<div class="collapse navbar-collapse" id="dropmenu">
<ul class="nav navbar-nav navbar-collapse navbar-right">
<li><a routerLink="/privacy">Privacy</a></li>
<li><a routerLink="/terms">Terms</a></li>
<li><a routerLink="/about">About</a></li>
<li><a routerLink="/contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<div class="container" style="padding-top: 56px">
<div class="aboutFOSS">
<h1 style="text-align: center">About Us</h1>
<h2 style="text-align: center">
We bring amazing people together to create, develop, design <br />and make things with Open
Technologies - hardware and software - <br />and share our work for the benefit of all.
</h2>
</div>
<div class="aboutSUS row" style="padding-top: 80px">
<div class="col-md-3">
<h2>About Susper</h2>
Susper is a decentral Search Engine that uses the peer to peer system 'YaCy' and 'Apache
Solr' to crawl and index search results.
</div>
<div class="col-md-3">
<h2>About YaCy</h2>
YaCy is a free search engine that anyone can use to build a search portal for their intranet
or to help search the public internet. Read more about YaCy here -
<a [href]="yacySite">YaCy Decentralized Web Search</a>
</div>
<div class="col-md-3">
<h2>Communication</h2>
Facing issues while setting up project on local environment? Our chat channel is on gitter
here: <a href="https://gitter.im/fossasia/susper.com">fossasia/susper.com</a>. We'll be
happy to help you out!
</div>
<div class="col-md-3">
<h2>Contribute to our project</h2>
Get involved as an Open Source developer, designer or tester and start your adventure today!
Solve an issue or feature request on our repositories with
<a href="https://github.com/fossasia/susper.com">FOSSASIA</a>. Build up your developer
profile and become part of a fantastic community.
</div>
</div>
<div class="ourTeam row">
<h2 style="text-align:center">Our Team</h2>
<div style="padding-top:40px">
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars2.githubusercontent.com/u/1583873?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Mario Behling</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars3.githubusercontent.com/u/20185076?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Soumya Vadlamannati</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars1.githubusercontent.com/u/15216503?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Nikhil Rayaprolu</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars2.githubusercontent.com/u/22245418?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Harshit Prasad</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars1.githubusercontent.com/u/25537606?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Praveen Ojha</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars1.githubusercontent.com/u/238730?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Michael Christen</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars0.githubusercontent.com/u/7692626?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Isuru Abeyvardana</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars0.githubusercontent.com/u/19776278?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Prabhu Pant</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars2.githubusercontent.com/u/28914919?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Sathira Umesh</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars3.githubusercontent.com/u/33062425?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Raj Vaibhav Dubey</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars1.githubusercontent.com/u/33882273?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Valentin Bercaru</h4>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-4 col-md-3 col-lg-3 text-center">
<div class="card">
<img
class="card-img-top"
style="width: 200px; height : 200px"
src="https://avatars0.githubusercontent.com/u/22936570?s=460&v=4"
/>
<div class="card-body">
<h4 style="text-align:center; font-size:18px" class="card-text">Bhavesh Anand</h4>
</div>
</div>
</div>
</div>
</div>
<hr />
<div class="contact-container">
<h1>Contact Us</h1>
<p>
If you would like to get in touch with us, you find our details on the
<a href="https://susper.com/contact">contact page</a>.
</p>
</div>
</div>
<footer><app-footer-navbar></app-footer-navbar></footer>
</div>

View file

@ -0,0 +1,60 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AboutComponent } from './about.component';
import { FooterNavbarComponent } from '../footer-navbar/footer-navbar.component';
import { HttpModule } from '@angular/http';
import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';
describe('Component: About', () => {
let component: AboutComponent;
let fixture: ComponentFixture<AboutComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
HttpModule
],
declarations: [
AboutComponent,
FooterNavbarComponent,
ModalComponent
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AboutComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create an About Component', () => {
const aboutComponent = new AboutComponent();
expect(aboutComponent).toBeTruthy();
});
it('should have alt text property as brand', () => {
const compiled = fixture.debugElement.nativeElement;
const image: HTMLImageElement = compiled.querySelector('div.navbar-header img');
expect(image).toBeTruthy();
expect(image.alt).toBe('brand');
});
it('should have an footer navbar component', () => {
const footerNavbar = new FooterNavbarComponent();
expect(footerNavbar).toBeTruthy();
});
it('should have a footer element', () => {
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('footer')).toBeTruthy();
});
it('should have an app-footer-navbar element', () => {
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('app-footer-navbar')).toBeTruthy();
});
});

View file

@ -0,0 +1,18 @@
import { Component, OnInit } from '@angular/core';
import { url } from '../../assets/url_configuration';
@Component({
selector: 'app-about',
templateUrl: './about.component.html',
styleUrls: ['./about.component.css'],
})
export class AboutComponent implements OnInit {
yacySite: string;
constructor() {}
ngOnInit() {
this.yacySite = url.yacy.site;
}
}

View file

@ -0,0 +1,26 @@
import { Action } from '@ngrx/store';
import { type } from '../utils';
export const ActionTypes = {
CONTENT_CHANGE: type('[Knowledge] Content Change'),
IMAGE_CHANGE: type('[Knowledge] Image Change'),
DESCRIPTION_CHANGE: type('[Knowledge] Description Change')
};
export class SearchContentAction implements Action {
type = ActionTypes.CONTENT_CHANGE;
constructor(public payload: object) {}
}
export class SearchImageAction implements Action {
type = ActionTypes.IMAGE_CHANGE;
constructor(public payload: object) {}
}
export class DescriptionAction implements Action {
type = ActionTypes.DESCRIPTION_CHANGE;
constructor(public payload: object) {}
}
export type Actions
= SearchContentAction | SearchImageAction | DescriptionAction ;

20
src/app/actions/query.ts Normal file
View file

@ -0,0 +1,20 @@
import { Action } from '@ngrx/store';
import { type } from '../utils';
export const ActionTypes = {
QUERYCHANGE: type('[Query] Change'),
QUERYSERVER: type('[Query] Server'),
};
export class QueryAction implements Action {
type = ActionTypes.QUERYCHANGE;
constructor(public payload: any) {}
}
export class QueryServerAction implements Action {
type = ActionTypes.QUERYSERVER;
constructor(public payload: any) {}
}
export type Actions
= QueryAction|QueryServerAction ;

32
src/app/actions/search.ts Normal file
View file

@ -0,0 +1,32 @@
import { Action } from '@ngrx/store';
import { type } from '../utils';
export const ActionTypes = {
CHANGE: type('[Search] Change'),
ITEMS: type('[Search] Items'),
TOTALRESULTS: type('[Search] Totalresults'),
NAVIGATION: type('[Search] Navigation'),
};
export class SearchAction implements Action {
type = ActionTypes.CHANGE;
constructor(public payload: any) {}
}
export class ItemsAction implements Action {
type = ActionTypes.ITEMS;
constructor(public payload: any) {}
}
export class TotalResultsAction implements Action {
type = ActionTypes.TOTALRESULTS;
constructor(public payload: any) {}
}
export class NavigationAction implements Action {
type = ActionTypes.NAVIGATION;
constructor(public payload: any) {}
}
export type Actions
= SearchAction | ItemsAction | TotalResultsAction | NavigationAction ;

14
src/app/actions/speech.ts Normal file
View file

@ -0,0 +1,14 @@
import { Action } from '@ngrx/store';
import { type } from '../utils';
export const ActionTypes = {
CHANGE: type('[Speech] Change'),
};
export class SearchAction implements Action {
type = ActionTypes.CHANGE;
constructor(public payload: any) {}
}
export type Actions
= SearchAction;

View file

@ -0,0 +1,13 @@
.menu-item-link {
font-size: 14px;
}
.modal-body {
max-height: 560px;
overflow-y: scroll;
overflow-x: hidden;
}
.section-heading {
font-weight: bold;
}

View file

@ -0,0 +1,52 @@
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<!-- Start ignoring HTMLLintBear -->
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<!-- Stop ignoring HTMLLintBear -->
<h2 class="modal-title" id="my-modal-label">Advanced Search</h2>
</div>
<div class="modal-body">
<ul class="nav nav-sidebar menugroup" *ngIf="selectedelements.length">
<li data-toggle="collapse">
<h3 class="section-heading">Applied Filters</h3>
</li>
<li class="filter-checkbox" *ngFor="let element of selectedelements">
<a (click)="removeurl(element.modifier)" class="menu-item-link">
<div class="checkbox">
<label>
<input type="checkbox" checked disabled> {{element.name}} <span class="badge">{{element.count}}</span>
</label>
</div>
</a>
</li>
</ul>
<div id="filtersearch" *ngFor="let nav of navigation$|async">
<ul class="nav nav-sidebar menugroup">
<li data-toggle="collapse" [attr.data-target]="'#'+nav.facetname">
<h3 class="section-heading">{{nav.displayname}}</h3>
</li>
<li class="filter-checkbox" *ngFor="let element of nav.elements">
<a (click)="changeurl(element.modifier,element)" class="menu-item-link">
<div class="checkbox">
<label>
<input type="checkbox"> {{element.name}} <span class="badge">{{element.count}}</span>
</label>
</div>
</a>
</li>
</ul>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" data-dismiss="modal">Search</button>
</div>
</div>
</div>
<div id="sidebar" class="col-md-3">
</div>

View file

@ -0,0 +1,55 @@
/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
/**
* To avoid error 'No provider for Store'
* import StoreModule and reducer
*/
import { reducer } from '../reducers/index';
import { StoreModule } from '@ngrx/store';
import { AdvancedsearchComponent } from './advancedsearch.component';
describe('AdvancedsearchComponent', () => {
let component: AdvancedsearchComponent;
let fixture: ComponentFixture<AdvancedsearchComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
FormsModule,
HttpModule,
JsonpModule,
StoreModule.provideStore(reducer)
],
declarations: [
AdvancedsearchComponent
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AdvancedsearchComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create an advanced search instance', () => {
expect(component).toBeTruthy();
});
it('should have advance search modal', () => {
const compiled = fixture.debugElement.nativeElement;
const button = compiled.querySelector('button');
button.click();
const modalBody: HTMLInputElement = compiled.querySelector('div.modal-body');
expect(modalBody).toBeTruthy();
});
});

View file

@ -0,0 +1,40 @@
import { Component, OnInit } from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Store} from '@ngrx/store';
import * as fromRoot from '../reducers';
import {Observable} from 'rxjs';
@Component({
selector: 'app-advancedsearch',
templateUrl: './advancedsearch.component.html',
styleUrls: ['./advancedsearch.component.css']
})
export class AdvancedsearchComponent implements OnInit {
querylook = {};
navigation$: Observable<any>;
selectedelements: Array<any> = [];
changeurl(modifier, element) {
this.querylook['query'] = this.querylook['query'] + '+' + decodeURIComponent(modifier);
this.selectedelements.push(element);
this.route.navigate(['/search'], {queryParams: this.querylook});
return false;
}
removeurl(modifier) {
this.querylook['query'] = this.querylook['query'].replace('+' + decodeURIComponent(modifier), '');
this.route.navigate(['/search'], {queryParams: this.querylook});
}
constructor(private route: Router, private activatedroute: ActivatedRoute, private store: Store<fromRoot.State>) {
this.activatedroute.queryParams.subscribe(query => {
this.querylook = Object.assign({}, query);
this.navigation$ = store.select(fromRoot.getNavigation);
});
}
ngOnInit() {
}
}

0
src/app/app Normal file
View file

1
src/app/app.component.css Executable file
View file

@ -0,0 +1 @@

2
src/app/app.component.html Executable file
View file

@ -0,0 +1,2 @@
<router-outlet></router-outlet>
<app-speechtotext *ngIf="hidespeech|async"></app-speechtotext>

90
src/app/app.component.spec.ts Executable file
View file

@ -0,0 +1,90 @@
/* tslint:disable:no-unused-variable */
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
import { IndexComponent } from './index/index.component';
import { NavbarComponent } from './navbar/navbar.component';
import { RouterTestingModule } from '@angular/router/testing';
import { ResultsComponent } from './results/results.component';
import { NotFoundComponent } from './not-found/not-found.component';
import { AdvancedsearchComponent } from './advancedsearch/advancedsearch.component';
import { SearchBarComponent } from './search-bar/search-bar.component';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
import { StoreModule } from '@ngrx/store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { reducer } from './reducers/index';
import { FooterNavbarComponent } from './footer-navbar/footer-navbar.component';
import { AboutComponent } from './about/about.component';
import { ContactComponent } from './contact/contact.component';
import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';
import { AutoCompleteComponent } from "./auto-complete/auto-complete.component";
import { ThemeComponent } from './theme/theme.component';
import { DropdownComponent } from './dropdown/dropdown.component';
import { IntelligenceComponent } from "./intelligence/intelligence.component";
import { SpeechtotextComponent } from "./speechtotext/speechtotext.component";
import { AutoCorrectComponent } from "./auto-correct/auto-correct.component";
import { StatsboxComponent } from "./statsbox/statsbox.component";
import { SpeechService } from "./services/speech.service";
import { InfiniteScrollModule } from "ngx-infinite-scroll";
import { ChartsModule } from "ng2-charts";
import { InfoboxComponent } from './infobox/infobox.component';
describe('AppComponent', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
InfiniteScrollModule,
BrowserModule,
CommonModule,
FormsModule,
HttpModule,
JsonpModule,
ChartsModule,
StoreModule.provideStore(reducer),
StoreDevtoolsModule.instrumentOnlyWithExtension()
],
declarations: [
AppComponent,
NavbarComponent,
IndexComponent,
ResultsComponent,
NotFoundComponent,
AdvancedsearchComponent,
SearchBarComponent,
FooterNavbarComponent,
AboutComponent,
ContactComponent,
ModalComponent,
AutoCompleteComponent,
ThemeComponent,
DropdownComponent,
IntelligenceComponent,
SpeechtotextComponent,
AutoCorrectComponent,
StatsboxComponent,
InfoboxComponent
],
providers: [
SpeechService
]
});
TestBed.compileComponents();
});
it('should create the app', async(() => {
let fixture = TestBed.createComponent(AppComponent);
let app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy();
}));
it(`should have as title 'Susper'`, async(() => {
let fixture = TestBed.createComponent(AppComponent);
let app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('Susper');
}));
});

73
src/app/app.component.ts Executable file
View file

@ -0,0 +1,73 @@
import {Component, OnInit} from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
import { Store } from "@ngrx/store";
import * as fromRoot from './reducers';
import { Observable } from "rxjs";
import * as queryactions from './actions/query';
import { SpeechService } from "./services/speech.service";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'Susper';
resultscomponentchange$: Observable<any>;
searchdata = {
query: '',
rows: 10,
start: 0,
nopagechange: false
};
wholequery$: Observable<any>;
hidespeech: Observable<any>;
constructor(
private router: Router,
private store: Store<fromRoot.State>,
private speech: SpeechService
) {
this.hidespeech = store.select(fromRoot.getSpeechMode);
this.hidespeech.subscribe(hidespeech => {
if (!hidespeech) {
this.speech.stoprecord();
}
});
this.resultscomponentchange$ = store.select(fromRoot.getItems);
this.resultscomponentchange$.subscribe(res => {
if (this.searchdata.query.length > 0) {
if (!this.searchdata.nopagechange) {
this.router.navigate(['/search'], {queryParams: this.searchdata});
}
}
});
this.wholequery$ = store.select(fromRoot.getwholequery);
this.wholequery$.subscribe(data => {
this.searchdata = data;
});
if (localStorage.getItem('resultscount')) {
this.store.dispatch(new queryactions.QueryServerAction({'query': '', start: 0, rows: 10, search: false, mode: 'text'}));
}
}
ngOnInit() {
this.router.events.subscribe((evt) => {
if (!(evt instanceof NavigationEnd)) {
return;
}
window.scrollTo(0, 0);
});
}
}

135
src/app/app.module.ts Executable file
View file

@ -0,0 +1,135 @@
/* Packages */
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule, JsonpModule } from '@angular/http';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { StoreModule } from '@ngrx/store';
import { CommonModule } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';
import { InfiniteScrollModule } from "ngx-infinite-scroll";
import { ChartsModule } from 'ng2-charts/ng2-charts';
import { EffectsModule } from '@ngrx/effects';
import { Ng2Bs3ModalModule } from 'ng2-bs3-modal/ng2-bs3-modal';
/* Custom Components */
import { AppComponent } from './app.component';
import { NavbarComponent } from './navbar/navbar.component';
import { IndexComponent } from './index/index.component';
import { ResultsComponent } from './results/results.component';
import { NotFoundComponent } from './not-found/not-found.component';
import { AdvancedsearchComponent } from './advancedsearch/advancedsearch.component';
import { SearchBarComponent } from './search-bar/search-bar.component';
import { AboutComponent } from './about/about.component';
import { FooterNavbarComponent } from './footer-navbar/footer-navbar.component';
import { ContactComponent } from './contact/contact.component';
import { TermsComponent } from './terms/terms.component';
import { PrivacyComponent } from './privacy/privacy.component';
import { ApiSearchEffects } from './effects/search-effects';
import { NewadvancedsearchComponent } from './newadvancedsearch/newadvancedsearch.component';
import { AutoCompleteComponent } from './auto-complete/auto-complete.component';
import { ThemeComponent } from './theme/theme.component';
import { CrawlstartComponent } from './crawlstart/crawlstart.component';
import { SearchsettingsComponent } from './searchsettings/searchsettings.component';
import { DropdownComponent } from './dropdown/dropdown.component';
import { IntelligenceComponent } from './intelligence/intelligence.component';
import { SpeechtotextComponent } from './speechtotext/speechtotext.component';
import { AutoCorrectComponent } from './auto-correct/auto-correct.component';
import { StatsboxComponent } from './statsbox/statsbox.component';
import { InfoboxComponent } from './infobox/infobox.component';
import { KnowledgeEffects } from "./effects/knowledge";
/* Custom Services */
import { AutocompleteService } from "./services/autocomplete.service";
import { ThemeService } from './services/theme.service';
import { CrawlstartService } from "./services/crawlstart.service";
import { SpeechService } from './services/speech.service';
import { IntelligenceService } from "./services/intelligence.service";
import { AutocorrectService } from "./services/autocorrect.service";
import { SpeechSynthesisService } from './services/speech-synthesis.service';
import { KnowledgeapiService } from './services/knowledgeapi.service';
import { SearchService } from './services/search.service';
import { NewsService } from './services/news.service';
import { GetJsonService } from './services/get-json.service';
import { HelpComponent } from './help/help.component';
/* Reducers */
import { reducer } from './reducers/index';
const appRoutes: Routes = [
{path: 'search', component: ResultsComponent},
{path: '', component: IndexComponent},
{path: 'about', component: AboutComponent},
{path: 'privacy', component: PrivacyComponent},
{path: 'terms', component: TermsComponent},
{path: 'contact', component: ContactComponent},
{path: '404', component: NotFoundComponent},
{path: 'advancedsearch', component: NewadvancedsearchComponent},
{path: 'crawlstartexpert', component: CrawlstartComponent},
{path: 'preferences', component: SearchsettingsComponent },
{path: 'help', component: HelpComponent},
{path: '**', redirectTo: '/404'},
];
@NgModule({
declarations: [
AppComponent,
NavbarComponent,
IndexComponent,
ResultsComponent,
NotFoundComponent,
AdvancedsearchComponent,
SearchBarComponent,
AboutComponent,
FooterNavbarComponent,
ContactComponent,
TermsComponent,
PrivacyComponent,
NewadvancedsearchComponent,
AutoCompleteComponent,
ThemeComponent,
CrawlstartComponent,
SearchsettingsComponent,
DropdownComponent,
IntelligenceComponent,
SpeechtotextComponent,
AutoCorrectComponent,
StatsboxComponent,
InfoboxComponent,
HelpComponent,
],
imports: [
BrowserModule,
InfiniteScrollModule,
CommonModule,
FormsModule,
HttpModule,
JsonpModule,
RouterModule.forRoot(appRoutes),
StoreModule.provideStore(reducer),
EffectsModule.run(ApiSearchEffects),
EffectsModule.run(KnowledgeEffects),
StoreDevtoolsModule.instrumentOnlyWithExtension(),
Ng2Bs3ModalModule,
ChartsModule
],
providers: [
SearchService,
AutocompleteService,
ThemeService,
SpeechService,
CrawlstartService,
IntelligenceService,
AutocorrectService,
SpeechSynthesisService,
KnowledgeapiService,
NewsService,
GetJsonService
],
bootstrap: [AppComponent]
})
export class AppModule { }

View file

@ -0,0 +1,40 @@
a {
text-decoration: none;
}
.suggestions {
font-family: Arial, sans-serif;
font-size: 17px;
margin-left: 2.4%;
display: block;
}
#index-sug-box {
width: 586px;
}
.query-suggestions:hover {
background: #E3E3E3;
}
.suggestion-box {
width: 634px;
max-width: 100%;
border: 1px solid rgba(150,150,150,0.3);
background-color: white;
margin-top: 47px;
margin-left: -1px;
position: absolute;
}
@media screen and (max-width: 767px) {
.suggestion-box {
width: 95.2vw;
}
}
@media screen and (max-width: 436px) {
.suggestion-box {
display: none;
}
}

View file

@ -0,0 +1,5 @@
<div [id]="getID()" class="suggestion-box" *ngIf="results">
<div *ngFor="let result of results" class="query-suggestions">
<a [routerLink]="resultsearch" [queryParams]="{query: result}" class="suggestions">{{result}}</a>
</div>
</div>

View file

@ -0,0 +1,51 @@
/* tslint:disable:no-unused-variable */
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AutoCompleteComponent } from './auto-complete.component';
import { AutocompleteService } from '../services/autocomplete.service';
import { HttpModule, JsonpModule } from '@angular/http';
import { reducer } from '../reducers/index';
import { StoreModule } from '@ngrx/store';
import { RouterTestingModule } from "@angular/router/testing";
describe('AutoCompleteComponent', () => {
let component: AutoCompleteComponent;
let fixture: ComponentFixture<AutoCompleteComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
HttpModule,
JsonpModule,
StoreModule.provideStore(reducer)
],
declarations: [
AutoCompleteComponent,
],
providers: [
AutocompleteService
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AutoCompleteComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create autocomplete component', () => {
expect(component).toBeTruthy();
});
it('should have query$ variable', () => {
expect(component.query$).toBeTruthy();
});
it('should have resultsearch variable equal to "/search"', () => {
expect(component.resultsearch).toEqual('/search');
});
});

View file

@ -0,0 +1,72 @@
import { Component, OnInit, ChangeDetectorRef, Output, EventEmitter } from '@angular/core';
import { AutocompleteService } from "../services/autocomplete.service";
import { Router, ActivatedRoute } from "@angular/router";
import { Store } from "@ngrx/store";
import * as fromRoot from '../reducers';
@Component({
selector: 'app-auto-complete',
templateUrl: './auto-complete.component.html',
styleUrls: ['./auto-complete.component.css']
})
export class AutoCompleteComponent implements OnInit {
results: Array<any>;
query$: any;
id: string;
resultsearch = '/search';
@Output() hidecomponent: EventEmitter<any> = new EventEmitter<any>();
constructor(
private autocompleteservice: AutocompleteService,
private route: Router,
private activatedroute: ActivatedRoute,
private store: Store<fromRoot.State>,
private ref: ChangeDetectorRef
) {
this.query$ = store.select(fromRoot.getquery);
this.results = [];
this.query$.subscribe( query => {
if (query) {
this.autocompleteservice.getsearchresults(query).subscribe(res => {
if (res) {
if (res[0]) {
this.results = res[1];
if (this.results.length === 0) {
this.hidecomponent.emit(1);
} else {
this.hidecomponent.emit(0);
}
this.results.concat(res[0]);
if ( this.results.length > 5) {
this.results = this.results.splice (0, 5);
}
} else {
this.results = [];
this.hidecomponent.emit(1);
}
} else {
this.results = [];
this.hidecomponent.emit(1);
}
});
}
});
}
getID() {
if (this.route.url.toString() === '/') {
return 'index-sug-box';
} else {
return 'sug-box';
}
}
ngOnInit() {
}
}

View file

@ -0,0 +1,37 @@
.sug {
font-size: medium;
font-weight: 500;
color: navy;
padding-top: 13px;
}
.mean {
font-size: 18px;
color: #dd4b39;
font-weight: normal;
margin-bottom: -2px;
}
@media screen and (max-width: 1080px) and (min-width: 768px) {
.mean{
margin-left: -3%;
}
}
@media screen and (max-width: 1160px) and (min-width: 1081px) {
.mean{
margin-left: -2%;
}
}
.suggest-auto-correct {
font-style: italic;
font-weight: bold;
text-decoration: none;
color: #1a0dab;
font-family: Arial, sans-serif;
}
.suggest-auto-correct:hover {
text-decoration: underline;
cursor: pointer;
}

View file

@ -0,0 +1,3 @@
<div class="sug" *ngIf="sugflag === true">
<p class="mean" [style.color]="themeService.descriptionColor"> Did you mean: <a [routerLink]="resultsearch" [queryParams]="{query: suggestion}" class="suggest-auto-correct" [style.color]="themeService.linkColor">{{suggestion}}</a></p>
</div>

View file

@ -0,0 +1,65 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import {HttpModule, JsonpModule} from "@angular/http";
import {StoreModule} from "@ngrx/store";
import { AutoCorrectComponent } from './auto-correct.component';
import {StoreDevtoolsModule} from "@ngrx/store-devtools";
import {FormsModule} from "@angular/forms";
import {CommonModule} from "@angular/common";
import {BrowserModule} from "@angular/platform-browser";
import {AutocorrectService} from "../services/autocorrect.service";
import {reducer} from "../reducers/index";
import {IntelligenceComponent} from "../intelligence/intelligence.component";
import { ThemeService } from '../services/theme.service';
describe('AutoCorrectComponent', () => {
let component: AutoCorrectComponent;
let fixture: ComponentFixture<AutoCorrectComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule,
BrowserModule,
CommonModule,
FormsModule,
HttpModule,
JsonpModule,
StoreModule.provideStore(reducer),
StoreDevtoolsModule.instrumentOnlyWithExtension(),
],
declarations: [
AutoCorrectComponent,
IntelligenceComponent
],
providers: [
AutocorrectService,
ThemeService
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AutoCorrectComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create an instance of AutoCorrectComponent', () => {
expect(component).toBeTruthy();
});
it('should have query$ variable', () => {
expect(component.query$).toBeTruthy();
});
it('should have resultsearch variable equal to "/search"', () => {
expect(component.resultsearch).toEqual('/search');
});
it('should have resultscomponentchange$ variable as Observables', () => {
expect(component.resultscomponentchange$).toBeTruthy();
});
});

View file

@ -0,0 +1,66 @@
import { Component, OnInit, ChangeDetectorRef, Output, EventEmitter } from '@angular/core';
import { AutocorrectService } from "../services/autocorrect.service";
import { Router, ActivatedRoute } from "@angular/router";
import { Store } from "@ngrx/store";
import * as fromRoot from '../reducers';
import { Observable } from "rxjs";
import { ThemeService } from '../services/theme.service';
@Component({
selector: 'app-auto-correct',
templateUrl: './auto-correct.component.html',
styleUrls: ['./auto-correct.component.css']
})
export class AutoCorrectComponent implements OnInit {
query$: any;
wholequery$: any;
suggestion: any;
sugflag: boolean;
resultsearch = '/search';
isQues: boolean;
resultscomponentchange$: Observable<any>;
@Output() hidecomponent: EventEmitter<any> = new EventEmitter<any>();
constructor(
private autocorrectservice: AutocorrectService,
private route: Router,
private activatedroute: ActivatedRoute,
private store: Store<fromRoot.State>,
private ref: ChangeDetectorRef,
public themeService: ThemeService
) {
this.sugflag = false;
this.query$ = store.select(fromRoot.getquery);
this.resultscomponentchange$ = store.select(fromRoot.getItems);
this.resultscomponentchange$.subscribe(resp => {
this.query$.subscribe(query => {
if (query && !query.includes('/date')) {
this.sugflag = false;
this.isQues = false;
this.isQues = query.substr (query.length - 1) === '?';
this.autocorrectservice.getsearchresults(query.replace (/[?!]/g , "")).subscribe(res => {
this.sugflag = false;
if (res) {
if (res['original'].replace(/[.,?!]/g , "").toLocaleLowerCase() !== res['suggestion'].replace(/[.,?!]/g , "").toLocaleLowerCase() && res['suggestion'] !== '') {
this.sugflag = true;
this.suggestion = this.isQues === true ? res['suggestion'] + '?' : res['suggestion'];
} else {
this.sugflag = false;
}
}
});
}
}).unsubscribe();
});
}
ngOnInit() {
}
}

View file

@ -0,0 +1,178 @@
@media screen and (max-width:990px) {
.navbar-collapse.navbar-right {
text-align: right;
}
}
.navbar-nav > li > a {
text-align: left;
}
.navbar-right {
border-top:none;
}
.banner {
width: 100%;
position: relative;
bottom: 0;
left: 0;
right: 0;
top: -10%;
overflow: hidden;
height:500px;
}
.image-banner {
position: relative;
overflow: hidden;
padding:0px;
}
.navbar-logo {
height: 30px;
padding-left: 20px;
}
.bold {
font-weight: 700;
}
#contact{
min-height:100vh;
position: relative;
}
footer{
bottom: 0px;
position: absolute;
width:100%
}
@media screen and (max-width:990px) {
.banner {
top: 0;
height: 300px;
}
}
.navbar {
margin-bottom: 0px !important;
}
.nav-about {
clear: both;
margin: -57px 0 0 0;
}
.sub-details {
font-family: Roboto, sans-serif;
line-height: 1.4;
font-size: 14px;
}
.sub-details h5 {
font-family: Roboto, sans-serif;
line-height: 1.4;
font-size: 14px;
margin: 20px 0 20px 0;
}
.sub-details p {
font-family: Roboto, sans-serif;
line-height: 1.4;
font-size: 14px;
text-align: justify;
}
.about-sub-details {
padding: 20px 0 20px 0;
border-bottom: 1px solid #eee;
}
.about-sub-details .row h2 {
font-family: "Quicksand", sans-serif;
padding: 5px 10px;
font-weight: 500;
font-size: 24px;
}
.contact-sub-details {
margin-bottom: 40px;
line-height: 12px;
}
.contact-sub-details p{
line-height: 20px;
}
.contact-sub-details .row h2 {
font-family: "Quicksand", sans-serif;
padding: 5px 10px;
font-weight: 500;
font-size: 24px;
}
.contact-title{
border-bottom: 1px solid #eee;
}
.form-horizontal{
margin: 20px;
}
.sub-btn{
width: 100%;
}
.close-btn{
padding: 10px;
position: relative;
top:5px;
}
a {
text-decoration: none;
color: rgb(119,119,119);
}
.navbar-collapse.navbar-right {
padding-top: 15px;
}
a:hover {
color: rgb(51,51,51);
text-decoration: none;
}
a {
color: #1a0dab;
text-decoration: none;
}
.navbar-brand {
padding-left: 100px;
}
@media only screen and (max-width: 768px) {
.navbar-logo {
margin-left: -77px;
margin-top: -5px;
}
}
@media only screen and (min-height: 750px) {
.banner{
height:auto;
}
}
.mobile_input {
display: flex;
}
.mobile_input select {
width: 35%;
margin-right: 6px;
min-width: 137px;
}

View file

@ -0,0 +1,187 @@
<!-- Start ignoring BootLintBear-->
<!-- Stop ignoring BootLintBear-->
<div id="contact">
<nav class="navbar navbar-default nav-about">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#dropmenu">
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand contact-navbar" routerLink="/" title="Susper Search Engine">
<img alt="brand" class="navbar-logo" src="../../assets/images/susper.svg" />
</a>
</div>
<div class="collapse navbar-collapse" id="dropmenu">
<ul class="nav navbar-nav navbar-collapse navbar-right">
<li><a routerLink="/privacy">Privacy</a></li>
<li><a routerLink="/terms">Terms</a></li>
<li><a routerLink="/about">About</a></li>
<li><a routerLink="/contact">Contact</a></li>
</ul>
</div>
</div>
</nav>
<div class="image-banner col-xs-12 col-sm-12 col-md-12 col-lg-12">
<img src="../../assets/images/boat.png" class="img-responsive banner" /> <br />
</div>
<div class="container">
<br />
<div class="about-sub-details">
<div class="row contact-title">
<h2 class="bold">Contact Us</h2>
<br />
</div>
<br />
<div class="row">
<div class="col-lg-12 col-sm-12 sub-details">
<h5 class="bold">Susper</h5>
<p>
<a
href="https://www.openstreetmap.org/search?query=93%20Mau%20Than%20Street%2C%20Can%20Tho#map=19/10.03117/105.77529"
target="_blank"
>93 Mau Than Street<br />
Can Tho<br />
Viet Nam<br
/></a>
Phone +84 (0) 907 65 29 27<br /><a href="mailto: support@susper.net">
Email: support@susper.net</a
><br />Board of Directors: Hong Phuc Dang<br />
Susper Ltd. is registered in Can Tho, Viet Nam.
</p>
</div>
</div>
</div>
<br />
<div class="contact-sub-details">
<div class="row">
<div class="col-lg-12 col-sm-12 contact-sub-details">
<p>
Report a safety or abuse issue affecting our products.<br />
If you know of a safety or abuse problem with any of Susper's services, we'd like to
hear about it right away. Please use our <a (click)="openModal()">contact form</a> to
report the issue.
</p>
</div>
</div>
</div>
</div>
<footer><app-footer-navbar></app-footer-navbar></footer>
</div>
<modal #ContactUsModal>
<div>
<a (click)="closeModal()" class="close-btn"
><i
class="fa fa-times"
aria-hidden="true"
style="font-size: 2em; float: right; padding: 10px; cursor: pointer;"
></i
></a>
</div>
<form class="form-horizontal" method="POST" action="https://formspree.io/office@fossasia.org">
<fieldset>
<legend>Contact Form</legend>
<div class="form-group">
<label class="col-md-3 control-label" for="textinput">Your Name<sup>*</sup></label>
<div class="col-md-9">
<input
id="textinput"
name="yourName"
type="text"
placeholder="Your Name"
class="form-control input-md"
(ngModelChange)="checkValidity()"
[(ngModel)]="nameInput"
required=""
/>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" a for="emailinput">Email<sup>*</sup></label>
<div class="col-md-9">
<input
id="emailinput"
name="email-address"
type="email"
placeholder="Email Address"
class="form-control input-md"
(ngModelChange)="checkValidity()"
[(ngModel)]="emailInput"
required=""
/>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 control-label" for="countrycode">Mobile Number<sup>*</sup></label>
<div class="col-md-9 mobile_input">
<select id="countrycode" name="countrycode" class="form-control">
<option
*ngFor="let countryCode of countryCodeList"
[value]="countryCode.value"
>{{ countryCode.description }}</option
>
</select>
<input
id="telephone"
name="telephone"
type="number"
placeholder="Mobile Number"
(ngModelChange)="checkValidity()"
[(ngModel)]="phoneNumberInput"
class="form-control input-md"
required=""
/>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label" for="message">Message<sup>*</sup></label>
<div class="col-md-9">
<textarea
class="form-control"
id="message"
name="message"
placeholder="Minimum 100 characters required."
required=""
(ngModelChange)="checkValidity()"
[(ngModel)]="contactMessage"
></textarea>
</div>
</div>
<div class="form-group">
<label class="col-md-12 control-label" for="submit"></label>
<div class="col-md-12">
<button
id="submit"
name="submit"
class="btn btn-info sub-btn"
type="submit"
#submitButton
disabled
>
Submit
</button>
</div>
</div>
</fieldset>
</form>
</modal>

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