History

ModbusAdapters: Fixed security issues in Modbus configuration screen GSF.Web: Cleaned up new embedded resources

J. Ritchie Carroll committed 9 years ago

Commit 970956d1 parent 230686d36 files · +72369 −1648Browse files

Unified · Split

36 files
  1. Source/Libraries/Adapters/ModbusAdapters/ModbusAdapters.csproj +4 −3
  2. Source/Libraries/Adapters/ModbusAdapters/ModbusConfig.cshtml +0 −0
  3. Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout-3.4.0.js +0 −123
  4. Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout.mapping-latest.js +0 −21
  5. Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout.validation.js +0 −1511
  6. Source/Libraries/GSF.Web/GSF.Web.csproj +28 −0
  7. Source/Libraries/GSF.Web/Model/Scripts/ObsoleteFiles.txt +10 −0
  8. Source/Libraries/GSF.Web/Model/Scripts/bootstrap-datepicker.js +1918 −0
  9. Source/Libraries/GSF.Web/Model/Scripts/bootstrap-toolkit.js +234 −0
  10. Source/Libraries/GSF.Web/Model/Views/PagedViewModel.cshtml +4 −2
  11. Source/Libraries/GSF.Web/Shared/Content/Fonts/FontAwesome.otf +0 −0
  12. Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.eot +0 −0
  13. Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.svg +655 −0
  14. Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.ttf +0 −0
  15. Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.woff +0 −0
  16. Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.woff2 +0 −0
  17. Source/Libraries/GSF.Web/Shared/Content/Images/loading.gif +0 −0
  18. Source/Libraries/GSF.Web/Shared/Content/Images/loadingbar.gif +0 −0
  19. Source/Libraries/GSF.Web/Shared/Content/Images/password-meter.png +0 −0
  20. Source/Libraries/GSF.Web/Shared/Content/Images/rating.png +0 −0
  21. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_222222_256x240.png +0 −0
  22. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_2e83ff_256x240.png +0 −0
  23. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_333333_256x240.png +0 −0
  24. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_454545_256x240.png +0 −0
  25. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_888888_256x240.png +0 −0
  26. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_cd0a0a_256x240.png +0 −0
  27. Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_ffffff_256x240.png +0 −0
  28. Source/Libraries/GSF.Web/Shared/Content/Readme.txt +13 −0
  29. Source/Libraries/GSF.Web/Shared/Content/font-awesome.css +2086 −0
  30. Source/Libraries/GSF.Web/Shared/Content/jquery-ui.css +1225 −0
  31. Source/Libraries/GSF.Web/Shared/Content/primeui-theme.css +935 −0
  32. Source/Libraries/GSF.Web/Shared/Content/primeui.css +2921 −0
  33. Source/Libraries/GSF.Web/Shared/Scripts/angular.js +31768 −0
  34. Source/Libraries/GSF.Web/Shared/Scripts/gsf.web.client.js +5 −5
  35. Source/Libraries/GSF.Web/Shared/Scripts/jquery-ui.js +16617 −0
  36. Source/Libraries/GSF.Web/Shared/Scripts/primeui.js +13963 −0
Source/Libraries/Adapters/ModbusAdapters/ModbusAdapters.csproj+4−3
@@ -74,6 +74,10 @@ · 73 unmodified lines
7474 <Project>{ff3fcba6-f01a-4ec2-bc3f-6ba832afcf88}</Project>
7575 <Name>GSF.Core</Name>
7676 </ProjectReference>
77+ <ProjectReference Include="..\..\GSF.Security\GSF.Security.csproj">
78+ <Project>{4060e729-effd-4e50-a0d5-99c0990ef7da}</Project>
79+ <Name>GSF.Security</Name>
80+ </ProjectReference>
7781 <ProjectReference Include="..\..\GSF.TimeSeries\GSF.TimeSeries.csproj">
7882 <Project>{412f9f59-d9b9-4c8e-96d2-20492644198c}</Project>
7983 <Name>GSF.TimeSeries</Name>
@@ -89,9 +93,6 @@ · 9 unmodified lines
8993 <EmbeddedResource Include="Scripts\MapViewModel.js" />
9094 <EmbeddedResource Include="Scripts\RecordViewModel.js" />
9195 <EmbeddedResource Include="Scripts\SequenceViewModel.js" />
92− <EmbeddedResource Include="Scripts\knockout-3.4.0.js" />
93− <EmbeddedResource Include="Scripts\knockout.mapping-latest.js" />
94− <EmbeddedResource Include="Scripts\knockout.validation.js" />
9596 <EmbeddedResource Include="ModbusConfigs\CellWatch\Global Information\Battery 1.json" />
9697 <EmbeddedResource Include="ModbusConfigs\CellWatch\Global Information\Battery 2.json" />
9798 <EmbeddedResource Include="ModbusConfigs\CellWatch\Global Information\Battery 3.json" />
Source/Libraries/Adapters/ModbusAdapters/ModbusConfig.cshtml+0−0

Binary file not shown.

Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout-3.4.0.js+0−123
@@ -1,123 +0,0 @@
1−/*!
2− * Knockout JavaScript library v3.4.0
3− * (c) Steven Sanderson - http://knockoutjs.com/
4− * License: MIT (http://www.opensource.org/licenses/mit-license.php)
5− */
6−
7−(function() {(function(n){var x=this||(0,eval)("this"),u=x.document,M=x.navigator,v=x.jQuery,F=x.JSON;(function(n){"function"===typeof define&&define.amd?define(["exports","require"],n):"object"===typeof exports&&"object"===typeof module?n(module.exports||exports):n(x.ko={})})(function(N,O){function J(a,c){return null===a||typeof a in T?a===c:!1}function U(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=n;b()},c))}}function V(b,c){var d;return function(){clearTimeout(d);d=a.a.setTimeout(b,c)}}function W(a,
8−c){c&&c!==I?"beforeChange"===c?this.Kb(a):this.Ha(a,c):this.Lb(a)}function X(a,c){null!==c&&c.k&&c.k()}function Y(a,c){var d=this.Hc,e=d[s];e.R||(this.lb&&this.Ma[c]?(d.Pb(c,a,this.Ma[c]),this.Ma[c]=null,--this.lb):e.r[c]||d.Pb(c,a,e.s?{ia:a}:d.uc(a)))}function K(b,c,d,e){a.d[b]={init:function(b,g,k,l,m){var h,r;a.m(function(){var q=a.a.c(g()),p=!d!==!q,A=!r;if(A||c||p!==h)A&&a.va.Aa()&&(r=a.a.ua(a.f.childNodes(b),!0)),p?(A||a.f.da(b,a.a.ua(r)),a.eb(e?e(m,q):m,b)):a.f.xa(b),h=p},null,{i:b});return{controlsDescendantBindings:!0}}};
9−a.h.ta[b]=!1;a.f.Z[b]=!0}var a="undefined"!==typeof N?N:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.G=function(a,c,d){a[c]=d};a.version="3.4.0";a.b("version",a.version);a.options={deferUpdates:!1,useOnlyNativeEvents:!1};a.a=function(){function b(a,b){for(var c in a)a.hasOwnProperty(c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}function e(b,c,d,e){var h=b[c].match(r)||
10−[];a.a.q(d.match(r),function(b){a.a.pa(h,b,e)});b[c]=h.join(" ")}var f={__proto__:[]}instanceof Array,g="function"===typeof Symbol,k={},l={};k[M&&/Firefox\/2/i.test(M.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];k.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(k,function(a,b){if(b.length)for(var c=0,d=b.length;c<d;c++)l[b[c]]=a});var m={propertychange:!0},h=u&&function(){for(var a=3,b=u.createElement("div"),c=
11−b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:n}(),r=/\S+/g;return{cc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],q:function(a,b){for(var c=0,d=a.length;c<d;c++)b(a[c],c)},o:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},Sb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d))return a[d];
12−return null},La:function(b,c){var d=a.a.o(b,c);0<d?b.splice(d,1):0===d&&b.shift()},Tb:function(b){b=b||[];for(var c=[],d=0,e=b.length;d<e;d++)0>a.a.o(c,b[d])&&c.push(b[d]);return c},fb:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)c.push(b(a[d],d));return c},Ka:function(a,b){a=a||[];for(var c=[],d=0,e=a.length;d<e;d++)b(a[d],d)&&c.push(a[d]);return c},ra:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},pa:function(b,c,d){var e=
13−a.a.o(a.a.zb(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},ka:f,extend:c,Xa:d,Ya:f?d:c,D:b,Ca:function(a,b){if(!a)return a;var c={},d;for(d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d],d,a));return c},ob:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},jc:function(b){b=a.a.V(b);for(var c=(b[0]&&b[0].ownerDocument||u).createElement("div"),d=0,e=b.length;d<e;d++)c.appendChild(a.$(b[d]));return c},ua:function(b,c){for(var d=0,e=b.length,h=[];d<e;d++){var m=b[d].cloneNode(!0);h.push(c?a.$(m):m)}return h},
14−da:function(b,c){a.a.ob(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},qc:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],h=e.parentNode,m=0,l=c.length;m<l;m++)h.insertBefore(c[m],e);m=0;for(l=d.length;m<l;m++)a.removeNode(d[m])}},za:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&a[a.length-1].parentNode!==b;)a.length--;if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)a.push(c),
15−c=c.nextSibling;a.push(d)}}return a},sc:function(a,b){7>h?a.setAttribute("selected",b):a.selected=b},$a:function(a){return null===a||a===n?"":a.trim?a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},nd:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},Mc:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(3===a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=
16−b;)a=a.parentNode;return!!a},nb:function(b){return a.a.Mc(b,b.ownerDocument.documentElement)},Qb:function(b){return!!a.a.Sb(b,a.a.nb)},A:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},Wb:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.Wb(b),c)},$b:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},p:function(b,c,d){var e=a.a.Wb(d);d=h&&m[c];if(a.options.useOnlyNativeEvents||
17−d||!v)if(d||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var l=function(a){e.call(b,a)},f="on"+c;b.attachEvent(f,l);a.a.F.oa(b,function(){b.detachEvent(f,l)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,e,!1);else v(b).bind(c,e)},Da:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.A(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==
18−d||"radio"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if("function"==typeof u.createEvent)if("function"==typeof b.dispatchEvent)d=u.createEvent(l[c]||"HTMLEvents"),d.initEvent(c,!0,!0,x,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");else v(b).trigger(c)},c:function(b){return a.H(b)?
19−b():b},zb:function(b){return a.H(b)?b.t():b},bb:function(b,c,d){var h;c&&("object"===typeof b.classList?(h=b.classList[d?"add":"remove"],a.a.q(c.match(r),function(a){h.call(b.classList,a)})):"string"===typeof b.className.baseVal?e(b.className,"baseVal",c,d):e(b,"className",c,d))},Za:function(b,c){var d=a.a.c(c);if(null===d||d===n)d="";var e=a.f.firstChild(b);!e||3!=e.nodeType||a.f.nextSibling(e)?a.f.da(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Rc(b)},rc:function(a,b){a.name=b;if(7>=h)try{a.mergeAttributes(u.createElement("<input name='"+
20−a.name+"'/>"),!1)}catch(c){}},Rc:function(a){9<=h&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},Nc:function(a){if(h){var b=a.style.width;a.style.width=0;a.style.width=b}},hd:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},V:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},Yb:function(a){return g?Symbol(a):a},rd:6===h,sd:7===h,C:h,ec:function(b,c){for(var d=a.a.V(b.getElementsByTagName("input")).concat(a.a.V(b.getElementsByTagName("textarea"))),
21−e="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},h=[],m=d.length-1;0<=m;m--)e(d[m])&&h.push(d[m]);return h},ed:function(b){return"string"==typeof b&&(b=a.a.$a(b))?F&&F.parse?F.parse(b):(new Function("return "+b))():null},Eb:function(b,c,d){if(!F||!F.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
22−return F.stringify(a.a.c(b),c,d)},fd:function(c,d,e){e=e||{};var h=e.params||{},m=e.includeFields||this.cc,l=c;if("object"==typeof c&&"form"===a.a.A(c))for(var l=c.action,f=m.length-1;0<=f;f--)for(var g=a.a.ec(c,m[f]),k=g.length-1;0<=k;k--)h[g[k].name]=g[k].value;d=a.a.c(d);var r=u.createElement("form");r.style.display="none";r.action=l;r.method="post";for(var n in d)c=u.createElement("input"),c.type="hidden",c.name=n,c.value=a.a.Eb(a.a.c(d[n])),r.appendChild(c);b(h,function(a,b){var c=u.createElement("input");
23−c.type="hidden";c.name=a;c.value=b;r.appendChild(c)});u.body.appendChild(r);e.submitter?e.submitter(r):r.submit();setTimeout(function(){r.parentNode.removeChild(r)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.q);a.b("utils.arrayFirst",a.a.Sb);a.b("utils.arrayFilter",a.a.Ka);a.b("utils.arrayGetDistinctValues",a.a.Tb);a.b("utils.arrayIndexOf",a.a.o);a.b("utils.arrayMap",a.a.fb);a.b("utils.arrayPushAll",a.a.ra);a.b("utils.arrayRemoveItem",a.a.La);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",
24−a.a.cc);a.b("utils.getFormFields",a.a.ec);a.b("utils.peekObservable",a.a.zb);a.b("utils.postJson",a.a.fd);a.b("utils.parseJson",a.a.ed);a.b("utils.registerEventHandler",a.a.p);a.b("utils.stringifyJson",a.a.Eb);a.b("utils.range",a.a.hd);a.b("utils.toggleDomNodeCssClass",a.a.bb);a.b("utils.triggerEvent",a.a.Da);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.D);a.b("utils.addOrRemoveItem",a.a.pa);a.b("utils.setTextContent",a.a.Za);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=
25−function(a){var c=this;if(1===arguments.length)return function(){return c.apply(a,arguments)};var d=Array.prototype.slice.call(arguments,1);return function(){var e=d.slice(0);e.push.apply(e,arguments);return c.apply(a,e)}});a.a.e=new function(){function a(b,g){var k=b[d];if(!k||"null"===k||!e[k]){if(!g)return n;k=b[d]="ko"+c++;e[k]={}}return e[k]}var c=0,d="__ko__"+(new Date).getTime(),e={};return{get:function(c,d){var e=a(c,!1);return e===n?n:e[d]},set:function(c,d,e){if(e!==n||a(c,!1)!==n)a(c,!0)[d]=
26−e},clear:function(a){var b=a[d];return b?(delete e[b],a[d]=null,!0):!1},I:function(){return c++ +d}}};a.b("utils.domData",a.a.e);a.b("utils.domData.clear",a.a.e.clear);a.a.F=new function(){function b(b,c){var e=a.a.e.get(b,d);e===n&&c&&(e=[],a.a.e.set(b,d,e));return e}function c(d){var e=b(d,!1);if(e)for(var e=e.slice(0),l=0;l<e.length;l++)e[l](d);a.a.e.clear(d);a.a.F.cleanExternalData(d);if(f[d.nodeType])for(e=d.firstChild;d=e;)e=d.nextSibling,8===d.nodeType&&c(d)}var d=a.a.e.I(),e={1:!0,8:!0,9:!0},
27−f={1:!0,9:!0};return{oa:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},pc:function(c,e){var l=b(c,!1);l&&(a.a.La(l,e),0==l.length&&a.a.e.set(c,d,n))},$:function(b){if(e[b.nodeType]&&(c(b),f[b.nodeType])){var d=[];a.a.ra(d,b.getElementsByTagName("*"));for(var l=0,m=d.length;l<m;l++)c(d[l])}return b},removeNode:function(b){a.$(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){v&&"function"==typeof v.cleanData&&v.cleanData([a])}}};
28−a.$=a.a.F.$;a.removeNode=a.a.F.removeNode;a.b("cleanNode",a.$);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.F);a.b("utils.domNodeDisposal.addDisposeCallback",a.a.F.oa);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.F.pc);(function(){var b=[0,"",""],c=[1,"<table>","</table>"],d=[3,"<table><tbody><tr>","</tr></tbody></table>"],e=[1,"<select multiple='multiple'>","</select>"],f={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:d,th:d,option:e,optgroup:e},
29−g=8>=a.a.C;a.a.ma=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var h=e[0];h.parentNode&&11!==h.parentNode.nodeType;)h=h.parentNode;h.parentNode&&h.parentNode.removeChild(h)}}else{(e=d)||(e=u);var h=e.parentWindow||e.defaultView||x,r=a.a.$a(c).toLowerCase(),q=e.createElement("div"),p;p=(r=r.match(/^<([a-z]+)[ >]/))&&f[r[1]]||b;r=p[0];p="ignored<div>"+p[1]+c+p[2]+"</div>";"function"==typeof h.innerShiv?q.appendChild(h.innerShiv(p)):(g&&e.appendChild(q),
30−q.innerHTML=p,g&&q.parentNode.removeChild(q));for(;r--;)q=q.lastChild;e=a.a.V(q.lastChild.childNodes)}return e};a.a.Cb=function(b,c){a.a.ob(b);c=a.a.c(c);if(null!==c&&c!==n)if("string"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ma(c,b.ownerDocument),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b("utils.parseHtmlFragment",a.a.ma);a.b("utils.setHtml",a.a.Cb);a.M=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.M.lc(c.nodeValue);null!=f&&e.push({Lc:c,cd:f})}else if(1==c.nodeType)for(var f=
31−0,g=c.childNodes,k=g.length;f<k;f++)b(g[f],e)}var c={};return{wb:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},xc:function(a,b){var f=c[a];if(f===n)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),
32−!0}finally{delete c[a]}},yc:function(c,e){var f=[];b(c,f);for(var g=0,k=f.length;g<k;g++){var l=f[g].Lc,m=[l];e&&a.a.ra(m,e);a.M.xc(f[g].cd,m);l.nodeValue="";l.parentNode&&l.parentNode.removeChild(l)}},lc:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.M);a.b("memoization.memoize",a.M.wb);a.b("memoization.unmemoize",a.M.xc);a.b("memoization.parseMemoText",a.M.lc);a.b("memoization.unmemoizeDomNodeAndDescendants",a.M.yc);a.Y=function(){function b(){if(e)for(var b=
33−e,c=0,m;g<e;)if(m=d[g++]){if(g>b){if(5E3<=++c){g=e;a.a.$b(Error("'Too much recursion' after processing "+c+" task groups."));break}b=e}try{m()}catch(h){a.a.$b(h)}}}function c(){b();g=e=d.length=0}var d=[],e=0,f=1,g=0;return{scheduler:x.MutationObserver?function(a){var b=u.createElement("div");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle("foo")}}(c):u&&"onreadystatechange"in u.createElement("script")?function(a){var b=u.createElement("script");b.onreadystatechange=
34−function(){b.onreadystatechange=null;u.documentElement.removeChild(b);b=null;a()};u.documentElement.appendChild(b)}:function(a){setTimeout(a,0)},Wa:function(b){e||a.Y.scheduler(c);d[e++]=b;return f++},cancel:function(a){a-=f-e;a>=g&&a<e&&(d[a]=null)},resetForTesting:function(){var a=e-g;g=e=d.length=0;return a},md:b}}();a.b("tasks",a.Y);a.b("tasks.schedule",a.Y.Wa);a.b("tasks.runEarly",a.Y.md);a.ya={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.B({read:b,write:function(e){clearTimeout(d);
35−d=a.a.setTimeout(function(){b(e)},c)}})},rateLimit:function(a,c){var d,e,f;"number"==typeof c?d=c:(d=c.timeout,e=c.method);a.cb=!1;f="notifyWhenChangesStop"==e?V:U;a.Ta(function(a){return f(a,d)})},deferred:function(b,c){if(!0!==c)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");b.cb||(b.cb=!0,b.Ta(function(c){var e;return function(){a.Y.cancel(e);e=a.Y.Wa(c);b.notifySubscribers(n,"dirty")}}))},notify:function(a,c){a.equalityComparer=
36−"always"==c?null:J}};var T={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.ya);a.vc=function(b,c,d){this.ia=b;this.gb=c;this.Kc=d;this.R=!1;a.G(this,"dispose",this.k)};a.vc.prototype.k=function(){this.R=!0;this.Kc()};a.J=function(){a.a.Ya(this,D);D.rb(this)};var I="change",D={rb:function(a){a.K={};a.Nb=1},X:function(b,c,d){var e=this;d=d||I;var f=new a.vc(e,c?b.bind(c):b,function(){a.a.La(e.K[d],f);e.Ia&&e.Ia(d)});e.sa&&e.sa(d);e.K[d]||(e.K[d]=[]);e.K[d].push(f);return f},notifySubscribers:function(b,
37−c){c=c||I;c===I&&this.zc();if(this.Pa(c))try{a.l.Ub();for(var d=this.K[c].slice(0),e=0,f;f=d[e];++e)f.R||f.gb(b)}finally{a.l.end()}},Na:function(){return this.Nb},Uc:function(a){return this.Na()!==a},zc:function(){++this.Nb},Ta:function(b){var c=this,d=a.H(c),e,f,g;c.Ha||(c.Ha=c.notifySubscribers,c.notifySubscribers=W);var k=b(function(){c.Mb=!1;d&&g===c&&(g=c());e=!1;c.tb(f,g)&&c.Ha(f=g)});c.Lb=function(a){c.Mb=e=!0;g=a;k()};c.Kb=function(a){e||(f=a,c.Ha(a,"beforeChange"))}},Pa:function(a){return this.K[a]&&
38−this.K[a].length},Sc:function(b){if(b)return this.K[b]&&this.K[b].length||0;var c=0;a.a.D(this.K,function(a,b){"dirty"!==a&&(c+=b.length)});return c},tb:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},extend:function(b){var c=this;b&&a.a.D(b,function(b,e){var f=a.ya[b];"function"==typeof f&&(c=f(c,e)||c)});return c}};a.G(D,"subscribe",D.X);a.G(D,"extend",D.extend);a.G(D,"getSubscriptionsCount",D.Sc);a.a.ka&&a.a.Xa(D,Function.prototype);a.J.fn=D;a.hc=function(a){return null!=
39−a&&"function"==typeof a.X&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.J);a.b("isSubscribable",a.hc);a.va=a.l=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{Ub:b,end:c,oc:function(b){if(e){if(!a.hc(b))throw Error("Only subscribable things can act as dependencies");e.gb.call(e.Gc,b,b.Cc||(b.Cc=++f))}},w:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},Aa:function(){if(e)return e.m.Aa()},Sa:function(){if(e)return e.Sa}}}();a.b("computedContext",
40−a.va);a.b("computedContext.getDependenciesCount",a.va.Aa);a.b("computedContext.isInitial",a.va.Sa);a.b("ignoreDependencies",a.qd=a.l.w);var E=a.a.Yb("_latestValue");a.N=function(b){function c(){if(0<arguments.length)return c.tb(c[E],arguments[0])&&(c.ga(),c[E]=arguments[0],c.fa()),this;a.l.oc(c);return c[E]}c[E]=b;a.a.ka||a.a.extend(c,a.J.fn);a.J.fn.rb(c);a.a.Ya(c,B);a.options.deferUpdates&&a.ya.deferred(c,!0);return c};var B={equalityComparer:J,t:function(){return this[E]},fa:function(){this.notifySubscribers(this[E])},
41−ga:function(){this.notifySubscribers(this[E],"beforeChange")}};a.a.ka&&a.a.Xa(B,a.J.fn);var H=a.N.gd="__ko_proto__";B[H]=a.N;a.Oa=function(b,c){return null===b||b===n||b[H]===n?!1:b[H]===c?!0:a.Oa(b[H],c)};a.H=function(b){return a.Oa(b,a.N)};a.Ba=function(b){return"function"==typeof b&&b[H]===a.N||"function"==typeof b&&b[H]===a.B&&b.Vc?!0:!1};a.b("observable",a.N);a.b("isObservable",a.H);a.b("isWriteableObservable",a.Ba);a.b("isWritableObservable",a.Ba);a.b("observable.fn",B);a.G(B,"peek",B.t);a.G(B,
42−"valueHasMutated",B.fa);a.G(B,"valueWillMutate",B.ga);a.la=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.N(b);a.a.Ya(b,a.la.fn);return b.extend({trackArrayChanges:!0})};a.la.fn={remove:function(b){for(var c=this.t(),d=[],e="function"!=typeof b||a.H(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var g=c[f];e(g)&&(0===d.length&&this.ga(),d.push(g),c.splice(f,1),f--)}d.length&&
43−this.fa();return d},removeAll:function(b){if(b===n){var c=this.t(),d=c.slice(0);this.ga();c.splice(0,c.length);this.fa();return d}return b?this.remove(function(c){return 0<=a.a.o(b,c)}):[]},destroy:function(b){var c=this.t(),d="function"!=typeof b||a.H(b)?function(a){return a===b}:b;this.ga();for(var e=c.length-1;0<=e;e--)d(c[e])&&(c[e]._destroy=!0);this.fa()},destroyAll:function(b){return b===n?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.o(b,c)}):[]},indexOf:function(b){var c=
44−this();return a.a.o(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.ga(),this.t()[d]=c,this.fa())}};a.a.ka&&a.a.Xa(a.la.fn,a.N.fn);a.a.q("pop push reverse shift sort splice unshift".split(" "),function(b){a.la.fn[b]=function(){var a=this.t();this.ga();this.Vb(a,b,arguments);var d=a[b].apply(a,arguments);this.fa();return d===a?this:d}});a.a.q(["slice"],function(b){a.la.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.b("observableArray",a.la);a.ya.trackArrayChanges=function(b,
45−c){function d(){if(!e){e=!0;var c=b.notifySubscribers;b.notifySubscribers=function(a,b){b&&b!==I||++k;return c.apply(this,arguments)};var d=[].concat(b.t()||[]);f=null;g=b.X(function(c){c=[].concat(c||[]);if(b.Pa("arrayChange")){var e;if(!f||1<k)f=a.a.ib(d,c,b.hb);e=f}d=c;f=null;k=0;e&&e.length&&b.notifySubscribers(e,"arrayChange")})}}b.hb={};c&&"object"==typeof c&&a.a.extend(b.hb,c);b.hb.sparse=!0;if(!b.Vb){var e=!1,f=null,g,k=0,l=b.sa,m=b.Ia;b.sa=function(a){l&&l.call(b,a);"arrayChange"===a&&d()};
46−b.Ia=function(a){m&&m.call(b,a);"arrayChange"!==a||b.Pa("arrayChange")||(g.k(),e=!1)};b.Vb=function(b,c,d){function m(a,b,c){return l[l.length]={status:a,value:b,index:c}}if(e&&!k){var l=[],g=b.length,t=d.length,G=0;switch(c){case "push":G=g;case "unshift":for(c=0;c<t;c++)m("added",d[c],G+c);break;case "pop":G=g-1;case "shift":g&&m("deleted",b[G],G);break;case "splice":c=Math.min(Math.max(0,0>d[0]?g+d[0]:d[0]),g);for(var g=1===t?g:Math.min(c+(d[1]||0),g),t=c+t-2,G=Math.max(g,t),P=[],n=[],Q=2;c<G;++c,
47−++Q)c<g&&n.push(m("deleted",b[c],c)),c<t&&P.push(m("added",d[Q],c));a.a.dc(n,P);break;default:return}f=l}}}};var s=a.a.Yb("_state");a.m=a.B=function(b,c,d){function e(){if(0<arguments.length){if("function"===typeof f)f.apply(g.pb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}a.l.oc(e);(g.S||g.s&&e.Qa())&&e.aa();return g.T}"object"===typeof b?d=b:(d=d||{},b&&(d.read=
48−b));if("function"!=typeof d.read)throw Error("Pass a function that returns the value of the ko.computed");var f=d.write,g={T:n,S:!0,Ra:!1,Fb:!1,R:!1,Va:!1,s:!1,jd:d.read,pb:c||d.owner,i:d.disposeWhenNodeIsRemoved||d.i||null,wa:d.disposeWhen||d.wa,mb:null,r:{},L:0,bc:null};e[s]=g;e.Vc="function"===typeof f;a.a.ka||a.a.extend(e,a.J.fn);a.J.fn.rb(e);a.a.Ya(e,z);d.pure?(g.Va=!0,g.s=!0,a.a.extend(e,$)):d.deferEvaluation&&a.a.extend(e,aa);a.options.deferUpdates&&a.ya.deferred(e,!0);g.i&&(g.Fb=!0,g.i.nodeType||
49−(g.i=null));g.s||d.deferEvaluation||e.aa();g.i&&e.ba()&&a.a.F.oa(g.i,g.mb=function(){e.k()});return e};var z={equalityComparer:J,Aa:function(){return this[s].L},Pb:function(a,c,d){if(this[s].Va&&c===this)throw Error("A 'pure' computed must not be called recursively");this[s].r[a]=d;d.Ga=this[s].L++;d.na=c.Na()},Qa:function(){var a,c,d=this[s].r;for(a in d)if(d.hasOwnProperty(a)&&(c=d[a],c.ia.Uc(c.na)))return!0},bd:function(){this.Fa&&!this[s].Ra&&this.Fa()},ba:function(){return this[s].S||0<this[s].L},
50−ld:function(){this.Mb||this.ac()},uc:function(a){if(a.cb&&!this[s].i){var c=a.X(this.bd,this,"dirty"),d=a.X(this.ld,this);return{ia:a,k:function(){c.k();d.k()}}}return a.X(this.ac,this)},ac:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[s].bc),this[s].bc=a.a.setTimeout(function(){b.aa(!0)},c)):b.Fa?b.Fa():b.aa(!0)},aa:function(b){var c=this[s],d=c.wa;if(!c.Ra&&!c.R){if(c.i&&!a.a.nb(c.i)||d&&d()){if(!c.Fb){this.k();return}}else c.Fb=!1;c.Ra=!0;try{this.Qc(b)}finally{c.Ra=!1}c.L||
51−this.k()}},Qc:function(b){var c=this[s],d=c.Va?n:!c.L,e={Hc:this,Ma:c.r,lb:c.L};a.l.Ub({Gc:e,gb:Y,m:this,Sa:d});c.r={};c.L=0;e=this.Pc(c,e);this.tb(c.T,e)&&(c.s||this.notifySubscribers(c.T,"beforeChange"),c.T=e,c.s?this.zc():b&&this.notifySubscribers(c.T));d&&this.notifySubscribers(c.T,"awake")},Pc:function(b,c){try{var d=b.jd;return b.pb?d.call(b.pb):d()}finally{a.l.end(),c.lb&&!b.s&&a.a.D(c.Ma,X),b.S=!1}},t:function(){var a=this[s];(a.S&&!a.L||a.s&&this.Qa())&&this.aa();return a.T},Ta:function(b){a.J.fn.Ta.call(this,
52−b);this.Fa=function(){this.Kb(this[s].T);this[s].S=!0;this.Lb(this)}},k:function(){var b=this[s];!b.s&&b.r&&a.a.D(b.r,function(a,b){b.k&&b.k()});b.i&&b.mb&&a.a.F.pc(b.i,b.mb);b.r=null;b.L=0;b.R=!0;b.S=!1;b.s=!1;b.i=null}},$={sa:function(b){var c=this,d=c[s];if(!d.R&&d.s&&"change"==b){d.s=!1;if(d.S||c.Qa())d.r=null,d.L=0,d.S=!0,c.aa();else{var e=[];a.a.D(d.r,function(a,b){e[b.Ga]=a});a.a.q(e,function(a,b){var e=d.r[a],l=c.uc(e.ia);l.Ga=b;l.na=e.na;d.r[a]=l})}d.R||c.notifySubscribers(d.T,"awake")}},
53−Ia:function(b){var c=this[s];c.R||"change"!=b||this.Pa("change")||(a.a.D(c.r,function(a,b){b.k&&(c.r[a]={ia:b.ia,Ga:b.Ga,na:b.na},b.k())}),c.s=!0,this.notifySubscribers(n,"asleep"))},Na:function(){var b=this[s];b.s&&(b.S||this.Qa())&&this.aa();return a.J.fn.Na.call(this)}},aa={sa:function(a){"change"!=a&&"beforeChange"!=a||this.t()}};a.a.ka&&a.a.Xa(z,a.J.fn);var R=a.N.gd;a.m[R]=a.N;z[R]=a.m;a.Xc=function(b){return a.Oa(b,a.m)};a.Yc=function(b){return a.Oa(b,a.m)&&b[s]&&b[s].Va};a.b("computed",a.m);
54−a.b("dependentObservable",a.m);a.b("isComputed",a.Xc);a.b("isPureComputed",a.Yc);a.b("computed.fn",z);a.G(z,"peek",z.t);a.G(z,"dispose",z.k);a.G(z,"isActive",z.ba);a.G(z,"getDependenciesCount",z.Aa);a.nc=function(b,c){if("function"===typeof b)return a.m(b,c,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.m(b,c)};a.b("pureComputed",a.nc);(function(){function b(a,f,g){g=g||new d;a=f(a);if("object"!=typeof a||null===a||a===n||a instanceof RegExp||a instanceof Date||a instanceof String||a instanceof
55−Number||a instanceof Boolean)return a;var k=a instanceof Array?[]:{};g.save(a,k);c(a,function(c){var d=f(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":k[c]=d;break;case "object":case "undefined":var h=g.get(d);k[c]=h!==n?h:b(d,f,g)}});return k}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[];this.Ib=[]}a.wc=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");
56−return b(c,function(b){for(var c=0;a.H(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.wc(b);return a.a.Eb(b,c,d)};d.prototype={save:function(b,c){var d=a.a.o(this.keys,b);0<=d?this.Ib[d]=c:(this.keys.push(b),this.Ib.push(c))},get:function(b){b=a.a.o(this.keys,b);return 0<=b?this.Ib[b]:n}}})();a.b("toJS",a.wc);a.b("toJSON",a.toJSON);(function(){a.j={u:function(b){switch(a.a.A(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?a.a.e.get(b,a.d.options.xb):7>=a.a.C?b.getAttributeNode("value")&&
57−b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.j.u(b.options[b.selectedIndex]):n;default:return b.value}},ha:function(b,c,d){switch(a.a.A(b)){case "option":switch(typeof c){case "string":a.a.e.set(b,a.d.options.xb,n);"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__;b.value=c;break;default:a.a.e.set(b,a.d.options.xb,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===typeof c?c:""}break;case "select":if(""===c||
58−null===c)c=n;for(var e=-1,f=0,g=b.options.length,k;f<g;++f)if(k=a.j.u(b.options[f]),k==c||""==k&&c===n){e=f;break}if(d||0<=e||c===n&&1<b.size)b.selectedIndex=e;break;default:if(null===c||c===n)c="";b.value=c}}}})();a.b("selectExtensions",a.j);a.b("selectExtensions.readValue",a.j.u);a.b("selectExtensions.writeValue",a.j.ha);a.h=function(){function b(b){b=a.a.$a(b);123===b.charCodeAt(0)&&(b=b.slice(1,-1));var c=[],d=b.match(e),r,k=[],p=0;if(d){d.push(",");for(var A=0,y;y=d[A];++A){var t=y.charCodeAt(0);
59−if(44===t){if(0>=p){c.push(r&&k.length?{key:r,value:k.join("")}:{unknown:r||k.join("")});r=p=0;k=[];continue}}else if(58===t){if(!p&&!r&&1===k.length){r=k.pop();continue}}else 47===t&&A&&1<y.length?(t=d[A-1].match(f))&&!g[t[0]]&&(b=b.substr(b.indexOf(y)+1),d=b.match(e),d.push(","),A=-1,y="/"):40===t||123===t||91===t?++p:41===t||125===t||93===t?--p:r||k.length||34!==t&&39!==t||(y=y.slice(1,-1));k.push(y)}}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,
60−e=RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]","g"),f=/[\])"'A-Za-z0-9_$]+$/,g={"in":1,"return":1,"typeof":1},k={};return{ta:[],ea:k,yb:b,Ua:function(e,m){function h(b,e){var m;if(!A){var l=a.getBindingHandler(b);if(l&&l.preprocess&&!(e=l.preprocess(e,b,h)))return;if(l=k[b])m=e,0<=a.a.o(c,m)?m=!1:(l=m.match(d),m=null===l?!1:l[1]?"Object("+l[1]+")"+l[2]:m),l=m;l&&g.push("'"+b+"':function(_z){"+m+"=_z}")}p&&(e=
61−"function(){return "+e+" }");f.push("'"+b+"':"+e)}m=m||{};var f=[],g=[],p=m.valueAccessors,A=m.bindingParams,y="string"===typeof e?b(e):e;a.a.q(y,function(a){h(a.key||a.unknown,a.value)});g.length&&h("_ko_property_writers","{"+g.join(",")+" }");return f.join(",")},ad:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},Ea:function(b,c,d,e,f){if(b&&a.H(b))!a.Ba(b)||f&&b.t()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.h);a.b("expressionRewriting.bindingRewriteValidators",
62−a.h.ta);a.b("expressionRewriting.parseObjectLiteral",a.h.yb);a.b("expressionRewriting.preProcessBindings",a.h.Ua);a.b("expressionRewriting._twoWayBindings",a.h.ea);a.b("jsonExpressionRewriting",a.h);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.h.Ua);(function(){function b(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&k.test(f?a.text:a.nodeValue)}function d(a,d){for(var e=a,f=1,l=[];e=e.nextSibling;){if(c(e)&&(f--,0===f))return l;l.push(e);
63−b(e)&&f++}if(!d)throw Error("Cannot find closing comment tag to match: "+a.nodeValue);return null}function e(a,b){var c=d(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=u&&"\x3c!--test--\x3e"===u.createComment("test").text,g=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,l={ul:!0,ol:!0};a.f={Z:{},childNodes:function(a){return b(a)?d(a):a.childNodes},xa:function(c){if(b(c)){c=a.f.childNodes(c);for(var d=
64−0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.ob(c)},da:function(c,d){if(b(c)){a.f.xa(c);for(var e=c.nextSibling,f=0,l=d.length;f<l;f++)e.parentNode.insertBefore(d[f],e)}else a.a.da(c,d)},mc:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},gc:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.f.mc(c,d)},firstChild:function(a){return b(a)?!a.nextSibling||
65−c(a.nextSibling)?null:a.nextSibling:a.firstChild},nextSibling:function(a){b(a)&&(a=e(a));return a.nextSibling&&c(a.nextSibling)?null:a.nextSibling},Tc:b,pd:function(a){return(a=(f?a.text:a.nodeValue).match(g))?a[1]:null},kc:function(d){if(l[a.a.A(d)]){var h=d.firstChild;if(h){do if(1===h.nodeType){var f;f=h.firstChild;var g=null;if(f){do if(g)g.push(f);else if(b(f)){var k=e(f,!0);k?f=k:g=[f]}else c(f)&&(g=[f]);while(f=f.nextSibling)}if(f=g)for(g=h.nextSibling,k=0;k<f.length;k++)g?d.insertBefore(f[k],
66−g):d.appendChild(f[k])}while(h=h.nextSibling)}}}}})();a.b("virtualElements",a.f);a.b("virtualElements.allowedBindings",a.f.Z);a.b("virtualElements.emptyNode",a.f.xa);a.b("virtualElements.insertAfter",a.f.gc);a.b("virtualElements.prepend",a.f.mc);a.b("virtualElements.setDomNodeChildren",a.f.da);(function(){a.Q=function(){this.Fc={}};a.a.extend(a.Q.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=b.getAttribute("data-bind")||a.g.getComponentNameForNode(b);case 8:return a.f.Tc(b);
67−default:return!1}},getBindings:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b):null;return a.g.Ob(d,b,c,!1)},getBindingAccessors:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b,{valueAccessors:!0}):null;return a.g.Ob(d,b,c,!0)},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.f.pd(b);default:return null}},parseBindingsString:function(b,c,d,e){try{var f=this.Fc,g=b+(e&&e.valueAccessors||
68−""),k;if(!(k=f[g])){var l,m="with($context){with($data||{}){return{"+a.h.Ua(b,e)+"}}}";l=new Function("$context","$element",m);k=f[g]=l}return k(c,d)}catch(h){throw h.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+h.message,h;}}});a.Q.instance=new a.Q})();a.b("bindingProvider",a.Q);(function(){function b(a){return function(){return a}}function c(a){return a()}function d(b){return a.a.Ca(a.l.w(b),function(a,c){return function(){return b()[c]}})}function e(c,e,h){return"function"===
69−typeof c?d(c.bind(null,e,h)):a.a.Ca(c,b)}function f(a,b){return d(this.getBindings.bind(this,a,b))}function g(b,c,d){var e,h=a.f.firstChild(c),f=a.Q.instance,m=f.preprocessNode;if(m){for(;e=h;)h=a.f.nextSibling(e),m.call(f,e);h=a.f.firstChild(c)}for(;e=h;)h=a.f.nextSibling(e),k(b,e,d)}function k(b,c,d){var e=!0,h=1===c.nodeType;h&&a.f.kc(c);if(h&&d||a.Q.instance.nodeHasBindings(c))e=m(c,null,b,d).shouldBindDescendants;e&&!r[a.a.A(c)]&&g(b,c,!h)}function l(b){var c=[],d={},e=[];a.a.D(b,function Z(h){if(!d[h]){var f=
70−a.getBindingHandler(h);f&&(f.after&&(e.push(h),a.a.q(f.after,function(c){if(b[c]){if(-1!==a.a.o(e,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));Z(c)}}),e.length--),c.push({key:h,fc:f}));d[h]=!0}});return c}function m(b,d,e,h){var m=a.a.e.get(b,q);if(!d){if(m)throw Error("You cannot apply bindings multiple times to the same element.");a.a.e.set(b,q,!0)}!m&&h&&a.tc(b,e);var g;if(d&&"function"!==typeof d)g=d;else{var k=a.Q.instance,r=k.getBindingAccessors||
71−f,p=a.B(function(){(g=d?d(e,b):r.call(k,b,e))&&e.P&&e.P();return g},null,{i:b});g&&p.ba()||(p=null)}var u;if(g){var v=p?function(a){return function(){return c(p()[a])}}:function(a){return g[a]},s=function(){return a.a.Ca(p?p():g,c)};s.get=function(a){return g[a]&&c(v(a))};s.has=function(a){return a in g};h=l(g);a.a.q(h,function(c){var d=c.fc.init,h=c.fc.update,f=c.key;if(8===b.nodeType&&!a.f.Z[f])throw Error("The binding '"+f+"' cannot be used with virtual elements");try{"function"==typeof d&&a.l.w(function(){var a=
72−d(b,v(f),s,e.$data,e);if(a&&a.controlsDescendantBindings){if(u!==n)throw Error("Multiple bindings ("+u+" and "+f+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=f}}),"function"==typeof h&&a.B(function(){h(b,v(f),s,e.$data,e)},null,{i:b})}catch(m){throw m.message='Unable to process binding "'+f+": "+g[f]+'"\nMessage: '+m.message,m;}})}return{shouldBindDescendants:u===n}}function h(b){return b&&b instanceof a.U?b:new a.U(b)}
73−a.d={};var r={script:!0,textarea:!0,template:!0};a.getBindingHandler=function(b){return a.d[b]};a.U=function(b,c,d,e){var h=this,f="function"==typeof b&&!a.H(b),m,g=a.B(function(){var m=f?b():b,l=a.a.c(m);c?(c.P&&c.P(),a.a.extend(h,c),g&&(h.P=g)):(h.$parents=[],h.$root=l,h.ko=a);h.$rawData=m;h.$data=l;d&&(h[d]=l);e&&e(h,c,l);return h.$data},null,{wa:function(){return m&&!a.a.Qb(m)},i:!0});g.ba()&&(h.P=g,g.equalityComparer=null,m=[],g.Ac=function(b){m.push(b);a.a.F.oa(b,function(b){a.a.La(m,b);m.length||
74−(g.k(),h.P=g=n)})})};a.U.prototype.createChildContext=function(b,c,d){return new a.U(b,this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)})};a.U.prototype.extend=function(b){return new a.U(this.P||this.$data,this,null,function(c,d){c.$rawData=d.$rawData;a.a.extend(c,"function"==typeof b?b():b)})};var q=a.a.e.I(),p=a.a.e.I();a.tc=function(b,c){if(2==arguments.length)a.a.e.set(b,p,c),c.P&&c.P.Ac(b);else return a.a.e.get(b,
75−p)};a.Ja=function(b,c,d){1===b.nodeType&&a.f.kc(b);return m(b,c,h(d),!0)};a.Dc=function(b,c,d){d=h(d);return a.Ja(b,e(c,d,b),d)};a.eb=function(a,b){1!==b.nodeType&&8!==b.nodeType||g(h(a),b,!0)};a.Rb=function(a,b){!v&&x.jQuery&&(v=x.jQuery);if(b&&1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");b=b||x.document.body;k(h(a),b,!0)};a.kb=function(b){switch(b.nodeType){case 1:case 8:var c=a.tc(b);if(c)return c;
76−if(b.parentNode)return a.kb(b.parentNode)}return n};a.Jc=function(b){return(b=a.kb(b))?b.$data:n};a.b("bindingHandlers",a.d);a.b("applyBindings",a.Rb);a.b("applyBindingsToDescendants",a.eb);a.b("applyBindingAccessorsToNode",a.Ja);a.b("applyBindingsToNode",a.Dc);a.b("contextFor",a.kb);a.b("dataFor",a.Jc)})();(function(b){function c(c,e){var m=f.hasOwnProperty(c)?f[c]:b,h;m?m.X(e):(m=f[c]=new a.J,m.X(e),d(c,function(b,d){var e=!(!d||!d.synchronous);g[c]={definition:b,Zc:e};delete f[c];h||e?m.notifySubscribers(b):
77−a.Y.Wa(function(){m.notifySubscribers(b)})}),h=!0)}function d(a,b){e("getConfig",[a],function(c){c?e("loadComponent",[a,c],function(a){b(a,c)}):b(null,null)})}function e(c,d,f,h){h||(h=a.g.loaders.slice(0));var g=h.shift();if(g){var q=g[c];if(q){var p=!1;if(q.apply(g,d.concat(function(a){p?f(null):null!==a?f(a):e(c,d,f,h)}))!==b&&(p=!0,!g.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else e(c,d,f,h)}else f(null)}
78−var f={},g={};a.g={get:function(d,e){var f=g.hasOwnProperty(d)?g[d]:b;f?f.Zc?a.l.w(function(){e(f.definition)}):a.Y.Wa(function(){e(f.definition)}):c(d,e)},Xb:function(a){delete g[a]},Jb:e};a.g.loaders=[];a.b("components",a.g);a.b("components.get",a.g.get);a.b("components.clearCachedDefinition",a.g.Xb)})();(function(){function b(b,c,d,e){function g(){0===--y&&e(k)}var k={},y=2,t=d.template;d=d.viewModel;t?f(c,t,function(c){a.g.Jb("loadTemplate",[b,c],function(a){k.template=a;g()})}):g();d?f(c,d,function(c){a.g.Jb("loadViewModel",
79−[b,c],function(a){k[l]=a;g()})}):g()}function c(a,b,d){if("function"===typeof b)d(function(a){return new b(a)});else if("function"===typeof b[l])d(b[l]);else if("instance"in b){var e=b.instance;d(function(){return e})}else"viewModel"in b?c(a,b.viewModel,d):a("Unknown viewModel value: "+b)}function d(b){switch(a.a.A(b)){case "script":return a.a.ma(b.text);case "textarea":return a.a.ma(b.value);case "template":if(e(b.content))return a.a.ua(b.content.childNodes)}return a.a.ua(b.childNodes)}function e(a){return x.DocumentFragment?
80−a instanceof DocumentFragment:a&&11===a.nodeType}function f(a,b,c){"string"===typeof b.require?O||x.require?(O||x.require)([b.require],c):a("Uses require, but no AMD loader is present"):c(b)}function g(a){return function(b){throw Error("Component '"+a+"': "+b);}}var k={};a.g.register=function(b,c){if(!c)throw Error("Invalid configuration for "+b);if(a.g.ub(b))throw Error("Component "+b+" is already registered");k[b]=c};a.g.ub=function(a){return k.hasOwnProperty(a)};a.g.od=function(b){delete k[b];
81−a.g.Xb(b)};a.g.Zb={getConfig:function(a,b){b(k.hasOwnProperty(a)?k[a]:null)},loadComponent:function(a,c,d){var e=g(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,c,f){b=g(b);if("string"===typeof c)f(a.a.ma(c));else if(c instanceof Array)f(c);else if(e(c))f(a.a.V(c.childNodes));else if(c.element)if(c=c.element,x.HTMLElement?c instanceof HTMLElement:c&&c.tagName&&1===c.nodeType)f(d(c));else if("string"===typeof c){var l=u.getElementById(c);l?f(d(l)):b("Cannot find element with ID "+c)}else b("Unknown element type: "+
82−c);else b("Unknown template value: "+c)},loadViewModel:function(a,b,d){c(g(a),b,d)}};var l="createViewModel";a.b("components.register",a.g.register);a.b("components.isRegistered",a.g.ub);a.b("components.unregister",a.g.od);a.b("components.defaultLoader",a.g.Zb);a.g.loaders.push(a.g.Zb);a.g.Bc=k})();(function(){function b(b,e){var f=b.getAttribute("params");if(f){var f=c.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ca(f,function(c){return a.m(c,null,{i:b})}),g=a.a.Ca(f,function(c){var e=
83−c.t();return c.ba()?a.m({read:function(){return a.a.c(c())},write:a.Ba(e)&&function(a){c()(a)},i:b}):e});g.hasOwnProperty("$raw")||(g.$raw=f);return g}return{$raw:{}}}a.g.getComponentNameForNode=function(b){var c=a.a.A(b);if(a.g.ub(c)&&(-1!=c.indexOf("-")||"[object HTMLUnknownElement]"==""+b||8>=a.a.C&&b.tagName===c))return c};a.g.Ob=function(c,e,f,g){if(1===e.nodeType){var k=a.g.getComponentNameForNode(e);if(k){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component');
84−var l={name:k,params:b(e,f)};c.component=g?function(){return l}:l}}return c};var c=new a.Q;9>a.a.C&&(a.g.register=function(a){return function(b){u.createElement(b);return a.apply(this,arguments)}}(a.g.register),u.createDocumentFragment=function(b){return function(){var c=b(),f=a.g.Bc,g;for(g in f)f.hasOwnProperty(g)&&c.createElement(g);return c}}(u.createDocumentFragment))})();(function(b){function c(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.ua(c);a.f.da(d,b)}
85−function d(a,b,c,d){var e=a.createViewModel;return e?e.call(a,d,{element:b,templateNodes:c}):d}var e=0;a.d.component={init:function(f,g,k,l,m){function h(){var a=r&&r.dispose;"function"===typeof a&&a.call(r);q=r=null}var r,q,p=a.a.V(a.f.childNodes(f));a.a.F.oa(f,h);a.m(function(){var l=a.a.c(g()),k,t;"string"===typeof l?k=l:(k=a.a.c(l.name),t=a.a.c(l.params));if(!k)throw Error("No component name specified");var n=q=++e;a.g.get(k,function(e){if(q===n){h();if(!e)throw Error("Unknown component '"+k+
86−"'");c(k,e,f);var g=d(e,f,p,t);e=m.createChildContext(g,b,function(a){a.$component=g;a.$componentTemplateNodes=p});r=g;a.eb(e,f)}})},null,{i:f});return{controlsDescendantBindings:!0}}};a.f.Z.component=!0})();var S={"class":"className","for":"htmlFor"};a.d.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.D(d,function(c,d){d=a.a.c(d);var g=!1===d||null===d||d===n;g&&b.removeAttribute(c);8>=a.a.C&&c in S?(c=S[c],g?b.removeAttribute(c):b[c]=d):g||b.setAttribute(c,d.toString());"name"===c&&a.a.rc(b,
87−g?"":d.toString())})}};(function(){a.d.checked={after:["value","attr"],init:function(b,c,d){function e(){var e=b.checked,f=p?g():e;if(!a.va.Sa()&&(!l||e)){var m=a.l.w(c);if(h){var k=r?m.t():m;q!==f?(e&&(a.a.pa(k,f,!0),a.a.pa(k,q,!1)),q=f):a.a.pa(k,f,e);r&&a.Ba(m)&&m(k)}else a.h.Ea(m,d,"checked",f,!0)}}function f(){var d=a.a.c(c());b.checked=h?0<=a.a.o(d,g()):k?d:g()===d}var g=a.nc(function(){return d.has("checkedValue")?a.a.c(d.get("checkedValue")):d.has("value")?a.a.c(d.get("value")):b.value}),k=
88−"checkbox"==b.type,l="radio"==b.type;if(k||l){var m=c(),h=k&&a.a.c(m)instanceof Array,r=!(h&&m.push&&m.splice),q=h?g():n,p=l||h;l&&!b.name&&a.d.uniqueName.init(b,function(){return!0});a.m(e,null,{i:b});a.a.p(b,"click",e);a.m(f,null,{i:b});m=n}}};a.h.ea.checked=!0;a.d.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.d.css={update:function(b,c){var d=a.a.c(c());null!==d&&"object"==typeof d?a.a.D(d,function(c,d){d=a.a.c(d);a.a.bb(b,c,d)}):(d=a.a.$a(String(d||"")),a.a.bb(b,b.__ko__cssValue,
89−!1),b.__ko__cssValue=d,a.a.bb(b,d,!0))}};a.d.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.d.disable={update:function(b,c){a.d.enable.update(b,function(){return!a.a.c(c())})}};a.d.event={init:function(b,c,d,e,f){var g=c()||{};a.a.D(g,function(g){"string"==typeof g&&a.a.p(b,g,function(b){var m,h=c()[g];if(h){try{var r=a.a.V(arguments);e=f.$data;r.unshift(e);m=h.apply(e,r)}finally{!0!==m&&(b.preventDefault?b.preventDefault():
90−b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.d.foreach={ic:function(b){return function(){var c=b(),d=a.a.zb(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.W.sb};a.a.c(c);return{foreach:d.data,as:d.as,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.W.sb}}},init:function(b,c){return a.d.template.init(b,
91−a.d.foreach.ic(c))},update:function(b,c,d,e,f){return a.d.template.update(b,a.d.foreach.ic(c),d,e,f)}};a.h.ta.foreach=!1;a.f.Z.foreach=!0;a.d.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(h){g=f.body}e=g===b}f=c();a.h.Ea(f,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.p(b,"focus",f);a.a.p(b,"focusin",f);a.a.p(b,"blur",g);a.a.p(b,
92−"focusout",g)},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.l.w(a.a.Da,null,[b,d?"focusin":"focusout"]))}};a.h.ea.hasfocus=!0;a.d.hasFocus=a.d.hasfocus;a.h.ea.hasFocus=!0;a.d.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Cb(b,c())}};K("if");K("ifnot",!1,!0);K("with",!0,!1,function(a,c){return a.createChildContext(c)});var L={};
93−a.d.options={init:function(b){if("select"!==a.a.A(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.Ka(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function g(c,e){if(A&&h)a.j.ha(b,a.a.c(d.get("value")),!0);else if(p.length){var f=0<=a.a.o(p,a.j.u(e[0]));a.a.sc(e[0],f);A&&!f&&a.l.w(a.a.Da,null,[b,
94−"change"])}}var k=b.multiple,l=0!=b.length&&k?b.scrollTop:null,m=a.a.c(c()),h=d.get("valueAllowUnset")&&d.has("value"),r=d.get("optionsIncludeDestroyed");c={};var q,p=[];h||(k?p=a.a.fb(e(),a.j.u):0<=b.selectedIndex&&p.push(a.j.u(b.options[b.selectedIndex])));m&&("undefined"==typeof m.length&&(m=[m]),q=a.a.Ka(m,function(b){return r||b===n||null===b||!a.a.c(b._destroy)}),d.has("optionsCaption")&&(m=a.a.c(d.get("optionsCaption")),null!==m&&m!==n&&q.unshift(L)));var A=!1;c.beforeRemove=function(a){b.removeChild(a)};
95−m=g;d.has("optionsAfterRender")&&"function"==typeof d.get("optionsAfterRender")&&(m=function(b,c){g(0,c);a.l.w(d.get("optionsAfterRender"),null,[c[0],b!==L?b:n])});a.a.Bb(b,q,function(c,e,g){g.length&&(p=!h&&g[0].selected?[a.j.u(g[0])]:[],A=!0);e=b.ownerDocument.createElement("option");c===L?(a.a.Za(e,d.get("optionsCaption")),a.j.ha(e,n)):(g=f(c,d.get("optionsValue"),c),a.j.ha(e,a.a.c(g)),c=f(c,d.get("optionsText"),g),a.a.Za(e,c));return[e]},c,m);a.l.w(function(){h?a.j.ha(b,a.a.c(d.get("value")),
96−!0):(k?p.length&&e().length<p.length:p.length&&0<=b.selectedIndex?a.j.u(b.options[b.selectedIndex])!==p[0]:p.length||0<=b.selectedIndex)&&a.a.Da(b,"change")});a.a.Nc(b);l&&20<Math.abs(l-b.scrollTop)&&(b.scrollTop=l)}};a.d.options.xb=a.a.e.I();a.d.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.p(b,"change",function(){var e=c(),f=[];a.a.q(b.getElementsByTagName("option"),function(b){b.selected&&f.push(a.j.u(b))});a.h.Ea(e,d,"selectedOptions",f)})},update:function(b,c){if("select"!=
97−a.a.A(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c()),e=b.scrollTop;d&&"number"==typeof d.length&&a.a.q(b.getElementsByTagName("option"),function(b){var c=0<=a.a.o(d,a.j.u(b));b.selected!=c&&a.a.sc(b,c)});b.scrollTop=e}};a.h.ea.selectedOptions=!0;a.d.style={update:function(b,c){var d=a.a.c(c()||{});a.a.D(d,function(c,d){d=a.a.c(d);if(null===d||d===n||!1===d)d="";b.style[c]=d})}};a.d.submit={init:function(b,c,d,e,f){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");
98−a.a.p(b,"submit",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.d.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Za(b,c())}};a.f.Z.text=!0;(function(){if(x&&x.navigator)var b=function(a){if(a)return parseFloat(a[1])},c=x.opera&&x.opera.version&&parseInt(x.opera.version()),d=x.navigator.userAgent,e=b(d.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i)),f=b(d.match(/Firefox\/([^ ]*)/));
99−if(10>a.a.C)var g=a.a.e.I(),k=a.a.e.I(),l=function(b){var c=this.activeElement;(c=c&&a.a.e.get(c,k))&&c(b)},m=function(b,c){var d=b.ownerDocument;a.a.e.get(d,g)||(a.a.e.set(d,g,!0),a.a.p(d,"selectionchange",l));a.a.e.set(b,k,c)};a.d.textInput={init:function(b,d,g){function l(c,d){a.a.p(b,c,d)}function k(){var c=a.a.c(d());if(null===c||c===n)c="";v!==n&&c===v?a.a.setTimeout(k,4):b.value!==c&&(u=c,b.value=c)}function y(){s||(v=b.value,s=a.a.setTimeout(t,4))}function t(){clearTimeout(s);v=s=n;var c=
100−b.value;u!==c&&(u=c,a.h.Ea(d(),g,"textInput",c))}var u=b.value,s,v,x=9==a.a.C?y:t;10>a.a.C?(l("propertychange",function(a){"value"===a.propertyName&&x(a)}),8==a.a.C&&(l("keyup",t),l("keydown",t)),8<=a.a.C&&(m(b,x),l("dragend",y))):(l("input",t),5>e&&"textarea"===a.a.A(b)?(l("keydown",y),l("paste",y),l("cut",y)):11>c?l("keydown",y):4>f&&(l("DOMAutoComplete",t),l("dragdrop",t),l("drop",t)));l("change",t);a.m(k,null,{i:b})}};a.h.ea.textInput=!0;a.d.textinput={preprocess:function(a,b,c){c("textInput",
101−a)}}})();a.d.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.d.uniqueName.Ic;a.a.rc(b,d)}}};a.d.uniqueName.Ic=0;a.d.value={after:["options","foreach"],init:function(b,c,d){if("input"!=b.tagName.toLowerCase()||"checkbox"!=b.type&&"radio"!=b.type){var e=["change"],f=d.get("valueUpdate"),g=!1,k=null;f&&("string"==typeof f&&(f=[f]),a.a.ra(e,f),e=a.a.Tb(e));var l=function(){k=null;g=!1;var e=c(),f=a.j.u(b);a.h.Ea(e,d,"value",f)};!a.a.C||"input"!=b.tagName.toLowerCase()||"text"!=b.type||
102−"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.o(e,"propertychange")||(a.a.p(b,"propertychange",function(){g=!0}),a.a.p(b,"focus",function(){g=!1}),a.a.p(b,"blur",function(){g&&l()}));a.a.q(e,function(c){var d=l;a.a.nd(c,"after")&&(d=function(){k=a.j.u(b);a.a.setTimeout(l,0)},c=c.substring(5));a.a.p(b,c,d)});var m=function(){var e=a.a.c(c()),f=a.j.u(b);if(null!==k&&e===k)a.a.setTimeout(m,0);else if(e!==f)if("select"===a.a.A(b)){var g=d.get("valueAllowUnset"),f=function(){a.j.ha(b,
103−e,g)};f();g||e===a.j.u(b)?a.a.setTimeout(f,0):a.l.w(a.a.Da,null,[b,"change"])}else a.j.ha(b,e)};a.m(m,null,{i:b})}else a.Ja(b,{checkedValue:c})},update:function(){}};a.h.ea.value=!0;a.d.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};(function(b){a.d[b]={init:function(c,d,e,f,g){return a.d.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,g)}}})("click");a.O=function(){};a.O.prototype.renderTemplateSource=
104−function(){throw Error("Override renderTemplateSource");};a.O.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.O.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||u;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.v.n(d)}if(1==b.nodeType||8==b.nodeType)return new a.v.qa(b);throw Error("Unknown template type: "+b);};a.O.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,
105−e);return this.renderTemplateSource(a,c,d,e)};a.O.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.O.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.O);a.Gb=function(){function b(b,c,d,k){b=a.h.yb(b);for(var l=a.h.ta,m=0;m<b.length;m++){var h=b[m].key;if(l.hasOwnProperty(h)){var r=l[h];if("function"===typeof r){if(h=
106−r(b[m].value))throw Error(h);}else if(!r)throw Error("This template engine does not support the '"+h+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.h.Ua(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return k.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{Oc:function(b,
107−c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.Gb.dd(b,c)},d)},dd:function(a,f){return a.replace(c,function(a,c,d,e,h){return b(h,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},Ec:function(b,c){return a.M.wb(function(d,k){var l=d.nextSibling;l&&l.nodeName.toLowerCase()===c&&a.Ja(l,b,k)})}}}();a.b("__tr_ambtns",a.Gb.Ec);(function(){a.v={};a.v.n=function(b){if(this.n=b){var c=a.a.A(b);this.ab="script"===c?1:"textarea"===c?2:"template"==c&&
108−b.content&&11===b.content.nodeType?3:4}};a.v.n.prototype.text=function(){var b=1===this.ab?"text":2===this.ab?"value":"innerHTML";if(0==arguments.length)return this.n[b];var c=arguments[0];"innerHTML"===b?a.a.Cb(this.n,c):this.n[b]=c};var b=a.a.e.I()+"_";a.v.n.prototype.data=function(c){if(1===arguments.length)return a.a.e.get(this.n,b+c);a.a.e.set(this.n,b+c,arguments[1])};var c=a.a.e.I();a.v.n.prototype.nodes=function(){var b=this.n;if(0==arguments.length)return(a.a.e.get(b,c)||{}).jb||(3===this.ab?
109−b.content:4===this.ab?b:n);a.a.e.set(b,c,{jb:arguments[0]})};a.v.qa=function(a){this.n=a};a.v.qa.prototype=new a.v.n;a.v.qa.prototype.text=function(){if(0==arguments.length){var b=a.a.e.get(this.n,c)||{};b.Hb===n&&b.jb&&(b.Hb=b.jb.innerHTML);return b.Hb}a.a.e.set(this.n,c,{Hb:arguments[0]})};a.b("templateSources",a.v);a.b("templateSources.domElement",a.v.n);a.b("templateSources.anonymousTemplate",a.v.qa)})();(function(){function b(b,c,d){var e;for(c=a.f.nextSibling(c);b&&(e=b)!==c;)b=a.f.nextSibling(e),
110−d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,k=a.Q.instance,n=k.preprocessNode;if(n){b(e,f,function(a,b){var c=a.previousSibling,d=n.call(k,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.za(c,g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.Rb(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.M.yc(b,[d])});a.a.za(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,
111−e,f,k,q){q=q||{};var p=(b&&d(b)||f||{}).ownerDocument,n=q.templateEngine||g;a.Gb.Oc(f,n,p);f=n.renderTemplate(f,k,q,p);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");p=!1;switch(e){case "replaceChildren":a.f.da(b,f);p=!0;break;case "replaceNode":a.a.qc(b,f);p=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}p&&(c(f,k),q.afterRender&&a.l.w(q.afterRender,null,[f,k.$data]));
112−return f}function f(b,c,d){return a.H(b)?b():"function"===typeof b?b(c,d):b}var g;a.Db=function(b){if(b!=n&&!(b instanceof a.O))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.Ab=function(b,c,h,k,q){h=h||{};if((h.templateEngine||g)==n)throw Error("Set a template engine before calling renderTemplate");q=q||"replaceChildren";if(k){var p=d(k);return a.B(function(){var g=c&&c instanceof a.U?c:new a.U(a.a.c(c)),n=f(b,g.$data,g),g=e(k,q,n,g,h);"replaceNode"==q&&(k=g,p=d(k))},null,
113−{wa:function(){return!p||!a.a.nb(p)},i:p&&"replaceNode"==q?p.parentNode:p})}return a.M.wb(function(d){a.Ab(b,c,h,d,"replaceNode")})};a.kd=function(b,d,g,k,q){function p(a,b){c(b,s);g.afterRender&&g.afterRender(b,a);s=null}function u(a,c){s=q.createChildContext(a,g.as,function(a){a.$index=c});var d=f(b,a,s);return e(null,"ignoreTargetNode",d,s,g)}var s;return a.B(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);b=a.a.Ka(b,function(b){return g.includeDestroyed||b===n||null===b||!a.a.c(b._destroy)});
114−a.l.w(a.a.Bb,null,[k,b,u,g,p])},null,{i:k})};var k=a.a.e.I();a.d.template={init:function(b,c){var d=a.a.c(c());if("string"==typeof d||d.name)a.f.xa(b);else{if("nodes"in d){if(d=d.nodes||[],a.H(d))throw Error('The "nodes" option must be a plain, non-observable array.');}else d=a.f.childNodes(b);d=a.a.jc(d);(new a.v.qa(b)).nodes(d)}return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var g=c(),s;c=a.a.c(g);d=!0;e=null;"string"==typeof c?c={}:(g=c.name,"if"in c&&(d=a.a.c(c["if"])),d&&"ifnot"in
115−c&&(d=!a.a.c(c.ifnot)),s=a.a.c(c.data));"foreach"in c?e=a.kd(g||b,d&&c.foreach||[],c,b,f):d?(f="data"in c?f.createChildContext(s,c.as):f,e=a.Ab(g||b,f,c,b)):a.f.xa(b);f=e;(s=a.a.e.get(b,k))&&"function"==typeof s.k&&s.k();a.a.e.set(b,k,f&&f.ba()?f:n)}};a.h.ta.template=function(b){b=a.h.yb(b);return 1==b.length&&b[0].unknown||a.h.ad(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.f.Z.template=!0})();a.b("setTemplateEngine",a.Db);a.b("renderTemplate",
116−a.Ab);a.a.dc=function(a,c,d){if(a.length&&c.length){var e,f,g,k,l;for(e=f=0;(!d||e<d)&&(k=a[f]);++f){for(g=0;l=c[g];++g)if(k.value===l.value){k.moved=l.index;l.moved=k.index;c.splice(g,1);e=g=0;break}e+=g}}};a.a.ib=function(){function b(b,d,e,f,g){var k=Math.min,l=Math.max,m=[],h,n=b.length,q,p=d.length,s=p-n||1,u=n+p+1,t,v,x;for(h=0;h<=n;h++)for(v=t,m.push(t=[]),x=k(p,h+s),q=l(0,h-1);q<=x;q++)t[q]=q?h?b[h-1]===d[q-1]?v[q-1]:k(v[q]||u,t[q-1]||u)+1:q+1:h+1;k=[];l=[];s=[];h=n;for(q=p;h||q;)p=m[h][q]-
117−1,q&&p===m[h][q-1]?l.push(k[k.length]={status:e,value:d[--q],index:q}):h&&p===m[h-1][q]?s.push(k[k.length]={status:f,value:b[--h],index:h}):(--q,--h,g.sparse||k.push({status:"retained",value:d[q]}));a.a.dc(s,l,!g.dontLimitMoves&&10*n);return k.reverse()}return function(a,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<d.length?b(a,d,"added","deleted",e):b(d,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.ib);(function(){function b(b,c,d,k,l){var m=[],
118−h=a.B(function(){var h=c(d,l,a.a.za(m,b))||[];0<m.length&&(a.a.qc(m,h),k&&a.l.w(k,null,[d,h,l]));m.length=0;a.a.ra(m,h)},null,{i:b,wa:function(){return!a.a.Qb(m)}});return{ca:m,B:h.ba()?h:n}}var c=a.a.e.I(),d=a.a.e.I();a.a.Bb=function(e,f,g,k,l){function m(b,c){w=q[c];v!==c&&(D[b]=w);w.qb(v++);a.a.za(w.ca,e);u.push(w);z.push(w)}function h(b,c){if(b)for(var d=0,e=c.length;d<e;d++)c[d]&&a.a.q(c[d].ca,function(a){b(a,d,c[d].ja)})}f=f||[];k=k||{};var r=a.a.e.get(e,c)===n,q=a.a.e.get(e,c)||[],p=a.a.fb(q,
119−function(a){return a.ja}),s=a.a.ib(p,f,k.dontLimitMoves),u=[],t=0,v=0,x=[],z=[];f=[];for(var D=[],p=[],w,C=0,B,E;B=s[C];C++)switch(E=B.moved,B.status){case "deleted":E===n&&(w=q[t],w.B&&(w.B.k(),w.B=n),a.a.za(w.ca,e).length&&(k.beforeRemove&&(u.push(w),z.push(w),w.ja===d?w=null:f[C]=w),w&&x.push.apply(x,w.ca)));t++;break;case "retained":m(C,t++);break;case "added":E!==n?m(C,E):(w={ja:B.value,qb:a.N(v++)},u.push(w),z.push(w),r||(p[C]=w))}a.a.e.set(e,c,u);h(k.beforeMove,D);a.a.q(x,k.beforeRemove?a.$:
120−a.removeNode);for(var C=0,r=a.f.firstChild(e),F;w=z[C];C++){w.ca||a.a.extend(w,b(e,g,w.ja,l,w.qb));for(t=0;s=w.ca[t];r=s.nextSibling,F=s,t++)s!==r&&a.f.gc(e,s,F);!w.Wc&&l&&(l(w.ja,w.ca,w.qb),w.Wc=!0)}h(k.beforeRemove,f);for(C=0;C<f.length;++C)f[C]&&(f[C].ja=d);h(k.afterMove,D);h(k.afterAdd,p)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.Bb);a.W=function(){this.allowTemplateRewriting=!1};a.W.prototype=new a.O;a.W.prototype.renderTemplateSource=function(b,c,d,e){if(c=(9>a.a.C?0:b.nodes)?
121−b.nodes():null)return a.a.V(c.cloneNode(!0).childNodes);b=b.text();return a.a.ma(b,e)};a.W.sb=new a.W;a.Db(a.W.sb);a.b("nativeTemplateEngine",a.W);(function(){a.vb=function(){var a=this.$c=function(){if(!v||!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,f,g){g=g||u;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var k=b.data("precompiled");
122−k||(k=b.text()||"",k=v.template(null,"{{ko_with $item.koBindingContext}}"+k+"{{/ko_with}}"),b.data("precompiled",k));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(k,b,e);e.appendTo(g.createElement("div"));v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){u.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(v.tmpl.tag.ko_code={open:"__.push($1 || '');"},
123−v.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.vb.prototype=new a.O;var b=new a.vb;0<b.$c&&a.Db(b);a.b("jqueryTmplTemplateEngine",a.vb)})()})})();})();
Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout.mapping-latest.js+0−21
@@ -1,21 +0,0 @@
1−/// Knockout Mapping plugin v2.4.0
2−/// (c) 2013 Steven Sanderson, Roy Jacobs - http://knockoutjs.com/
3−/// License: MIT (http://www.opensource.org/licenses/mit-license.php)
4−(function(d){"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?d(require("knockout"),exports):"function"===typeof define&&define.amd?define(["knockout","exports"],d):d(ko,ko.mapping={})})(function(d,f){function y(b,c){var a,e;for(e in c)if(c.hasOwnProperty(e)&&c[e])if(a=f.getType(b[e]),e&&b[e]&&"array"!==a&&"string"!==a)y(b[e],c[e]);else if("array"===f.getType(b[e])&&"array"===f.getType(c[e])){a=b;for(var d=e,l=b[e],n=c[e],t={},g=l.length-1;0<=g;--g)t[l[g]]=l[g];for(g=
5−n.length-1;0<=g;--g)t[n[g]]=n[g];l=[];n=void 0;for(n in t)l.push(t[n]);a[d]=l}else b[e]=c[e]}function E(b,c){var a={};y(a,b);y(a,c);return a}function z(b,c){for(var a=E({},b),d=L.length-1;0<=d;d--){var f=L[d];a[f]&&(a[""]instanceof Object||(a[""]={}),a[""][f]=a[f],delete a[f])}c&&(a.ignore=h(c.ignore,a.ignore),a.include=h(c.include,a.include),a.copy=h(c.copy,a.copy),a.observe=h(c.observe,a.observe));a.ignore=h(a.ignore,j.ignore);a.include=h(a.include,j.include);a.copy=h(a.copy,j.copy);a.observe=h(a.observe,
6−j.observe);a.mappedProperties=a.mappedProperties||{};a.copiedProperties=a.copiedProperties||{};return a}function h(b,c){"array"!==f.getType(b)&&(b="undefined"===f.getType(b)?[]:[b]);"array"!==f.getType(c)&&(c="undefined"===f.getType(c)?[]:[c]);return d.utils.arrayGetDistinctValues(b.concat(c))}function F(b,c,a,e,k,l,n){var t="array"===f.getType(d.utils.unwrapObservable(c));l=l||"";if(f.isMapped(b)){var g=d.utils.unwrapObservable(b)[p];a=E(g,a)}var j=n||k,h=function(){return a[e]&&a[e].create instanceof
7−Function},x=function(b){var f=G,g=d.dependentObservable;d.dependentObservable=function(a,b,c){c=c||{};a&&"object"==typeof a&&(c=a);var e=c.deferEvaluation,M=!1;c.deferEvaluation=!0;a=new H(a,b,c);if(!e){var g=a,e=d.dependentObservable;d.dependentObservable=H;a=d.isWriteableObservable(g);d.dependentObservable=e;a=H({read:function(){M||(d.utils.arrayRemoveItem(f,g),M=!0);return g.apply(g,arguments)},write:a&&function(a){return g(a)},deferEvaluation:!0});f.push(a)}return a};d.dependentObservable.fn=
8−H.fn;d.computed=d.dependentObservable;b=d.utils.unwrapObservable(k)instanceof Array?a[e].create({data:b||c,parent:j,skip:N}):a[e].create({data:b||c,parent:j});d.dependentObservable=g;d.computed=d.dependentObservable;return b},u=function(){return a[e]&&a[e].update instanceof Function},v=function(b,f){var g={data:f||c,parent:j,target:d.utils.unwrapObservable(b)};d.isWriteableObservable(b)&&(g.observable=b);return a[e].update(g)};if(n=I.get(c))return n;e=e||"";if(t){var t=[],s=!1,m=function(a){return a};
9−a[e]&&a[e].key&&(m=a[e].key,s=!0);d.isObservable(b)||(b=d.observableArray([]),b.mappedRemove=function(a){var c="function"==typeof a?a:function(b){return b===m(a)};return b.remove(function(a){return c(m(a))})},b.mappedRemoveAll=function(a){var c=C(a,m);return b.remove(function(a){return-1!=d.utils.arrayIndexOf(c,m(a))})},b.mappedDestroy=function(a){var c="function"==typeof a?a:function(b){return b===m(a)};return b.destroy(function(a){return c(m(a))})},b.mappedDestroyAll=function(a){var c=C(a,m);return b.destroy(function(a){return-1!=
10−d.utils.arrayIndexOf(c,m(a))})},b.mappedIndexOf=function(a){var c=C(b(),m);a=m(a);return d.utils.arrayIndexOf(c,a)},b.mappedCreate=function(a){if(-1!==b.mappedIndexOf(a))throw Error("There already is an object with the key that you specified.");var c=h()?x(a):a;u()&&(a=v(c,a),d.isWriteableObservable(c)?c(a):c=a);b.push(c);return c});n=C(d.utils.unwrapObservable(b),m).sort();g=C(c,m);s&&g.sort();s=d.utils.compareArrays(n,g);n={};var J,A=d.utils.unwrapObservable(c),y={},z=!0,g=0;for(J=A.length;g<J;g++){var r=
11−m(A[g]);if(void 0===r||r instanceof Object){z=!1;break}y[r]=A[g]}var A=[],B=0,g=0;for(J=s.length;g<J;g++){var r=s[g],q,w=l+"["+g+"]";switch(r.status){case "added":var D=z?y[r.value]:K(d.utils.unwrapObservable(c),r.value,m);q=F(void 0,D,a,e,b,w,k);h()||(q=d.utils.unwrapObservable(q));w=O(d.utils.unwrapObservable(c),D,n);q===N?B++:A[w-B]=q;n[w]=!0;break;case "retained":D=z?y[r.value]:K(d.utils.unwrapObservable(c),r.value,m);q=K(b,r.value,m);F(q,D,a,e,b,w,k);w=O(d.utils.unwrapObservable(c),D,n);A[w]=
12−q;n[w]=!0;break;case "deleted":q=K(b,r.value,m)}t.push({event:r.status,item:q})}b(A);a[e]&&a[e].arrayChanged&&d.utils.arrayForEach(t,function(b){a[e].arrayChanged(b.event,b.item)})}else if(P(c)){b=d.utils.unwrapObservable(b);if(!b){if(h())return s=x(),u()&&(s=v(s)),s;if(u())return v(s);b={}}u()&&(b=v(b));I.save(c,b);if(u())return b;Q(c,function(e){var f=l.length?l+"."+e:e;if(-1==d.utils.arrayIndexOf(a.ignore,f))if(-1!=d.utils.arrayIndexOf(a.copy,f))b[e]=c[e];else if("object"!=typeof c[e]&&"array"!=
13−typeof c[e]&&0<a.observe.length&&-1==d.utils.arrayIndexOf(a.observe,f))b[e]=c[e],a.copiedProperties[f]=!0;else{var g=I.get(c[e]),k=F(b[e],c[e],a,e,b,f,b),g=g||k;if(0<a.observe.length&&-1==d.utils.arrayIndexOf(a.observe,f))b[e]=g(),a.copiedProperties[f]=!0;else{if(d.isWriteableObservable(b[e]))b[e](d.utils.unwrapObservable(g));else g=void 0===b[e]?g:d.utils.unwrapObservable(g),b[e]=g;a.mappedProperties[f]=!0}}})}else switch(f.getType(c)){case "function":u()?d.isWriteableObservable(c)?(c(v(c)),b=c):
14−b=v(c):b=c;break;default:if(d.isWriteableObservable(b))return q=u()?v(b):d.utils.unwrapObservable(c),b(q),q;h()||u();b=h()?x():d.observable(d.utils.unwrapObservable(c));u()&&b(v(b))}return b}function O(b,c,a){for(var e=0,d=b.length;e<d;e++)if(!0!==a[e]&&b[e]===c)return e;return null}function R(b,c){var a;c&&(a=c(b));"undefined"===f.getType(a)&&(a=b);return d.utils.unwrapObservable(a)}function K(b,c,a){b=d.utils.unwrapObservable(b);for(var e=0,f=b.length;e<f;e++){var l=b[e];if(R(l,a)===c)return l}throw Error("When calling ko.update*, the key '"+
15−c+"' was not found!");}function C(b,c){return d.utils.arrayMap(d.utils.unwrapObservable(b),function(a){return c?R(a,c):a})}function Q(b,c){if("array"===f.getType(b))for(var a=0;a<b.length;a++)c(a);else for(a in b)c(a)}function P(b){var c=f.getType(b);return("object"===c||"array"===c)&&null!==b}function T(){var b=[],c=[];this.save=function(a,e){var f=d.utils.arrayIndexOf(b,a);0<=f?c[f]=e:(b.push(a),c.push(e))};this.get=function(a){a=d.utils.arrayIndexOf(b,a);return 0<=a?c[a]:void 0}}function S(){var b=
16−{},c=function(a){var c;try{c=a}catch(d){c="$$$"}a=b[c];void 0===a&&(a=new T,b[c]=a);return a};this.save=function(a,b){c(a).save(a,b)};this.get=function(a){return c(a).get(a)}}var p="__ko_mapping__",H=d.dependentObservable,B=0,G,I,L=["create","update","key","arrayChanged"],N={},x={include:["_destroy"],ignore:[],copy:[],observe:[]},j=x;f.isMapped=function(b){return(b=d.utils.unwrapObservable(b))&&b[p]};f.fromJS=function(b){if(0==arguments.length)throw Error("When calling ko.fromJS, pass the object you want to convert.");
17−try{B++||(G=[],I=new S);var c,a;2==arguments.length&&(arguments[1][p]?a=arguments[1]:c=arguments[1]);3==arguments.length&&(c=arguments[1],a=arguments[2]);a&&(c=E(c,a[p]));c=z(c);var e=F(a,b,c);a&&(e=a);if(!--B)for(;G.length;){var d=G.pop();d&&d()}e[p]=E(e[p],c);return e}catch(f){throw B=0,f;}};f.fromJSON=function(b){var c=d.utils.parseJson(b);arguments[0]=c;return f.fromJS.apply(this,arguments)};f.updateFromJS=function(){throw Error("ko.mapping.updateFromJS, use ko.mapping.fromJS instead. Please note that the order of parameters is different!");
18−};f.updateFromJSON=function(){throw Error("ko.mapping.updateFromJSON, use ko.mapping.fromJSON instead. Please note that the order of parameters is different!");};f.toJS=function(b,c){j||f.resetDefaultOptions();if(0==arguments.length)throw Error("When calling ko.mapping.toJS, pass the object you want to convert.");if("array"!==f.getType(j.ignore))throw Error("ko.mapping.defaultOptions().ignore should be an array.");if("array"!==f.getType(j.include))throw Error("ko.mapping.defaultOptions().include should be an array.");
19−if("array"!==f.getType(j.copy))throw Error("ko.mapping.defaultOptions().copy should be an array.");c=z(c,b[p]);return f.visitModel(b,function(a){return d.utils.unwrapObservable(a)},c)};f.toJSON=function(b,c){var a=f.toJS(b,c);return d.utils.stringifyJson(a)};f.defaultOptions=function(){if(0<arguments.length)j=arguments[0];else return j};f.resetDefaultOptions=function(){j={include:x.include.slice(0),ignore:x.ignore.slice(0),copy:x.copy.slice(0)}};f.getType=function(b){if(b&&"object"===typeof b){if(b.constructor===
20−Date)return"date";if(b.constructor===Array)return"array"}return typeof b};f.visitModel=function(b,c,a){a=a||{};a.visitedObjects=a.visitedObjects||new S;var e,k=d.utils.unwrapObservable(b);if(P(k))a=z(a,k[p]),c(b,a.parentName),e="array"===f.getType(k)?[]:{};else return c(b,a.parentName);a.visitedObjects.save(b,e);var l=a.parentName;Q(k,function(b){if(!(a.ignore&&-1!=d.utils.arrayIndexOf(a.ignore,b))){var j=k[b],g=a,h=l||"";"array"===f.getType(k)?l&&(h+="["+b+"]"):(l&&(h+="."),h+=b);g.parentName=h;
21−if(!(-1===d.utils.arrayIndexOf(a.copy,b)&&-1===d.utils.arrayIndexOf(a.include,b)&&k[p]&&k[p].mappedProperties&&!k[p].mappedProperties[b]&&k[p].copiedProperties&&!k[p].copiedProperties[b]&&"array"!==f.getType(k)))switch(f.getType(d.utils.unwrapObservable(j))){case "object":case "array":case "undefined":g=a.visitedObjects.get(j);e[b]="undefined"!==f.getType(g)?g:f.visitModel(j,c,a);break;default:e[b]=c(j,a.parentName)}}});return e}});
Source/Libraries/Adapters/ModbusAdapters/Scripts/knockout.validation.js+0−1511
@@ -1,1511 +0,0 @@
1−/*=============================================================================
2− Author: Eric M. Barnard - @ericmbarnard
3− License: MIT (http://opensource.org/licenses/mit-license.php)
4−
5− Description: Validation Library for KnockoutJS
6− Version: 2.0.3
7−===============================================================================
8−*/
9−/*globals require: false, exports: false, define: false, ko: false */
10−
11−(function (factory) {
12− // Module systems magic dance.
13−
14− if (typeof require === "function" && typeof exports === "object" && typeof module === "object") {
15− // CommonJS or Node: hard-coded dependency on "knockout"
16− factory(require("knockout"), exports);
17− } else if (typeof define === "function" && define["amd"]) {
18− // AMD anonymous module with hard-coded dependency on "knockout"
19− define(["knockout", "exports"], factory);
20− } else {
21− // <script> tag: use the global `ko` object, attaching a `mapping` property
22− factory(ko, ko.validation = {});
23− }
24−}(function ( ko, exports ) {
25−
26− if (typeof (ko) === 'undefined') {
27− throw new Error('Knockout is required, please ensure it is loaded before loading this validation plug-in');
28− }
29−
30− // create our namespace object
31− ko.validation = exports;
32−
33− var kv = ko.validation,
34− koUtils = ko.utils,
35− unwrap = koUtils.unwrapObservable,
36− forEach = koUtils.arrayForEach,
37− extend = koUtils.extend;
38−;/*global ko: false*/
39−
40−var defaults = {
41− registerExtenders: true,
42− messagesOnModified: true,
43− errorsAsTitle: true, // enables/disables showing of errors as title attribute of the target element.
44− errorsAsTitleOnModified: false, // shows the error when hovering the input field (decorateElement must be true)
45− messageTemplate: null,
46− insertMessages: true, // automatically inserts validation messages as <span></span>
47− parseInputAttributes: false, // parses the HTML5 validation attribute from a form element and adds that to the object
48− writeInputAttributes: false, // adds HTML5 input validation attributes to form elements that ko observable's are bound to
49− decorateInputElement: false, // false to keep backward compatibility
50− decorateElementOnModified: true,// true to keep backward compatibility
51− errorClass: null, // single class for error message and element
52− errorElementClass: 'validationElement', // class to decorate error element
53− errorMessageClass: 'validationMessage', // class to decorate error message
54− allowHtmlMessages: false, // allows HTML in validation messages
55− grouping: {
56− deep: false, //by default grouping is shallow
57− observable: true, //and using observables
58− live: false //react to changes to observableArrays if observable === true
59− },
60− validate: {
61− // throttle: 10
62− }
63−};
64−
65−// make a copy so we can use 'reset' later
66−var configuration = extend({}, defaults);
67−
68−configuration.html5Attributes = ['required', 'pattern', 'min', 'max', 'step'];
69−configuration.html5InputTypes = ['email', 'number', 'date'];
70−
71−configuration.reset = function () {
72− extend(configuration, defaults);
73−};
74−
75−kv.configuration = configuration;
76−;kv.utils = (function () {
77− var seedId = new Date().getTime();
78−
79− var domData = {}; //hash of data objects that we reference from dom elements
80− var domDataKey = '__ko_validation__';
81−
82− return {
83− isArray: function (o) {
84− return o.isArray || Object.prototype.toString.call(o) === '[object Array]';
85− },
86− isObject: function (o) {
87− return o !== null && typeof o === 'object';
88− },
89− isNumber: function(o) {
90− return !isNaN(o);
91− },
92− isObservableArray: function(instance) {
93− return !!instance &&
94− typeof instance["remove"] === "function" &&
95− typeof instance["removeAll"] === "function" &&
96− typeof instance["destroy"] === "function" &&
97− typeof instance["destroyAll"] === "function" &&
98− typeof instance["indexOf"] === "function" &&
99− typeof instance["replace"] === "function";
100− },
101− values: function (o) {
102− var r = [];
103− for (var i in o) {
104− if (o.hasOwnProperty(i)) {
105− r.push(o[i]);
106− }
107− }
108− return r;
109− },
110− getValue: function (o) {
111− return (typeof o === 'function' ? o() : o);
112− },
113− hasAttribute: function (node, attr) {
114− return node.getAttribute(attr) !== null;
115− },
116− getAttribute: function (element, attr) {
117− return element.getAttribute(attr);
118− },
119− setAttribute: function (element, attr, value) {
120− return element.setAttribute(attr, value);
121− },
122− isValidatable: function (o) {
123− return !!(o && o.rules && o.isValid && o.isModified);
124− },
125− insertAfter: function (node, newNode) {
126− node.parentNode.insertBefore(newNode, node.nextSibling);
127− },
128− newId: function () {
129− return seedId += 1;
130− },
131− getConfigOptions: function (element) {
132− var options = kv.utils.contextFor(element);
133−
134− return options || kv.configuration;
135− },
136− setDomData: function (node, data) {
137− var key = node[domDataKey];
138−
139− if (!key) {
140− node[domDataKey] = key = kv.utils.newId();
141− }
142−
143− domData[key] = data;
144− },
145− getDomData: function (node) {
146− var key = node[domDataKey];
147−
148− if (!key) {
149− return undefined;
150− }
151−
152− return domData[key];
153− },
154− contextFor: function (node) {
155− switch (node.nodeType) {
156− case 1:
157− case 8:
158− var context = kv.utils.getDomData(node);
159− if (context) { return context; }
160− if (node.parentNode) { return kv.utils.contextFor(node.parentNode); }
161− break;
162− }
163− return undefined;
164− },
165− isEmptyVal: function (val) {
166− if (val === undefined) {
167− return true;
168− }
169− if (val === null) {
170− return true;
171− }
172− if (val === "") {
173− return true;
174− }
175− },
176− getOriginalElementTitle: function (element) {
177− var savedOriginalTitle = kv.utils.getAttribute(element, 'data-orig-title'),
178− currentTitle = element.title,
179− hasSavedOriginalTitle = kv.utils.hasAttribute(element, 'data-orig-title');
180−
181− return hasSavedOriginalTitle ?
182− savedOriginalTitle : currentTitle;
183− },
184− async: function (expr) {
185− if (window.setImmediate) { window.setImmediate(expr); }
186− else { window.setTimeout(expr, 0); }
187− },
188− forEach: function (object, callback) {
189− if (kv.utils.isArray(object)) {
190− return forEach(object, callback);
191− }
192− for (var prop in object) {
193− if (object.hasOwnProperty(prop)) {
194− callback(object[prop], prop);
195− }
196− }
197− }
198− };
199−}());;var api = (function () {
200−
201− var isInitialized = 0,
202− configuration = kv.configuration,
203− utils = kv.utils;
204−
205− function cleanUpSubscriptions(context) {
206− forEach(context.subscriptions, function (subscription) {
207− subscription.dispose();
208− });
209− context.subscriptions = [];
210− }
211−
212− function dispose(context) {
213− if (context.options.deep) {
214− forEach(context.flagged, function (obj) {
215− delete obj.__kv_traversed;
216− });
217− context.flagged.length = 0;
218− }
219−
220− if (!context.options.live) {
221− cleanUpSubscriptions(context);
222− }
223− }
224−
225− function runTraversal(obj, context) {
226− context.validatables = [];
227− cleanUpSubscriptions(context);
228− traverseGraph(obj, context);
229− dispose(context);
230− }
231−
232− function traverseGraph(obj, context, level) {
233− var objValues = [],
234− val = obj.peek ? obj.peek() : obj;
235−
236− if (obj.__kv_traversed === true) {
237− return;
238− }
239−
240− if (context.options.deep) {
241− obj.__kv_traversed = true;
242− context.flagged.push(obj);
243− }
244−
245− //default level value depends on deep option.
246− level = (level !== undefined ? level : context.options.deep ? 1 : -1);
247−
248− // if object is observable then add it to the list
249− if (ko.isObservable(obj)) {
250− // ensure it's validatable but don't extend validatedObservable because it
251− // would overwrite isValid property.
252− if (!obj.errors && !utils.isValidatable(obj)) {
253− obj.extend({ validatable: true });
254− }
255− context.validatables.push(obj);
256−
257− if (context.options.live && utils.isObservableArray(obj)) {
258− context.subscriptions.push(obj.subscribe(function () {
259− context.graphMonitor.valueHasMutated();
260− }));
261− }
262− }
263−
264− //get list of values either from array or object but ignore non-objects
265− // and destroyed objects
266− if (val && !val._destroy) {
267− if (utils.isArray(val)) {
268− objValues = val;
269− }
270− else if (utils.isObject(val)) {
271− objValues = utils.values(val);
272− }
273− }
274−
275− //process recursively if it is deep grouping
276− if (level !== 0) {
277− utils.forEach(objValues, function (observable) {
278− //but not falsy things and not HTML Elements
279− if (observable && !observable.nodeType && (!ko.isComputed(observable) || observable.rules)) {
280− traverseGraph(observable, context, level + 1);
281− }
282− });
283− }
284− }
285−
286− function collectErrors(array) {
287− var errors = [];
288− forEach(array, function (observable) {
289− // Do not collect validatedObservable errors
290− if (utils.isValidatable(observable) && !observable.isValid()) {
291− // Use peek because we don't want a dependency for 'error' property because it
292− // changes before 'isValid' does. (Issue #99)
293− errors.push(observable.error.peek());
294− }
295− });
296− return errors;
297− }
298−
299− return {
300− //Call this on startup
301− //any config can be overridden with the passed in options
302− init: function (options, force) {
303− //done run this multiple times if we don't really want to
304− if (isInitialized > 0 && !force) {
305− return;
306− }
307−
308− //because we will be accessing options properties it has to be an object at least
309− options = options || {};
310− //if specific error classes are not provided then apply generic errorClass
311− //it has to be done on option so that options.errorClass can override default
312− //errorElementClass and errorMessage class but not those provided in options
313− options.errorElementClass = options.errorElementClass || options.errorClass || configuration.errorElementClass;
314− options.errorMessageClass = options.errorMessageClass || options.errorClass || configuration.errorMessageClass;
315−
316− extend(configuration, options);
317−
318− if (configuration.registerExtenders) {
319− kv.registerExtenders();
320− }
321−
322− isInitialized = 1;
323− },
324−
325− // resets the config back to its original state
326− reset: kv.configuration.reset,
327−
328− // recursively walks a viewModel and creates an object that
329− // provides validation information for the entire viewModel
330− // obj -> the viewModel to walk
331− // options -> {
332− // deep: false, // if true, will walk past the first level of viewModel properties
333− // observable: false // if true, returns a computed observable indicating if the viewModel is valid
334− // }
335− group: function group(obj, options) { // array of observables or viewModel
336− options = extend(extend({}, configuration.grouping), options);
337−
338− var context = {
339− options: options,
340− graphMonitor: ko.observable(),
341− flagged: [],
342− subscriptions: [],
343− validatables: []
344− };
345−
346− var result = null;
347−
348− //if using observables then traverse structure once and add observables
349− if (options.observable) {
350− result = ko.computed(function () {
351− context.graphMonitor(); //register dependency
352− runTraversal(obj, context);
353− return collectErrors(context.validatables);
354− });
355− }
356− else { //if not using observables then every call to error() should traverse the structure
357− result = function () {
358− runTraversal(obj, context);
359− return collectErrors(context.validatables);
360− };
361− }
362−
363− result.showAllMessages = function (show) { // thanks @heliosPortal
364− if (show === undefined) {//default to true
365− show = true;
366− }
367−
368− result.forEach(function (observable) {
369− if (utils.isValidatable(observable)) {
370− observable.isModified(show);
371− }
372− });
373− };
374−
375− result.isAnyMessageShown = function () {
376− var invalidAndModifiedPresent;
377−
378− invalidAndModifiedPresent = !!result.find(function (observable) {
379− return utils.isValidatable(observable) && !observable.isValid() && observable.isModified();
380− });
381− return invalidAndModifiedPresent;
382− };
383−
384− result.filter = function(predicate) {
385− predicate = predicate || function () { return true; };
386− // ensure we have latest changes
387− result();
388−
389− return koUtils.arrayFilter(context.validatables, predicate);
390− };
391−
392− result.find = function(predicate) {
393− predicate = predicate || function () { return true; };
394− // ensure we have latest changes
395− result();
396−
397− return koUtils.arrayFirst(context.validatables, predicate);
398− };
399−
400− result.forEach = function(callback) {
401− callback = callback || function () { };
402− // ensure we have latest changes
403− result();
404−
405− forEach(context.validatables, callback);
406− };
407−
408− result.map = function(mapping) {
409− mapping = mapping || function (item) { return item; };
410− // ensure we have latest changes
411− result();
412−
413− return koUtils.arrayMap(context.validatables, mapping);
414− };
415−
416− /**
417− * @private You should not rely on this method being here.
418− * It's a private method and it may change in the future.
419− *
420− * @description Updates the validated object and collects errors from it.
421− */
422− result._updateState = function(newValue) {
423− if (!utils.isObject(newValue)) {
424− throw new Error('An object is required.');
425− }
426− obj = newValue;
427− if (options.observable) {
428− context.graphMonitor.valueHasMutated();
429− }
430− else {
431− runTraversal(newValue, context);
432− return collectErrors(context.validatables);
433− }
434− };
435− return result;
436− },
437−
438− formatMessage: function (message, params, observable) {
439− if (utils.isObject(params) && params.typeAttr) {
440− params = params.value;
441− }
442− if (typeof message === 'function') {
443− return message(params, observable);
444− }
445− var replacements = unwrap(params);
446− if (replacements == null) {
447− replacements = [];
448− }
449− if (!utils.isArray(replacements)) {
450− replacements = [replacements];
451− }
452− return message.replace(/{(\d+)}/gi, function(match, index) {
453− if (typeof replacements[index] !== 'undefined') {
454− return replacements[index];
455− }
456− return match;
457− });
458− },
459−
460− // addRule:
461− // This takes in a ko.observable and a Rule Context - which is just a rule name and params to supply to the validator
462− // ie: kv.addRule(myObservable, {
463− // rule: 'required',
464− // params: true
465− // });
466− //
467− addRule: function (observable, rule) {
468− observable.extend({ validatable: true });
469−
470− var hasRule = !!koUtils.arrayFirst(observable.rules(), function(item) {
471− return item.rule && item.rule === rule.rule;
472− });
473−
474− if (!hasRule) {
475− //push a Rule Context to the observables local array of Rule Contexts
476− observable.rules.push(rule);
477− }
478− return observable;
479− },
480−
481− // addAnonymousRule:
482− // Anonymous Rules essentially have all the properties of a Rule, but are only specific for a certain property
483− // and developers typically are wanting to add them on the fly or not register a rule with the 'kv.rules' object
484− //
485− // Example:
486− // var test = ko.observable('something').extend{(
487− // validation: {
488− // validator: function(val, someOtherVal){
489− // return true;
490− // },
491− // message: "Something must be really wrong!',
492− // params: true
493− // }
494− // )};
495− addAnonymousRule: function (observable, ruleObj) {
496− if (ruleObj['message'] === undefined) {
497− ruleObj['message'] = 'Error';
498− }
499−
500− //make sure onlyIf is honoured
501− if (ruleObj.onlyIf) {
502− ruleObj.condition = ruleObj.onlyIf;
503− }
504−
505− //add the anonymous rule to the observable
506− kv.addRule(observable, ruleObj);
507− },
508−
509− addExtender: function (ruleName) {
510− ko.extenders[ruleName] = function (observable, params) {
511− //params can come in a few flavors
512− // 1. Just the params to be passed to the validator
513− // 2. An object containing the Message to be used and the Params to pass to the validator
514− // 3. A condition when the validation rule to be applied
515− //
516− // Example:
517− // var test = ko.observable(3).extend({
518− // max: {
519− // message: 'This special field has a Max of {0}',
520− // params: 2,
521− // onlyIf: function() {
522− // return specialField.IsVisible();
523− // }
524− // }
525− // )};
526− //
527− if (params && (params.message || params.onlyIf)) { //if it has a message or condition object, then its an object literal to use
528− return kv.addRule(observable, {
529− rule: ruleName,
530− message: params.message,
531− params: utils.isEmptyVal(params.params) ? true : params.params,
532− condition: params.onlyIf
533− });
534− } else {
535− return kv.addRule(observable, {
536− rule: ruleName,
537− params: params
538− });
539− }
540− };
541− },
542−
543− // loops through all kv.rules and adds them as extenders to
544− // ko.extenders
545− registerExtenders: function () { // root extenders optional, use 'validation' extender if would cause conflicts
546− if (configuration.registerExtenders) {
547− for (var ruleName in kv.rules) {
548− if (kv.rules.hasOwnProperty(ruleName)) {
549− if (!ko.extenders[ruleName]) {
550− kv.addExtender(ruleName);
551− }
552− }
553− }
554− }
555− },
556−
557− //creates a span next to the @element with the specified error class
558− insertValidationMessage: function (element) {
559− var span = document.createElement('SPAN');
560− span.className = utils.getConfigOptions(element).errorMessageClass;
561− utils.insertAfter(element, span);
562− return span;
563− },
564−
565− // if html-5 validation attributes have been specified, this parses
566− // the attributes on @element
567− parseInputValidationAttributes: function (element, valueAccessor) {
568− forEach(kv.configuration.html5Attributes, function (attr) {
569− if (utils.hasAttribute(element, attr)) {
570−
571− var params = element.getAttribute(attr) || true;
572−
573− if (attr === 'min' || attr === 'max')
574− {
575− // If we're validating based on the min and max attributes, we'll
576− // need to know what the 'type' attribute is set to
577− var typeAttr = element.getAttribute('type');
578− if (typeof typeAttr === "undefined" || !typeAttr)
579− {
580− // From http://www.w3.org/TR/html-markup/input:
581− // An input element with no type attribute specified represents the
582− // same thing as an input element with its type attribute set to "text".
583− typeAttr = "text";
584− }
585− params = {typeAttr: typeAttr, value: params};
586− }
587−
588− kv.addRule(valueAccessor(), {
589− rule: attr,
590− params: params
591− });
592− }
593− });
594−
595− var currentType = element.getAttribute('type');
596− forEach(kv.configuration.html5InputTypes, function (type) {
597− if (type === currentType) {
598− kv.addRule(valueAccessor(), {
599− rule: (type === 'date') ? 'dateISO' : type,
600− params: true
601− });
602− }
603− });
604− },
605−
606− // writes html5 validation attributes on the element passed in
607− writeInputValidationAttributes: function (element, valueAccessor) {
608− var observable = valueAccessor();
609−
610− if (!observable || !observable.rules) {
611− return;
612− }
613−
614− var contexts = observable.rules(); // observable array
615−
616− // loop through the attributes and add the information needed
617− forEach(kv.configuration.html5Attributes, function (attr) {
618− var ctx = koUtils.arrayFirst(contexts, function (ctx) {
619− return ctx.rule && ctx.rule.toLowerCase() === attr.toLowerCase();
620− });
621−
622− if (!ctx) {
623− return;
624− }
625−
626− // we have a rule matching a validation attribute at this point
627− // so lets add it to the element along with the params
628− ko.computed({
629− read: function() {
630− var params = ko.unwrap(ctx.params);
631−
632− // we have to do some special things for the pattern validation
633− if (ctx.rule === "pattern" && params instanceof RegExp) {
634− // we need the pure string representation of the RegExpr without the //gi stuff
635− params = params.source;
636− }
637−
638− element.setAttribute(attr, params);
639− },
640− disposeWhenNodeIsRemoved: element
641− });
642− });
643−
644− contexts = null;
645− },
646−
647− //take an existing binding handler and make it cause automatic validations
648− makeBindingHandlerValidatable: function (handlerName) {
649− var init = ko.bindingHandlers[handlerName].init;
650−
651− ko.bindingHandlers[handlerName].init = function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
652−
653− init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
654−
655− return ko.bindingHandlers['validationCore'].init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
656− };
657− },
658−
659− // visit an objects properties and apply validation rules from a definition
660− setRules: function (target, definition) {
661− var setRules = function (target, definition) {
662− if (!target || !definition) { return; }
663−
664− for (var prop in definition) {
665− if (!definition.hasOwnProperty(prop)) { continue; }
666− var ruleDefinitions = definition[prop];
667−
668− //check the target property exists and has a value
669− if (!target[prop]) { continue; }
670− var targetValue = target[prop],
671− unwrappedTargetValue = unwrap(targetValue),
672− rules = {},
673− nonRules = {};
674−
675− for (var rule in ruleDefinitions) {
676− if (!ruleDefinitions.hasOwnProperty(rule)) { continue; }
677− if (kv.rules[rule]) {
678− rules[rule] = ruleDefinitions[rule];
679− } else {
680− nonRules[rule] = ruleDefinitions[rule];
681− }
682− }
683−
684− //apply rules
685− if (ko.isObservable(targetValue)) {
686− targetValue.extend(rules);
687− }
688−
689− //then apply child rules
690− //if it's an array, apply rules to all children
691− if (unwrappedTargetValue && utils.isArray(unwrappedTargetValue)) {
692− for (var i = 0; i < unwrappedTargetValue.length; i++) {
693− setRules(unwrappedTargetValue[i], nonRules);
694− }
695− //otherwise, just apply to this property
696− } else {
697− setRules(unwrappedTargetValue, nonRules);
698− }
699− }
700− };
701− setRules(target, definition);
702− }
703− };
704−
705−}());
706−
707−// expose api publicly
708−extend(ko.validation, api);
709−;//Validation Rules:
710−// You can view and override messages or rules via:
711−// kv.rules[ruleName]
712−//
713−// To implement a custom Rule, simply use this template:
714−// kv.rules['<custom rule name>'] = {
715−// validator: function (val, param) {
716−// <custom logic>
717−// return <true or false>;
718−// },
719−// message: '<custom validation message>' //optionally you can also use a '{0}' to denote a placeholder that will be replaced with your 'param'
720−// };
721−//
722−// Example:
723−// kv.rules['mustEqual'] = {
724−// validator: function( val, mustEqualVal ){
725−// return val === mustEqualVal;
726−// },
727−// message: 'This field must equal {0}'
728−// };
729−//
730−kv.rules = {};
731−kv.rules['required'] = {
732− validator: function (val, required) {
733− var testVal;
734−
735− if (val === undefined || val === null) {
736− return !required;
737− }
738−
739− testVal = val;
740− if (typeof (val) === 'string') {
741− if (String.prototype.trim) {
742− testVal = val.trim();
743− }
744− else {
745− testVal = val.replace(/^\s+|\s+$/g, '');
746− }
747− }
748−
749− if (!required) {// if they passed: { required: false }, then don't require this
750− return true;
751− }
752−
753− return ((testVal + '').length > 0);
754− },
755− message: 'This field is required.'
756−};
757−
758−function minMaxValidatorFactory(validatorName) {
759− var isMaxValidation = validatorName === "max";
760−
761− return function (val, options) {
762− if (kv.utils.isEmptyVal(val)) {
763− return true;
764− }
765−
766− var comparisonValue, type;
767− if (options.typeAttr === undefined) {
768− // This validator is being called from javascript rather than
769− // being bound from markup
770− type = "text";
771− comparisonValue = options;
772− } else {
773− type = options.typeAttr;
774− comparisonValue = options.value;
775− }
776−
777− // From http://www.w3.org/TR/2012/WD-html5-20121025/common-input-element-attributes.html#attr-input-min,
778− // if the value is parseable to a number, then the minimum should be numeric
779− if (!isNaN(comparisonValue) && !(comparisonValue instanceof Date)) {
780− type = "number";
781− }
782−
783− var regex, valMatches, comparisonValueMatches;
784− switch (type.toLowerCase()) {
785− case "week":
786− regex = /^(\d{4})-W(\d{2})$/;
787− valMatches = val.match(regex);
788− if (valMatches === null) {
789− throw new Error("Invalid value for " + validatorName + " attribute for week input. Should look like " +
790− "'2000-W33' http://www.w3.org/TR/html-markup/input.week.html#input.week.attrs.min");
791− }
792− comparisonValueMatches = comparisonValue.match(regex);
793− // If no regex matches were found, validation fails
794− if (!comparisonValueMatches) {
795− return false;
796− }
797−
798− if (isMaxValidation) {
799− return (valMatches[1] < comparisonValueMatches[1]) || // older year
800− // same year, older week
801− ((valMatches[1] === comparisonValueMatches[1]) && (valMatches[2] <= comparisonValueMatches[2]));
802− } else {
803− return (valMatches[1] > comparisonValueMatches[1]) || // newer year
804− // same year, newer week
805− ((valMatches[1] === comparisonValueMatches[1]) && (valMatches[2] >= comparisonValueMatches[2]));
806− }
807− break;
808−
809− case "month":
810− regex = /^(\d{4})-(\d{2})$/;
811− valMatches = val.match(regex);
812− if (valMatches === null) {
813− throw new Error("Invalid value for " + validatorName + " attribute for month input. Should look like " +
814− "'2000-03' http://www.w3.org/TR/html-markup/input.month.html#input.month.attrs.min");
815− }
816− comparisonValueMatches = comparisonValue.match(regex);
817− // If no regex matches were found, validation fails
818− if (!comparisonValueMatches) {
819− return false;
820− }
821−
822− if (isMaxValidation) {
823− return ((valMatches[1] < comparisonValueMatches[1]) || // older year
824− // same year, older month
825− ((valMatches[1] === comparisonValueMatches[1]) && (valMatches[2] <= comparisonValueMatches[2])));
826− } else {
827− return (valMatches[1] > comparisonValueMatches[1]) || // newer year
828− // same year, newer month
829− ((valMatches[1] === comparisonValueMatches[1]) && (valMatches[2] >= comparisonValueMatches[2]));
830− }
831− break;
832−
833− case "number":
834− case "range":
835− if (isMaxValidation) {
836− return (!isNaN(val) && parseFloat(val) <= parseFloat(comparisonValue));
837− } else {
838− return (!isNaN(val) && parseFloat(val) >= parseFloat(comparisonValue));
839− }
840− break;
841−
842− default:
843− if (isMaxValidation) {
844− return val <= comparisonValue;
845− } else {
846− return val >= comparisonValue;
847− }
848− }
849− };
850−}
851−
852−kv.rules['min'] = {
853− validator: minMaxValidatorFactory("min"),
854− message: 'Please enter a value greater than or equal to {0}.'
855−};
856−
857−kv.rules['max'] = {
858− validator: minMaxValidatorFactory("max"),
859− message: 'Please enter a value less than or equal to {0}.'
860−};
861−
862−kv.rules['minLength'] = {
863− validator: function (val, minLength) {
864− if(kv.utils.isEmptyVal(val)) { return true; }
865− var normalizedVal = kv.utils.isNumber(val) ? ('' + val) : val;
866− return normalizedVal.length >= minLength;
867− },
868− message: 'Please enter at least {0} characters.'
869−};
870−
871−kv.rules['maxLength'] = {
872− validator: function (val, maxLength) {
873− if(kv.utils.isEmptyVal(val)) { return true; }
874− var normalizedVal = kv.utils.isNumber(val) ? ('' + val) : val;
875− return normalizedVal.length <= maxLength;
876− },
877− message: 'Please enter no more than {0} characters.'
878−};
879−
880−kv.rules['pattern'] = {
881− validator: function (val, regex) {
882− return kv.utils.isEmptyVal(val) || val.toString().match(regex) !== null;
883− },
884− message: 'Please check this value.'
885−};
886−
887−kv.rules['step'] = {
888− validator: function (val, step) {
889−
890− // in order to handle steps of .1 & .01 etc.. Modulus won't work
891− // if the value is a decimal, so we have to correct for that
892− if (kv.utils.isEmptyVal(val) || step === 'any') { return true; }
893− var dif = (val * 100) % (step * 100);
894− return Math.abs(dif) < 0.00001 || Math.abs(1 - dif) < 0.00001;
895− },
896− message: 'The value must increment by {0}.'
897−};
898−
899−kv.rules['email'] = {
900− validator: function (val, validate) {
901− if (!validate) { return true; }
902−
903− //I think an empty email address is also a valid entry
904− //if one want's to enforce entry it should be done with 'required: true'
905− return kv.utils.isEmptyVal(val) || (
906− // jquery validate regex - thanks Scott Gonzalez
907− validate && /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(val)
908− );
909− },
910− message: 'Please enter a proper email address.'
911−};
912−
913−kv.rules['date'] = {
914− validator: function (value, validate) {
915− if (!validate) { return true; }
916− return kv.utils.isEmptyVal(value) || (validate && !/Invalid|NaN/.test(new Date(value)));
917− },
918− message: 'Please enter a proper date.'
919−};
920−
921−kv.rules['dateISO'] = {
922− validator: function (value, validate) {
923− if (!validate) { return true; }
924− return kv.utils.isEmptyVal(value) || (validate && /^\d{4}[-/](?:0?[1-9]|1[012])[-/](?:0?[1-9]|[12][0-9]|3[01])$/.test(value));
925− },
926− message: 'Please enter a proper date.'
927−};
928−
929−kv.rules['number'] = {
930− validator: function (value, validate) {
931− if (!validate) { return true; }
932− return kv.utils.isEmptyVal(value) || (validate && /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value));
933− },
934− message: 'Please enter a number.'
935−};
936−
937−kv.rules['digit'] = {
938− validator: function (value, validate) {
939− if (!validate) { return true; }
940− return kv.utils.isEmptyVal(value) || (validate && /^\d+$/.test(value));
941− },
942− message: 'Please enter a digit.'
943−};
944−
945−kv.rules['phoneUS'] = {
946− validator: function (phoneNumber, validate) {
947− if (!validate) { return true; }
948− if (kv.utils.isEmptyVal(phoneNumber)) { return true; } // makes it optional, use 'required' rule if it should be required
949− if (typeof (phoneNumber) !== 'string') { return false; }
950− phoneNumber = phoneNumber.replace(/\s+/g, "");
951− return validate && phoneNumber.length > 9 && phoneNumber.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
952− },
953− message: 'Please specify a valid phone number.'
954−};
955−
956−kv.rules['equal'] = {
957− validator: function (val, params) {
958− var otherValue = params;
959− return val === kv.utils.getValue(otherValue);
960− },
961− message: 'Values must equal.'
962−};
963−
964−kv.rules['notEqual'] = {
965− validator: function (val, params) {
966− var otherValue = params;
967− return val !== kv.utils.getValue(otherValue);
968− },
969− message: 'Please choose another value.'
970−};
971−
972−//unique in collection
973−// options are:
974−// collection: array or function returning (observable) array
975−// in which the value has to be unique
976−// valueAccessor: function that returns value from an object stored in collection
977−// if it is null the value is compared directly
978−// external: set to true when object you are validating is automatically updating collection
979−kv.rules['unique'] = {
980− validator: function (val, options) {
981− var c = kv.utils.getValue(options.collection),
982− external = kv.utils.getValue(options.externalValue),
983− counter = 0;
984−
985− if (!val || !c) { return true; }
986−
987− koUtils.arrayFilter(c, function (item) {
988− if (val === (options.valueAccessor ? options.valueAccessor(item) : item)) { counter++; }
989− });
990− // if value is external even 1 same value in collection means the value is not unique
991− return counter < (!!external ? 1 : 2);
992− },
993− message: 'Please make sure the value is unique.'
994−};
995−
996−
997−//now register all of these!
998−(function () {
999− kv.registerExtenders();
1000−}());
1001−;// The core binding handler
1002−// this allows us to setup any value binding that internally always
1003−// performs the same functionality
1004−ko.bindingHandlers['validationCore'] = (function () {
1005−
1006− return {
1007− init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
1008− var config = kv.utils.getConfigOptions(element);
1009− var observable = valueAccessor();
1010−
1011− // parse html5 input validation attributes, optional feature
1012− if (config.parseInputAttributes) {
1013− kv.utils.async(function () { kv.parseInputValidationAttributes(element, valueAccessor); });
1014− }
1015−
1016− // if requested insert message element and apply bindings
1017− if (config.insertMessages && kv.utils.isValidatable(observable)) {
1018−
1019− // insert the <span></span>
1020− var validationMessageElement = kv.insertValidationMessage(element);
1021−
1022− // if we're told to use a template, make sure that gets rendered
1023− if (config.messageTemplate) {
1024− ko.renderTemplate(config.messageTemplate, { field: observable }, null, validationMessageElement, 'replaceNode');
1025− } else {
1026− ko.applyBindingsToNode(validationMessageElement, { validationMessage: observable });
1027− }
1028− }
1029−
1030− // write the html5 attributes if indicated by the config
1031− if (config.writeInputAttributes && kv.utils.isValidatable(observable)) {
1032−
1033− kv.writeInputValidationAttributes(element, valueAccessor);
1034− }
1035−
1036− // if requested, add binding to decorate element
1037− if (config.decorateInputElement && kv.utils.isValidatable(observable)) {
1038− ko.applyBindingsToNode(element, { validationElement: observable });
1039− }
1040− }
1041− };
1042−
1043−}());
1044−
1045−// override for KO's default 'value', 'checked', 'textInput' and selectedOptions bindings
1046−kv.makeBindingHandlerValidatable("value");
1047−kv.makeBindingHandlerValidatable("checked");
1048−if (ko.bindingHandlers.textInput) {
1049− kv.makeBindingHandlerValidatable("textInput");
1050−}
1051−kv.makeBindingHandlerValidatable("selectedOptions");
1052−
1053−
1054−ko.bindingHandlers['validationMessage'] = { // individual error message, if modified or post binding
1055− update: function (element, valueAccessor) {
1056− var obsv = valueAccessor(),
1057− config = kv.utils.getConfigOptions(element),
1058− val = unwrap(obsv),
1059− msg = null,
1060− isModified = false,
1061− isValid = false;
1062−
1063− if (obsv === null || typeof obsv === 'undefined') {
1064− throw new Error('Cannot bind validationMessage to undefined value. data-bind expression: ' +
1065− element.getAttribute('data-bind'));
1066− }
1067−
1068− isModified = obsv.isModified && obsv.isModified();
1069− isValid = obsv.isValid && obsv.isValid();
1070−
1071− var error = null;
1072− if (!config.messagesOnModified || isModified) {
1073− error = isValid ? null : obsv.error;
1074− }
1075−
1076− var isVisible = !config.messagesOnModified || isModified ? !isValid : false;
1077− var isCurrentlyVisible = element.style.display !== "none";
1078−
1079− if (config.allowHtmlMessages) {
1080− koUtils.setHtml(element, error);
1081− } else {
1082− ko.bindingHandlers.text.update(element, function () { return error; });
1083− }
1084−
1085− if (isCurrentlyVisible && !isVisible) {
1086− element.style.display = 'none';
1087− } else if (!isCurrentlyVisible && isVisible) {
1088− element.style.display = '';
1089− }
1090− }
1091−};
1092−
1093−ko.bindingHandlers['validationElement'] = {
1094− update: function (element, valueAccessor, allBindingsAccessor) {
1095− var obsv = valueAccessor(),
1096− config = kv.utils.getConfigOptions(element),
1097− val = unwrap(obsv),
1098− msg = null,
1099− isModified = false,
1100− isValid = false;
1101−
1102− if (obsv === null || typeof obsv === 'undefined') {
1103− throw new Error('Cannot bind validationElement to undefined value. data-bind expression: ' +
1104− element.getAttribute('data-bind'));
1105− }
1106−
1107− isModified = obsv.isModified && obsv.isModified();
1108− isValid = obsv.isValid && obsv.isValid();
1109−
1110− // create an evaluator function that will return something like:
1111− // css: { validationElement: true }
1112− var cssSettingsAccessor = function () {
1113− var css = {};
1114−
1115− var shouldShow = ((!config.decorateElementOnModified || isModified) ? !isValid : false);
1116−
1117− // css: { validationElement: false }
1118− css[config.errorElementClass] = shouldShow;
1119−
1120− return css;
1121− };
1122−
1123− //add or remove class on the element;
1124− ko.bindingHandlers.css.update(element, cssSettingsAccessor, allBindingsAccessor);
1125− if (!config.errorsAsTitle) { return; }
1126−
1127− ko.bindingHandlers.attr.update(element, function () {
1128− var
1129− hasModification = !config.errorsAsTitleOnModified || isModified,
1130− title = kv.utils.getOriginalElementTitle(element);
1131−
1132− if (hasModification && !isValid) {
1133− return { title: obsv.error, 'data-orig-title': title };
1134− } else if (!hasModification || isValid) {
1135− return { title: title, 'data-orig-title': null };
1136− }
1137− });
1138− }
1139−};
1140−
1141−// ValidationOptions:
1142−// This binding handler allows you to override the initial config by setting any of the options for a specific element or context of elements
1143−//
1144−// Example:
1145−// <div data-bind="validationOptions: { insertMessages: true, messageTemplate: 'customTemplate', errorMessageClass: 'mySpecialClass'}">
1146−// <input type="text" data-bind="value: someValue"/>
1147−// <input type="text" data-bind="value: someValue2"/>
1148−// </div>
1149−ko.bindingHandlers['validationOptions'] = (function () {
1150− return {
1151− init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
1152− var options = unwrap(valueAccessor());
1153− if (options) {
1154− var newConfig = extend({}, kv.configuration);
1155− extend(newConfig, options);
1156−
1157− //store the validation options on the node so we can retrieve it later
1158− kv.utils.setDomData(element, newConfig);
1159− }
1160− }
1161− };
1162−}());
1163−;// Validation Extender:
1164−// This is for creating custom validation logic on the fly
1165−// Example:
1166−// var test = ko.observable('something').extend{(
1167−// validation: {
1168−// validator: function(val, someOtherVal){
1169−// return true;
1170−// },
1171−// message: "Something must be really wrong!',
1172−// params: true
1173−// }
1174−// )};
1175−ko.extenders['validation'] = function (observable, rules) { // allow single rule or array
1176− forEach(kv.utils.isArray(rules) ? rules : [rules], function (rule) {
1177− // the 'rule' being passed in here has no name to identify a core Rule,
1178− // so we add it as an anonymous rule
1179− // If the developer is wanting to use a core Rule, but use a different message see the 'addExtender' logic for examples
1180− kv.addAnonymousRule(observable, rule);
1181− });
1182− return observable;
1183−};
1184−
1185−//This is the extender that makes a Knockout Observable also 'Validatable'
1186−//examples include:
1187−// 1. var test = ko.observable('something').extend({validatable: true});
1188−// this will ensure that the Observable object is setup properly to respond to rules
1189−//
1190−// 2. test.extend({validatable: false});
1191−// this will remove the validation properties from the Observable object should you need to do that.
1192−ko.extenders['validatable'] = function (observable, options) {
1193− if (!kv.utils.isObject(options)) {
1194− options = { enable: options };
1195− }
1196−
1197− if (!('enable' in options)) {
1198− options.enable = true;
1199− }
1200−
1201− if (options.enable && !kv.utils.isValidatable(observable)) {
1202− var config = kv.configuration.validate || {};
1203− var validationOptions = {
1204− throttleEvaluation : options.throttle || config.throttle
1205− };
1206−
1207− observable.error = ko.observable(null); // holds the error message, we only need one since we stop processing validators when one is invalid
1208−
1209− // observable.rules:
1210− // ObservableArray of Rule Contexts, where a Rule Context is simply the name of a rule and the params to supply to it
1211− //
1212− // Rule Context = { rule: '<rule name>', params: '<passed in params>', message: '<Override of default Message>' }
1213− observable.rules = ko.observableArray(); //holds the rule Contexts to use as part of validation
1214−
1215− //in case async validation is occurring
1216− observable.isValidating = ko.observable(false);
1217−
1218− //the true holder of whether the observable is valid or not
1219− observable.__valid__ = ko.observable(true);
1220−
1221− observable.isModified = ko.observable(false);
1222−
1223− // a semi-protected observable
1224− observable.isValid = ko.computed(observable.__valid__);
1225−
1226− //manually set error state
1227− observable.setError = function (error) {
1228− var previousError = observable.error.peek();
1229− var previousIsValid = observable.__valid__.peek();
1230−
1231− observable.error(error);
1232− observable.__valid__(false);
1233−
1234− if (previousError !== error && !previousIsValid) {
1235− // if the observable was not valid before then isValid will not mutate,
1236− // hence causing any grouping to not display the latest error.
1237− observable.isValid.notifySubscribers();
1238− }
1239− };
1240−
1241− //manually clear error state
1242− observable.clearError = function () {
1243− observable.error(null);
1244− observable.__valid__(true);
1245− return observable;
1246− };
1247−
1248− //subscribe to changes in the observable
1249− var h_change = observable.subscribe(function () {
1250− observable.isModified(true);
1251− });
1252−
1253− // we use a computed here to ensure that anytime a dependency changes, the
1254− // validation logic evaluates
1255− var h_obsValidationTrigger = ko.computed(extend({
1256− read: function () {
1257− var obs = observable(),
1258− ruleContexts = observable.rules();
1259−
1260− kv.validateObservable(observable);
1261−
1262− return true;
1263− }
1264− }, validationOptions));
1265−
1266− extend(h_obsValidationTrigger, validationOptions);
1267−
1268− observable._disposeValidation = function () {
1269− //first dispose of the subscriptions
1270− observable.isValid.dispose();
1271− observable.rules.removeAll();
1272− h_change.dispose();
1273− h_obsValidationTrigger.dispose();
1274−
1275− delete observable['rules'];
1276− delete observable['error'];
1277− delete observable['isValid'];
1278− delete observable['isValidating'];
1279− delete observable['__valid__'];
1280− delete observable['isModified'];
1281− delete observable['setError'];
1282− delete observable['clearError'];
1283− delete observable['_disposeValidation'];
1284− };
1285− } else if (options.enable === false && observable._disposeValidation) {
1286− observable._disposeValidation();
1287− }
1288− return observable;
1289−};
1290−
1291−function validateSync(observable, rule, ctx) {
1292− //Execute the validator and see if its valid
1293− if (!rule.validator(observable(), (ctx.params === undefined ? true : unwrap(ctx.params)))) { // default param is true, eg. required = true
1294−
1295− //not valid, so format the error message and stick it in the 'error' variable
1296− observable.setError(kv.formatMessage(
1297− ctx.message || rule.message,
1298− unwrap(ctx.params),
1299− observable));
1300− return false;
1301− } else {
1302− return true;
1303− }
1304−}
1305−
1306−function validateAsync(observable, rule, ctx) {
1307− observable.isValidating(true);
1308−
1309− var callBack = function (valObj) {
1310− var isValid = false,
1311− msg = '';
1312−
1313− if (!observable.__valid__()) {
1314−
1315− // since we're returning early, make sure we turn this off
1316− observable.isValidating(false);
1317−
1318− return; //if its already NOT valid, don't add to that
1319− }
1320−
1321− //we were handed back a complex object
1322− if (valObj['message']) {
1323− isValid = valObj.isValid;
1324− msg = valObj.message;
1325− } else {
1326− isValid = valObj;
1327− }
1328−
1329− if (!isValid) {
1330− //not valid, so format the error message and stick it in the 'error' variable
1331− observable.error(kv.formatMessage(
1332− msg || ctx.message || rule.message,
1333− unwrap(ctx.params),
1334− observable));
1335− observable.__valid__(isValid);
1336− }
1337−
1338− // tell it that we're done
1339− observable.isValidating(false);
1340− };
1341−
1342− kv.utils.async(function() {
1343− //fire the validator and hand it the callback
1344− rule.validator(observable(), ctx.params === undefined ? true : unwrap(ctx.params), callBack);
1345− });
1346−}
1347−
1348−kv.validateObservable = function (observable) {
1349− var i = 0,
1350− rule, // the rule validator to execute
1351− ctx, // the current Rule Context for the loop
1352− ruleContexts = observable.rules(), //cache for iterator
1353− len = ruleContexts.length; //cache for iterator
1354−
1355− for (; i < len; i++) {
1356−
1357− //get the Rule Context info to give to the core Rule
1358− ctx = ruleContexts[i];
1359−
1360− // checks an 'onlyIf' condition
1361− if (ctx.condition && !ctx.condition()) {
1362− continue;
1363− }
1364−
1365− //get the core Rule to use for validation
1366− rule = ctx.rule ? kv.rules[ctx.rule] : ctx;
1367−
1368− if (rule['async'] || ctx['async']) {
1369− //run async validation
1370− validateAsync(observable, rule, ctx);
1371−
1372− } else {
1373− //run normal sync validation
1374− if (!validateSync(observable, rule, ctx)) {
1375− return false; //break out of the loop
1376− }
1377− }
1378− }
1379− //finally if we got this far, make the observable valid again!
1380− observable.clearError();
1381− return true;
1382−};
1383−;
1384−var _locales = {};
1385−var _currentLocale;
1386−
1387−kv.defineLocale = function(name, values) {
1388− if (name && values) {
1389− _locales[name.toLowerCase()] = values;
1390− return values;
1391− }
1392− return null;
1393−};
1394−
1395−kv.locale = function(name) {
1396− if (name) {
1397− name = name.toLowerCase();
1398−
1399− if (_locales.hasOwnProperty(name)) {
1400− kv.localize(_locales[name]);
1401− _currentLocale = name;
1402− }
1403− else {
1404− throw new Error('Localization ' + name + ' has not been loaded.');
1405− }
1406− }
1407− return _currentLocale;
1408−};
1409−
1410−//quick function to override rule messages
1411−kv.localize = function (msgTranslations) {
1412− var rules = kv.rules;
1413−
1414− //loop the properties in the object and assign the msg to the rule
1415− for (var ruleName in msgTranslations) {
1416− if (rules.hasOwnProperty(ruleName)) {
1417− rules[ruleName].message = msgTranslations[ruleName];
1418− }
1419− }
1420−};
1421−
1422−// Populate default locale (this will make en-US.js somewhat redundant)
1423−(function() {
1424− var localeData = {};
1425− var rules = kv.rules;
1426−
1427− for (var ruleName in rules) {
1428− if (rules.hasOwnProperty(ruleName)) {
1429− localeData[ruleName] = rules[ruleName].message;
1430− }
1431− }
1432− kv.defineLocale('en-us', localeData);
1433−})();
1434−
1435−// No need to invoke locale because the messages are already defined along with the rules for en-US
1436−_currentLocale = 'en-us';
1437−;/**
1438− * Possible invocations:
1439− * applyBindingsWithValidation(viewModel)
1440− * applyBindingsWithValidation(viewModel, options)
1441− * applyBindingsWithValidation(viewModel, rootNode)
1442− * applyBindingsWithValidation(viewModel, rootNode, options)
1443− */
1444−ko.applyBindingsWithValidation = function (viewModel, rootNode, options) {
1445− var node = document.body,
1446− config;
1447−
1448− if (rootNode && rootNode.nodeType) {
1449− node = rootNode;
1450− config = options;
1451− }
1452− else {
1453− config = rootNode;
1454− }
1455−
1456− kv.init();
1457−
1458− if (config) {
1459− config = extend(extend({}, kv.configuration), config);
1460− kv.utils.setDomData(node, config);
1461− }
1462−
1463− ko.applyBindings(viewModel, node);
1464−};
1465−
1466−//override the original applyBindings so that we can ensure all new rules and what not are correctly registered
1467−var origApplyBindings = ko.applyBindings;
1468−ko.applyBindings = function (viewModel, rootNode) {
1469−
1470− kv.init();
1471−
1472− origApplyBindings(viewModel, rootNode);
1473−};
1474−
1475−ko.validatedObservable = function (initialValue, options) {
1476− if (!options && !kv.utils.isObject(initialValue)) {
1477− return ko.observable(initialValue).extend({ validatable: true });
1478− }
1479−
1480− var obsv = ko.observable(initialValue);
1481− obsv.errors = kv.group(kv.utils.isObject(initialValue) ? initialValue : {}, options);
1482− obsv.isValid = ko.observable(obsv.errors().length === 0);
1483−
1484− if (ko.isObservable(obsv.errors)) {
1485− obsv.errors.subscribe(function(errors) {
1486− obsv.isValid(errors.length === 0);
1487− });
1488− }
1489− else {
1490− ko.computed(obsv.errors).subscribe(function (errors) {
1491− obsv.isValid(errors.length === 0);
1492− });
1493− }
1494−
1495− obsv.subscribe(function(newValue) {
1496− if (!kv.utils.isObject(newValue)) {
1497− /*
1498− * The validation group works on objects.
1499− * Since the new value is a primitive (scalar, null or undefined) we need
1500− * to create an empty object to pass along.
1501− */
1502− newValue = {};
1503− }
1504− // Force the group to refresh
1505− obsv.errors._updateState(newValue);
1506− obsv.isValid(obsv.errors().length === 0);
1507− });
1508−
1509− return obsv;
1510−};
1511−;}));
Source/Libraries/GSF.Web/GSF.Web.csproj+28−0
@@ -261,8 +261,33 @@ · 260 unmodified lines
261261 <None Include="GSF.Web.nuspec" />
262262 <None Include="packages.config" />
263263 <None Include="PostBuildSetup.bat" />
264+ <EmbeddedResource Include="Shared\Content\Fonts\fontawesome-webfont.eot" />
265+ <EmbeddedResource Include="Shared\Content\Fonts\fontawesome-webfont.ttf" />
266+ <EmbeddedResource Include="Shared\Content\Fonts\fontawesome-webfont.woff" />
267+ <EmbeddedResource Include="Shared\Content\Fonts\fontawesome-webfont.woff2" />
268+ <EmbeddedResource Include="Shared\Content\Fonts\FontAwesome.otf" />
264269 </ItemGroup>
265270 <ItemGroup>
271+ <EmbeddedResource Include="Shared\Content\Images\loading.gif" />
272+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_222222_256x240.png" />
273+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_2e83ff_256x240.png" />
274+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_333333_256x240.png" />
275+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_454545_256x240.png" />
276+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_888888_256x240.png" />
277+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_cd0a0a_256x240.png" />
278+ <EmbeddedResource Include="Shared\Content\Images\ui-icons_ffffff_256x240.png" />
279+ <EmbeddedResource Include="Shared\Content\Fonts\fontawesome-webfont.svg" />
280+ <EmbeddedResource Include="Shared\Scripts\jquery-ui.js" />
281+ <EmbeddedResource Include="Shared\Scripts\primeui.js" />
282+ <EmbeddedResource Include="Shared\Content\font-awesome.css" />
283+ <EmbeddedResource Include="Shared\Content\jquery-ui.css" />
284+ <EmbeddedResource Include="Shared\Content\primeui-theme.css" />
285+ <EmbeddedResource Include="Shared\Content\primeui.css" />
286+ <EmbeddedResource Include="Shared\Content\Images\loadingbar.gif" />
287+ <EmbeddedResource Include="Shared\Content\Images\password-meter.png" />
288+ <EmbeddedResource Include="Shared\Content\Images\rating.png" />
289+ <Content Include="Shared\Content\Readme.txt" />
290+ <Content Include="Shared\Scripts\angular.js" />
266291 <EmbeddedResource Include="Shared\Scripts\knockout.mapping.js" />
267292 <EmbeddedResource Include="Shared\Scripts\gsf.web.client.js" />
268293 <EmbeddedResource Include="Shared\Scripts\gsf.web.knockout.js" />
@@ -318,6 +343,9 @@ · 49 unmodified lines
318343 <EmbeddedResource Include="Shared\Images\StatusLights\Small\magentalight.png" />
319344 <EmbeddedResource Include="Shared\Images\StatusLights\Small\redlight.png" />
320345 <EmbeddedResource Include="Shared\Images\StatusLights\Small\yellowlight.png" />
346+ <EmbeddedResource Include="Model\Scripts\bootstrap-datepicker.js" />
347+ <EmbeddedResource Include="Model\Scripts\bootstrap-toolkit.js" />
348+ <Content Include="Model\Scripts\ObsoleteFiles.txt" />
321349 <Content Include="Shared\Readme.txt" />
322350 <EmbeddedResource Include="Shared\Scripts\bootstrap.js" />
323351 <EmbeddedResource Include="Shared\Scripts\jquery.js" />
Source/Libraries/GSF.Web/Model/Scripts/ObsoleteFiles.txt+10−0
@@ -0,0 +1,10 @@
1+!WARNING: The location for the following resources have been moved!
2+ New resource path is "/@GSF/Web/Shared/Scripts/", please update scripts to use these new locations:
3+
4+ /@GSF/Web/Model/Scripts/angular1.5.8.js => /@GSF/Web/Shared/Scripts/angular.js
5+ /@GSF/Web/Model/Scripts/gsf.web.client.js => /@GSF/Web/Shared/Scripts/gsf.web.client.js
6+ /@GSF/Web/Model/Scripts/gsf.web.knockout.js => /@GSF/Web/Shared/Scripts/gsf.web.knockout.js
7+ /@GSF/Web/Model/Scripts/gsf.web.primeui.js => /@GSF/Web/Shared/Scripts/gsf.web.primeui.js
8+ /@GSF/Web/Model/Scripts/js.cookie.js => /@GSF/Web/Shared/Scripts/js.cookie.js
9+ /@GSF/Web/Model/Scripts/ko.reactor.js => /@GSF/Web/Shared/Scripts/knockout.reactor.js
10+/@GSF/Web/Model/Scripts/ko.observableDictionary.js => /@GSF/Web/Shared/Scripts/knockout.obeservableDictionary.js
Source/Libraries/GSF.Web/Model/Scripts/bootstrap-datepicker.js+1918−0
@@ -0,0 +1,1918 @@
1+/*!
2+ * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker)
3+ *
4+ * Copyright 2012 Stefan Petre
5+ * Improvements by Andrew Rowls
6+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
7+ */(function(factory){
8+ if (typeof define === "function" && define.amd) {
9+ define(["jquery"], factory);
10+ } else if (typeof exports === 'object') {
11+ factory(require('jquery'));
12+ } else {
13+ factory(jQuery);
14+ }
15+}(function($, undefined){
16+
17+ function UTCDate(){
18+ return new Date(Date.UTC.apply(Date, arguments));
19+ }
20+ function UTCToday(){
21+ var today = new Date();
22+ return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
23+ }
24+ function isUTCEquals(date1, date2) {
25+ return (
26+ date1.getUTCFullYear() === date2.getUTCFullYear() &&
27+ date1.getUTCMonth() === date2.getUTCMonth() &&
28+ date1.getUTCDate() === date2.getUTCDate()
29+ );
30+ }
31+ function alias(method){
32+ return function(){
33+ return this[method].apply(this, arguments);
34+ };
35+ }
36+ function isValidDate(d) {
37+ return d && !isNaN(d.getTime());
38+ }
39+
40+ var DateArray = (function(){
41+ var extras = {
42+ get: function(i){
43+ return this.slice(i)[0];
44+ },
45+ contains: function(d){
46+ // Array.indexOf is not cross-browser;
47+ // $.inArray doesn't work with Dates
48+ var val = d && d.valueOf();
49+ for (var i=0, l=this.length; i < l; i++)
50+ if (this[i].valueOf() === val)
51+ return i;
52+ return -1;
53+ },
54+ remove: function(i){
55+ this.splice(i,1);
56+ },
57+ replace: function(new_array){
58+ if (!new_array)
59+ return;
60+ if (!$.isArray(new_array))
61+ new_array = [new_array];
62+ this.clear();
63+ this.push.apply(this, new_array);
64+ },
65+ clear: function(){
66+ this.length = 0;
67+ },
68+ copy: function(){
69+ var a = new DateArray();
70+ a.replace(this);
71+ return a;
72+ }
73+ };
74+
75+ return function(){
76+ var a = [];
77+ a.push.apply(a, arguments);
78+ $.extend(a, extras);
79+ return a;
80+ };
81+ })();
82+
83+
84+ // Picker object
85+
86+ var Datepicker = function(element, options){
87+ $(element).data('datepicker', this);
88+ this._process_options(options);
89+
90+ this.dates = new DateArray();
91+ this.viewDate = this.o.defaultViewDate;
92+ this.focusDate = null;
93+
94+ this.element = $(element);
95+ this.isInline = false;
96+ this.isInput = this.element.is('input');
97+ this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .btn') : false;
98+ this.hasInput = this.component && this.element.find('input').length;
99+ if (this.component && this.component.length === 0)
100+ this.component = false;
101+
102+ this.picker = $(DPGlobal.template);
103+ this._buildEvents();
104+ this._attachEvents();
105+
106+ if (this.isInline){
107+ this.picker.addClass('datepicker-inline').appendTo(this.element);
108+ }
109+ else {
110+ this.picker.addClass('datepicker-dropdown dropdown-menu');
111+ }
112+
113+ if (this.o.rtl){
114+ this.picker.addClass('datepicker-rtl');
115+ }
116+
117+ this.viewMode = this.o.startView;
118+
119+ if (this.o.calendarWeeks)
120+ this.picker.find('thead .datepicker-title, tfoot .today, tfoot .clear')
121+ .attr('colspan', function(i, val){
122+ return parseInt(val) + 1;
123+ });
124+
125+ this._allow_update = false;
126+
127+ this.setStartDate(this._o.startDate);
128+ this.setEndDate(this._o.endDate);
129+ this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled);
130+ this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted);
131+ this.setDatesDisabled(this.o.datesDisabled);
132+
133+ this.fillDow();
134+ this.fillMonths();
135+
136+ this._allow_update = true;
137+
138+ this.update();
139+ this.showMode();
140+
141+ if (this.isInline){
142+ this.show();
143+ }
144+ };
145+
146+ Datepicker.prototype = {
147+ constructor: Datepicker,
148+
149+ _process_options: function(opts){
150+ // Store raw options for reference
151+ this._o = $.extend({}, this._o, opts);
152+ // Processed options
153+ var o = this.o = $.extend({}, this._o);
154+
155+ // Check if "de-DE" style date is available, if not language should
156+ // fallback to 2 letter code eg "de"
157+ var lang = o.language;
158+ if (!dates[lang]){
159+ lang = lang.split('-')[0];
160+ if (!dates[lang])
161+ lang = defaults.language;
162+ }
163+ o.language = lang;
164+
165+ switch (o.startView){
166+ case 2:
167+ case 'decade':
168+ o.startView = 2;
169+ break;
170+ case 1:
171+ case 'year':
172+ o.startView = 1;
173+ break;
174+ default:
175+ o.startView = 0;
176+ }
177+
178+ switch (o.minViewMode){
179+ case 1:
180+ case 'months':
181+ o.minViewMode = 1;
182+ break;
183+ case 2:
184+ case 'years':
185+ o.minViewMode = 2;
186+ break;
187+ default:
188+ o.minViewMode = 0;
189+ }
190+
191+ switch (o.maxViewMode) {
192+ case 0:
193+ case 'days':
194+ o.maxViewMode = 0;
195+ break;
196+ case 1:
197+ case 'months':
198+ o.maxViewMode = 1;
199+ break;
200+ default:
201+ o.maxViewMode = 2;
202+ }
203+
204+ o.startView = Math.min(o.startView, o.maxViewMode);
205+ o.startView = Math.max(o.startView, o.minViewMode);
206+
207+ // true, false, or Number > 0
208+ if (o.multidate !== true){
209+ o.multidate = Number(o.multidate) || false;
210+ if (o.multidate !== false)
211+ o.multidate = Math.max(0, o.multidate);
212+ }
213+ o.multidateSeparator = String(o.multidateSeparator);
214+
215+ o.weekStart %= 7;
216+ o.weekEnd = (o.weekStart + 6) % 7;
217+
218+ var format = DPGlobal.parseFormat(o.format);
219+ if (o.startDate !== -Infinity){
220+ if (!!o.startDate){
221+ if (o.startDate instanceof Date)
222+ o.startDate = this._local_to_utc(this._zero_time(o.startDate));
223+ else
224+ o.startDate = DPGlobal.parseDate(o.startDate, format, o.language);
225+ }
226+ else {
227+ o.startDate = -Infinity;
228+ }
229+ }
230+ if (o.endDate !== Infinity){
231+ if (!!o.endDate){
232+ if (o.endDate instanceof Date)
233+ o.endDate = this._local_to_utc(this._zero_time(o.endDate));
234+ else
235+ o.endDate = DPGlobal.parseDate(o.endDate, format, o.language);
236+ }
237+ else {
238+ o.endDate = Infinity;
239+ }
240+ }
241+
242+ o.daysOfWeekDisabled = o.daysOfWeekDisabled||[];
243+ if (!$.isArray(o.daysOfWeekDisabled))
244+ o.daysOfWeekDisabled = o.daysOfWeekDisabled.split(/[,\s]*/);
245+ o.daysOfWeekDisabled = $.map(o.daysOfWeekDisabled, function(d){
246+ return parseInt(d, 10);
247+ });
248+
249+ o.daysOfWeekHighlighted = o.daysOfWeekHighlighted||[];
250+ if (!$.isArray(o.daysOfWeekHighlighted))
251+ o.daysOfWeekHighlighted = o.daysOfWeekHighlighted.split(/[,\s]*/);
252+ o.daysOfWeekHighlighted = $.map(o.daysOfWeekHighlighted, function(d){
253+ return parseInt(d, 10);
254+ });
255+
256+ o.datesDisabled = o.datesDisabled||[];
257+ if (!$.isArray(o.datesDisabled)) {
258+ var datesDisabled = [];
259+ datesDisabled.push(DPGlobal.parseDate(o.datesDisabled, format, o.language));
260+ o.datesDisabled = datesDisabled;
261+ }
262+ o.datesDisabled = $.map(o.datesDisabled,function(d){
263+ return DPGlobal.parseDate(d, format, o.language);
264+ });
265+
266+ var plc = String(o.orientation).toLowerCase().split(/\s+/g),
267+ _plc = o.orientation.toLowerCase();
268+ plc = $.grep(plc, function(word){
269+ return /^auto|left|right|top|bottom$/.test(word);
270+ });
271+ o.orientation = {x: 'auto', y: 'auto'};
272+ if (!_plc || _plc === 'auto')
273+ ; // no action
274+ else if (plc.length === 1){
275+ switch (plc[0]){
276+ case 'top':
277+ case 'bottom':
278+ o.orientation.y = plc[0];
279+ break;
280+ case 'left':
281+ case 'right':
282+ o.orientation.x = plc[0];
283+ break;
284+ }
285+ }
286+ else {
287+ _plc = $.grep(plc, function(word){
288+ return /^left|right$/.test(word);
289+ });
290+ o.orientation.x = _plc[0] || 'auto';
291+
292+ _plc = $.grep(plc, function(word){
293+ return /^top|bottom$/.test(word);
294+ });
295+ o.orientation.y = _plc[0] || 'auto';
296+ }
297+ if (o.defaultViewDate) {
298+ var year = o.defaultViewDate.year || new Date().getFullYear();
299+ var month = o.defaultViewDate.month || 0;
300+ var day = o.defaultViewDate.day || 1;
301+ o.defaultViewDate = UTCDate(year, month, day);
302+ } else {
303+ o.defaultViewDate = UTCToday();
304+ }
305+ },
306+ _events: [],
307+ _secondaryEvents: [],
308+ _applyEvents: function(evs){
309+ for (var i=0, el, ch, ev; i < evs.length; i++){
310+ el = evs[i][0];
311+ if (evs[i].length === 2){
312+ ch = undefined;
313+ ev = evs[i][1];
314+ }
315+ else if (evs[i].length === 3){
316+ ch = evs[i][1];
317+ ev = evs[i][2];
318+ }
319+ el.on(ev, ch);
320+ }
321+ },
322+ _unapplyEvents: function(evs){
323+ for (var i=0, el, ev, ch; i < evs.length; i++){
324+ el = evs[i][0];
325+ if (evs[i].length === 2){
326+ ch = undefined;
327+ ev = evs[i][1];
328+ }
329+ else if (evs[i].length === 3){
330+ ch = evs[i][1];
331+ ev = evs[i][2];
332+ }
333+ el.off(ev, ch);
334+ }
335+ },
336+ _buildEvents: function(){
337+ var events = {
338+ keyup: $.proxy(function(e){
339+ if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
340+ this.update();
341+ }, this),
342+ keydown: $.proxy(this.keydown, this),
343+ paste: $.proxy(this.paste, this)
344+ };
345+
346+ if (this.o.showOnFocus === true) {
347+ events.focus = $.proxy(this.show, this);
348+ }
349+
350+ if (this.isInput) { // single input
351+ this._events = [
352+ [this.element, events]
353+ ];
354+ }
355+ else if (this.component && this.hasInput) { // component: input + button
356+ this._events = [
357+ // For components that are not readonly, allow keyboard nav
358+ [this.element.find('input'), events],
359+ [this.component, {
360+ click: $.proxy(this.show, this)
361+ }]
362+ ];
363+ }
364+ else if (this.element.is('div')){ // inline datepicker
365+ this.isInline = true;
366+ }
367+ else {
368+ this._events = [
369+ [this.element, {
370+ click: $.proxy(this.show, this)
371+ }]
372+ ];
373+ }
374+ this._events.push(
375+ // Component: listen for blur on element descendants
376+ [this.element, '*', {
377+ blur: $.proxy(function(e){
378+ this._focused_from = e.target;
379+ }, this)
380+ }],
381+ // Input: listen for blur on element
382+ [this.element, {
383+ blur: $.proxy(function(e){
384+ this._focused_from = e.target;
385+ }, this)
386+ }]
387+ );
388+
389+ if (this.o.immediateUpdates) {
390+ // Trigger input updates immediately on changed year/month
391+ this._events.push([this.element, {
392+ 'changeYear changeMonth': $.proxy(function(e){
393+ this.update(e.date);
394+ }, this)
395+ }]);
396+ }
397+
398+ this._secondaryEvents = [
399+ [this.picker, {
400+ click: $.proxy(this.click, this)
401+ }],
402+ [$(window), {
403+ resize: $.proxy(this.place, this)
404+ }],
405+ [$(document), {
406+ mousedown: $.proxy(function(e){
407+ // Clicked outside the datepicker, hide it
408+ if (!(
409+ this.element.is(e.target) ||
410+ this.element.find(e.target).length ||
411+ this.picker.is(e.target) ||
412+ this.picker.find(e.target).length ||
413+ this.picker.hasClass('datepicker-inline')
414+ )){
415+ this.hide();
416+ }
417+ }, this)
418+ }]
419+ ];
420+ },
421+ _attachEvents: function(){
422+ this._detachEvents();
423+ this._applyEvents(this._events);
424+ },
425+ _detachEvents: function(){
426+ this._unapplyEvents(this._events);
427+ },
428+ _attachSecondaryEvents: function(){
429+ this._detachSecondaryEvents();
430+ this._applyEvents(this._secondaryEvents);
431+ },
432+ _detachSecondaryEvents: function(){
433+ this._unapplyEvents(this._secondaryEvents);
434+ },
435+ _trigger: function(event, altdate){
436+ var date = altdate || this.dates.get(-1),
437+ local_date = this._utc_to_local(date);
438+
439+ this.element.trigger({
440+ type: event,
441+ date: local_date,
442+ dates: $.map(this.dates, this._utc_to_local),
443+ format: $.proxy(function(ix, format){
444+ if (arguments.length === 0){
445+ ix = this.dates.length - 1;
446+ format = this.o.format;
447+ }
448+ else if (typeof ix === 'string'){
449+ format = ix;
450+ ix = this.dates.length - 1;
451+ }
452+ format = format || this.o.format;
453+ var date = this.dates.get(ix);
454+ return DPGlobal.formatDate(date, format, this.o.language);
455+ }, this)
456+ });
457+ },
458+
459+ show: function(){
460+ var element = this.component ? this.element.find('input') : this.element;
461+ if (element.attr('readonly') && this.o.enableOnReadonly === false)
462+ return;
463+ if (!this.isInline)
464+ this.picker.appendTo(this.o.container);
465+ this.place();
466+ this.picker.show();
467+ this._attachSecondaryEvents();
468+ this._trigger('show');
469+ if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
470+ $(this.element).blur();
471+ }
472+ return this;
473+ },
474+
475+ hide: function(){
476+ if (this.isInline)
477+ return this;
478+ if (!this.picker.is(':visible'))
479+ return this;
480+ this.focusDate = null;
481+ this.picker.hide().detach();
482+ this._detachSecondaryEvents();
483+ this.viewMode = this.o.startView;
484+ this.showMode();
485+
486+ if (
487+ this.o.forceParse &&
488+ (
489+ this.isInput && this.element.val() ||
490+ this.hasInput && this.element.find('input').val()
491+ )
492+ )
493+ this.setValue();
494+ this._trigger('hide');
495+ return this;
496+ },
497+
498+ remove: function(){
499+ this.hide();
500+ this._detachEvents();
501+ this._detachSecondaryEvents();
502+ this.picker.remove();
503+ delete this.element.data().datepicker;
504+ if (!this.isInput){
505+ delete this.element.data().date;
506+ }
507+ return this;
508+ },
509+
510+ paste: function(evt){
511+ var dateString;
512+ if (evt.originalEvent.clipboardData && evt.originalEvent.clipboardData.types
513+ && $.inArray('text/plain', evt.originalEvent.clipboardData.types) !== -1) {
514+ dateString = evt.originalEvent.clipboardData.getData('text/plain');
515+ }
516+ else if (window.clipboardData) {
517+ dateString = window.clipboardData.getData('Text');
518+ }
519+ else {
520+ return;
521+ }
522+ this.setDate(dateString);
523+ this.update();
524+ evt.preventDefault();
525+ },
526+
527+ _utc_to_local: function(utc){
528+ return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000));
529+ },
530+ _local_to_utc: function(local){
531+ return local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));
532+ },
533+ _zero_time: function(local){
534+ return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
535+ },
536+ _zero_utc_time: function(utc){
537+ return utc && new Date(Date.UTC(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()));
538+ },
539+
540+ getDates: function(){
541+ return $.map(this.dates, this._utc_to_local);
542+ },
543+
544+ getUTCDates: function(){
545+ return $.map(this.dates, function(d){
546+ return new Date(d);
547+ });
548+ },
549+
550+ getDate: function(){
551+ return this._utc_to_local(this.getUTCDate());
552+ },
553+
554+ getUTCDate: function(){
555+ var selected_date = this.dates.get(-1);
556+ if (typeof selected_date !== 'undefined') {
557+ return new Date(selected_date);
558+ } else {
559+ return null;
560+ }
561+ },
562+
563+ clearDates: function(){
564+ var element;
565+ if (this.isInput) {
566+ element = this.element;
567+ } else if (this.component) {
568+ element = this.element.find('input');
569+ }
570+
571+ if (element) {
572+ element.val('');
573+ }
574+
575+ this.update();
576+ this._trigger('changeDate');
577+
578+ if (this.o.autoclose) {
579+ this.hide();
580+ }
581+ },
582+ setDates: function(){
583+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
584+ this.update.apply(this, args);
585+ this._trigger('changeDate');
586+ this.setValue();
587+ return this;
588+ },
589+
590+ setUTCDates: function(){
591+ var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
592+ this.update.apply(this, $.map(args, this._utc_to_local));
593+ this._trigger('changeDate');
594+ this.setValue();
595+ return this;
596+ },
597+
598+ setDate: alias('setDates'),
599+ setUTCDate: alias('setUTCDates'),
600+
601+ setValue: function(){
602+ var formatted = this.getFormattedDate();
603+ if (!this.isInput){
604+ if (this.component){
605+ this.element.find('input').val(formatted);
606+ }
607+ }
608+ else {
609+ this.element.val(formatted);
610+ }
611+ return this;
612+ },
613+
614+ getFormattedDate: function(format){
615+ if (format === undefined)
616+ format = this.o.format;
617+
618+ var lang = this.o.language;
619+ return $.map(this.dates, function(d){
620+ return DPGlobal.formatDate(d, format, lang);
621+ }).join(this.o.multidateSeparator);
622+ },
623+
624+ setStartDate: function(startDate){
625+ this._process_options({startDate: startDate});
626+ this.update();
627+ this.updateNavArrows();
628+ return this;
629+ },
630+
631+ setEndDate: function(endDate){
632+ this._process_options({endDate: endDate});
633+ this.update();
634+ this.updateNavArrows();
635+ return this;
636+ },
637+
638+ setDaysOfWeekDisabled: function(daysOfWeekDisabled){
639+ this._process_options({daysOfWeekDisabled: daysOfWeekDisabled});
640+ this.update();
641+ this.updateNavArrows();
642+ return this;
643+ },
644+
645+ setDaysOfWeekHighlighted: function(daysOfWeekHighlighted){
646+ this._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});
647+ this.update();
648+ return this;
649+ },
650+
651+ setDatesDisabled: function(datesDisabled){
652+ this._process_options({datesDisabled: datesDisabled});
653+ this.update();
654+ this.updateNavArrows();
655+ },
656+
657+ place: function(){
658+ if (this.isInline)
659+ return this;
660+ var calendarWidth = this.picker.outerWidth(),
661+ calendarHeight = this.picker.outerHeight(),
662+ visualPadding = 10,
663+ container = $(this.o.container),
664+ windowWidth = container.width(),
665+ scrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),
666+ appendOffset = container.offset();
667+
668+ var parentsZindex = [];
669+ this.element.parents().each(function(){
670+ var itemZIndex = $(this).css('z-index');
671+ if (itemZIndex !== 'auto' && itemZIndex !== 0) parentsZindex.push(parseInt(itemZIndex));
672+ });
673+ var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;
674+ var offset = this.component ? this.component.parent().offset() : this.element.offset();
675+ var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
676+ var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
677+ var left = offset.left - appendOffset.left,
678+ top = offset.top - appendOffset.top;
679+
680+ if (this.o.container !== 'body') {
681+ top += scrollTop;
682+ }
683+
684+ this.picker.removeClass(
685+ 'datepicker-orient-top datepicker-orient-bottom '+
686+ 'datepicker-orient-right datepicker-orient-left'
687+ );
688+
689+ if (this.o.orientation.x !== 'auto'){
690+ this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
691+ if (this.o.orientation.x === 'right')
692+ left -= calendarWidth - width;
693+ }
694+ // auto x orientation is best-placement: if it crosses a window
695+ // edge, fudge it sideways
696+ else {
697+ if (offset.left < 0) {
698+ // component is outside the window on the left side. Move it into visible range
699+ this.picker.addClass('datepicker-orient-left');
700+ left -= offset.left - visualPadding;
701+ } else if (left + calendarWidth > windowWidth) {
702+ // the calendar passes the widow right edge. Align it to component right side
703+ this.picker.addClass('datepicker-orient-right');
704+ left += width - calendarWidth;
705+ } else {
706+ // Default to left
707+ this.picker.addClass('datepicker-orient-left');
708+ }
709+ }
710+
711+ // auto y orientation is best-situation: top or bottom, no fudging,
712+ // decision based on which shows more of the calendar
713+ var yorient = this.o.orientation.y,
714+ top_overflow;
715+ if (yorient === 'auto'){
716+ top_overflow = -scrollTop + top - calendarHeight;
717+ yorient = top_overflow < 0 ? 'bottom' : 'top';
718+ }
719+
720+ this.picker.addClass('datepicker-orient-' + yorient);
721+ if (yorient === 'top')
722+ top -= calendarHeight + parseInt(this.picker.css('padding-top'));
723+ else
724+ top += height;
725+
726+ if (this.o.rtl) {
727+ var right = windowWidth - (left + width);
728+ this.picker.css({
729+ top: top,
730+ right: right,
731+ zIndex: zIndex
732+ });
733+ } else {
734+ this.picker.css({
735+ top: top,
736+ left: left,
737+ zIndex: zIndex
738+ });
739+ }
740+ return this;
741+ },
742+
743+ _allow_update: true,
744+ update: function(){
745+ if (!this._allow_update)
746+ return this;
747+
748+ var oldDates = this.dates.copy(),
749+ dates = [],
750+ fromArgs = false;
751+ if (arguments.length){
752+ $.each(arguments, $.proxy(function(i, date){
753+ if (date instanceof Date)
754+ date = this._local_to_utc(date);
755+ dates.push(date);
756+ }, this));
757+ fromArgs = true;
758+ }
759+ else {
760+ dates = this.isInput
761+ ? this.element.val()
762+ : this.element.data('date') || this.element.find('input').val();
763+ if (dates && this.o.multidate)
764+ dates = dates.split(this.o.multidateSeparator);
765+ else
766+ dates = [dates];
767+ delete this.element.data().date;
768+ }
769+
770+ dates = $.map(dates, $.proxy(function(date){
771+ return DPGlobal.parseDate(date, this.o.format, this.o.language);
772+ }, this));
773+ dates = $.grep(dates, $.proxy(function(date){
774+ return (
775+ !this.dateWithinRange(date) ||
776+ !date
777+ );
778+ }, this), true);
779+ this.dates.replace(dates);
780+
781+ if (this.dates.length)
782+ this.viewDate = new Date(this.dates.get(-1));
783+ else if (this.viewDate < this.o.startDate)
784+ this.viewDate = new Date(this.o.startDate);
785+ else if (this.viewDate > this.o.endDate)
786+ this.viewDate = new Date(this.o.endDate);
787+ else
788+ this.viewDate = this.o.defaultViewDate;
789+
790+ if (fromArgs){
791+ // setting date by clicking
792+ this.setValue();
793+ }
794+ else if (dates.length){
795+ // setting date by typing
796+ if (String(oldDates) !== String(this.dates))
797+ this._trigger('changeDate');
798+ }
799+ if (!this.dates.length && oldDates.length)
800+ this._trigger('clearDate');
801+
802+ this.fill();
803+ this.element.change();
804+ return this;
805+ },
806+
807+ fillDow: function(){
808+ var dowCnt = this.o.weekStart,
809+ html = '<tr>';
810+ if (this.o.calendarWeeks){
811+ this.picker.find('.datepicker-days .datepicker-switch')
812+ .attr('colspan', function(i, val){
813+ return parseInt(val) + 1;
814+ });
815+ html += '<th class="cw">&#160;</th>';
816+ }
817+ while (dowCnt < this.o.weekStart + 7){
818+ html += '<th class="dow">'+dates[this.o.language].daysMin[(dowCnt++)%7]+'</th>';
819+ }
820+ html += '</tr>';
821+ this.picker.find('.datepicker-days thead').append(html);
822+ },
823+
824+ fillMonths: function(){
825+ var html = '',
826+ i = 0;
827+ while (i < 12){
828+ html += '<span class="month">'+dates[this.o.language].monthsShort[i++]+'</span>';
829+ }
830+ this.picker.find('.datepicker-months td').html(html);
831+ },
832+
833+ setRange: function(range){
834+ if (!range || !range.length)
835+ delete this.range;
836+ else
837+ this.range = $.map(range, function(d){
838+ return d.valueOf();
839+ });
840+ this.fill();
841+ },
842+
843+ getClassNames: function(date){
844+ var cls = [],
845+ year = this.viewDate.getUTCFullYear(),
846+ month = this.viewDate.getUTCMonth(),
847+ today = new Date();
848+ if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){
849+ cls.push('old');
850+ }
851+ else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){
852+ cls.push('new');
853+ }
854+ if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
855+ cls.push('focused');
856+ // Compare internal UTC date with local today, not UTC today
857+ if (this.o.todayHighlight &&
858+ date.getUTCFullYear() === today.getFullYear() &&
859+ date.getUTCMonth() === today.getMonth() &&
860+ date.getUTCDate() === today.getDate()){
861+ cls.push('today');
862+ }
863+ if (this.dates.contains(date) !== -1)
864+ cls.push('active');
865+ if (!this.dateWithinRange(date) || this.dateIsDisabled(date)){
866+ cls.push('disabled');
867+ }
868+ if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){
869+ cls.push('highlighted');
870+ }
871+
872+ if (this.range){
873+ if (date > this.range[0] && date < this.range[this.range.length-1]){
874+ cls.push('range');
875+ }
876+ if ($.inArray(date.valueOf(), this.range) !== -1){
877+ cls.push('selected');
878+ }
879+ if (date.valueOf() === this.range[0]){
880+ cls.push('range-start');
881+ }
882+ if (date.valueOf() === this.range[this.range.length-1]){
883+ cls.push('range-end');
884+ }
885+ }
886+ return cls;
887+ },
888+
889+ fill: function(){
890+ var d = new Date(this.viewDate),
891+ year = d.getUTCFullYear(),
892+ month = d.getUTCMonth(),
893+ startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
894+ startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
895+ endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
896+ endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
897+ todaytxt = dates[this.o.language].today || dates['en'].today || '',
898+ cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
899+ titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,
900+ tooltip;
901+ if (isNaN(year) || isNaN(month))
902+ return;
903+ this.picker.find('.datepicker-days thead .datepicker-switch')
904+ .text(DPGlobal.formatDate(new UTCDate(year, month), titleFormat, this.o.language));
905+ this.picker.find('tfoot .today')
906+ .text(todaytxt)
907+ .toggle(this.o.todayBtn !== false);
908+ this.picker.find('tfoot .clear')
909+ .text(cleartxt)
910+ .toggle(this.o.clearBtn !== false);
911+ this.picker.find('thead .datepicker-title')
912+ .text(this.o.title)
913+ .toggle(this.o.title !== '');
914+ this.updateNavArrows();
915+ this.fillMonths();
916+ var prevMonth = UTCDate(year, month-1, 28),
917+ day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());
918+ prevMonth.setUTCDate(day);
919+ prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);
920+ var nextMonth = new Date(prevMonth);
921+ if (prevMonth.getUTCFullYear() < 100){
922+ nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());
923+ }
924+ nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
925+ nextMonth = nextMonth.valueOf();
926+ var html = [];
927+ var clsName;
928+ while (prevMonth.valueOf() < nextMonth){
929+ if (prevMonth.getUTCDay() === this.o.weekStart){
930+ html.push('<tr>');
931+ if (this.o.calendarWeeks){
932+ // ISO 8601: First week contains first thursday.
933+ // ISO also states week starts on Monday, but we can be more abstract here.
934+ var
935+ // Start of current week: based on weekstart/current date
936+ ws = new Date(+prevMonth + (this.o.weekStart - prevMonth.getUTCDay() - 7) % 7 * 864e5),
937+ // Thursday of this week
938+ th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
939+ // First Thursday of year, year from thursday
940+ yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay())%7*864e5),
941+ // Calendar week: ms between thursdays, div ms per day, div 7 days
942+ calWeek = (th - yth) / 864e5 / 7 + 1;
943+ html.push('<td class="cw">'+ calWeek +'</td>');
944+
945+ }
946+ }
947+ clsName = this.getClassNames(prevMonth);
948+ clsName.push('day');
949+
950+ if (this.o.beforeShowDay !== $.noop){
951+ var before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
952+ if (before === undefined)
953+ before = {};
954+ else if (typeof(before) === 'boolean')
955+ before = {enabled: before};
956+ else if (typeof(before) === 'string')
957+ before = {classes: before};
958+ if (before.enabled === false)
959+ clsName.push('disabled');
960+ if (before.classes)
961+ clsName = clsName.concat(before.classes.split(/\s+/));
962+ if (before.tooltip)
963+ tooltip = before.tooltip;
964+ }
965+
966+ clsName = $.unique(clsName);
967+ html.push('<td class="'+clsName.join(' ')+'"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>'+prevMonth.getUTCDate() + '</td>');
968+ tooltip = null;
969+ if (prevMonth.getUTCDay() === this.o.weekEnd){
970+ html.push('</tr>');
971+ }
972+ prevMonth.setUTCDate(prevMonth.getUTCDate()+1);
973+ }
974+ this.picker.find('.datepicker-days tbody').empty().append(html.join(''));
975+
976+ var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';
977+ var months = this.picker.find('.datepicker-months')
978+ .find('.datepicker-switch')
979+ .text(this.o.maxViewMode < 2 ? monthsTitle : year)
980+ .end()
981+ .find('span').removeClass('active');
982+
983+ $.each(this.dates, function(i, d){
984+ if (d.getUTCFullYear() === year)
985+ months.eq(d.getUTCMonth()).addClass('active');
986+ });
987+
988+ if (year < startYear || year > endYear){
989+ months.addClass('disabled');
990+ }
991+ if (year === startYear){
992+ months.slice(0, startMonth).addClass('disabled');
993+ }
994+ if (year === endYear){
995+ months.slice(endMonth+1).addClass('disabled');
996+ }
997+
998+ if (this.o.beforeShowMonth !== $.noop){
999+ var that = this;
1000+ $.each(months, function(i, month){
1001+ if (!$(month).hasClass('disabled')) {
1002+ var moDate = new Date(year, i, 1);
1003+ var before = that.o.beforeShowMonth(moDate);
1004+ if (before === false)
1005+ $(month).addClass('disabled');
1006+ }
1007+ });
1008+ }
1009+
1010+ html = '';
1011+ year = parseInt(year/10, 10) * 10;
1012+ var yearCont = this.picker.find('.datepicker-years')
1013+ .find('.datepicker-switch')
1014+ .text(year + '-' + (year + 9))
1015+ .end()
1016+ .find('td');
1017+ year -= 1;
1018+ var years = $.map(this.dates, function(d){
1019+ return d.getUTCFullYear();
1020+ }),
1021+ classes;
1022+ for (var i = -1; i < 11; i++){
1023+ classes = ['year'];
1024+ tooltip = null;
1025+
1026+ if (i === -1)
1027+ classes.push('old');
1028+ else if (i === 10)
1029+ classes.push('new');
1030+ if ($.inArray(year, years) !== -1)
1031+ classes.push('active');
1032+ if (year < startYear || year > endYear)
1033+ classes.push('disabled');
1034+
1035+ if (this.o.beforeShowYear !== $.noop) {
1036+ var yrBefore = this.o.beforeShowYear(new Date(year, 0, 1));
1037+ if (yrBefore === undefined)
1038+ yrBefore = {};
1039+ else if (typeof(yrBefore) === 'boolean')
1040+ yrBefore = {enabled: yrBefore};
1041+ else if (typeof(yrBefore) === 'string')
1042+ yrBefore = {classes: yrBefore};
1043+ if (yrBefore.enabled === false)
1044+ classes.push('disabled');
1045+ if (yrBefore.classes)
1046+ classes = classes.concat(yrBefore.classes.split(/\s+/));
1047+ if (yrBefore.tooltip)
1048+ tooltip = yrBefore.tooltip;
1049+ }
1050+
1051+ html += '<span class="' + classes.join(' ') + '"' + (tooltip ? ' title="'+tooltip+'"' : '') + '>' + year + '</span>';
1052+ year += 1;
1053+ }
1054+ yearCont.html(html);
1055+ },
1056+
1057+ updateNavArrows: function(){
1058+ if (!this._allow_update)
1059+ return;
1060+
1061+ var d = new Date(this.viewDate),
1062+ year = d.getUTCFullYear(),
1063+ month = d.getUTCMonth();
1064+ switch (this.viewMode){
1065+ case 0:
1066+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() && month <= this.o.startDate.getUTCMonth()){
1067+ this.picker.find('.prev').css({visibility: 'hidden'});
1068+ }
1069+ else {
1070+ this.picker.find('.prev').css({visibility: 'visible'});
1071+ }
1072+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() && month >= this.o.endDate.getUTCMonth()){
1073+ this.picker.find('.next').css({visibility: 'hidden'});
1074+ }
1075+ else {
1076+ this.picker.find('.next').css({visibility: 'visible'});
1077+ }
1078+ break;
1079+ case 1:
1080+ case 2:
1081+ if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() || this.o.maxViewMode < 2){
1082+ this.picker.find('.prev').css({visibility: 'hidden'});
1083+ }
1084+ else {
1085+ this.picker.find('.prev').css({visibility: 'visible'});
1086+ }
1087+ if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() || this.o.maxViewMode < 2){
1088+ this.picker.find('.next').css({visibility: 'hidden'});
1089+ }
1090+ else {
1091+ this.picker.find('.next').css({visibility: 'visible'});
1092+ }
1093+ break;
1094+ }
1095+ },
1096+
1097+ click: function(e){
1098+ e.preventDefault();
1099+ e.stopPropagation();
1100+ var target = $(e.target).closest('span, td, th'),
1101+ year, month, day;
1102+ if (target.length === 1){
1103+ switch (target[0].nodeName.toLowerCase()){
1104+ case 'th':
1105+ switch (target[0].className){
1106+ case 'datepicker-switch':
1107+ this.showMode(1);
1108+ break;
1109+ case 'prev':
1110+ case 'next':
1111+ var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1);
1112+ switch (this.viewMode){
1113+ case 0:
1114+ this.viewDate = this.moveMonth(this.viewDate, dir);
1115+ this._trigger('changeMonth', this.viewDate);
1116+ break;
1117+ case 1:
1118+ case 2:
1119+ this.viewDate = this.moveYear(this.viewDate, dir);
1120+ if (this.viewMode === 1)
1121+ this._trigger('changeYear', this.viewDate);
1122+ break;
1123+ }
1124+ this.fill();
1125+ break;
1126+ case 'today':
1127+ this.showMode(-2);
1128+ var which = this.o.todayBtn === 'linked' ? null : 'view';
1129+ this._setDate(UTCToday(), which);
1130+ break;
1131+ case 'clear':
1132+ this.clearDates();
1133+ break;
1134+ }
1135+ break;
1136+ case 'span':
1137+ if (!target.hasClass('disabled')){
1138+ this.viewDate.setUTCDate(1);
1139+ if (target.hasClass('month')){
1140+ day = 1;
1141+ month = target.parent().find('span').index(target);
1142+ year = this.viewDate.getUTCFullYear();
1143+ this.viewDate.setUTCMonth(month);
1144+ this._trigger('changeMonth', this.viewDate);
1145+ if (this.o.minViewMode === 1){
1146+ this._setDate(UTCDate(year, month, day));
1147+ this.showMode();
1148+ } else {
1149+ this.showMode(-1);
1150+ }
1151+ }
1152+ else {
1153+ day = 1;
1154+ month = 0;
1155+ year = parseInt(target.text(), 10)||0;
1156+ this.viewDate.setUTCFullYear(year);
1157+ this._trigger('changeYear', this.viewDate);
1158+ if (this.o.minViewMode === 2){
1159+ this._setDate(UTCDate(year, month, day));
1160+ }
1161+ this.showMode(-1);
1162+ }
1163+ this.fill();
1164+ }
1165+ break;
1166+ case 'td':
1167+ if (target.hasClass('day') && !target.hasClass('disabled')){
1168+ day = parseInt(target.text(), 10)||1;
1169+ year = this.viewDate.getUTCFullYear();
1170+ month = this.viewDate.getUTCMonth();
1171+ if (target.hasClass('old')){
1172+ if (month === 0){
1173+ month = 11;
1174+ year -= 1;
1175+ }
1176+ else {
1177+ month -= 1;
1178+ }
1179+ }
1180+ else if (target.hasClass('new')){
1181+ if (month === 11){
1182+ month = 0;
1183+ year += 1;
1184+ }
1185+ else {
1186+ month += 1;
1187+ }
1188+ }
1189+ this._setDate(UTCDate(year, month, day));
1190+ }
1191+ break;
1192+ }
1193+ }
1194+ if (this.picker.is(':visible') && this._focused_from){
1195+ $(this._focused_from).focus();
1196+ }
1197+ delete this._focused_from;
1198+ },
1199+
1200+ _toggle_multidate: function(date){
1201+ var ix = this.dates.contains(date);
1202+ if (!date){
1203+ this.dates.clear();
1204+ }
1205+
1206+ if (ix !== -1){
1207+ if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){
1208+ this.dates.remove(ix);
1209+ }
1210+ } else if (this.o.multidate === false) {
1211+ this.dates.clear();
1212+ this.dates.push(date);
1213+ }
1214+ else {
1215+ this.dates.push(date);
1216+ }
1217+
1218+ if (typeof this.o.multidate === 'number')
1219+ while (this.dates.length > this.o.multidate)
1220+ this.dates.remove(0);
1221+ },
1222+
1223+ _setDate: function(date, which){
1224+ if (!which || which === 'date')
1225+ this._toggle_multidate(date && new Date(date));
1226+ if (!which || which === 'view')
1227+ this.viewDate = date && new Date(date);
1228+
1229+ this.fill();
1230+ this.setValue();
1231+ if (!which || which !== 'view') {
1232+ this._trigger('changeDate');
1233+ }
1234+ var element;
1235+ if (this.isInput){
1236+ element = this.element;
1237+ }
1238+ else if (this.component){
1239+ element = this.element.find('input');
1240+ }
1241+ if (element){
1242+ element.change();
1243+ }
1244+ if (this.o.autoclose && (!which || which === 'date')){
1245+ this.hide();
1246+ }
1247+ },
1248+
1249+ moveDay: function(date, dir){
1250+ var newDate = new Date(date);
1251+ newDate.setUTCDate(date.getUTCDate() + dir);
1252+
1253+ return newDate;
1254+ },
1255+
1256+ moveWeek: function(date, dir){
1257+ return this.moveDay(date, dir * 7);
1258+ },
1259+
1260+ moveMonth: function(date, dir){
1261+ if (!isValidDate(date))
1262+ return this.o.defaultViewDate;
1263+ if (!dir)
1264+ return date;
1265+ var new_date = new Date(date.valueOf()),
1266+ day = new_date.getUTCDate(),
1267+ month = new_date.getUTCMonth(),
1268+ mag = Math.abs(dir),
1269+ new_month, test;
1270+ dir = dir > 0 ? 1 : -1;
1271+ if (mag === 1){
1272+ test = dir === -1
1273+ // If going back one month, make sure month is not current month
1274+ // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
1275+ ? function(){
1276+ return new_date.getUTCMonth() === month;
1277+ }
1278+ // If going forward one month, make sure month is as expected
1279+ // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
1280+ : function(){
1281+ return new_date.getUTCMonth() !== new_month;
1282+ };
1283+ new_month = month + dir;
1284+ new_date.setUTCMonth(new_month);
1285+ // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
1286+ if (new_month < 0 || new_month > 11)
1287+ new_month = (new_month + 12) % 12;
1288+ }
1289+ else {
1290+ // For magnitudes >1, move one month at a time...
1291+ for (var i=0; i < mag; i++)
1292+ // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
1293+ new_date = this.moveMonth(new_date, dir);
1294+ // ...then reset the day, keeping it in the new month
1295+ new_month = new_date.getUTCMonth();
1296+ new_date.setUTCDate(day);
1297+ test = function(){
1298+ return new_month !== new_date.getUTCMonth();
1299+ };
1300+ }
1301+ // Common date-resetting loop -- if date is beyond end of month, make it
1302+ // end of month
1303+ while (test()){
1304+ new_date.setUTCDate(--day);
1305+ new_date.setUTCMonth(new_month);
1306+ }
1307+ return new_date;
1308+ },
1309+
1310+ moveYear: function(date, dir){
1311+ return this.moveMonth(date, dir*12);
1312+ },
1313+
1314+ moveAvailableDate: function(date, dir, fn){
1315+ do {
1316+ date = this[fn](date, dir);
1317+
1318+ if (!this.dateWithinRange(date))
1319+ return false;
1320+
1321+ fn = 'moveDay';
1322+ }
1323+ while (this.dateIsDisabled(date));
1324+
1325+ return date;
1326+ },
1327+
1328+ weekOfDateIsDisabled: function(date){
1329+ return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;
1330+ },
1331+
1332+ dateIsDisabled: function(date){
1333+ return (
1334+ this.weekOfDateIsDisabled(date) ||
1335+ $.grep(this.o.datesDisabled, function(d){
1336+ return isUTCEquals(date, d);
1337+ }).length > 0
1338+ );
1339+ },
1340+
1341+ dateWithinRange: function(date){
1342+ return date >= this.o.startDate && date <= this.o.endDate;
1343+ },
1344+
1345+ keydown: function(e){
1346+ if (!this.picker.is(':visible')){
1347+ if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker
1348+ this.show();
1349+ e.stopPropagation();
1350+ }
1351+ return;
1352+ }
1353+ var dateChanged = false,
1354+ dir, newViewDate,
1355+ focusDate = this.focusDate || this.viewDate;
1356+ switch (e.keyCode){
1357+ case 27: // escape
1358+ if (this.focusDate){
1359+ this.focusDate = null;
1360+ this.viewDate = this.dates.get(-1) || this.viewDate;
1361+ this.fill();
1362+ }
1363+ else
1364+ this.hide();
1365+ e.preventDefault();
1366+ e.stopPropagation();
1367+ break;
1368+ case 37: // left
1369+ case 38: // up
1370+ case 39: // right
1371+ case 40: // down
1372+ if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)
1373+ break;
1374+ dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;
1375+ if (e.ctrlKey){
1376+ newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');
1377+
1378+ if (newViewDate)
1379+ this._trigger('changeYear', this.viewDate);
1380+ }
1381+ else if (e.shiftKey){
1382+ newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');
1383+
1384+ if (newViewDate)
1385+ this._trigger('changeMonth', this.viewDate);
1386+ }
1387+ else if (e.keyCode === 37 || e.keyCode === 39){
1388+ newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');
1389+ }
1390+ else if (!this.weekOfDateIsDisabled(focusDate)){
1391+ newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');
1392+ }
1393+ if (newViewDate){
1394+ this.focusDate = this.viewDate = newViewDate;
1395+ this.setValue();
1396+ this.fill();
1397+ e.preventDefault();
1398+ }
1399+ break;
1400+ case 13: // enter
1401+ if (!this.o.forceParse)
1402+ break;
1403+ focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
1404+ if (this.o.keyboardNavigation) {
1405+ this._toggle_multidate(focusDate);
1406+ dateChanged = true;
1407+ }
1408+ this.focusDate = null;
1409+ this.viewDate = this.dates.get(-1) || this.viewDate;
1410+ this.setValue();
1411+ this.fill();
1412+ if (this.picker.is(':visible')){
1413+ e.preventDefault();
1414+ e.stopPropagation();
1415+ if (this.o.autoclose)
1416+ this.hide();
1417+ }
1418+ break;
1419+ case 9: // tab
1420+ this.focusDate = null;
1421+ this.viewDate = this.dates.get(-1) || this.viewDate;
1422+ this.fill();
1423+ this.hide();
1424+ break;
1425+ }
1426+ if (dateChanged){
1427+ if (this.dates.length)
1428+ this._trigger('changeDate');
1429+ else
1430+ this._trigger('clearDate');
1431+ var element;
1432+ if (this.isInput){
1433+ element = this.element;
1434+ }
1435+ else if (this.component){
1436+ element = this.element.find('input');
1437+ }
1438+ if (element){
1439+ element.change();
1440+ }
1441+ }
1442+ },
1443+
1444+ showMode: function(dir){
1445+ if (dir){
1446+ this.viewMode = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, this.viewMode + dir));
1447+ }
1448+ this.picker
1449+ .children('div')
1450+ .hide()
1451+ .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName)
1452+ .show();
1453+ this.updateNavArrows();
1454+ }
1455+ };
1456+
1457+ var DateRangePicker = function(element, options){
1458+ $(element).data('datepicker', this);
1459+ this.element = $(element);
1460+ this.inputs = $.map(options.inputs, function(i){
1461+ return i.jquery ? i[0] : i;
1462+ });
1463+ delete options.inputs;
1464+
1465+ datepickerPlugin.call($(this.inputs), options)
1466+ .on('changeDate', $.proxy(this.dateUpdated, this));
1467+
1468+ this.pickers = $.map(this.inputs, function(i){
1469+ return $(i).data('datepicker');
1470+ });
1471+ this.updateDates();
1472+ };
1473+ DateRangePicker.prototype = {
1474+ updateDates: function(){
1475+ this.dates = $.map(this.pickers, function(i){
1476+ return i.getUTCDate();
1477+ });
1478+ this.updateRanges();
1479+ },
1480+ updateRanges: function(){
1481+ var range = $.map(this.dates, function(d){
1482+ return d.valueOf();
1483+ });
1484+ $.each(this.pickers, function(i, p){
1485+ p.setRange(range);
1486+ });
1487+ },
1488+ dateUpdated: function(e){
1489+ // `this.updating` is a workaround for preventing infinite recursion
1490+ // between `changeDate` triggering and `setUTCDate` calling. Until
1491+ // there is a better mechanism.
1492+ if (this.updating)
1493+ return;
1494+ this.updating = true;
1495+
1496+ var dp = $(e.target).data('datepicker');
1497+
1498+ if (typeof(dp) === "undefined") {
1499+ return;
1500+ }
1501+
1502+ var new_date = dp.getUTCDate(),
1503+ i = $.inArray(e.target, this.inputs),
1504+ j = i - 1,
1505+ k = i + 1,
1506+ l = this.inputs.length;
1507+ if (i === -1)
1508+ return;
1509+
1510+ $.each(this.pickers, function(i, p){
1511+ if (!p.getUTCDate())
1512+ p.setUTCDate(new_date);
1513+ });
1514+
1515+ if (new_date < this.dates[j]){
1516+ // Date being moved earlier/left
1517+ while (j >= 0 && new_date < this.dates[j]){
1518+ this.pickers[j--].setUTCDate(new_date);
1519+ }
1520+ }
1521+ else if (new_date > this.dates[k]){
1522+ // Date being moved later/right
1523+ while (k < l && new_date > this.dates[k]){
1524+ this.pickers[k++].setUTCDate(new_date);
1525+ }
1526+ }
1527+ this.updateDates();
1528+
1529+ delete this.updating;
1530+ },
1531+ remove: function(){
1532+ $.map(this.pickers, function(p){ p.remove(); });
1533+ delete this.element.data().datepicker;
1534+ }
1535+ };
1536+
1537+ function opts_from_el(el, prefix){
1538+ // Derive options from element data-attrs
1539+ var data = $(el).data(),
1540+ out = {}, inkey,
1541+ replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
1542+ prefix = new RegExp('^' + prefix.toLowerCase());
1543+ function re_lower(_,a){
1544+ return a.toLowerCase();
1545+ }
1546+ for (var key in data)
1547+ if (prefix.test(key)){
1548+ inkey = key.replace(replace, re_lower);
1549+ out[inkey] = data[key];
1550+ }
1551+ return out;
1552+ }
1553+
1554+ function opts_from_locale(lang){
1555+ // Derive options from locale plugins
1556+ var out = {};
1557+ // Check if "de-DE" style date is available, if not language should
1558+ // fallback to 2 letter code eg "de"
1559+ if (!dates[lang]){
1560+ lang = lang.split('-')[0];
1561+ if (!dates[lang])
1562+ return;
1563+ }
1564+ var d = dates[lang];
1565+ $.each(locale_opts, function(i,k){
1566+ if (k in d)
1567+ out[k] = d[k];
1568+ });
1569+ return out;
1570+ }
1571+
1572+ var old = $.fn.datepicker;
1573+ var datepickerPlugin = function(option){
1574+ var args = Array.apply(null, arguments);
1575+ args.shift();
1576+ var internal_return;
1577+ this.each(function(){
1578+ var $this = $(this),
1579+ data = $this.data('datepicker'),
1580+ options = typeof option === 'object' && option;
1581+ if (!data){
1582+ var elopts = opts_from_el(this, 'date'),
1583+ // Preliminary otions
1584+ xopts = $.extend({}, defaults, elopts, options),
1585+ locopts = opts_from_locale(xopts.language),
1586+ // Options priority: js args, data-attrs, locales, defaults
1587+ opts = $.extend({}, defaults, locopts, elopts, options);
1588+ if ($this.hasClass('input-daterange') || opts.inputs){
1589+ $.extend(opts, {
1590+ inputs: opts.inputs || $this.find('input').toArray()
1591+ });
1592+ data = new DateRangePicker(this, opts);
1593+ }
1594+ else {
1595+ data = new Datepicker(this, opts);
1596+ }
1597+ $this.data('datepicker', data);
1598+ }
1599+ if (typeof option === 'string' && typeof data[option] === 'function'){
1600+ internal_return = data[option].apply(data, args);
1601+ }
1602+ });
1603+
1604+ if (
1605+ internal_return === undefined ||
1606+ internal_return instanceof Datepicker ||
1607+ internal_return instanceof DateRangePicker
1608+ )
1609+ return this;
1610+
1611+ if (this.length > 1)
1612+ throw new Error('Using only allowed for the collection of a single element (' + option + ' function)');
1613+ else
1614+ return internal_return;
1615+ };
1616+ $.fn.datepicker = datepickerPlugin;
1617+
1618+ var defaults = $.fn.datepicker.defaults = {
1619+ autoclose: false,
1620+ beforeShowDay: $.noop,
1621+ beforeShowMonth: $.noop,
1622+ beforeShowYear: $.noop,
1623+ calendarWeeks: false,
1624+ clearBtn: false,
1625+ toggleActive: false,
1626+ daysOfWeekDisabled: [],
1627+ daysOfWeekHighlighted: [],
1628+ datesDisabled: [],
1629+ endDate: Infinity,
1630+ forceParse: true,
1631+ format: 'mm/dd/yyyy',
1632+ keyboardNavigation: true,
1633+ language: 'en',
1634+ minViewMode: 0,
1635+ maxViewMode: 2,
1636+ multidate: false,
1637+ multidateSeparator: ',',
1638+ orientation: "auto",
1639+ rtl: false,
1640+ startDate: -Infinity,
1641+ startView: 0,
1642+ todayBtn: false,
1643+ todayHighlight: false,
1644+ weekStart: 0,
1645+ disableTouchKeyboard: false,
1646+ enableOnReadonly: true,
1647+ showOnFocus: true,
1648+ zIndexOffset: 10,
1649+ container: 'body',
1650+ immediateUpdates: false,
1651+ title: ''
1652+ };
1653+ var locale_opts = $.fn.datepicker.locale_opts = [
1654+ 'format',
1655+ 'rtl',
1656+ 'weekStart'
1657+ ];
1658+ $.fn.datepicker.Constructor = Datepicker;
1659+ var dates = $.fn.datepicker.dates = {
1660+ en: {
1661+ days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
1662+ daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
1663+ daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
1664+ months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
1665+ monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1666+ today: "Today",
1667+ clear: "Clear",
1668+ titleFormat: "MM yyyy"
1669+ }
1670+ };
1671+
1672+ var DPGlobal = {
1673+ modes: [
1674+ {
1675+ clsName: 'days',
1676+ navFnc: 'Month',
1677+ navStep: 1
1678+ },
1679+ {
1680+ clsName: 'months',
1681+ navFnc: 'FullYear',
1682+ navStep: 1
1683+ },
1684+ {
1685+ clsName: 'years',
1686+ navFnc: 'FullYear',
1687+ navStep: 10
1688+ }],
1689+ isLeapYear: function(year){
1690+ return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
1691+ },
1692+ getDaysInMonth: function(year, month){
1693+ return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
1694+ },
1695+ validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
1696+ nonpunctuation: /[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,
1697+ parseFormat: function(format){
1698+ if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')
1699+ return format;
1700+ // IE treats \0 as a string end in inputs (truncating the value),
1701+ // so it's a bad format delimiter, anyway
1702+ var separators = format.replace(this.validParts, '\0').split('\0'),
1703+ parts = format.match(this.validParts);
1704+ if (!separators || !separators.length || !parts || parts.length === 0){
1705+ throw new Error("Invalid date format.");
1706+ }
1707+ return {separators: separators, parts: parts};
1708+ },
1709+ parseDate: function(date, format, language){
1710+ if (!date)
1711+ return undefined;
1712+ if (date instanceof Date)
1713+ return date;
1714+ if (typeof format === 'string')
1715+ format = DPGlobal.parseFormat(format);
1716+ if (format.toValue)
1717+ return format.toValue(date, format, language);
1718+ var part_re = /([\-+]\d+)([dmwy])/,
1719+ parts = date.match(/([\-+]\d+)([dmwy])/g),
1720+ fn_map = {
1721+ d: 'moveDay',
1722+ m: 'moveMonth',
1723+ w: 'moveWeek',
1724+ y: 'moveYear'
1725+ },
1726+ part, dir, i, fn;
1727+ if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){
1728+ date = new Date();
1729+ for (i=0; i < parts.length; i++){
1730+ part = part_re.exec(parts[i]);
1731+ dir = parseInt(part[1]);
1732+ fn = fn_map[part[2]];
1733+ date = Datepicker.prototype[fn](date, dir);
1734+ }
1735+ return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
1736+ }
1737+ parts = date && date.match(this.nonpunctuation) || [];
1738+ date = new Date();
1739+ var parsed = {},
1740+ setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
1741+ setters_map = {
1742+ yyyy: function(d,v){
1743+ return d.setUTCFullYear(v);
1744+ },
1745+ yy: function(d,v){
1746+ return d.setUTCFullYear(2000+v);
1747+ },
1748+ m: function(d,v){
1749+ if (isNaN(d))
1750+ return d;
1751+ v -= 1;
1752+ while (v < 0) v += 12;
1753+ v %= 12;
1754+ d.setUTCMonth(v);
1755+ while (d.getUTCMonth() !== v)
1756+ d.setUTCDate(d.getUTCDate()-1);
1757+ return d;
1758+ },
1759+ d: function(d,v){
1760+ return d.setUTCDate(v);
1761+ }
1762+ },
1763+ val, filtered;
1764+ setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
1765+ setters_map['dd'] = setters_map['d'];
1766+ date = UTCToday();
1767+ var fparts = format.parts.slice();
1768+ // Remove noop parts
1769+ if (parts.length !== fparts.length){
1770+ fparts = $(fparts).filter(function(i,p){
1771+ return $.inArray(p, setters_order) !== -1;
1772+ }).toArray();
1773+ }
1774+ // Process remainder
1775+ function match_part(){
1776+ var m = this.slice(0, parts[i].length),
1777+ p = parts[i].slice(0, m.length);
1778+ return m.toLowerCase() === p.toLowerCase();
1779+ }
1780+ if (parts.length === fparts.length){
1781+ var cnt;
1782+ for (i=0, cnt = fparts.length; i < cnt; i++){
1783+ val = parseInt(parts[i], 10);
1784+ part = fparts[i];
1785+ if (isNaN(val)){
1786+ switch (part){
1787+ case 'MM':
1788+ filtered = $(dates[language].months).filter(match_part);
1789+ val = $.inArray(filtered[0], dates[language].months) + 1;
1790+ break;
1791+ case 'M':
1792+ filtered = $(dates[language].monthsShort).filter(match_part);
1793+ val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
1794+ break;
1795+ }
1796+ }
1797+ parsed[part] = val;
1798+ }
1799+ var _date, s;
1800+ for (i=0; i < setters_order.length; i++){
1801+ s = setters_order[i];
1802+ if (s in parsed && !isNaN(parsed[s])){
1803+ _date = new Date(date);
1804+ setters_map[s](_date, parsed[s]);
1805+ if (!isNaN(_date))
1806+ date = _date;
1807+ }
1808+ }
1809+ }
1810+ return date;
1811+ },
1812+ formatDate: function(date, format, language){
1813+ if (!date)
1814+ return '';
1815+ if (typeof format === 'string')
1816+ format = DPGlobal.parseFormat(format);
1817+ if (format.toDisplay)
1818+ return format.toDisplay(date, format, language);
1819+ var val = {
1820+ d: date.getUTCDate(),
1821+ D: dates[language].daysShort[date.getUTCDay()],
1822+ DD: dates[language].days[date.getUTCDay()],
1823+ m: date.getUTCMonth() + 1,
1824+ M: dates[language].monthsShort[date.getUTCMonth()],
1825+ MM: dates[language].months[date.getUTCMonth()],
1826+ yy: date.getUTCFullYear().toString().substring(2),
1827+ yyyy: date.getUTCFullYear()
1828+ };
1829+ val.dd = (val.d < 10 ? '0' : '') + val.d;
1830+ val.mm = (val.m < 10 ? '0' : '') + val.m;
1831+ date = [];
1832+ var seps = $.extend([], format.separators);
1833+ for (var i=0, cnt = format.parts.length; i <= cnt; i++){
1834+ if (seps.length)
1835+ date.push(seps.shift());
1836+ date.push(val[format.parts[i]]);
1837+ }
1838+ return date.join('');
1839+ },
1840+ headTemplate: '<thead>'+
1841+ '<tr>'+
1842+ '<th colspan="7" class="datepicker-title"></th>'+
1843+ '</tr>'+
1844+ '<tr>'+
1845+ '<th class="prev">&#171;</th>'+
1846+ '<th colspan="5" class="datepicker-switch"></th>'+
1847+ '<th class="next">&#187;</th>'+
1848+ '</tr>'+
1849+ '</thead>',
1850+ contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
1851+ footTemplate: '<tfoot>'+
1852+ '<tr>'+
1853+ '<th colspan="7" class="today"></th>'+
1854+ '</tr>'+
1855+ '<tr>'+
1856+ '<th colspan="7" class="clear"></th>'+
1857+ '</tr>'+
1858+ '</tfoot>'
1859+ };
1860+ DPGlobal.template = '<div class="datepicker">'+
1861+ '<div class="datepicker-days">'+
1862+ '<table class=" table-condensed">'+
1863+ DPGlobal.headTemplate+
1864+ '<tbody></tbody>'+
1865+ DPGlobal.footTemplate+
1866+ '</table>'+
1867+ '</div>'+
1868+ '<div class="datepicker-months">'+
1869+ '<table class="table-condensed">'+
1870+ DPGlobal.headTemplate+
1871+ DPGlobal.contTemplate+
1872+ DPGlobal.footTemplate+
1873+ '</table>'+
1874+ '</div>'+
1875+ '<div class="datepicker-years">'+
1876+ '<table class="table-condensed">'+
1877+ DPGlobal.headTemplate+
1878+ DPGlobal.contTemplate+
1879+ DPGlobal.footTemplate+
1880+ '</table>'+
1881+ '</div>'+
1882+ '</div>';
1883+
1884+ $.fn.datepicker.DPGlobal = DPGlobal;
1885+
1886+
1887+ /* DATEPICKER NO CONFLICT
1888+ * =================== */
1889+
1890+ $.fn.datepicker.noConflict = function(){
1891+ $.fn.datepicker = old;
1892+ return this;
1893+ };
1894+
1895+ /* DATEPICKER VERSION
1896+ * =================== */
1897+ $.fn.datepicker.version = '1.5.1';
1898+
1899+ /* DATEPICKER DATA-API
1900+ * ================== */
1901+
1902+ $(document).on(
1903+ 'focus.datepicker.data-api click.datepicker.data-api',
1904+ '[data-provide="datepicker"]',
1905+ function(e){
1906+ var $this = $(this);
1907+ if ($this.data('datepicker'))
1908+ return;
1909+ e.preventDefault();
1910+ // component click requires us to explicitly show it
1911+ datepickerPlugin.call($this, 'show');
1912+ }
1913+ );
1914+ $(function(){
1915+ datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
1916+ });
1917+
1918+}));
Source/Libraries/GSF.Web/Model/Scripts/bootstrap-toolkit.js+234−0
@@ -0,0 +1,234 @@
1+/*!
2+ * Responsive Bootstrap Toolkit
3+ * Author: Maciej Gurban
4+ * License: MIT
5+ * Version: 2.5.1 (2015-11-02)
6+ * Origin: https://github.com/maciej-gurban/responsive-bootstrap-toolkit
7+ */
8+;var ResponsiveBootstrapToolkit = (function($){
9+
10+ // Internal methods
11+ var internal = {
12+
13+ /**
14+ * Breakpoint detection divs for each framework version
15+ */
16+ detectionDivs: {
17+ // Bootstrap 3
18+ bootstrap: {
19+ 'xs': $('<div class="device-xs visible-xs visible-xs-block"></div>'),
20+ 'sm': $('<div class="device-sm visible-sm visible-sm-block"></div>'),
21+ 'md': $('<div class="device-md visible-md visible-md-block"></div>'),
22+ 'lg': $('<div class="device-lg visible-lg visible-lg-block"></div>')
23+ },
24+ // Foundation 5
25+ foundation: {
26+ 'small': $('<div class="device-xs show-for-small-only"></div>'),
27+ 'medium': $('<div class="device-sm show-for-medium-only"></div>'),
28+ 'large': $('<div class="device-md show-for-large-only"></div>'),
29+ 'xlarge': $('<div class="device-lg show-for-xlarge-only"></div>')
30+ }
31+ },
32+
33+ /**
34+ * Append visibility divs after DOM laoded
35+ */
36+ applyDetectionDivs: function() {
37+ $(document).ready(function(){
38+ $.each(self.breakpoints, function(alias){
39+ self.breakpoints[alias].appendTo('.responsive-bootstrap-toolkit');
40+ });
41+ });
42+ },
43+
44+ /**
45+ * Determines whether passed string is a parsable expression
46+ */
47+ isAnExpression: function( str ) {
48+ return (str.charAt(0) == '<' || str.charAt(0) == '>');
49+ },
50+
51+ /**
52+ * Splits the expression in into <|> [=] alias
53+ */
54+ splitExpression: function( str ) {
55+
56+ // Used operator
57+ var operator = str.charAt(0);
58+ // Include breakpoint equal to alias?
59+ var orEqual = (str.charAt(1) == '=') ? true : false;
60+
61+ /**
62+ * Index at which breakpoint name starts.
63+ *
64+ * For: >sm, index = 1
65+ * For: >=sm, index = 2
66+ */
67+ var index = 1 + (orEqual ? 1 : 0);
68+
69+ /**
70+ * The remaining part of the expression, after the operator, will be treated as the
71+ * breakpoint name to compare with
72+ */
73+ var breakpointName = str.slice(index);
74+
75+ return {
76+ operator: operator,
77+ orEqual: orEqual,
78+ breakpointName: breakpointName
79+ };
80+ },
81+
82+ /**
83+ * Returns true if currently active breakpoint matches the expression
84+ */
85+ isAnyActive: function( breakpoints ) {
86+ var found = false;
87+ $.each(breakpoints, function( index, alias ) {
88+ // Once first breakpoint matches, return true and break out of the loop
89+ if( self.breakpoints[ alias ].is(':visible') ) {
90+ found = true;
91+ return false;
92+ }
93+ });
94+ return found;
95+ },
96+
97+ /**
98+ * Determines whether current breakpoint matches the expression given
99+ */
100+ isMatchingExpression: function( str ) {
101+
102+ var expression = internal.splitExpression( str );
103+
104+ // Get names of all breakpoints
105+ var breakpointList = Object.keys(self.breakpoints);
106+
107+ // Get index of sought breakpoint in the list
108+ var pos = breakpointList.indexOf( expression.breakpointName );
109+
110+ // Breakpoint found
111+ if( pos !== -1 ) {
112+
113+ var start = 0;
114+ var end = 0;
115+
116+ /**
117+ * Parsing viewport.is('<=md') we interate from smallest breakpoint ('xs') and end
118+ * at 'md' breakpoint, indicated in the expression,
119+ * That makes: start = 0, end = 2 (index of 'md' breakpoint)
120+ *
121+ * Parsing viewport.is('<md') we start at index 'xs' breakpoint, and end at
122+ * 'sm' breakpoint, one before 'md'.
123+ * Which makes: start = 0, end = 1
124+ */
125+ if( expression.operator == '<' ) {
126+ start = 0;
127+ end = expression.orEqual ? ++pos : pos;
128+ }
129+ /**
130+ * Parsing viewport.is('>=sm') we interate from breakpoint 'sm' and end at the end
131+ * of breakpoint list.
132+ * That makes: start = 1, end = undefined
133+ *
134+ * Parsing viewport.is('>sm') we start at breakpoint 'md' and end at the end of
135+ * breakpoint list.
136+ * Which makes: start = 2, end = undefined
137+ */
138+ if( expression.operator == '>' ) {
139+ start = expression.orEqual ? pos : ++pos;
140+ end = undefined;
141+ }
142+
143+ var acceptedBreakpoints = breakpointList.slice(start, end);
144+
145+ return internal.isAnyActive( acceptedBreakpoints );
146+
147+ }
148+ }
149+
150+ };
151+
152+ // Public methods and properties
153+ var self = {
154+
155+ /**
156+ * Determines default debouncing interval of 'changed' method
157+ */
158+ interval: 300,
159+
160+ /**
161+ *
162+ */
163+ framework: null,
164+
165+ /**
166+ * Breakpoint aliases, listed from smallest to biggest
167+ */
168+ breakpoints: null,
169+
170+ /**
171+ * Returns true if current breakpoint matches passed alias
172+ */
173+ is: function( str ) {
174+ if( internal.isAnExpression( str ) ) {
175+ return internal.isMatchingExpression( str );
176+ }
177+ return self.breakpoints[ str ] && self.breakpoints[ str ].is(':visible');
178+ },
179+
180+ /**
181+ * Determines which framework-specific breakpoint detection divs to use
182+ */
183+ use: function( frameworkName, breakpoints ) {
184+ self.framework = frameworkName.toLowerCase();
185+
186+ if( self.framework === 'bootstrap' || self.framework === 'foundation') {
187+ self.breakpoints = internal.detectionDivs[ self.framework ];
188+ } else {
189+ self.breakpoints = breakpoints;
190+ }
191+
192+ internal.applyDetectionDivs();
193+ },
194+
195+ /**
196+ * Returns current breakpoint alias
197+ */
198+ current: function(){
199+ var name = 'unrecognized';
200+ $.each(self.breakpoints, function(alias){
201+ if (self.is(alias)) {
202+ name = alias;
203+ }
204+ });
205+ return name;
206+ },
207+
208+ /*
209+ * Waits specified number of miliseconds before executing a callback
210+ */
211+ changed: function(fn, ms) {
212+ var timer;
213+ return function(){
214+ clearTimeout(timer);
215+ timer = setTimeout(function(){
216+ fn();
217+ }, ms || self.interval);
218+ };
219+ }
220+
221+ };
222+
223+ // Create a placeholder
224+ $(document).ready(function(){
225+ $('<div class="responsive-bootstrap-toolkit"></div>').appendTo('body');
226+ });
227+
228+ if( self.framework === null ) {
229+ self.use('bootstrap');
230+ }
231+
232+ return self;
233+
234+})(jQuery);
Source/Libraries/GSF.Web/Model/Views/PagedViewModel.cshtml+4−2
@@ -42,7 +42,7 @@ · 41 unmodified lines
4242 ViewBag.PageControlScripts = new StringBuilder();
4343 }
4444
45− bool includeScripts = false;
45+ bool includeScripts = true;
4646
4747 if (ViewBag.IncludeScripts != null) {
4848 includeScripts = (bool)ViewBag.IncludeScripts;
@@ -64,10 +64,12 @@ · 15 unmodified lines
6464 <script src=""/@GSF/Web/Shared/Scripts/knockout.js""></script>
6565 <script src=""/@GSF/Web/Shared/Scripts/knockout.mapping.js""></script>
6666 <script src=""/@GSF/Web/Shared/Scripts/knockout.validation.js""></script>
67− <script src=""/@GSF/Web/Shared/Scripts/knockout.reactor.min.js""></script>
67+ <script src=""/@GSF/Web/Shared/Scripts/knockout.reactor.js""></script>
6868 <script src=""/@GSF/Web/Shared/Scripts/knockout.observableDictionary.js""></script>
6969 <script src=""/@GSF/Web/Shared/Scripts/js.cookie.js""></script>
7070 <script src=""/@GSF/Web/Shared/Scripts/gsf.web.knockout.js""></script>
71+ <script src=""/@GSF/Web/Model/Scripts/bootstrap-toolkit.js""></script>
72+ <script src=""/@GSF/Web/Model/Scripts/bootstrap-datepicker.js""></script>
7173 <script src=""/@GSF/Web/Model/Scripts/pagedViewModel.js""></script>
7274 ");
7375 }
Source/Libraries/GSF.Web/Shared/Content/Fonts/FontAwesome.otf+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.eot+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.svg+655−0
@@ -0,0 +1,655 @@
1+<?xml version="1.0" standalone="no"?>
2+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3+<svg xmlns="http://www.w3.org/2000/svg">
4+<metadata></metadata>
5+<defs>
6+<font id="fontawesomeregular" horiz-adv-x="1536" >
7+<font-face units-per-em="1792" ascent="1536" descent="-256" />
8+<missing-glyph horiz-adv-x="448" />
9+<glyph unicode=" " horiz-adv-x="448" />
10+<glyph unicode="&#x09;" horiz-adv-x="448" />
11+<glyph unicode="&#xa0;" horiz-adv-x="448" />
12+<glyph unicode="&#xa8;" horiz-adv-x="1792" />
13+<glyph unicode="&#xa9;" horiz-adv-x="1792" />
14+<glyph unicode="&#xae;" horiz-adv-x="1792" />
15+<glyph unicode="&#xb4;" horiz-adv-x="1792" />
16+<glyph unicode="&#xc6;" horiz-adv-x="1792" />
17+<glyph unicode="&#xd8;" horiz-adv-x="1792" />
18+<glyph unicode="&#x2000;" horiz-adv-x="768" />
19+<glyph unicode="&#x2001;" horiz-adv-x="1537" />
20+<glyph unicode="&#x2002;" horiz-adv-x="768" />
21+<glyph unicode="&#x2003;" horiz-adv-x="1537" />
22+<glyph unicode="&#x2004;" horiz-adv-x="512" />
23+<glyph unicode="&#x2005;" horiz-adv-x="384" />
24+<glyph unicode="&#x2006;" horiz-adv-x="256" />
25+<glyph unicode="&#x2007;" horiz-adv-x="256" />
26+<glyph unicode="&#x2008;" horiz-adv-x="192" />
27+<glyph unicode="&#x2009;" horiz-adv-x="307" />
28+<glyph unicode="&#x200a;" horiz-adv-x="85" />
29+<glyph unicode="&#x202f;" horiz-adv-x="307" />
30+<glyph unicode="&#x205f;" horiz-adv-x="384" />
31+<glyph unicode="&#x2122;" horiz-adv-x="1792" />
32+<glyph unicode="&#x221e;" horiz-adv-x="1792" />
33+<glyph unicode="&#x2260;" horiz-adv-x="1792" />
34+<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
35+<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
36+<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
37+<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
38+<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
39+<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
40+<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
41+<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
42+<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
43+<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
44+<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
45+<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
46+<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
47+<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
48+<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
49+<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
50+<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
51+<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
52+<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
53+<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
54+<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
55+<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
56+<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
57+<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
58+<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
59+<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
60+<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
61+<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
62+<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
63+<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
64+<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
65+<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
66+<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
67+<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
68+<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
69+<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
70+<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
71+<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
72+<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
73+<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
74+<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
75+<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
76+<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
77+<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
78+<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
79+<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
80+<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
81+<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
82+<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
83+<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
84+<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
85+<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
86+<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
87+<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
88+<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
89+<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
90+<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
91+<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
92+<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
93+<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
94+<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
95+<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
96+<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
97+<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
98+<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
99+<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
100+<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
101+<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
102+<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
103+<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
104+<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
105+<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
106+<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
107+<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
108+<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
109+<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
110+<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
111+<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
112+<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
113+<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
114+<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
115+<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
116+<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
117+<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
118+<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
119+<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
120+<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
121+<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
122+<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
123+<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
124+<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
125+<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
126+<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
127+<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
128+<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
129+<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
130+<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
131+<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
132+<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
133+<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
134+<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
135+<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
136+<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
137+<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
138+<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
139+<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
140+<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
141+<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
142+<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
143+<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
144+<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
145+<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
146+<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
147+<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
148+<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
149+<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
150+<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
151+<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
152+<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
153+<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
154+<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
155+<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
156+<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
157+<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
158+<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
159+<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
160+<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
161+<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
162+<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
163+<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
164+<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
165+<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
166+<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
167+<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
168+<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
169+<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
170+<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
171+<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
172+<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
173+<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
174+<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
175+<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
176+<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
177+<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
178+<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
179+<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
180+<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
181+<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
182+<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
183+<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
184+<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
185+<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
186+<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
187+<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
188+<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
189+<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
190+<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
191+<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
192+<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
193+<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
194+<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
195+<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
196+<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
197+<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
198+<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
199+<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
200+<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
201+<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
202+<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
203+<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
204+<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
205+<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
206+<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
207+<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
208+<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
209+<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
210+<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
211+<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
212+<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
213+<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
214+<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
215+<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
216+<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
217+<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
218+<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
219+<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
220+<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
221+<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
222+<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
223+<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
224+<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
225+<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
226+<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
227+<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
228+<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
229+<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
230+<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
231+<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
232+<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
233+<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
234+<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
235+<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
236+<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
237+<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
238+<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
239+<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
240+<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
241+<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
242+<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
243+<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
244+<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
245+<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
246+<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
247+<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
248+<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
249+<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
250+<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
251+<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
252+<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
253+<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
254+<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
255+<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
256+<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
257+<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
258+<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
259+<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
260+<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
261+<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
262+<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
263+<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
264+<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
265+<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
266+<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
267+<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
268+<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
269+<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
270+<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
271+<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
272+<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
273+<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
274+<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
275+<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
276+<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
277+<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
278+<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
279+<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
280+<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
281+<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
282+<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
283+<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
284+<glyph unicode="&#xf116;" horiz-adv-x="1792" />
285+<glyph unicode="&#xf117;" horiz-adv-x="1792" />
286+<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
287+<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
288+<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
289+<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
290+<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
291+<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
292+<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
293+<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
294+<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
295+<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
296+<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
297+<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
298+<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
299+<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
300+<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
301+<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
302+<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
303+<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
304+<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
305+<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
306+<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
307+<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
308+<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
309+<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
310+<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
311+<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
312+<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
313+<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
314+<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
315+<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
316+<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
317+<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
318+<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
319+<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
320+<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
321+<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
322+<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
323+<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
324+<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
325+<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
326+<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
327+<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
328+<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
329+<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
330+<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
331+<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
332+<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
333+<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
334+<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
335+<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
336+<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
337+<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
338+<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
339+<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
340+<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
341+<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
342+<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
343+<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
344+<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
345+<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
346+<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
347+<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
348+<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
349+<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
350+<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
351+<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
352+<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
353+<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
354+<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
355+<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
356+<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
357+<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
358+<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
359+<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
360+<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
361+<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
362+<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
363+<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
364+<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
365+<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
366+<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
367+<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
368+<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
369+<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
370+<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
371+<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
372+<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
373+<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
374+<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
375+<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
376+<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
377+<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
378+<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
379+<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
380+<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
381+<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
382+<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
383+<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
384+<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
385+<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
386+<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
387+<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
388+<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
389+<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
390+<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
391+<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
392+<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
393+<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
394+<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
395+<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
396+<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
397+<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
398+<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
399+<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
400+<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
401+<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
402+<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
403+<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
404+<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
405+<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
406+<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
407+<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
408+<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
409+<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
410+<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
411+<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
412+<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
413+<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
414+<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
415+<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
416+<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
417+<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
418+<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
419+<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
420+<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
421+<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
422+<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
423+<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
424+<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
425+<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
426+<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
427+<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
428+<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
429+<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
430+<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
431+<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
432+<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
433+<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
434+<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
435+<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
436+<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
437+<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
438+<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
439+<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
440+<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
441+<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
442+<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
443+<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
444+<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
445+<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
446+<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
447+<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
448+<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
449+<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
450+<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
451+<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
452+<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
453+<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
454+<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
455+<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
456+<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
457+<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
458+<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
459+<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
460+<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
461+<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
462+<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
463+<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
464+<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
465+<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
466+<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
467+<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
468+<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
469+<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
470+<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
471+<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
472+<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
473+<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
474+<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
475+<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
476+<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
477+<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
478+<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
479+<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
480+<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
481+<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
482+<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
483+<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
484+<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
485+<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
486+<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
487+<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
488+<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
489+<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
490+<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
491+<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
492+<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
493+<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
494+<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
495+<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
496+<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
497+<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
498+<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
499+<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
500+<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
501+<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
502+<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
503+<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
504+<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
505+<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
506+<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
507+<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
508+<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
509+<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
510+<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
511+<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
512+<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
513+<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
514+<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
515+<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
516+<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
517+<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
518+<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
519+<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
520+<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
521+<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
522+<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
523+<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
524+<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
525+<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
526+<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
527+<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
528+<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
529+<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
530+<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
531+<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
532+<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
533+<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
534+<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
535+<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
536+<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
537+<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
538+<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
539+<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
540+<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
541+<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
542+<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
543+<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
544+<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
545+<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
546+<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
547+<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
548+<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
549+<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
550+<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
551+<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
552+<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
553+<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
554+<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
555+<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
556+<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
557+<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
558+<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
559+<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
560+<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
561+<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
562+<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
563+<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
564+<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
565+<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
566+<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
567+<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
568+<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
569+<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
570+<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
571+<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
572+<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
573+<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" />
574+<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" />
575+<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
576+<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
577+<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
578+<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
579+<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
580+<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
581+<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
582+<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
583+<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" />
584+<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
585+<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" />
586+<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
587+<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" />
588+<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" />
589+<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" />
590+<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" />
591+<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
592+<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
593+<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
594+<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
595+<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
596+<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
597+<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
598+<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
599+<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
600+<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
601+<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
602+<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
603+<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " />
604+<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
605+<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
606+<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
607+<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
608+<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
609+<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
610+<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
611+<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
612+<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
613+<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
614+<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
615+<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
616+<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
617+<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
618+<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
619+<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
620+<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
621+<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
622+<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
623+<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
624+<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
625+<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
626+<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
627+<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" />
628+<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
629+<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h16v393q-32 19 -32 55q0 26 19 45t45 19t45 -19t19 -45q0 -36 -32 -55v-9h272q16 0 16 -16v-224q0 -16 -16 -16h-272v-128h16q16 0 16 -16v-112h128 v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96q16 0 16 -16z" />
630+<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
631+<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
632+<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
633+<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
634+<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
635+<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
636+<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
637+<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
638+<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
639+<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
640+<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" />
641+<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
642+<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
643+<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
644+<glyph unicode="&#xf296;" horiz-adv-x="1792" />
645+<glyph unicode="&#xf297;" horiz-adv-x="1792" />
646+<glyph unicode="&#xf298;" horiz-adv-x="1792" />
647+<glyph unicode="&#xf299;" horiz-adv-x="1792" />
648+<glyph unicode="&#xf29a;" horiz-adv-x="1792" />
649+<glyph unicode="&#xf29b;" horiz-adv-x="1792" />
650+<glyph unicode="&#xf29c;" horiz-adv-x="1792" />
651+<glyph unicode="&#xf29d;" horiz-adv-x="1792" />
652+<glyph unicode="&#xf29e;" horiz-adv-x="1792" />
653+<glyph unicode="&#xf500;" horiz-adv-x="1792" />
654+</font>
655+</defs></svg>
Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.ttf+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.woff+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Fonts/fontawesome-webfont.woff2+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/loading.gif+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/loadingbar.gif+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/password-meter.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/rating.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_222222_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_2e83ff_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_333333_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_454545_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_888888_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_cd0a0a_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Images/ui-icons_ffffff_256x240.png+0−0

Binary file not shown.

Source/Libraries/GSF.Web/Shared/Content/Readme.txt+13−0
@@ -0,0 +1,13 @@
1+Notes:
2+
3+When adding CSS scripts to the shared resources, carefully review the code for "url(...)" references.
4+References are typically relative and need to be converted to explicit GSF resource paths, for example:
5+
6+ the following URL path:
7+ url("./images/ui-image.png")
8+
9+ would need to be replaced with:
10+ url("/@GSF/Web/Shared/Content/Images/ui-image.png")
11+
12+Referenced URL materials need to be added as embedded resources - ideally under the Content
13+folder, e.g., Images or Fonts, since they are for use by the style sheets.
Source/Libraries/GSF.Web/Shared/Content/font-awesome.css+2086−0
@@ -0,0 +1,2086 @@
1+/*!
2+ * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
3+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4+ */
5+/* FONT PATH
6+ * -------------------------- */
7+@font-face {
8+ font-family: 'FontAwesome';
9+ src: url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.eot?v=4.5.0');
10+ src: url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'), url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'), url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'), url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'), url('/@GSF/Web/Shared/Content/Fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg');
11+ font-weight: normal;
12+ font-style: normal;
13+}
14+.fa {
15+ display: inline-block;
16+ font: normal normal normal 14px/1 FontAwesome;
17+ font-size: inherit;
18+ text-rendering: auto;
19+ -webkit-font-smoothing: antialiased;
20+ -moz-osx-font-smoothing: grayscale;
21+}
22+/* makes the font 33% larger relative to the icon container */
23+.fa-lg {
24+ font-size: 1.33333333em;
25+ line-height: 0.75em;
26+ vertical-align: -15%;
27+}
28+.fa-2x {
29+ font-size: 2em;
30+}
31+.fa-3x {
32+ font-size: 3em;
33+}
34+.fa-4x {
35+ font-size: 4em;
36+}
37+.fa-5x {
38+ font-size: 5em;
39+}
40+.fa-fw {
41+ width: 1.28571429em;
42+ text-align: center;
43+}
44+.fa-ul {
45+ padding-left: 0;
46+ margin-left: 2.14285714em;
47+ list-style-type: none;
48+}
49+.fa-ul > li {
50+ position: relative;
51+}
52+.fa-li {
53+ position: absolute;
54+ left: -2.14285714em;
55+ width: 2.14285714em;
56+ top: 0.14285714em;
57+ text-align: center;
58+}
59+.fa-li.fa-lg {
60+ left: -1.85714286em;
61+}
62+.fa-border {
63+ padding: .2em .25em .15em;
64+ border: solid 0.08em #eeeeee;
65+ border-radius: .1em;
66+}
67+.fa-pull-left {
68+ float: left;
69+}
70+.fa-pull-right {
71+ float: right;
72+}
73+.fa.fa-pull-left {
74+ margin-right: .3em;
75+}
76+.fa.fa-pull-right {
77+ margin-left: .3em;
78+}
79+/* Deprecated as of 4.4.0 */
80+.pull-right {
81+ float: right;
82+}
83+.pull-left {
84+ float: left;
85+}
86+.fa.pull-left {
87+ margin-right: .3em;
88+}
89+.fa.pull-right {
90+ margin-left: .3em;
91+}
92+.fa-spin {
93+ -webkit-animation: fa-spin 2s infinite linear;
94+ animation: fa-spin 2s infinite linear;
95+}
96+.fa-pulse {
97+ -webkit-animation: fa-spin 1s infinite steps(8);
98+ animation: fa-spin 1s infinite steps(8);
99+}
100+@-webkit-keyframes fa-spin {
101+ 0% {
102+ -webkit-transform: rotate(0deg);
103+ transform: rotate(0deg);
104+ }
105+ 100% {
106+ -webkit-transform: rotate(359deg);
107+ transform: rotate(359deg);
108+ }
109+}
110+@keyframes fa-spin {
111+ 0% {
112+ -webkit-transform: rotate(0deg);
113+ transform: rotate(0deg);
114+ }
115+ 100% {
116+ -webkit-transform: rotate(359deg);
117+ transform: rotate(359deg);
118+ }
119+}
120+.fa-rotate-90 {
121+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
122+ -webkit-transform: rotate(90deg);
123+ -ms-transform: rotate(90deg);
124+ transform: rotate(90deg);
125+}
126+.fa-rotate-180 {
127+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
128+ -webkit-transform: rotate(180deg);
129+ -ms-transform: rotate(180deg);
130+ transform: rotate(180deg);
131+}
132+.fa-rotate-270 {
133+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
134+ -webkit-transform: rotate(270deg);
135+ -ms-transform: rotate(270deg);
136+ transform: rotate(270deg);
137+}
138+.fa-flip-horizontal {
139+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
140+ -webkit-transform: scale(-1, 1);
141+ -ms-transform: scale(-1, 1);
142+ transform: scale(-1, 1);
143+}
144+.fa-flip-vertical {
145+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
146+ -webkit-transform: scale(1, -1);
147+ -ms-transform: scale(1, -1);
148+ transform: scale(1, -1);
149+}
150+:root .fa-rotate-90,
151+:root .fa-rotate-180,
152+:root .fa-rotate-270,
153+:root .fa-flip-horizontal,
154+:root .fa-flip-vertical {
155+ filter: none;
156+}
157+.fa-stack {
158+ position: relative;
159+ display: inline-block;
160+ width: 2em;
161+ height: 2em;
162+ line-height: 2em;
163+ vertical-align: middle;
164+}
165+.fa-stack-1x,
166+.fa-stack-2x {
167+ position: absolute;
168+ left: 0;
169+ width: 100%;
170+ text-align: center;
171+}
172+.fa-stack-1x {
173+ line-height: inherit;
174+}
175+.fa-stack-2x {
176+ font-size: 2em;
177+}
178+.fa-inverse {
179+ color: #ffffff;
180+}
181+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
182+ readers do not read off random characters that represent icons */
183+.fa-glass:before {
184+ content: "\f000";
185+}
186+.fa-music:before {
187+ content: "\f001";
188+}
189+.fa-search:before {
190+ content: "\f002";
191+}
192+.fa-envelope-o:before {
193+ content: "\f003";
194+}
195+.fa-heart:before {
196+ content: "\f004";
197+}
198+.fa-star:before {
199+ content: "\f005";
200+}
201+.fa-star-o:before {
202+ content: "\f006";
203+}
204+.fa-user:before {
205+ content: "\f007";
206+}
207+.fa-film:before {
208+ content: "\f008";
209+}
210+.fa-th-large:before {
211+ content: "\f009";
212+}
213+.fa-th:before {
214+ content: "\f00a";
215+}
216+.fa-th-list:before {
217+ content: "\f00b";
218+}
219+.fa-check:before {
220+ content: "\f00c";
221+}
222+.fa-remove:before,
223+.fa-close:before,
224+.fa-times:before {
225+ content: "\f00d";
226+}
227+.fa-search-plus:before {
228+ content: "\f00e";
229+}
230+.fa-search-minus:before {
231+ content: "\f010";
232+}
233+.fa-power-off:before {
234+ content: "\f011";
235+}
236+.fa-signal:before {
237+ content: "\f012";
238+}
239+.fa-gear:before,
240+.fa-cog:before {
241+ content: "\f013";
242+}
243+.fa-trash-o:before {
244+ content: "\f014";
245+}
246+.fa-home:before {
247+ content: "\f015";
248+}
249+.fa-file-o:before {
250+ content: "\f016";
251+}
252+.fa-clock-o:before {
253+ content: "\f017";
254+}
255+.fa-road:before {
256+ content: "\f018";
257+}
258+.fa-download:before {
259+ content: "\f019";
260+}
261+.fa-arrow-circle-o-down:before {
262+ content: "\f01a";
263+}
264+.fa-arrow-circle-o-up:before {
265+ content: "\f01b";
266+}
267+.fa-inbox:before {
268+ content: "\f01c";
269+}
270+.fa-play-circle-o:before {
271+ content: "\f01d";
272+}
273+.fa-rotate-right:before,
274+.fa-repeat:before {
275+ content: "\f01e";
276+}
277+.fa-refresh:before {
278+ content: "\f021";
279+}
280+.fa-list-alt:before {
281+ content: "\f022";
282+}
283+.fa-lock:before {
284+ content: "\f023";
285+}
286+.fa-flag:before {
287+ content: "\f024";
288+}
289+.fa-headphones:before {
290+ content: "\f025";
291+}
292+.fa-volume-off:before {
293+ content: "\f026";
294+}
295+.fa-volume-down:before {
296+ content: "\f027";
297+}
298+.fa-volume-up:before {
299+ content: "\f028";
300+}
301+.fa-qrcode:before {
302+ content: "\f029";
303+}
304+.fa-barcode:before {
305+ content: "\f02a";
306+}
307+.fa-tag:before {
308+ content: "\f02b";
309+}
310+.fa-tags:before {
311+ content: "\f02c";
312+}
313+.fa-book:before {
314+ content: "\f02d";
315+}
316+.fa-bookmark:before {
317+ content: "\f02e";
318+}
319+.fa-print:before {
320+ content: "\f02f";
321+}
322+.fa-camera:before {
323+ content: "\f030";
324+}
325+.fa-font:before {
326+ content: "\f031";
327+}
328+.fa-bold:before {
329+ content: "\f032";
330+}
331+.fa-italic:before {
332+ content: "\f033";
333+}
334+.fa-text-height:before {
335+ content: "\f034";
336+}
337+.fa-text-width:before {
338+ content: "\f035";
339+}
340+.fa-align-left:before {
341+ content: "\f036";
342+}
343+.fa-align-center:before {
344+ content: "\f037";
345+}
346+.fa-align-right:before {
347+ content: "\f038";
348+}
349+.fa-align-justify:before {
350+ content: "\f039";
351+}
352+.fa-list:before {
353+ content: "\f03a";
354+}
355+.fa-dedent:before,
356+.fa-outdent:before {
357+ content: "\f03b";
358+}
359+.fa-indent:before {
360+ content: "\f03c";
361+}
362+.fa-video-camera:before {
363+ content: "\f03d";
364+}
365+.fa-photo:before,
366+.fa-image:before,
367+.fa-picture-o:before {
368+ content: "\f03e";
369+}
370+.fa-pencil:before {
371+ content: "\f040";
372+}
373+.fa-map-marker:before {
374+ content: "\f041";
375+}
376+.fa-adjust:before {
377+ content: "\f042";
378+}
379+.fa-tint:before {
380+ content: "\f043";
381+}
382+.fa-edit:before,
383+.fa-pencil-square-o:before {
384+ content: "\f044";
385+}
386+.fa-share-square-o:before {
387+ content: "\f045";
388+}
389+.fa-check-square-o:before {
390+ content: "\f046";
391+}
392+.fa-arrows:before {
393+ content: "\f047";
394+}
395+.fa-step-backward:before {
396+ content: "\f048";
397+}
398+.fa-fast-backward:before {
399+ content: "\f049";
400+}
401+.fa-backward:before {
402+ content: "\f04a";
403+}
404+.fa-play:before {
405+ content: "\f04b";
406+}
407+.fa-pause:before {
408+ content: "\f04c";
409+}
410+.fa-stop:before {
411+ content: "\f04d";
412+}
413+.fa-forward:before {
414+ content: "\f04e";
415+}
416+.fa-fast-forward:before {
417+ content: "\f050";
418+}
419+.fa-step-forward:before {
420+ content: "\f051";
421+}
422+.fa-eject:before {
423+ content: "\f052";
424+}
425+.fa-chevron-left:before {
426+ content: "\f053";
427+}
428+.fa-chevron-right:before {
429+ content: "\f054";
430+}
431+.fa-plus-circle:before {
432+ content: "\f055";
433+}
434+.fa-minus-circle:before {
435+ content: "\f056";
436+}
437+.fa-times-circle:before {
438+ content: "\f057";
439+}
440+.fa-check-circle:before {
441+ content: "\f058";
442+}
443+.fa-question-circle:before {
444+ content: "\f059";
445+}
446+.fa-info-circle:before {
447+ content: "\f05a";
448+}
449+.fa-crosshairs:before {
450+ content: "\f05b";
451+}
452+.fa-times-circle-o:before {
453+ content: "\f05c";
454+}
455+.fa-check-circle-o:before {
456+ content: "\f05d";
457+}
458+.fa-ban:before {
459+ content: "\f05e";
460+}
461+.fa-arrow-left:before {
462+ content: "\f060";
463+}
464+.fa-arrow-right:before {
465+ content: "\f061";
466+}
467+.fa-arrow-up:before {
468+ content: "\f062";
469+}
470+.fa-arrow-down:before {
471+ content: "\f063";
472+}
473+.fa-mail-forward:before,
474+.fa-share:before {
475+ content: "\f064";
476+}
477+.fa-expand:before {
478+ content: "\f065";
479+}
480+.fa-compress:before {
481+ content: "\f066";
482+}
483+.fa-plus:before {
484+ content: "\f067";
485+}
486+.fa-minus:before {
487+ content: "\f068";
488+}
489+.fa-asterisk:before {
490+ content: "\f069";
491+}
492+.fa-exclamation-circle:before {
493+ content: "\f06a";
494+}
495+.fa-gift:before {
496+ content: "\f06b";
497+}
498+.fa-leaf:before {
499+ content: "\f06c";
500+}
501+.fa-fire:before {
502+ content: "\f06d";
503+}
504+.fa-eye:before {
505+ content: "\f06e";
506+}
507+.fa-eye-slash:before {
508+ content: "\f070";
509+}
510+.fa-warning:before,
511+.fa-exclamation-triangle:before {
512+ content: "\f071";
513+}
514+.fa-plane:before {
515+ content: "\f072";
516+}
517+.fa-calendar:before {
518+ content: "\f073";
519+}
520+.fa-random:before {
521+ content: "\f074";
522+}
523+.fa-comment:before {
524+ content: "\f075";
525+}
526+.fa-magnet:before {
527+ content: "\f076";
528+}
529+.fa-chevron-up:before {
530+ content: "\f077";
531+}
532+.fa-chevron-down:before {
533+ content: "\f078";
534+}
535+.fa-retweet:before {
536+ content: "\f079";
537+}
538+.fa-shopping-cart:before {
539+ content: "\f07a";
540+}
541+.fa-folder:before {
542+ content: "\f07b";
543+}
544+.fa-folder-open:before {
545+ content: "\f07c";
546+}
547+.fa-arrows-v:before {
548+ content: "\f07d";
549+}
550+.fa-arrows-h:before {
551+ content: "\f07e";
552+}
553+.fa-bar-chart-o:before,
554+.fa-bar-chart:before {
555+ content: "\f080";
556+}
557+.fa-twitter-square:before {
558+ content: "\f081";
559+}
560+.fa-facebook-square:before {
561+ content: "\f082";
562+}
563+.fa-camera-retro:before {
564+ content: "\f083";
565+}
566+.fa-key:before {
567+ content: "\f084";
568+}
569+.fa-gears:before,
570+.fa-cogs:before {
571+ content: "\f085";
572+}
573+.fa-comments:before {
574+ content: "\f086";
575+}
576+.fa-thumbs-o-up:before {
577+ content: "\f087";
578+}
579+.fa-thumbs-o-down:before {
580+ content: "\f088";
581+}
582+.fa-star-half:before {
583+ content: "\f089";
584+}
585+.fa-heart-o:before {
586+ content: "\f08a";
587+}
588+.fa-sign-out:before {
589+ content: "\f08b";
590+}
591+.fa-linkedin-square:before {
592+ content: "\f08c";
593+}
594+.fa-thumb-tack:before {
595+ content: "\f08d";
596+}
597+.fa-external-link:before {
598+ content: "\f08e";
599+}
600+.fa-sign-in:before {
601+ content: "\f090";
602+}
603+.fa-trophy:before {
604+ content: "\f091";
605+}
606+.fa-github-square:before {
607+ content: "\f092";
608+}
609+.fa-upload:before {
610+ content: "\f093";
611+}
612+.fa-lemon-o:before {
613+ content: "\f094";
614+}
615+.fa-phone:before {
616+ content: "\f095";
617+}
618+.fa-square-o:before {
619+ content: "\f096";
620+}
621+.fa-bookmark-o:before {
622+ content: "\f097";
623+}
624+.fa-phone-square:before {
625+ content: "\f098";
626+}
627+.fa-twitter:before {
628+ content: "\f099";
629+}
630+.fa-facebook-f:before,
631+.fa-facebook:before {
632+ content: "\f09a";
633+}
634+.fa-github:before {
635+ content: "\f09b";
636+}
637+.fa-unlock:before {
638+ content: "\f09c";
639+}
640+.fa-credit-card:before {
641+ content: "\f09d";
642+}
643+.fa-feed:before,
644+.fa-rss:before {
645+ content: "\f09e";
646+}
647+.fa-hdd-o:before {
648+ content: "\f0a0";
649+}
650+.fa-bullhorn:before {
651+ content: "\f0a1";
652+}
653+.fa-bell:before {
654+ content: "\f0f3";
655+}
656+.fa-certificate:before {
657+ content: "\f0a3";
658+}
659+.fa-hand-o-right:before {
660+ content: "\f0a4";
661+}
662+.fa-hand-o-left:before {
663+ content: "\f0a5";
664+}
665+.fa-hand-o-up:before {
666+ content: "\f0a6";
667+}
668+.fa-hand-o-down:before {
669+ content: "\f0a7";
670+}
671+.fa-arrow-circle-left:before {
672+ content: "\f0a8";
673+}
674+.fa-arrow-circle-right:before {
675+ content: "\f0a9";
676+}
677+.fa-arrow-circle-up:before {
678+ content: "\f0aa";
679+}
680+.fa-arrow-circle-down:before {
681+ content: "\f0ab";
682+}
683+.fa-globe:before {
684+ content: "\f0ac";
685+}
686+.fa-wrench:before {
687+ content: "\f0ad";
688+}
689+.fa-tasks:before {
690+ content: "\f0ae";
691+}
692+.fa-filter:before {
693+ content: "\f0b0";
694+}
695+.fa-briefcase:before {
696+ content: "\f0b1";
697+}
698+.fa-arrows-alt:before {
699+ content: "\f0b2";
700+}
701+.fa-group:before,
702+.fa-users:before {
703+ content: "\f0c0";
704+}
705+.fa-chain:before,
706+.fa-link:before {
707+ content: "\f0c1";
708+}
709+.fa-cloud:before {
710+ content: "\f0c2";
711+}
712+.fa-flask:before {
713+ content: "\f0c3";
714+}
715+.fa-cut:before,
716+.fa-scissors:before {
717+ content: "\f0c4";
718+}
719+.fa-copy:before,
720+.fa-files-o:before {
721+ content: "\f0c5";
722+}
723+.fa-paperclip:before {
724+ content: "\f0c6";
725+}
726+.fa-save:before,
727+.fa-floppy-o:before {
728+ content: "\f0c7";
729+}
730+.fa-square:before {
731+ content: "\f0c8";
732+}
733+.fa-navicon:before,
734+.fa-reorder:before,
735+.fa-bars:before {
736+ content: "\f0c9";
737+}
738+.fa-list-ul:before {
739+ content: "\f0ca";
740+}
741+.fa-list-ol:before {
742+ content: "\f0cb";
743+}
744+.fa-strikethrough:before {
745+ content: "\f0cc";
746+}
747+.fa-underline:before {
748+ content: "\f0cd";
749+}
750+.fa-table:before {
751+ content: "\f0ce";
752+}
753+.fa-magic:before {
754+ content: "\f0d0";
755+}
756+.fa-truck:before {
757+ content: "\f0d1";
758+}
759+.fa-pinterest:before {
760+ content: "\f0d2";
761+}
762+.fa-pinterest-square:before {
763+ content: "\f0d3";
764+}
765+.fa-google-plus-square:before {
766+ content: "\f0d4";
767+}
768+.fa-google-plus:before {
769+ content: "\f0d5";
770+}
771+.fa-money:before {
772+ content: "\f0d6";
773+}
774+.fa-caret-down:before {
775+ content: "\f0d7";
776+}
777+.fa-caret-up:before {
778+ content: "\f0d8";
779+}
780+.fa-caret-left:before {
781+ content: "\f0d9";
782+}
783+.fa-caret-right:before {
784+ content: "\f0da";
785+}
786+.fa-columns:before {
787+ content: "\f0db";
788+}
789+.fa-unsorted:before,
790+.fa-sort:before {
791+ content: "\f0dc";
792+}
793+.fa-sort-down:before,
794+.fa-sort-desc:before {
795+ content: "\f0dd";
796+}
797+.fa-sort-up:before,
798+.fa-sort-asc:before {
799+ content: "\f0de";
800+}
801+.fa-envelope:before {
802+ content: "\f0e0";
803+}
804+.fa-linkedin:before {
805+ content: "\f0e1";
806+}
807+.fa-rotate-left:before,
808+.fa-undo:before {
809+ content: "\f0e2";
810+}
811+.fa-legal:before,
812+.fa-gavel:before {
813+ content: "\f0e3";
814+}
815+.fa-dashboard:before,
816+.fa-tachometer:before {
817+ content: "\f0e4";
818+}
819+.fa-comment-o:before {
820+ content: "\f0e5";
821+}
822+.fa-comments-o:before {
823+ content: "\f0e6";
824+}
825+.fa-flash:before,
826+.fa-bolt:before {
827+ content: "\f0e7";
828+}
829+.fa-sitemap:before {
830+ content: "\f0e8";
831+}
832+.fa-umbrella:before {
833+ content: "\f0e9";
834+}
835+.fa-paste:before,
836+.fa-clipboard:before {
837+ content: "\f0ea";
838+}
839+.fa-lightbulb-o:before {
840+ content: "\f0eb";
841+}
842+.fa-exchange:before {
843+ content: "\f0ec";
844+}
845+.fa-cloud-download:before {
846+ content: "\f0ed";
847+}
848+.fa-cloud-upload:before {
849+ content: "\f0ee";
850+}
851+.fa-user-md:before {
852+ content: "\f0f0";
853+}
854+.fa-stethoscope:before {
855+ content: "\f0f1";
856+}
857+.fa-suitcase:before {
858+ content: "\f0f2";
859+}
860+.fa-bell-o:before {
861+ content: "\f0a2";
862+}
863+.fa-coffee:before {
864+ content: "\f0f4";
865+}
866+.fa-cutlery:before {
867+ content: "\f0f5";
868+}
869+.fa-file-text-o:before {
870+ content: "\f0f6";
871+}
872+.fa-building-o:before {
873+ content: "\f0f7";
874+}
875+.fa-hospital-o:before {
876+ content: "\f0f8";
877+}
878+.fa-ambulance:before {
879+ content: "\f0f9";
880+}
881+.fa-medkit:before {
882+ content: "\f0fa";
883+}
884+.fa-fighter-jet:before {
885+ content: "\f0fb";
886+}
887+.fa-beer:before {
888+ content: "\f0fc";
889+}
890+.fa-h-square:before {
891+ content: "\f0fd";
892+}
893+.fa-plus-square:before {
894+ content: "\f0fe";
895+}
896+.fa-angle-double-left:before {
897+ content: "\f100";
898+}
899+.fa-angle-double-right:before {
900+ content: "\f101";
901+}
902+.fa-angle-double-up:before {
903+ content: "\f102";
904+}
905+.fa-angle-double-down:before {
906+ content: "\f103";
907+}
908+.fa-angle-left:before {
909+ content: "\f104";
910+}
911+.fa-angle-right:before {
912+ content: "\f105";
913+}
914+.fa-angle-up:before {
915+ content: "\f106";
916+}
917+.fa-angle-down:before {
918+ content: "\f107";
919+}
920+.fa-desktop:before {
921+ content: "\f108";
922+}
923+.fa-laptop:before {
924+ content: "\f109";
925+}
926+.fa-tablet:before {
927+ content: "\f10a";
928+}
929+.fa-mobile-phone:before,
930+.fa-mobile:before {
931+ content: "\f10b";
932+}
933+.fa-circle-o:before {
934+ content: "\f10c";
935+}
936+.fa-quote-left:before {
937+ content: "\f10d";
938+}
939+.fa-quote-right:before {
940+ content: "\f10e";
941+}
942+.fa-spinner:before {
943+ content: "\f110";
944+}
945+.fa-circle:before {
946+ content: "\f111";
947+}
948+.fa-mail-reply:before,
949+.fa-reply:before {
950+ content: "\f112";
951+}
952+.fa-github-alt:before {
953+ content: "\f113";
954+}
955+.fa-folder-o:before {
956+ content: "\f114";
957+}
958+.fa-folder-open-o:before {
959+ content: "\f115";
960+}
961+.fa-smile-o:before {
962+ content: "\f118";
963+}
964+.fa-frown-o:before {
965+ content: "\f119";
966+}
967+.fa-meh-o:before {
968+ content: "\f11a";
969+}
970+.fa-gamepad:before {
971+ content: "\f11b";
972+}
973+.fa-keyboard-o:before {
974+ content: "\f11c";
975+}
976+.fa-flag-o:before {
977+ content: "\f11d";
978+}
979+.fa-flag-checkered:before {
980+ content: "\f11e";
981+}
982+.fa-terminal:before {
983+ content: "\f120";
984+}
985+.fa-code:before {
986+ content: "\f121";
987+}
988+.fa-mail-reply-all:before,
989+.fa-reply-all:before {
990+ content: "\f122";
991+}
992+.fa-star-half-empty:before,
993+.fa-star-half-full:before,
994+.fa-star-half-o:before {
995+ content: "\f123";
996+}
997+.fa-location-arrow:before {
998+ content: "\f124";
999+}
1000+.fa-crop:before {
1001+ content: "\f125";
1002+}
1003+.fa-code-fork:before {
1004+ content: "\f126";
1005+}
1006+.fa-unlink:before,
1007+.fa-chain-broken:before {
1008+ content: "\f127";
1009+}
1010+.fa-question:before {
1011+ content: "\f128";
1012+}
1013+.fa-info:before {
1014+ content: "\f129";
1015+}
1016+.fa-exclamation:before {
1017+ content: "\f12a";
1018+}
1019+.fa-superscript:before {
1020+ content: "\f12b";
1021+}
1022+.fa-subscript:before {
1023+ content: "\f12c";
1024+}
1025+.fa-eraser:before {
1026+ content: "\f12d";
1027+}
1028+.fa-puzzle-piece:before {
1029+ content: "\f12e";
1030+}
1031+.fa-microphone:before {
1032+ content: "\f130";
1033+}
1034+.fa-microphone-slash:before {
1035+ content: "\f131";
1036+}
1037+.fa-shield:before {
1038+ content: "\f132";
1039+}
1040+.fa-calendar-o:before {
1041+ content: "\f133";
1042+}
1043+.fa-fire-extinguisher:before {
1044+ content: "\f134";
1045+}
1046+.fa-rocket:before {
1047+ content: "\f135";
1048+}
1049+.fa-maxcdn:before {
1050+ content: "\f136";
1051+}
1052+.fa-chevron-circle-left:before {
1053+ content: "\f137";
1054+}
1055+.fa-chevron-circle-right:before {
1056+ content: "\f138";
1057+}
1058+.fa-chevron-circle-up:before {
1059+ content: "\f139";
1060+}
1061+.fa-chevron-circle-down:before {
1062+ content: "\f13a";
1063+}
1064+.fa-html5:before {
1065+ content: "\f13b";
1066+}
1067+.fa-css3:before {
1068+ content: "\f13c";
1069+}
1070+.fa-anchor:before {
1071+ content: "\f13d";
1072+}
1073+.fa-unlock-alt:before {
1074+ content: "\f13e";
1075+}
1076+.fa-bullseye:before {
1077+ content: "\f140";
1078+}
1079+.fa-ellipsis-h:before {
1080+ content: "\f141";
1081+}
1082+.fa-ellipsis-v:before {
1083+ content: "\f142";
1084+}
1085+.fa-rss-square:before {
1086+ content: "\f143";
1087+}
1088+.fa-play-circle:before {
1089+ content: "\f144";
1090+}
1091+.fa-ticket:before {
1092+ content: "\f145";
1093+}
1094+.fa-minus-square:before {
1095+ content: "\f146";
1096+}
1097+.fa-minus-square-o:before {
1098+ content: "\f147";
1099+}
1100+.fa-level-up:before {
1101+ content: "\f148";
1102+}
1103+.fa-level-down:before {
1104+ content: "\f149";
1105+}
1106+.fa-check-square:before {
1107+ content: "\f14a";
1108+}
1109+.fa-pencil-square:before {
1110+ content: "\f14b";
1111+}
1112+.fa-external-link-square:before {
1113+ content: "\f14c";
1114+}
1115+.fa-share-square:before {
1116+ content: "\f14d";
1117+}
1118+.fa-compass:before {
1119+ content: "\f14e";
1120+}
1121+.fa-toggle-down:before,
1122+.fa-caret-square-o-down:before {
1123+ content: "\f150";
1124+}
1125+.fa-toggle-up:before,
1126+.fa-caret-square-o-up:before {
1127+ content: "\f151";
1128+}
1129+.fa-toggle-right:before,
1130+.fa-caret-square-o-right:before {
1131+ content: "\f152";
1132+}
1133+.fa-euro:before,
1134+.fa-eur:before {
1135+ content: "\f153";
1136+}
1137+.fa-gbp:before {
1138+ content: "\f154";
1139+}
1140+.fa-dollar:before,
1141+.fa-usd:before {
1142+ content: "\f155";
1143+}
1144+.fa-rupee:before,
1145+.fa-inr:before {
1146+ content: "\f156";
1147+}
1148+.fa-cny:before,
1149+.fa-rmb:before,
1150+.fa-yen:before,
1151+.fa-jpy:before {
1152+ content: "\f157";
1153+}
1154+.fa-ruble:before,
1155+.fa-rouble:before,
1156+.fa-rub:before {
1157+ content: "\f158";
1158+}
1159+.fa-won:before,
1160+.fa-krw:before {
1161+ content: "\f159";
1162+}
1163+.fa-bitcoin:before,
1164+.fa-btc:before {
1165+ content: "\f15a";
1166+}
1167+.fa-file:before {
1168+ content: "\f15b";
1169+}
1170+.fa-file-text:before {
1171+ content: "\f15c";
1172+}
1173+.fa-sort-alpha-asc:before {
1174+ content: "\f15d";
1175+}
1176+.fa-sort-alpha-desc:before {
1177+ content: "\f15e";
1178+}
1179+.fa-sort-amount-asc:before {
1180+ content: "\f160";
1181+}
1182+.fa-sort-amount-desc:before {
1183+ content: "\f161";
1184+}
1185+.fa-sort-numeric-asc:before {
1186+ content: "\f162";
1187+}
1188+.fa-sort-numeric-desc:before {
1189+ content: "\f163";
1190+}
1191+.fa-thumbs-up:before {
1192+ content: "\f164";
1193+}
1194+.fa-thumbs-down:before {
1195+ content: "\f165";
1196+}
1197+.fa-youtube-square:before {
1198+ content: "\f166";
1199+}
1200+.fa-youtube:before {
1201+ content: "\f167";
1202+}
1203+.fa-xing:before {
1204+ content: "\f168";
1205+}
1206+.fa-xing-square:before {
1207+ content: "\f169";
1208+}
1209+.fa-youtube-play:before {
1210+ content: "\f16a";
1211+}
1212+.fa-dropbox:before {
1213+ content: "\f16b";
1214+}
1215+.fa-stack-overflow:before {
1216+ content: "\f16c";
1217+}
1218+.fa-instagram:before {
1219+ content: "\f16d";
1220+}
1221+.fa-flickr:before {
1222+ content: "\f16e";
1223+}
1224+.fa-adn:before {
1225+ content: "\f170";
1226+}
1227+.fa-bitbucket:before {
1228+ content: "\f171";
1229+}
1230+.fa-bitbucket-square:before {
1231+ content: "\f172";
1232+}
1233+.fa-tumblr:before {
1234+ content: "\f173";
1235+}
1236+.fa-tumblr-square:before {
1237+ content: "\f174";
1238+}
1239+.fa-long-arrow-down:before {
1240+ content: "\f175";
1241+}
1242+.fa-long-arrow-up:before {
1243+ content: "\f176";
1244+}
1245+.fa-long-arrow-left:before {
1246+ content: "\f177";
1247+}
1248+.fa-long-arrow-right:before {
1249+ content: "\f178";
1250+}
1251+.fa-apple:before {
1252+ content: "\f179";
1253+}
1254+.fa-windows:before {
1255+ content: "\f17a";
1256+}
1257+.fa-android:before {
1258+ content: "\f17b";
1259+}
1260+.fa-linux:before {
1261+ content: "\f17c";
1262+}
1263+.fa-dribbble:before {
1264+ content: "\f17d";
1265+}
1266+.fa-skype:before {
1267+ content: "\f17e";
1268+}
1269+.fa-foursquare:before {
1270+ content: "\f180";
1271+}
1272+.fa-trello:before {
1273+ content: "\f181";
1274+}
1275+.fa-female:before {
1276+ content: "\f182";
1277+}
1278+.fa-male:before {
1279+ content: "\f183";
1280+}
1281+.fa-gittip:before,
1282+.fa-gratipay:before {
1283+ content: "\f184";
1284+}
1285+.fa-sun-o:before {
1286+ content: "\f185";
1287+}
1288+.fa-moon-o:before {
1289+ content: "\f186";
1290+}
1291+.fa-archive:before {
1292+ content: "\f187";
1293+}
1294+.fa-bug:before {
1295+ content: "\f188";
1296+}
1297+.fa-vk:before {
1298+ content: "\f189";
1299+}
1300+.fa-weibo:before {
1301+ content: "\f18a";
1302+}
1303+.fa-renren:before {
1304+ content: "\f18b";
1305+}
1306+.fa-pagelines:before {
1307+ content: "\f18c";
1308+}
1309+.fa-stack-exchange:before {
1310+ content: "\f18d";
1311+}
1312+.fa-arrow-circle-o-right:before {
1313+ content: "\f18e";
1314+}
1315+.fa-arrow-circle-o-left:before {
1316+ content: "\f190";
1317+}
1318+.fa-toggle-left:before,
1319+.fa-caret-square-o-left:before {
1320+ content: "\f191";
1321+}
1322+.fa-dot-circle-o:before {
1323+ content: "\f192";
1324+}
1325+.fa-wheelchair:before {
1326+ content: "\f193";
1327+}
1328+.fa-vimeo-square:before {
1329+ content: "\f194";
1330+}
1331+.fa-turkish-lira:before,
1332+.fa-try:before {
1333+ content: "\f195";
1334+}
1335+.fa-plus-square-o:before {
1336+ content: "\f196";
1337+}
1338+.fa-space-shuttle:before {
1339+ content: "\f197";
1340+}
1341+.fa-slack:before {
1342+ content: "\f198";
1343+}
1344+.fa-envelope-square:before {
1345+ content: "\f199";
1346+}
1347+.fa-wordpress:before {
1348+ content: "\f19a";
1349+}
1350+.fa-openid:before {
1351+ content: "\f19b";
1352+}
1353+.fa-institution:before,
1354+.fa-bank:before,
1355+.fa-university:before {
1356+ content: "\f19c";
1357+}
1358+.fa-mortar-board:before,
1359+.fa-graduation-cap:before {
1360+ content: "\f19d";
1361+}
1362+.fa-yahoo:before {
1363+ content: "\f19e";
1364+}
1365+.fa-google:before {
1366+ content: "\f1a0";
1367+}
1368+.fa-reddit:before {
1369+ content: "\f1a1";
1370+}
1371+.fa-reddit-square:before {
1372+ content: "\f1a2";
1373+}
1374+.fa-stumbleupon-circle:before {
1375+ content: "\f1a3";
1376+}
1377+.fa-stumbleupon:before {
1378+ content: "\f1a4";
1379+}
1380+.fa-delicious:before {
1381+ content: "\f1a5";
1382+}
1383+.fa-digg:before {
1384+ content: "\f1a6";
1385+}
1386+.fa-pied-piper:before {
1387+ content: "\f1a7";
1388+}
1389+.fa-pied-piper-alt:before {
1390+ content: "\f1a8";
1391+}
1392+.fa-drupal:before {
1393+ content: "\f1a9";
1394+}
1395+.fa-joomla:before {
1396+ content: "\f1aa";
1397+}
1398+.fa-language:before {
1399+ content: "\f1ab";
1400+}
1401+.fa-fax:before {
1402+ content: "\f1ac";
1403+}
1404+.fa-building:before {
1405+ content: "\f1ad";
1406+}
1407+.fa-child:before {
1408+ content: "\f1ae";
1409+}
1410+.fa-paw:before {
1411+ content: "\f1b0";
1412+}
1413+.fa-spoon:before {
1414+ content: "\f1b1";
1415+}
1416+.fa-cube:before {
1417+ content: "\f1b2";
1418+}
1419+.fa-cubes:before {
1420+ content: "\f1b3";
1421+}
1422+.fa-behance:before {
1423+ content: "\f1b4";
1424+}
1425+.fa-behance-square:before {
1426+ content: "\f1b5";
1427+}
1428+.fa-steam:before {
1429+ content: "\f1b6";
1430+}
1431+.fa-steam-square:before {
1432+ content: "\f1b7";
1433+}
1434+.fa-recycle:before {
1435+ content: "\f1b8";
1436+}
1437+.fa-automobile:before,
1438+.fa-car:before {
1439+ content: "\f1b9";
1440+}
1441+.fa-cab:before,
1442+.fa-taxi:before {
1443+ content: "\f1ba";
1444+}
1445+.fa-tree:before {
1446+ content: "\f1bb";
1447+}
1448+.fa-spotify:before {
1449+ content: "\f1bc";
1450+}
1451+.fa-deviantart:before {
1452+ content: "\f1bd";
1453+}
1454+.fa-soundcloud:before {
1455+ content: "\f1be";
1456+}
1457+.fa-database:before {
1458+ content: "\f1c0";
1459+}
1460+.fa-file-pdf-o:before {
1461+ content: "\f1c1";
1462+}
1463+.fa-file-word-o:before {
1464+ content: "\f1c2";
1465+}
1466+.fa-file-excel-o:before {
1467+ content: "\f1c3";
1468+}
1469+.fa-file-powerpoint-o:before {
1470+ content: "\f1c4";
1471+}
1472+.fa-file-photo-o:before,
1473+.fa-file-picture-o:before,
1474+.fa-file-image-o:before {
1475+ content: "\f1c5";
1476+}
1477+.fa-file-zip-o:before,
1478+.fa-file-archive-o:before {
1479+ content: "\f1c6";
1480+}
1481+.fa-file-sound-o:before,
1482+.fa-file-audio-o:before {
1483+ content: "\f1c7";
1484+}
1485+.fa-file-movie-o:before,
1486+.fa-file-video-o:before {
1487+ content: "\f1c8";
1488+}
1489+.fa-file-code-o:before {
1490+ content: "\f1c9";
1491+}
1492+.fa-vine:before {
1493+ content: "\f1ca";
1494+}
1495+.fa-codepen:before {
1496+ content: "\f1cb";
1497+}
1498+.fa-jsfiddle:before {
1499+ content: "\f1cc";
1500+}
1501+.fa-life-bouy:before,
1502+.fa-life-buoy:before,
1503+.fa-life-saver:before,
1504+.fa-support:before,
1505+.fa-life-ring:before {
1506+ content: "\f1cd";
1507+}
1508+.fa-circle-o-notch:before {
1509+ content: "\f1ce";
1510+}
1511+.fa-ra:before,
1512+.fa-rebel:before {
1513+ content: "\f1d0";
1514+}
1515+.fa-ge:before,
1516+.fa-empire:before {
1517+ content: "\f1d1";
1518+}
1519+.fa-git-square:before {
1520+ content: "\f1d2";
1521+}
1522+.fa-git:before {
1523+ content: "\f1d3";
1524+}
1525+.fa-y-combinator-square:before,
1526+.fa-yc-square:before,
1527+.fa-hacker-news:before {
1528+ content: "\f1d4";
1529+}
1530+.fa-tencent-weibo:before {
1531+ content: "\f1d5";
1532+}
1533+.fa-qq:before {
1534+ content: "\f1d6";
1535+}
1536+.fa-wechat:before,
1537+.fa-weixin:before {
1538+ content: "\f1d7";
1539+}
1540+.fa-send:before,
1541+.fa-paper-plane:before {
1542+ content: "\f1d8";
1543+}
1544+.fa-send-o:before,
1545+.fa-paper-plane-o:before {
1546+ content: "\f1d9";
1547+}
1548+.fa-history:before {
1549+ content: "\f1da";
1550+}
1551+.fa-circle-thin:before {
1552+ content: "\f1db";
1553+}
1554+.fa-header:before {
1555+ content: "\f1dc";
1556+}
1557+.fa-paragraph:before {
1558+ content: "\f1dd";
1559+}
1560+.fa-sliders:before {
1561+ content: "\f1de";
1562+}
1563+.fa-share-alt:before {
1564+ content: "\f1e0";
1565+}
1566+.fa-share-alt-square:before {
1567+ content: "\f1e1";
1568+}
1569+.fa-bomb:before {
1570+ content: "\f1e2";
1571+}
1572+.fa-soccer-ball-o:before,
1573+.fa-futbol-o:before {
1574+ content: "\f1e3";
1575+}
1576+.fa-tty:before {
1577+ content: "\f1e4";
1578+}
1579+.fa-binoculars:before {
1580+ content: "\f1e5";
1581+}
1582+.fa-plug:before {
1583+ content: "\f1e6";
1584+}
1585+.fa-slideshare:before {
1586+ content: "\f1e7";
1587+}
1588+.fa-twitch:before {
1589+ content: "\f1e8";
1590+}
1591+.fa-yelp:before {
1592+ content: "\f1e9";
1593+}
1594+.fa-newspaper-o:before {
1595+ content: "\f1ea";
1596+}
1597+.fa-wifi:before {
1598+ content: "\f1eb";
1599+}
1600+.fa-calculator:before {
1601+ content: "\f1ec";
1602+}
1603+.fa-paypal:before {
1604+ content: "\f1ed";
1605+}
1606+.fa-google-wallet:before {
1607+ content: "\f1ee";
1608+}
1609+.fa-cc-visa:before {
1610+ content: "\f1f0";
1611+}
1612+.fa-cc-mastercard:before {
1613+ content: "\f1f1";
1614+}
1615+.fa-cc-discover:before {
1616+ content: "\f1f2";
1617+}
1618+.fa-cc-amex:before {
1619+ content: "\f1f3";
1620+}
1621+.fa-cc-paypal:before {
1622+ content: "\f1f4";
1623+}
1624+.fa-cc-stripe:before {
1625+ content: "\f1f5";
1626+}
1627+.fa-bell-slash:before {
1628+ content: "\f1f6";
1629+}
1630+.fa-bell-slash-o:before {
1631+ content: "\f1f7";
1632+}
1633+.fa-trash:before {
1634+ content: "\f1f8";
1635+}
1636+.fa-copyright:before {
1637+ content: "\f1f9";
1638+}
1639+.fa-at:before {
1640+ content: "\f1fa";
1641+}
1642+.fa-eyedropper:before {
1643+ content: "\f1fb";
1644+}
1645+.fa-paint-brush:before {
1646+ content: "\f1fc";
1647+}
1648+.fa-birthday-cake:before {
1649+ content: "\f1fd";
1650+}
1651+.fa-area-chart:before {
1652+ content: "\f1fe";
1653+}
1654+.fa-pie-chart:before {
1655+ content: "\f200";
1656+}
1657+.fa-line-chart:before {
1658+ content: "\f201";
1659+}
1660+.fa-lastfm:before {
1661+ content: "\f202";
1662+}
1663+.fa-lastfm-square:before {
1664+ content: "\f203";
1665+}
1666+.fa-toggle-off:before {
1667+ content: "\f204";
1668+}
1669+.fa-toggle-on:before {
1670+ content: "\f205";
1671+}
1672+.fa-bicycle:before {
1673+ content: "\f206";
1674+}
1675+.fa-bus:before {
1676+ content: "\f207";
1677+}
1678+.fa-ioxhost:before {
1679+ content: "\f208";
1680+}
1681+.fa-angellist:before {
1682+ content: "\f209";
1683+}
1684+.fa-cc:before {
1685+ content: "\f20a";
1686+}
1687+.fa-shekel:before,
1688+.fa-sheqel:before,
1689+.fa-ils:before {
1690+ content: "\f20b";
1691+}
1692+.fa-meanpath:before {
1693+ content: "\f20c";
1694+}
1695+.fa-buysellads:before {
1696+ content: "\f20d";
1697+}
1698+.fa-connectdevelop:before {
1699+ content: "\f20e";
1700+}
1701+.fa-dashcube:before {
1702+ content: "\f210";
1703+}
1704+.fa-forumbee:before {
1705+ content: "\f211";
1706+}
1707+.fa-leanpub:before {
1708+ content: "\f212";
1709+}
1710+.fa-sellsy:before {
1711+ content: "\f213";
1712+}
1713+.fa-shirtsinbulk:before {
1714+ content: "\f214";
1715+}
1716+.fa-simplybuilt:before {
1717+ content: "\f215";
1718+}
1719+.fa-skyatlas:before {
1720+ content: "\f216";
1721+}
1722+.fa-cart-plus:before {
1723+ content: "\f217";
1724+}
1725+.fa-cart-arrow-down:before {
1726+ content: "\f218";
1727+}
1728+.fa-diamond:before {
1729+ content: "\f219";
1730+}
1731+.fa-ship:before {
1732+ content: "\f21a";
1733+}
1734+.fa-user-secret:before {
1735+ content: "\f21b";
1736+}
1737+.fa-motorcycle:before {
1738+ content: "\f21c";
1739+}
1740+.fa-street-view:before {
1741+ content: "\f21d";
1742+}
1743+.fa-heartbeat:before {
1744+ content: "\f21e";
1745+}
1746+.fa-venus:before {
1747+ content: "\f221";
1748+}
1749+.fa-mars:before {
1750+ content: "\f222";
1751+}
1752+.fa-mercury:before {
1753+ content: "\f223";
1754+}
1755+.fa-intersex:before,
1756+.fa-transgender:before {
1757+ content: "\f224";
1758+}
1759+.fa-transgender-alt:before {
1760+ content: "\f225";
1761+}
1762+.fa-venus-double:before {
1763+ content: "\f226";
1764+}
1765+.fa-mars-double:before {
1766+ content: "\f227";
1767+}
1768+.fa-venus-mars:before {
1769+ content: "\f228";
1770+}
1771+.fa-mars-stroke:before {
1772+ content: "\f229";
1773+}
1774+.fa-mars-stroke-v:before {
1775+ content: "\f22a";
1776+}
1777+.fa-mars-stroke-h:before {
1778+ content: "\f22b";
1779+}
1780+.fa-neuter:before {
1781+ content: "\f22c";
1782+}
1783+.fa-genderless:before {
1784+ content: "\f22d";
1785+}
1786+.fa-facebook-official:before {
1787+ content: "\f230";
1788+}
1789+.fa-pinterest-p:before {
1790+ content: "\f231";
1791+}
1792+.fa-whatsapp:before {
1793+ content: "\f232";
1794+}
1795+.fa-server:before {
1796+ content: "\f233";
1797+}
1798+.fa-user-plus:before {
1799+ content: "\f234";
1800+}
1801+.fa-user-times:before {
1802+ content: "\f235";
1803+}
1804+.fa-hotel:before,
1805+.fa-bed:before {
1806+ content: "\f236";
1807+}
1808+.fa-viacoin:before {
1809+ content: "\f237";
1810+}
1811+.fa-train:before {
1812+ content: "\f238";
1813+}
1814+.fa-subway:before {
1815+ content: "\f239";
1816+}
1817+.fa-medium:before {
1818+ content: "\f23a";
1819+}
1820+.fa-yc:before,
1821+.fa-y-combinator:before {
1822+ content: "\f23b";
1823+}
1824+.fa-optin-monster:before {
1825+ content: "\f23c";
1826+}
1827+.fa-opencart:before {
1828+ content: "\f23d";
1829+}
1830+.fa-expeditedssl:before {
1831+ content: "\f23e";
1832+}
1833+.fa-battery-4:before,
1834+.fa-battery-full:before {
1835+ content: "\f240";
1836+}
1837+.fa-battery-3:before,
1838+.fa-battery-three-quarters:before {
1839+ content: "\f241";
1840+}
1841+.fa-battery-2:before,
1842+.fa-battery-half:before {
1843+ content: "\f242";
1844+}
1845+.fa-battery-1:before,
1846+.fa-battery-quarter:before {
1847+ content: "\f243";
1848+}
1849+.fa-battery-0:before,
1850+.fa-battery-empty:before {
1851+ content: "\f244";
1852+}
1853+.fa-mouse-pointer:before {
1854+ content: "\f245";
1855+}
1856+.fa-i-cursor:before {
1857+ content: "\f246";
1858+}
1859+.fa-object-group:before {
1860+ content: "\f247";
1861+}
1862+.fa-object-ungroup:before {
1863+ content: "\f248";
1864+}
1865+.fa-sticky-note:before {
1866+ content: "\f249";
1867+}
1868+.fa-sticky-note-o:before {
1869+ content: "\f24a";
1870+}
1871+.fa-cc-jcb:before {
1872+ content: "\f24b";
1873+}
1874+.fa-cc-diners-club:before {
1875+ content: "\f24c";
1876+}
1877+.fa-clone:before {
1878+ content: "\f24d";
1879+}
1880+.fa-balance-scale:before {
1881+ content: "\f24e";
1882+}
1883+.fa-hourglass-o:before {
1884+ content: "\f250";
1885+}
1886+.fa-hourglass-1:before,
1887+.fa-hourglass-start:before {
1888+ content: "\f251";
1889+}
1890+.fa-hourglass-2:before,
1891+.fa-hourglass-half:before {
1892+ content: "\f252";
1893+}
1894+.fa-hourglass-3:before,
1895+.fa-hourglass-end:before {
1896+ content: "\f253";
1897+}
1898+.fa-hourglass:before {
1899+ content: "\f254";
1900+}
1901+.fa-hand-grab-o:before,
1902+.fa-hand-rock-o:before {
1903+ content: "\f255";
1904+}
1905+.fa-hand-stop-o:before,
1906+.fa-hand-paper-o:before {
1907+ content: "\f256";
1908+}
1909+.fa-hand-scissors-o:before {
1910+ content: "\f257";
1911+}
1912+.fa-hand-lizard-o:before {
1913+ content: "\f258";
1914+}
1915+.fa-hand-spock-o:before {
1916+ content: "\f259";
1917+}
1918+.fa-hand-pointer-o:before {
1919+ content: "\f25a";
1920+}
1921+.fa-hand-peace-o:before {
1922+ content: "\f25b";
1923+}
1924+.fa-trademark:before {
1925+ content: "\f25c";
1926+}
1927+.fa-registered:before {
1928+ content: "\f25d";
1929+}
1930+.fa-creative-commons:before {
1931+ content: "\f25e";
1932+}
1933+.fa-gg:before {
1934+ content: "\f260";
1935+}
1936+.fa-gg-circle:before {
1937+ content: "\f261";
1938+}
1939+.fa-tripadvisor:before {
1940+ content: "\f262";
1941+}
1942+.fa-odnoklassniki:before {
1943+ content: "\f263";
1944+}
1945+.fa-odnoklassniki-square:before {
1946+ content: "\f264";
1947+}
1948+.fa-get-pocket:before {
1949+ content: "\f265";
1950+}
1951+.fa-wikipedia-w:before {
1952+ content: "\f266";
1953+}
1954+.fa-safari:before {
1955+ content: "\f267";
1956+}
1957+.fa-chrome:before {
1958+ content: "\f268";
1959+}
1960+.fa-firefox:before {
1961+ content: "\f269";
1962+}
1963+.fa-opera:before {
1964+ content: "\f26a";
1965+}
1966+.fa-internet-explorer:before {
1967+ content: "\f26b";
1968+}
1969+.fa-tv:before,
1970+.fa-television:before {
1971+ content: "\f26c";
1972+}
1973+.fa-contao:before {
1974+ content: "\f26d";
1975+}
1976+.fa-500px:before {
1977+ content: "\f26e";
1978+}
1979+.fa-amazon:before {
1980+ content: "\f270";
1981+}
1982+.fa-calendar-plus-o:before {
1983+ content: "\f271";
1984+}
1985+.fa-calendar-minus-o:before {
1986+ content: "\f272";
1987+}
1988+.fa-calendar-times-o:before {
1989+ content: "\f273";
1990+}
1991+.fa-calendar-check-o:before {
1992+ content: "\f274";
1993+}
1994+.fa-industry:before {
1995+ content: "\f275";
1996+}
1997+.fa-map-pin:before {
1998+ content: "\f276";
1999+}
2000+.fa-map-signs:before {
2001+ content: "\f277";
2002+}
2003+.fa-map-o:before {
2004+ content: "\f278";
2005+}
2006+.fa-map:before {
2007+ content: "\f279";
2008+}
2009+.fa-commenting:before {
2010+ content: "\f27a";
2011+}
2012+.fa-commenting-o:before {
2013+ content: "\f27b";
2014+}
2015+.fa-houzz:before {
2016+ content: "\f27c";
2017+}
2018+.fa-vimeo:before {
2019+ content: "\f27d";
2020+}
2021+.fa-black-tie:before {
2022+ content: "\f27e";
2023+}
2024+.fa-fonticons:before {
2025+ content: "\f280";
2026+}
2027+.fa-reddit-alien:before {
2028+ content: "\f281";
2029+}
2030+.fa-edge:before {
2031+ content: "\f282";
2032+}
2033+.fa-credit-card-alt:before {
2034+ content: "\f283";
2035+}
2036+.fa-codiepie:before {
2037+ content: "\f284";
2038+}
2039+.fa-modx:before {
2040+ content: "\f285";
2041+}
2042+.fa-fort-awesome:before {
2043+ content: "\f286";
2044+}
2045+.fa-usb:before {
2046+ content: "\f287";
2047+}
2048+.fa-product-hunt:before {
2049+ content: "\f288";
2050+}
2051+.fa-mixcloud:before {
2052+ content: "\f289";
2053+}
2054+.fa-scribd:before {
2055+ content: "\f28a";
2056+}
2057+.fa-pause-circle:before {
2058+ content: "\f28b";
2059+}
2060+.fa-pause-circle-o:before {
2061+ content: "\f28c";
2062+}
2063+.fa-stop-circle:before {
2064+ content: "\f28d";
2065+}
2066+.fa-stop-circle-o:before {
2067+ content: "\f28e";
2068+}
2069+.fa-shopping-bag:before {
2070+ content: "\f290";
2071+}
2072+.fa-shopping-basket:before {
2073+ content: "\f291";
2074+}
2075+.fa-hashtag:before {
2076+ content: "\f292";
2077+}
2078+.fa-bluetooth:before {
2079+ content: "\f293";
2080+}
2081+.fa-bluetooth-b:before {
2082+ content: "\f294";
2083+}
2084+.fa-percent:before {
2085+ content: "\f295";
2086+}
Source/Libraries/GSF.Web/Shared/Content/jquery-ui.css+1225−0
@@ -0,0 +1,1225 @@
1+/*! jQuery UI - v1.11.4 - 2016-03-31
2+* http://jqueryui.com
3+* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
4+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
5+* Copyright jQuery Foundation and other contributors; Licensed MIT */
6+
7+/* Layout helpers
8+----------------------------------*/
9+.ui-helper-hidden {
10+ display: none;
11+}
12+.ui-helper-hidden-accessible {
13+ border: 0;
14+ clip: rect(0 0 0 0);
15+ height: 1px;
16+ margin: -1px;
17+ overflow: hidden;
18+ padding: 0;
19+ position: absolute;
20+ width: 1px;
21+}
22+.ui-helper-reset {
23+ margin: 0;
24+ padding: 0;
25+ border: 0;
26+ outline: 0;
27+ line-height: 1.3;
28+ text-decoration: none;
29+ font-size: 100%;
30+ list-style: none;
31+}
32+.ui-helper-clearfix:before,
33+.ui-helper-clearfix:after {
34+ content: "";
35+ display: table;
36+ border-collapse: collapse;
37+}
38+.ui-helper-clearfix:after {
39+ clear: both;
40+}
41+.ui-helper-clearfix {
42+ min-height: 0; /* support: IE7 */
43+}
44+.ui-helper-zfix {
45+ width: 100%;
46+ height: 100%;
47+ top: 0;
48+ left: 0;
49+ position: absolute;
50+ opacity: 0;
51+ filter:Alpha(Opacity=0); /* support: IE8 */
52+}
53+
54+.ui-front {
55+ z-index: 100;
56+}
57+
58+
59+/* Interaction Cues
60+----------------------------------*/
61+.ui-state-disabled {
62+ cursor: default !important;
63+}
64+
65+
66+/* Icons
67+----------------------------------*/
68+
69+/* states and images */
70+.ui-icon {
71+ display: block;
72+ text-indent: -99999px;
73+ overflow: hidden;
74+ background-repeat: no-repeat;
75+}
76+
77+
78+/* Misc visuals
79+----------------------------------*/
80+
81+/* Overlays */
82+.ui-widget-overlay {
83+ position: fixed;
84+ top: 0;
85+ left: 0;
86+ width: 100%;
87+ height: 100%;
88+}
89+.ui-draggable-handle {
90+ -ms-touch-action: none;
91+ touch-action: none;
92+}
93+.ui-resizable {
94+ position: relative;
95+}
96+.ui-resizable-handle {
97+ position: absolute;
98+ font-size: 0.1px;
99+ display: block;
100+ -ms-touch-action: none;
101+ touch-action: none;
102+}
103+.ui-resizable-disabled .ui-resizable-handle,
104+.ui-resizable-autohide .ui-resizable-handle {
105+ display: none;
106+}
107+.ui-resizable-n {
108+ cursor: n-resize;
109+ height: 7px;
110+ width: 100%;
111+ top: -5px;
112+ left: 0;
113+}
114+.ui-resizable-s {
115+ cursor: s-resize;
116+ height: 7px;
117+ width: 100%;
118+ bottom: -5px;
119+ left: 0;
120+}
121+.ui-resizable-e {
122+ cursor: e-resize;
123+ width: 7px;
124+ right: -5px;
125+ top: 0;
126+ height: 100%;
127+}
128+.ui-resizable-w {
129+ cursor: w-resize;
130+ width: 7px;
131+ left: -5px;
132+ top: 0;
133+ height: 100%;
134+}
135+.ui-resizable-se {
136+ cursor: se-resize;
137+ width: 12px;
138+ height: 12px;
139+ right: 1px;
140+ bottom: 1px;
141+}
142+.ui-resizable-sw {
143+ cursor: sw-resize;
144+ width: 9px;
145+ height: 9px;
146+ left: -5px;
147+ bottom: -5px;
148+}
149+.ui-resizable-nw {
150+ cursor: nw-resize;
151+ width: 9px;
152+ height: 9px;
153+ left: -5px;
154+ top: -5px;
155+}
156+.ui-resizable-ne {
157+ cursor: ne-resize;
158+ width: 9px;
159+ height: 9px;
160+ right: -5px;
161+ top: -5px;
162+}
163+.ui-selectable {
164+ -ms-touch-action: none;
165+ touch-action: none;
166+}
167+.ui-selectable-helper {
168+ position: absolute;
169+ z-index: 100;
170+ border: 1px dotted black;
171+}
172+.ui-sortable-handle {
173+ -ms-touch-action: none;
174+ touch-action: none;
175+}
176+.ui-accordion .ui-accordion-header {
177+ display: block;
178+ cursor: pointer;
179+ position: relative;
180+ margin: 2px 0 0 0;
181+ padding: .5em .5em .5em .7em;
182+ min-height: 0; /* support: IE7 */
183+ font-size: 100%;
184+}
185+.ui-accordion .ui-accordion-icons {
186+ padding-left: 2.2em;
187+}
188+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
189+ padding-left: 2.2em;
190+}
191+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
192+ position: absolute;
193+ left: .5em;
194+ top: 50%;
195+ margin-top: -8px;
196+}
197+.ui-accordion .ui-accordion-content {
198+ padding: 1em 2.2em;
199+ border-top: 0;
200+ overflow: auto;
201+}
202+.ui-autocomplete {
203+ position: absolute;
204+ top: 0;
205+ left: 0;
206+ cursor: default;
207+}
208+.ui-button {
209+ display: inline-block;
210+ position: relative;
211+ padding: 0;
212+ line-height: normal;
213+ margin-right: .1em;
214+ cursor: pointer;
215+ vertical-align: middle;
216+ text-align: center;
217+ overflow: visible; /* removes extra width in IE */
218+}
219+.ui-button,
220+.ui-button:link,
221+.ui-button:visited,
222+.ui-button:hover,
223+.ui-button:active {
224+ text-decoration: none;
225+}
226+/* to make room for the icon, a width needs to be set here */
227+.ui-button-icon-only {
228+ width: 2.2em;
229+}
230+/* button elements seem to need a little more width */
231+button.ui-button-icon-only {
232+ width: 2.4em;
233+}
234+.ui-button-icons-only {
235+ width: 3.4em;
236+}
237+button.ui-button-icons-only {
238+ width: 3.7em;
239+}
240+
241+/* button text element */
242+.ui-button .ui-button-text {
243+ display: block;
244+ line-height: normal;
245+}
246+.ui-button-text-only .ui-button-text {
247+ padding: .4em 1em;
248+}
249+.ui-button-icon-only .ui-button-text,
250+.ui-button-icons-only .ui-button-text {
251+ padding: .4em;
252+ text-indent: -9999999px;
253+}
254+.ui-button-text-icon-primary .ui-button-text,
255+.ui-button-text-icons .ui-button-text {
256+ padding: .4em 1em .4em 2.1em;
257+}
258+.ui-button-text-icon-secondary .ui-button-text,
259+.ui-button-text-icons .ui-button-text {
260+ padding: .4em 2.1em .4em 1em;
261+}
262+.ui-button-text-icons .ui-button-text {
263+ padding-left: 2.1em;
264+ padding-right: 2.1em;
265+}
266+/* no icon support for input elements, provide padding by default */
267+input.ui-button {
268+ padding: .4em 1em;
269+}
270+
271+/* button icon element(s) */
272+.ui-button-icon-only .ui-icon,
273+.ui-button-text-icon-primary .ui-icon,
274+.ui-button-text-icon-secondary .ui-icon,
275+.ui-button-text-icons .ui-icon,
276+.ui-button-icons-only .ui-icon {
277+ position: absolute;
278+ top: 50%;
279+ margin-top: -8px;
280+}
281+.ui-button-icon-only .ui-icon {
282+ left: 50%;
283+ margin-left: -8px;
284+}
285+.ui-button-text-icon-primary .ui-button-icon-primary,
286+.ui-button-text-icons .ui-button-icon-primary,
287+.ui-button-icons-only .ui-button-icon-primary {
288+ left: .5em;
289+}
290+.ui-button-text-icon-secondary .ui-button-icon-secondary,
291+.ui-button-text-icons .ui-button-icon-secondary,
292+.ui-button-icons-only .ui-button-icon-secondary {
293+ right: .5em;
294+}
295+
296+/* button sets */
297+.ui-buttonset {
298+ margin-right: 7px;
299+}
300+.ui-buttonset .ui-button {
301+ margin-left: 0;
302+ margin-right: -.3em;
303+}
304+
305+/* workarounds */
306+/* reset extra padding in Firefox, see h5bp.com/l */
307+input.ui-button::-moz-focus-inner,
308+button.ui-button::-moz-focus-inner {
309+ border: 0;
310+ padding: 0;
311+}
312+.ui-datepicker {
313+ width: 17em;
314+ padding: .2em .2em 0;
315+ display: none;
316+}
317+.ui-datepicker .ui-datepicker-header {
318+ position: relative;
319+ padding: .2em 0;
320+}
321+.ui-datepicker .ui-datepicker-prev,
322+.ui-datepicker .ui-datepicker-next {
323+ position: absolute;
324+ top: 2px;
325+ width: 1.8em;
326+ height: 1.8em;
327+}
328+.ui-datepicker .ui-datepicker-prev-hover,
329+.ui-datepicker .ui-datepicker-next-hover {
330+ top: 1px;
331+}
332+.ui-datepicker .ui-datepicker-prev {
333+ left: 2px;
334+}
335+.ui-datepicker .ui-datepicker-next {
336+ right: 2px;
337+}
338+.ui-datepicker .ui-datepicker-prev-hover {
339+ left: 1px;
340+}
341+.ui-datepicker .ui-datepicker-next-hover {
342+ right: 1px;
343+}
344+.ui-datepicker .ui-datepicker-prev span,
345+.ui-datepicker .ui-datepicker-next span {
346+ display: block;
347+ position: absolute;
348+ left: 50%;
349+ margin-left: -8px;
350+ top: 50%;
351+ margin-top: -8px;
352+}
353+.ui-datepicker .ui-datepicker-title {
354+ margin: 0 2.3em;
355+ line-height: 1.8em;
356+ text-align: center;
357+}
358+.ui-datepicker .ui-datepicker-title select {
359+ font-size: 1em;
360+ margin: 1px 0;
361+}
362+.ui-datepicker select.ui-datepicker-month,
363+.ui-datepicker select.ui-datepicker-year {
364+ width: 45%;
365+}
366+.ui-datepicker table {
367+ width: 100%;
368+ font-size: .9em;
369+ border-collapse: collapse;
370+ margin: 0 0 .4em;
371+}
372+.ui-datepicker th {
373+ padding: .7em .3em;
374+ text-align: center;
375+ font-weight: bold;
376+ border: 0;
377+}
378+.ui-datepicker td {
379+ border: 0;
380+ padding: 1px;
381+}
382+.ui-datepicker td span,
383+.ui-datepicker td a {
384+ display: block;
385+ padding: .2em;
386+ text-align: right;
387+ text-decoration: none;
388+}
389+.ui-datepicker .ui-datepicker-buttonpane {
390+ background-image: none;
391+ margin: .7em 0 0 0;
392+ padding: 0 .2em;
393+ border-left: 0;
394+ border-right: 0;
395+ border-bottom: 0;
396+}
397+.ui-datepicker .ui-datepicker-buttonpane button {
398+ float: right;
399+ margin: .5em .2em .4em;
400+ cursor: pointer;
401+ padding: .2em .6em .3em .6em;
402+ width: auto;
403+ overflow: visible;
404+}
405+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
406+ float: left;
407+}
408+
409+/* with multiple calendars */
410+.ui-datepicker.ui-datepicker-multi {
411+ width: auto;
412+}
413+.ui-datepicker-multi .ui-datepicker-group {
414+ float: left;
415+}
416+.ui-datepicker-multi .ui-datepicker-group table {
417+ width: 95%;
418+ margin: 0 auto .4em;
419+}
420+.ui-datepicker-multi-2 .ui-datepicker-group {
421+ width: 50%;
422+}
423+.ui-datepicker-multi-3 .ui-datepicker-group {
424+ width: 33.3%;
425+}
426+.ui-datepicker-multi-4 .ui-datepicker-group {
427+ width: 25%;
428+}
429+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
430+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
431+ border-left-width: 0;
432+}
433+.ui-datepicker-multi .ui-datepicker-buttonpane {
434+ clear: left;
435+}
436+.ui-datepicker-row-break {
437+ clear: both;
438+ width: 100%;
439+ font-size: 0;
440+}
441+
442+/* RTL support */
443+.ui-datepicker-rtl {
444+ direction: rtl;
445+}
446+.ui-datepicker-rtl .ui-datepicker-prev {
447+ right: 2px;
448+ left: auto;
449+}
450+.ui-datepicker-rtl .ui-datepicker-next {
451+ left: 2px;
452+ right: auto;
453+}
454+.ui-datepicker-rtl .ui-datepicker-prev:hover {
455+ right: 1px;
456+ left: auto;
457+}
458+.ui-datepicker-rtl .ui-datepicker-next:hover {
459+ left: 1px;
460+ right: auto;
461+}
462+.ui-datepicker-rtl .ui-datepicker-buttonpane {
463+ clear: right;
464+}
465+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
466+ float: left;
467+}
468+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
469+.ui-datepicker-rtl .ui-datepicker-group {
470+ float: right;
471+}
472+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
473+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
474+ border-right-width: 0;
475+ border-left-width: 1px;
476+}
477+.ui-dialog {
478+ overflow: hidden;
479+ position: absolute;
480+ top: 0;
481+ left: 0;
482+ padding: .2em;
483+ outline: 0;
484+}
485+.ui-dialog .ui-dialog-titlebar {
486+ padding: .4em 1em;
487+ position: relative;
488+}
489+.ui-dialog .ui-dialog-title {
490+ float: left;
491+ margin: .1em 0;
492+ white-space: nowrap;
493+ width: 90%;
494+ overflow: hidden;
495+ text-overflow: ellipsis;
496+}
497+.ui-dialog .ui-dialog-titlebar-close {
498+ position: absolute;
499+ right: .3em;
500+ top: 50%;
501+ width: 20px;
502+ margin: -10px 0 0 0;
503+ padding: 1px;
504+ height: 20px;
505+}
506+.ui-dialog .ui-dialog-content {
507+ position: relative;
508+ border: 0;
509+ padding: .5em 1em;
510+ background: none;
511+ overflow: auto;
512+}
513+.ui-dialog .ui-dialog-buttonpane {
514+ text-align: left;
515+ border-width: 1px 0 0 0;
516+ background-image: none;
517+ margin-top: .5em;
518+ padding: .3em 1em .5em .4em;
519+}
520+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
521+ float: right;
522+}
523+.ui-dialog .ui-dialog-buttonpane button {
524+ margin: .5em .4em .5em 0;
525+ cursor: pointer;
526+}
527+.ui-dialog .ui-resizable-se {
528+ width: 12px;
529+ height: 12px;
530+ right: -5px;
531+ bottom: -5px;
532+ background-position: 16px 16px;
533+}
534+.ui-draggable .ui-dialog-titlebar {
535+ cursor: move;
536+}
537+.ui-menu {
538+ list-style: none;
539+ padding: 0;
540+ margin: 0;
541+ display: block;
542+ outline: none;
543+}
544+.ui-menu .ui-menu {
545+ position: absolute;
546+}
547+.ui-menu .ui-menu-item {
548+ position: relative;
549+ margin: 0;
550+ padding: 3px 1em 3px .4em;
551+ cursor: pointer;
552+ min-height: 0; /* support: IE7 */
553+ /* support: IE10, see #8844 */
554+ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
555+}
556+.ui-menu .ui-menu-divider {
557+ margin: 5px 0;
558+ height: 0;
559+ font-size: 0;
560+ line-height: 0;
561+ border-width: 1px 0 0 0;
562+}
563+.ui-menu .ui-state-focus,
564+.ui-menu .ui-state-active {
565+ margin: -1px;
566+}
567+
568+/* icon support */
569+.ui-menu-icons {
570+ position: relative;
571+}
572+.ui-menu-icons .ui-menu-item {
573+ padding-left: 2em;
574+}
575+
576+/* left-aligned */
577+.ui-menu .ui-icon {
578+ position: absolute;
579+ top: 0;
580+ bottom: 0;
581+ left: .2em;
582+ margin: auto 0;
583+}
584+
585+/* right-aligned */
586+.ui-menu .ui-menu-icon {
587+ left: auto;
588+ right: 0;
589+}
590+.ui-progressbar {
591+ height: 2em;
592+ text-align: left;
593+ overflow: hidden;
594+}
595+.ui-progressbar .ui-progressbar-value {
596+ margin: -1px;
597+ height: 100%;
598+}
599+.ui-progressbar .ui-progressbar-overlay {
600+ background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
601+ height: 100%;
602+ filter: alpha(opacity=25); /* support: IE8 */
603+ opacity: 0.25;
604+}
605+.ui-progressbar-indeterminate .ui-progressbar-value {
606+ background-image: none;
607+}
608+.ui-selectmenu-menu {
609+ padding: 0;
610+ margin: 0;
611+ position: absolute;
612+ top: 0;
613+ left: 0;
614+ display: none;
615+}
616+.ui-selectmenu-menu .ui-menu {
617+ overflow: auto;
618+ /* Support: IE7 */
619+ overflow-x: hidden;
620+ padding-bottom: 1px;
621+}
622+.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
623+ font-size: 1em;
624+ font-weight: bold;
625+ line-height: 1.5;
626+ padding: 2px 0.4em;
627+ margin: 0.5em 0 0 0;
628+ height: auto;
629+ border: 0;
630+}
631+.ui-selectmenu-open {
632+ display: block;
633+}
634+.ui-selectmenu-button {
635+ display: inline-block;
636+ overflow: hidden;
637+ position: relative;
638+ text-decoration: none;
639+ cursor: pointer;
640+}
641+.ui-selectmenu-button span.ui-icon {
642+ right: 0.5em;
643+ left: auto;
644+ margin-top: -8px;
645+ position: absolute;
646+ top: 50%;
647+}
648+.ui-selectmenu-button span.ui-selectmenu-text {
649+ text-align: left;
650+ padding: 0.4em 2.1em 0.4em 1em;
651+ display: block;
652+ line-height: 1.4;
653+ overflow: hidden;
654+ text-overflow: ellipsis;
655+ white-space: nowrap;
656+}
657+.ui-slider {
658+ position: relative;
659+ text-align: left;
660+}
661+.ui-slider .ui-slider-handle {
662+ position: absolute;
663+ z-index: 2;
664+ width: 1.2em;
665+ height: 1.2em;
666+ cursor: default;
667+ -ms-touch-action: none;
668+ touch-action: none;
669+}
670+.ui-slider .ui-slider-range {
671+ position: absolute;
672+ z-index: 1;
673+ font-size: .7em;
674+ display: block;
675+ border: 0;
676+ background-position: 0 0;
677+}
678+
679+/* support: IE8 - See #6727 */
680+.ui-slider.ui-state-disabled .ui-slider-handle,
681+.ui-slider.ui-state-disabled .ui-slider-range {
682+ filter: inherit;
683+}
684+
685+.ui-slider-horizontal {
686+ height: .8em;
687+}
688+.ui-slider-horizontal .ui-slider-handle {
689+ top: -.3em;
690+ margin-left: -.6em;
691+}
692+.ui-slider-horizontal .ui-slider-range {
693+ top: 0;
694+ height: 100%;
695+}
696+.ui-slider-horizontal .ui-slider-range-min {
697+ left: 0;
698+}
699+.ui-slider-horizontal .ui-slider-range-max {
700+ right: 0;
701+}
702+
703+.ui-slider-vertical {
704+ width: .8em;
705+ height: 100px;
706+}
707+.ui-slider-vertical .ui-slider-handle {
708+ left: -.3em;
709+ margin-left: 0;
710+ margin-bottom: -.6em;
711+}
712+.ui-slider-vertical .ui-slider-range {
713+ left: 0;
714+ width: 100%;
715+}
716+.ui-slider-vertical .ui-slider-range-min {
717+ bottom: 0;
718+}
719+.ui-slider-vertical .ui-slider-range-max {
720+ top: 0;
721+}
722+.ui-spinner {
723+ position: relative;
724+ display: inline-block;
725+ overflow: hidden;
726+ padding: 0;
727+ vertical-align: middle;
728+}
729+.ui-spinner-input {
730+ border: none;
731+ background: none;
732+ color: inherit;
733+ padding: 0;
734+ margin: .2em 0;
735+ vertical-align: middle;
736+ margin-left: .4em;
737+ margin-right: 22px;
738+}
739+.ui-spinner-button {
740+ width: 16px;
741+ height: 50%;
742+ font-size: .5em;
743+ padding: 0;
744+ margin: 0;
745+ text-align: center;
746+ position: absolute;
747+ cursor: default;
748+ display: block;
749+ overflow: hidden;
750+ right: 0;
751+}
752+/* more specificity required here to override default borders */
753+.ui-spinner a.ui-spinner-button {
754+ border-top: none;
755+ border-bottom: none;
756+ border-right: none;
757+}
758+/* vertically center icon */
759+.ui-spinner .ui-icon {
760+ position: absolute;
761+ margin-top: -8px;
762+ top: 50%;
763+ left: 0;
764+}
765+.ui-spinner-up {
766+ top: 0;
767+}
768+.ui-spinner-down {
769+ bottom: 0;
770+}
771+
772+/* TR overrides */
773+.ui-spinner .ui-icon-triangle-1-s {
774+ /* need to fix icons sprite */
775+ background-position: -65px -16px;
776+}
777+.ui-tabs {
778+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
779+ padding: .2em;
780+}
781+.ui-tabs .ui-tabs-nav {
782+ margin: 0;
783+ padding: .2em .2em 0;
784+}
785+.ui-tabs .ui-tabs-nav li {
786+ list-style: none;
787+ float: left;
788+ position: relative;
789+ top: 0;
790+ margin: 1px .2em 0 0;
791+ border-bottom-width: 0;
792+ padding: 0;
793+ white-space: nowrap;
794+}
795+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
796+ float: left;
797+ padding: .5em 1em;
798+ text-decoration: none;
799+}
800+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
801+ margin-bottom: -1px;
802+ padding-bottom: 1px;
803+}
804+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
805+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
806+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
807+ cursor: text;
808+}
809+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
810+ cursor: pointer;
811+}
812+.ui-tabs .ui-tabs-panel {
813+ display: block;
814+ border-width: 0;
815+ padding: 1em 1.4em;
816+ background: none;
817+}
818+.ui-tooltip {
819+ padding: 8px;
820+ position: absolute;
821+ z-index: 9999;
822+ max-width: 300px;
823+ -webkit-box-shadow: 0 0 5px #aaa;
824+ box-shadow: 0 0 5px #aaa;
825+}
826+body .ui-tooltip {
827+ border-width: 2px;
828+}
829+
830+/* Component containers
831+----------------------------------*/
832+.ui-widget {
833+ font-family: Arial,Helvetica,sans-serif;
834+ font-size: 1em;
835+}
836+.ui-widget .ui-widget {
837+ font-size: 1em;
838+}
839+.ui-widget input,
840+.ui-widget select,
841+.ui-widget textarea,
842+.ui-widget button {
843+ font-family: Arial,Helvetica,sans-serif;
844+ font-size: 1em;
845+}
846+.ui-widget-content {
847+ border: 1px solid #dddddd;
848+ background: #ffffff;
849+ color: #333333;
850+}
851+.ui-widget-content a {
852+ color: #333333;
853+}
854+.ui-widget-header {
855+ border: 1px solid #dddddd;
856+ background: #e9e9e9;
857+ color: #333333;
858+ font-weight: bold;
859+}
860+.ui-widget-header a {
861+ color: #333333;
862+}
863+
864+/* Interaction states
865+----------------------------------*/
866+.ui-state-default,
867+.ui-widget-content .ui-state-default,
868+.ui-widget-header .ui-state-default {
869+ border: 1px solid #c5c5c5;
870+ background: #f6f6f6;
871+ font-weight: normal;
872+ color: #454545;
873+}
874+.ui-state-default a,
875+.ui-state-default a:link,
876+.ui-state-default a:visited {
877+ color: #454545;
878+ text-decoration: none;
879+}
880+.ui-state-hover,
881+.ui-widget-content .ui-state-hover,
882+.ui-widget-header .ui-state-hover,
883+.ui-state-focus,
884+.ui-widget-content .ui-state-focus,
885+.ui-widget-header .ui-state-focus {
886+ border: 1px solid #cccccc;
887+ background: #ededed;
888+ font-weight: normal;
889+ color: #2b2b2b;
890+}
891+.ui-state-hover a,
892+.ui-state-hover a:hover,
893+.ui-state-hover a:link,
894+.ui-state-hover a:visited,
895+.ui-state-focus a,
896+.ui-state-focus a:hover,
897+.ui-state-focus a:link,
898+.ui-state-focus a:visited {
899+ color: #2b2b2b;
900+ text-decoration: none;
901+}
902+.ui-state-active,
903+.ui-widget-content .ui-state-active,
904+.ui-widget-header .ui-state-active {
905+ border: 1px solid #003eff;
906+ background: #007fff;
907+ font-weight: normal;
908+ color: #ffffff;
909+}
910+.ui-state-active a,
911+.ui-state-active a:link,
912+.ui-state-active a:visited {
913+ color: #ffffff;
914+ text-decoration: none;
915+}
916+
917+/* Interaction Cues
918+----------------------------------*/
919+.ui-state-highlight,
920+.ui-widget-content .ui-state-highlight,
921+.ui-widget-header .ui-state-highlight {
922+ border: 1px solid #dad55e;
923+ background: #fffa90;
924+ color: #777620;
925+}
926+.ui-state-highlight a,
927+.ui-widget-content .ui-state-highlight a,
928+.ui-widget-header .ui-state-highlight a {
929+ color: #777620;
930+}
931+.ui-state-error,
932+.ui-widget-content .ui-state-error,
933+.ui-widget-header .ui-state-error {
934+ border: 1px solid #f1a899;
935+ background: #fddfdf;
936+ color: #5f3f3f;
937+}
938+.ui-state-error a,
939+.ui-widget-content .ui-state-error a,
940+.ui-widget-header .ui-state-error a {
941+ color: #5f3f3f;
942+}
943+.ui-state-error-text,
944+.ui-widget-content .ui-state-error-text,
945+.ui-widget-header .ui-state-error-text {
946+ color: #5f3f3f;
947+}
948+.ui-priority-primary,
949+.ui-widget-content .ui-priority-primary,
950+.ui-widget-header .ui-priority-primary {
951+ font-weight: bold;
952+}
953+.ui-priority-secondary,
954+.ui-widget-content .ui-priority-secondary,
955+.ui-widget-header .ui-priority-secondary {
956+ opacity: .7;
957+ filter:Alpha(Opacity=70); /* support: IE8 */
958+ font-weight: normal;
959+}
960+.ui-state-disabled,
961+.ui-widget-content .ui-state-disabled,
962+.ui-widget-header .ui-state-disabled {
963+ opacity: .35;
964+ filter:Alpha(Opacity=35); /* support: IE8 */
965+ background-image: none;
966+}
967+.ui-state-disabled .ui-icon {
968+ filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
969+}
970+
971+/* Icons
972+----------------------------------*/
973+
974+/* states and images */
975+.ui-icon {
976+ width: 16px;
977+ height: 16px;
978+}
979+.ui-icon,
980+.ui-widget-content .ui-icon {
981+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_444444_256x240.png");
982+}
983+.ui-widget-header .ui-icon {
984+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_444444_256x240.png");
985+}
986+.ui-state-default .ui-icon {
987+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_777777_256x240.png");
988+}
989+.ui-state-hover .ui-icon,
990+.ui-state-focus .ui-icon {
991+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_555555_256x240.png");
992+}
993+.ui-state-active .ui-icon {
994+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_ffffff_256x240.png");
995+}
996+.ui-state-highlight .ui-icon {
997+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_777620_256x240.png");
998+}
999+.ui-state-error .ui-icon,
1000+.ui-state-error-text .ui-icon {
1001+ background-image: url("/@GSF/Web/Shared/Content/Images/ui-icons_cc0000_256x240.png");
1002+}
1003+
1004+/* positioning */
1005+.ui-icon-blank { background-position: 16px 16px; }
1006+.ui-icon-carat-1-n { background-position: 0 0; }
1007+.ui-icon-carat-1-ne { background-position: -16px 0; }
1008+.ui-icon-carat-1-e { background-position: -32px 0; }
1009+.ui-icon-carat-1-se { background-position: -48px 0; }
1010+.ui-icon-carat-1-s { background-position: -64px 0; }
1011+.ui-icon-carat-1-sw { background-position: -80px 0; }
1012+.ui-icon-carat-1-w { background-position: -96px 0; }
1013+.ui-icon-carat-1-nw { background-position: -112px 0; }
1014+.ui-icon-carat-2-n-s { background-position: -128px 0; }
1015+.ui-icon-carat-2-e-w { background-position: -144px 0; }
1016+.ui-icon-triangle-1-n { background-position: 0 -16px; }
1017+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
1018+.ui-icon-triangle-1-e { background-position: -32px -16px; }
1019+.ui-icon-triangle-1-se { background-position: -48px -16px; }
1020+.ui-icon-triangle-1-s { background-position: -64px -16px; }
1021+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
1022+.ui-icon-triangle-1-w { background-position: -96px -16px; }
1023+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
1024+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
1025+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
1026+.ui-icon-arrow-1-n { background-position: 0 -32px; }
1027+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
1028+.ui-icon-arrow-1-e { background-position: -32px -32px; }
1029+.ui-icon-arrow-1-se { background-position: -48px -32px; }
1030+.ui-icon-arrow-1-s { background-position: -64px -32px; }
1031+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
1032+.ui-icon-arrow-1-w { background-position: -96px -32px; }
1033+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
1034+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
1035+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
1036+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
1037+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
1038+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
1039+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
1040+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
1041+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
1042+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
1043+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
1044+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
1045+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
1046+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
1047+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1048+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1049+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1050+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1051+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1052+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1053+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1054+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1055+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1056+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1057+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1058+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1059+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1060+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1061+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1062+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1063+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1064+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1065+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1066+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1067+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1068+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1069+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1070+.ui-icon-arrow-4 { background-position: 0 -80px; }
1071+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
1072+.ui-icon-extlink { background-position: -32px -80px; }
1073+.ui-icon-newwin { background-position: -48px -80px; }
1074+.ui-icon-refresh { background-position: -64px -80px; }
1075+.ui-icon-shuffle { background-position: -80px -80px; }
1076+.ui-icon-transfer-e-w { background-position: -96px -80px; }
1077+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
1078+.ui-icon-folder-collapsed { background-position: 0 -96px; }
1079+.ui-icon-folder-open { background-position: -16px -96px; }
1080+.ui-icon-document { background-position: -32px -96px; }
1081+.ui-icon-document-b { background-position: -48px -96px; }
1082+.ui-icon-note { background-position: -64px -96px; }
1083+.ui-icon-mail-closed { background-position: -80px -96px; }
1084+.ui-icon-mail-open { background-position: -96px -96px; }
1085+.ui-icon-suitcase { background-position: -112px -96px; }
1086+.ui-icon-comment { background-position: -128px -96px; }
1087+.ui-icon-person { background-position: -144px -96px; }
1088+.ui-icon-print { background-position: -160px -96px; }
1089+.ui-icon-trash { background-position: -176px -96px; }
1090+.ui-icon-locked { background-position: -192px -96px; }
1091+.ui-icon-unlocked { background-position: -208px -96px; }
1092+.ui-icon-bookmark { background-position: -224px -96px; }
1093+.ui-icon-tag { background-position: -240px -96px; }
1094+.ui-icon-home { background-position: 0 -112px; }
1095+.ui-icon-flag { background-position: -16px -112px; }
1096+.ui-icon-calendar { background-position: -32px -112px; }
1097+.ui-icon-cart { background-position: -48px -112px; }
1098+.ui-icon-pencil { background-position: -64px -112px; }
1099+.ui-icon-clock { background-position: -80px -112px; }
1100+.ui-icon-disk { background-position: -96px -112px; }
1101+.ui-icon-calculator { background-position: -112px -112px; }
1102+.ui-icon-zoomin { background-position: -128px -112px; }
1103+.ui-icon-zoomout { background-position: -144px -112px; }
1104+.ui-icon-search { background-position: -160px -112px; }
1105+.ui-icon-wrench { background-position: -176px -112px; }
1106+.ui-icon-gear { background-position: -192px -112px; }
1107+.ui-icon-heart { background-position: -208px -112px; }
1108+.ui-icon-star { background-position: -224px -112px; }
1109+.ui-icon-link { background-position: -240px -112px; }
1110+.ui-icon-cancel { background-position: 0 -128px; }
1111+.ui-icon-plus { background-position: -16px -128px; }
1112+.ui-icon-plusthick { background-position: -32px -128px; }
1113+.ui-icon-minus { background-position: -48px -128px; }
1114+.ui-icon-minusthick { background-position: -64px -128px; }
1115+.ui-icon-close { background-position: -80px -128px; }
1116+.ui-icon-closethick { background-position: -96px -128px; }
1117+.ui-icon-key { background-position: -112px -128px; }
1118+.ui-icon-lightbulb { background-position: -128px -128px; }
1119+.ui-icon-scissors { background-position: -144px -128px; }
1120+.ui-icon-clipboard { background-position: -160px -128px; }
1121+.ui-icon-copy { background-position: -176px -128px; }
1122+.ui-icon-contact { background-position: -192px -128px; }
1123+.ui-icon-image { background-position: -208px -128px; }
1124+.ui-icon-video { background-position: -224px -128px; }
1125+.ui-icon-script { background-position: -240px -128px; }
1126+.ui-icon-alert { background-position: 0 -144px; }
1127+.ui-icon-info { background-position: -16px -144px; }
1128+.ui-icon-notice { background-position: -32px -144px; }
1129+.ui-icon-help { background-position: -48px -144px; }
1130+.ui-icon-check { background-position: -64px -144px; }
1131+.ui-icon-bullet { background-position: -80px -144px; }
1132+.ui-icon-radio-on { background-position: -96px -144px; }
1133+.ui-icon-radio-off { background-position: -112px -144px; }
1134+.ui-icon-pin-w { background-position: -128px -144px; }
1135+.ui-icon-pin-s { background-position: -144px -144px; }
1136+.ui-icon-play { background-position: 0 -160px; }
1137+.ui-icon-pause { background-position: -16px -160px; }
1138+.ui-icon-seek-next { background-position: -32px -160px; }
1139+.ui-icon-seek-prev { background-position: -48px -160px; }
1140+.ui-icon-seek-end { background-position: -64px -160px; }
1141+.ui-icon-seek-start { background-position: -80px -160px; }
1142+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1143+.ui-icon-seek-first { background-position: -80px -160px; }
1144+.ui-icon-stop { background-position: -96px -160px; }
1145+.ui-icon-eject { background-position: -112px -160px; }
1146+.ui-icon-volume-off { background-position: -128px -160px; }
1147+.ui-icon-volume-on { background-position: -144px -160px; }
1148+.ui-icon-power { background-position: 0 -176px; }
1149+.ui-icon-signal-diag { background-position: -16px -176px; }
1150+.ui-icon-signal { background-position: -32px -176px; }
1151+.ui-icon-battery-0 { background-position: -48px -176px; }
1152+.ui-icon-battery-1 { background-position: -64px -176px; }
1153+.ui-icon-battery-2 { background-position: -80px -176px; }
1154+.ui-icon-battery-3 { background-position: -96px -176px; }
1155+.ui-icon-circle-plus { background-position: 0 -192px; }
1156+.ui-icon-circle-minus { background-position: -16px -192px; }
1157+.ui-icon-circle-close { background-position: -32px -192px; }
1158+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
1159+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
1160+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
1161+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
1162+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
1163+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
1164+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
1165+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
1166+.ui-icon-circle-zoomin { background-position: -176px -192px; }
1167+.ui-icon-circle-zoomout { background-position: -192px -192px; }
1168+.ui-icon-circle-check { background-position: -208px -192px; }
1169+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
1170+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
1171+.ui-icon-circlesmall-close { background-position: -32px -208px; }
1172+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
1173+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
1174+.ui-icon-squaresmall-close { background-position: -80px -208px; }
1175+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1176+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1177+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1178+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1179+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1180+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1181+
1182+
1183+/* Misc visuals
1184+----------------------------------*/
1185+
1186+/* Corner radius */
1187+.ui-corner-all,
1188+.ui-corner-top,
1189+.ui-corner-left,
1190+.ui-corner-tl {
1191+ border-top-left-radius: 3px;
1192+}
1193+.ui-corner-all,
1194+.ui-corner-top,
1195+.ui-corner-right,
1196+.ui-corner-tr {
1197+ border-top-right-radius: 3px;
1198+}
1199+.ui-corner-all,
1200+.ui-corner-bottom,
1201+.ui-corner-left,
1202+.ui-corner-bl {
1203+ border-bottom-left-radius: 3px;
1204+}
1205+.ui-corner-all,
1206+.ui-corner-bottom,
1207+.ui-corner-right,
1208+.ui-corner-br {
1209+ border-bottom-right-radius: 3px;
1210+}
1211+
1212+/* Overlays */
1213+.ui-widget-overlay {
1214+ background: #aaaaaa;
1215+ opacity: .3;
1216+ filter: Alpha(Opacity=30); /* support: IE8 */
1217+}
1218+.ui-widget-shadow {
1219+ margin: 0px 0 0 0px;
1220+ padding: 5px;
1221+ background: #666666;
1222+ opacity: .3;
1223+ filter: Alpha(Opacity=30); /* support: IE8 */
1224+ border-radius: 8px;
1225+}
Source/Libraries/GSF.Web/Shared/Content/primeui-theme.css+935−0
@@ -0,0 +1,935 @@
1+/*
2+ * jQuery UI CSS Framework 1.8.9
3+ *
4+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5+ * Dual licensed under the MIT or GPL Version 2 licenses.
6+ * http://jquery.org/license
7+ *
8+ * http://docs.jquery.com/UI/Theming/API
9+ *
10+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=02_glass.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=02_glass.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
11+ */
12+
13+
14+/* Component containers
15+----------------------------------*/
16+.ui-widget { font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 1em; }
17+.ui-widget .ui-widget { font-size: 1em; }
18+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 1em; }
19+.ui-widget-content { border: 1px solid #dddddd; background: #ffffff; color: #333333; }
20+.ui-widget-content a { color: #333333; }
21+.ui-widget-header { border: 1px solid #eeeeee; background: #f5f5f5; color: #333333; font-weight: bold; }
22+.ui-widget-header a { color: #333333; }
23+
24+/* Interaction states
25+----------------------------------*/
26+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
27+ color: #333333;
28+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
29+ background-color: #f5f5f5;
30+ *background-color: #e6e6e6;
31+ background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
32+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
33+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
34+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
35+ background-image: linear-gradient(top, #ffffff, #e6e6e6);
36+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
37+ background-repeat: repeat-x;
38+ border: 1px solid #cccccc;
39+ *border: 0;
40+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
41+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
42+ border-bottom-color: #b3b3b3;
43+ -webkit-border-radius: 4px;
44+ -moz-border-radius: 4px;
45+ border-radius: 4px;
46+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
47+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
48+ *zoom: 1;
49+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
50+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
51+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
52+}
53+
54+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover,
55+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active,
56+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
57+ background-color: #e6e6e6;
58+ *background-color: #d9d9d9;
59+}
60+
61+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
62+ background-color: #cccccc \9;
63+}
64+
65+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover {
66+ color: #333333;
67+ text-decoration: none;
68+ background-color: #e6e6e6;
69+ *background-color: #d9d9d9;
70+ /* Buttons in IE7 don't get borders, so darken on hover */
71+
72+ background-position: 0 -15px;
73+ -webkit-transition: background-position 0.1s linear;
74+ -moz-transition: background-position 0.1s linear;
75+ -ms-transition: background-position 0.1s linear;
76+ -o-transition: background-position 0.1s linear;
77+ transition: background-position 0.1s linear;
78+}
79+
80+.ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
81+ outline: thin dotted #333;
82+ outline: 5px auto -webkit-focus-ring-color;
83+ outline-offset: -2px;
84+}
85+
86+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
87+ background-color: #e6e6e6;
88+ background-color: #d9d9d9 \9;
89+ background-image: none;
90+ outline: 0;
91+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
92+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
93+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
94+}
95+
96+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled {
97+ cursor: default;
98+ background-color: #e6e6e6;
99+ background-image: none;
100+ opacity: 0.65;
101+ filter: alpha(opacity=65);
102+ -webkit-box-shadow: none;
103+ -moz-box-shadow: none;
104+ box-shadow: none;
105+}
106+
107+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
108+ border-color: #ccc;
109+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
110+}
111+
112+/* Interaction Cues
113+----------------------------------*/
114+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
115+ color: #ffffff;
116+ text-decoration: none;
117+ background-color: #0088cc;
118+ background-color: #0081c2;
119+ background-position: 0px;
120+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
121+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
122+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
123+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
124+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
125+ background-repeat: repeat-x;
126+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
127+}
128+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a {
129+ color: #ffffff;
130+}
131+
132+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #eed3d7; background: #f2dede 50% 50% repeat-x; color: #b94a48; }
133+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #b94a48; }
134+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #b94a48; }
135+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
136+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
137+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
138+
139+/* Icons
140+----------------------------------*/
141+
142+/* states and images */
143+.ui-icon { width: 16px; height: 16px; background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
144+.ui-widget-content .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
145+.ui-widget-header .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
146+.ui-state-default .ui-icon { background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
147+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
148+.ui-state-active .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
149+.ui-state-highlight .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_ffffff_256x240.png); }
150+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_333333_256x240.png); }
151+
152+/* positioning */
153+.ui-icon-carat-1-n { background-position: 0 0; }
154+.ui-icon-carat-1-ne { background-position: -16px 0; }
155+.ui-icon-carat-1-e { background-position: -32px 0; }
156+.ui-icon-carat-1-se { background-position: -48px 0; }
157+.ui-icon-carat-1-s { background-position: -64px 0; }
158+.ui-icon-carat-1-sw { background-position: -80px 0; }
159+.ui-icon-carat-1-w { background-position: -96px 0; }
160+.ui-icon-carat-1-nw { background-position: -112px 0; }
161+.ui-icon-carat-2-n-s { background-position: -128px 0; }
162+.ui-icon-carat-2-e-w { background-position: -144px 0; }
163+.ui-icon-triangle-1-n { background-position: 0 -16px; }
164+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
165+.ui-icon-triangle-1-e { background-position: -32px -16px; }
166+.ui-icon-triangle-1-se { background-position: -48px -16px; }
167+.ui-icon-triangle-1-s { background-position: -64px -16px; }
168+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
169+.ui-icon-triangle-1-w { background-position: -96px -16px; }
170+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
171+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
172+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
173+.ui-icon-arrow-1-n { background-position: 0 -32px; }
174+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
175+.ui-icon-arrow-1-e { background-position: -32px -32px; }
176+.ui-icon-arrow-1-se { background-position: -48px -32px; }
177+.ui-icon-arrow-1-s { background-position: -64px -32px; }
178+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
179+.ui-icon-arrow-1-w { background-position: -96px -32px; }
180+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
181+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
182+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
183+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
184+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
185+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
186+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
187+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
188+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
189+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
190+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
191+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
192+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
193+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
194+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
195+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
196+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
197+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
198+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
199+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
200+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
201+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
202+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
203+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
204+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
205+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
206+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
207+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
208+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
209+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
210+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
211+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
212+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
213+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
214+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
215+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
216+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
217+.ui-icon-arrow-4 { background-position: 0 -80px; }
218+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
219+.ui-icon-extlink { background-position: -32px -80px; }
220+.ui-icon-newwin { background-position: -48px -80px; }
221+.ui-icon-refresh { background-position: -64px -80px; }
222+.ui-icon-shuffle { background-position: -80px -80px; }
223+.ui-icon-transfer-e-w { background-position: -96px -80px; }
224+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
225+.ui-icon-folder-collapsed { background-position: 0 -96px; }
226+.ui-icon-folder-open { background-position: -16px -96px; }
227+.ui-icon-document { background-position: -32px -96px; }
228+.ui-icon-document-b { background-position: -48px -96px; }
229+.ui-icon-note { background-position: -64px -96px; }
230+.ui-icon-mail-closed { background-position: -80px -96px; }
231+.ui-icon-mail-open { background-position: -96px -96px; }
232+.ui-icon-suitcase { background-position: -112px -96px; }
233+.ui-icon-comment { background-position: -128px -96px; }
234+.ui-icon-person { background-position: -144px -96px; }
235+.ui-icon-print { background-position: -160px -96px; }
236+.ui-icon-trash { background-position: -176px -96px; }
237+.ui-icon-locked { background-position: -192px -96px; }
238+.ui-icon-unlocked { background-position: -208px -96px; }
239+.ui-icon-bookmark { background-position: -224px -96px; }
240+.ui-icon-tag { background-position: -240px -96px; }
241+.ui-icon-home { background-position: 0 -112px; }
242+.ui-icon-flag { background-position: -16px -112px; }
243+.ui-icon-calendar { background-position: -32px -112px; }
244+.ui-icon-cart { background-position: -48px -112px; }
245+.ui-icon-pencil { background-position: -64px -112px; }
246+.ui-icon-clock { background-position: -80px -112px; }
247+.ui-icon-disk { background-position: -96px -112px; }
248+.ui-icon-calculator { background-position: -112px -112px; }
249+.ui-icon-zoomin { background-position: -128px -112px; }
250+.ui-icon-zoomout { background-position: -144px -112px; }
251+.ui-icon-search { background-position: -160px -112px; }
252+.ui-icon-wrench { background-position: -176px -112px; }
253+.ui-icon-gear { background-position: -192px -112px; }
254+.ui-icon-heart { background-position: -208px -112px; }
255+.ui-icon-star { background-position: -224px -112px; }
256+.ui-icon-link { background-position: -240px -112px; }
257+.ui-icon-cancel { background-position: 0 -128px; }
258+.ui-icon-plus { background-position: -16px -128px; }
259+.ui-icon-plusthick { background-position: -32px -128px; }
260+.ui-icon-minus { background-position: -48px -128px; }
261+.ui-icon-minusthick { background-position: -64px -128px; }
262+.ui-icon-close { background-position: -80px -128px; }
263+.ui-icon-closethick { background-position: -96px -128px; }
264+.ui-icon-key { background-position: -112px -128px; }
265+.ui-icon-lightbulb { background-position: -128px -128px; }
266+.ui-icon-scissors { background-position: -144px -128px; }
267+.ui-icon-clipboard { background-position: -160px -128px; }
268+.ui-icon-copy { background-position: -176px -128px; }
269+.ui-icon-contact { background-position: -192px -128px; }
270+.ui-icon-image { background-position: -208px -128px; }
271+.ui-icon-video { background-position: -224px -128px; }
272+.ui-icon-script { background-position: -240px -128px; }
273+.ui-icon-alert { background-position: 0 -144px; }
274+.ui-icon-info { background-position: -16px -144px; }
275+.ui-icon-notice { background-position: -32px -144px; }
276+.ui-icon-help { background-position: -48px -144px; }
277+.ui-icon-check { background-position: -64px -144px; }
278+.ui-icon-bullet { background-position: -80px -144px; }
279+.ui-icon-radio-off { background-position: -96px -144px; }
280+.ui-icon-radio-on { background-position: -112px -144px; }
281+.ui-icon-pin-w { background-position: -128px -144px; }
282+.ui-icon-pin-s { background-position: -144px -144px; }
283+.ui-icon-play { background-position: 0 -160px; }
284+.ui-icon-pause { background-position: -16px -160px; }
285+.ui-icon-seek-next { background-position: -32px -160px; }
286+.ui-icon-seek-prev { background-position: -48px -160px; }
287+.ui-icon-seek-end { background-position: -64px -160px; }
288+.ui-icon-seek-start { background-position: -80px -160px; }
289+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
290+.ui-icon-seek-first { background-position: -80px -160px; }
291+.ui-icon-stop { background-position: -96px -160px; }
292+.ui-icon-eject { background-position: -112px -160px; }
293+.ui-icon-volume-off { background-position: -128px -160px; }
294+.ui-icon-volume-on { background-position: -144px -160px; }
295+.ui-icon-power { background-position: 0 -176px; }
296+.ui-icon-signal-diag { background-position: -16px -176px; }
297+.ui-icon-signal { background-position: -32px -176px; }
298+.ui-icon-battery-0 { background-position: -48px -176px; }
299+.ui-icon-battery-1 { background-position: -64px -176px; }
300+.ui-icon-battery-2 { background-position: -80px -176px; }
301+.ui-icon-battery-3 { background-position: -96px -176px; }
302+.ui-icon-circle-plus { background-position: 0 -192px; }
303+.ui-icon-circle-minus { background-position: -16px -192px; }
304+.ui-icon-circle-close { background-position: -32px -192px; }
305+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
306+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
307+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
308+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
309+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
310+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
311+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
312+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
313+.ui-icon-circle-zoomin { background-position: -176px -192px; }
314+.ui-icon-circle-zoomout { background-position: -192px -192px; }
315+.ui-icon-circle-check { background-position: -208px -192px; }
316+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
317+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
318+.ui-icon-circlesmall-close { background-position: -32px -208px; }
319+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
320+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
321+.ui-icon-squaresmall-close { background-position: -80px -208px; }
322+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
323+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
324+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
325+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
326+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
327+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
328+
329+
330+/* Misc visuals
331+----------------------------------*/
332+
333+/* Corner radius */
334+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
335+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
336+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
337+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
338+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
339+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
340+.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
341+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
342+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
343+
344+/* Overlays */
345+.ui-widget-overlay { background: #000000; opacity: .80;filter:Alpha(Opacity=80); }
346+.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
347+
348+/* PrimeFaces Extensions */
349+.ui-inputtext, .ui-widget-content .ui-inputtext, .ui-widget-header .ui-inputtext {
350+ cursor: text;
351+ background: none #ffffff;
352+ border: 1px solid #cccccc;
353+ -webkit-border-radius: 3px;
354+ -moz-border-radius: 3px;
355+ border-radius: 3px;
356+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
357+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
358+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
359+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
360+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
361+ -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
362+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
363+ transition: border linear 0.2s, box-shadow linear 0.2s;
364+}
365+
366+.ui-inputtext.ui-state-focus, .ui-widget-content .ui-inputtext.ui-state-focus, .ui-widget-header .ui-inputtext.ui-state-focus {
367+ border-color: rgba(82, 168, 236, 0.8);
368+ outline: 0;
369+ outline: thin dotted \9;
370+ /* IE6-9 */
371+
372+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
373+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
374+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
375+}
376+
377+.ui-inputtext.ui-state-error, .ui-widget-header .ui-inputtext.ui-state-error, .ui-widget-content .ui-inputtext.ui-state-error {
378+ color: #333333;
379+ border: 1px solid #eed3d7;
380+}
381+
382+/** TabView **/
383+.ui-tabview.ui-widget-content {
384+ background: transparent none;
385+ border: 0;
386+ border-radius: 0;
387+}
388+
389+.ui-tabview .ui-tabview-nav.ui-widget-header {
390+ background: transparent none;
391+ border-radius: 0;
392+}
393+
394+.ui-tabview .ui-tabview-nav.ui-widget-header li {
395+ line-height: 18px;
396+ background: transparent none;
397+ border: 1px solid #DDDDDD;
398+ box-shadow: none;
399+ border-radius: 0;
400+}
401+
402+.ui-tabview .ui-tabview-nav.ui-widget-header li a {
403+ line-height: 18px;
404+ padding-bottom: 8px;
405+ padding-top: 8px;
406+ color: #0088CC;
407+ font-weight: normal;
408+ border: 0px none;
409+}
410+
411+.ui-tabview .ui-tabview-nav.ui-widget-header li.ui-state-hover {
412+ text-decoration: none;
413+ background-color: #eeeeee;
414+ border-color: #eeeeee #eeeeee #dddddd;
415+ color: #005580;
416+}
417+
418+.ui-tabview .ui-tabview-nav.ui-widget-header li.ui-state-active {
419+ background-color: #FFFFFF;
420+ border-style: solid;
421+ border-width: 1px;
422+ color: #555555;
423+ cursor: default;
424+}
425+
426+.ui-tabview .ui-tabview-nav li .ui-icon {
427+ margin: 0.6em 0.2em 0 0 !important;
428+}
429+
430+.ui-tabview.ui-tabview-top .ui-tabview-nav.ui-widget-header {
431+ border-bottom: 1px solid #DDDDDD;
432+}
433+
434+.ui-tabview.ui-tabview-top {
435+ border-bottom: 1px solid #DDDDDD;
436+}
437+
438+.ui-tabview.ui-tabview-top .ui-tabview-nav.ui-widget-header li.ui-state-active {
439+ border-color: #DDDDDD #DDDDDD transparent #DDDDDD;
440+}
441+
442+.ui-tabview.ui-tabview-top .ui-tabview-nav.ui-widget-header li {
443+ border-radius: 4px 4px 0 0;
444+}
445+
446+.ui-tabview.ui-tabview-top .ui-tabview-nav.ui-widget-header li.ui-state-active {
447+ margin-bottom: -1px;
448+}
449+
450+.ui-tabview.ui-tabview-bottom .ui-tabview-nav.ui-widget-header {
451+ border-top: 1px solid #DDDDDD;
452+}
453+
454+.ui-tabview.ui-tabview-bottom {
455+ border-top: 1px solid #DDDDDD;
456+}
457+
458+.ui-tabview.ui-tabview-bottom .ui-tabview-nav.ui-widget-header li.ui-state-active {
459+ border-color: transparent #DDDDDD #DDDDDD #DDDDDD;
460+}
461+
462+.ui-tabview.ui-tabview-bottom .ui-tabview-nav.ui-widget-header li {
463+ border-radius: 0 0 4px 4px;
464+}
465+
466+.ui-tabview.ui-tabview-bottom .ui-tabview-nav.ui-widget-header li.ui-state-active {
467+ margin-top: -1px;
468+}
469+
470+.ui-tabview.ui-tabview-left .ui-tabview-nav.ui-widget-header {
471+ border-right: 1px solid #DDDDDD;
472+}
473+
474+.ui-tabview.ui-tabview-left {
475+ border-right: 1px solid #DDDDDD;
476+}
477+
478+.ui-tabview.ui-tabview-left .ui-tabview-nav.ui-widget-header li.ui-state-active {
479+ border-color: #DDDDDD transparent #DDDDDD #DDDDDD;
480+}
481+
482+.ui-tabview.ui-tabview-left .ui-tabview-nav.ui-widget-header li {
483+ border-radius: 4px 0 0 4px;
484+}
485+
486+.ui-tabview.ui-tabview-left .ui-tabview-nav.ui-widget-header li.ui-state-active {
487+ margin-right: -1px;
488+}
489+
490+.ui-tabview.ui-tabview-right .ui-tabview-nav.ui-widget-header {
491+ border-left: 1px solid #DDDDDD;
492+}
493+
494+.ui-tabview.ui-tabview-right {
495+ border-left: 1px solid #DDDDDD;
496+}
497+
498+.ui-tabview.ui-tabview-right .ui-tabview-nav.ui-widget-header li.ui-state-active {
499+ border-color: #DDDDDD #DDDDDD #DDDDDD transparent;
500+}
501+
502+.ui-tabview.ui-tabview-right .ui-tabview-nav.ui-widget-header li {
503+ border-radius: 0 4px 4px 0;
504+}
505+
506+.ui-tabview.ui-tabview-right .ui-tabview-nav.ui-widget-header li.ui-state-active {
507+ margin-left: -1px;
508+}
509+
510+/** AccordionPanel **/
511+.ui-accordion .ui-accordion-header {
512+ background:transparent;
513+ box-shadow: none;
514+}
515+
516+.ui-accordion .ui-accordion-header.ui-state-default {
517+ margin-bottom: 2px;
518+ border: 1px solid #E5E5E5;
519+}
520+
521+.ui-accordion .ui-accordion-header.ui-state-active {
522+ margin-bottom: 1px;
523+}
524+
525+.ui-accordion .ui-accordion-header .ui-icon {
526+ display: none;
527+}
528+
529+.ui-accordion .ui-accordion-header.ui-state-default a {
530+ padding: 8px 15px;
531+ color: #0088CC;
532+}
533+
534+.ui-accordion .ui-accordion-header a:hover {
535+ color: #005580;
536+}
537+
538+.ui-accordion .ui-accordion-content.ui-widget-content {
539+ padding: 9px 15px;
540+}
541+
542+/* Breadcrumb */
543+.ui-breadcrumb {
544+ padding: 7px 14px;
545+ margin: 0 0 18px;
546+ list-style: none;
547+ background-color: #fbfbfb;
548+ background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
549+ background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
550+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
551+ background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
552+ background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
553+ background-image: linear-gradient(top, #ffffff, #f5f5f5);
554+ background-repeat: repeat-x;
555+ border: 1px solid #ddd;
556+ -webkit-border-radius: 3px;
557+ -moz-border-radius: 3px;
558+ border-radius: 3px;
559+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
560+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
561+ -moz-box-shadow: inset 0 1px 0 #ffffff;
562+ box-shadow: inset 0 1px 0 #ffffff;
563+}
564+
565+.ui-breadcrumb li {
566+ display: inline-block;
567+ *display: inline;
568+ text-shadow: 0 1px 0 #ffffff;
569+ *zoom: 1;
570+}
571+
572+.ui-breadcrumb .divider {
573+ padding: 0 5px;
574+ color: #999999;
575+}
576+
577+.ui-breadcrumb a {
578+ color: #0088CC;
579+ font-weight: normal;
580+}
581+
582+/* ProgressBar */
583+.ui-progressbar.ui-widget-content {
584+ height: 18px;
585+ margin-bottom: 18px;
586+ overflow: hidden;
587+ background-color: #f7f7f7;
588+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
589+ background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
590+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
591+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
592+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
593+ background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
594+ background-repeat: repeat-x;
595+ -webkit-border-radius: 4px;
596+ -moz-border-radius: 4px;
597+ border-radius: 4px;
598+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
599+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
600+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
601+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
602+}
603+
604+.ui-progressbar .ui-progressbar-value.ui-widget-header {
605+ height: 18px;
606+ font-size: 12px;
607+ color: #ffffff;
608+ text-align: center;
609+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
610+ border: 0 none;
611+ margin: 0;
612+ background-color: #0e90d2;
613+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
614+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
615+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
616+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
617+ background-image: linear-gradient(top, #149bdf, #0480be);
618+ background-image: -ms-linear-gradient(top, #149bdf, #0480be);
619+ background-repeat: repeat-x;
620+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
621+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
622+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
623+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
624+ -webkit-box-sizing: border-box;
625+ -moz-box-sizing: border-box;
626+ -ms-box-sizing: border-box;
627+ box-sizing: border-box;
628+ -webkit-transition: width 0.6s ease;
629+ -moz-transition: width 0.6s ease;
630+ -ms-transition: width 0.6s ease;
631+ -o-transition: width 0.6s ease;
632+ transition: width 0.6s ease;
633+}
634+
635+/** Dialog **/
636+.ui-dialog.ui-widget-content {
637+ background-color: #ffffff;
638+ border: 1px solid #999;
639+ border: 1px solid rgba(0, 0, 0, 0.3);
640+ *border: 1px solid #999;
641+ -webkit-border-radius: 6px;
642+ -moz-border-radius: 6px;
643+ border-radius: 6px;
644+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
645+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
646+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
647+ -webkit-background-clip: padding-box;
648+ -moz-background-clip: padding-box;
649+ background-clip: padding-box;
650+}
651+
652+.ui-dialog.ui-widget-content .ui-dialog-titlebar {
653+ padding: 9px 15px;
654+ border-bottom: 1px solid #eee;
655+ background-color: #ffffff;
656+}
657+
658+.ui-dialog.ui-widget-content .ui-dialog-title {
659+ font-size: 24px;
660+}
661+
662+.ui-dialog.ui-widget-content .ui-dialog-content {
663+ padding: 15px;
664+ font-size: 14px;
665+}
666+
667+.ui-dialog.ui-widget-content .ui-dialog-titlebar-close:hover,
668+.ui-dialog.ui-widget-content .ui-dialog-titlebar-close:focus,
669+.ui-dialog.ui-widget-content .ui-dialog-titlebar-minimize:hover,
670+.ui-dialog.ui-widget-content .ui-dialog-titlebar-minimize:focus,
671+.ui-dialog.ui-widget-content .ui-dialog-titlebar-maximize:hover,
672+.ui-dialog.ui-widget-content .ui-dialog-titlebar-maximize:focus { padding: 1px; }
673+
674+/** DataTable **/
675+.ui-datatable-odd {
676+ background-color: #F9F9F9
677+}
678+/** TabMenu **/
679+.ui-tabmenu {
680+ *position: relative;
681+ *z-index: 2;
682+ margin-bottom: 20px;
683+ overflow: visible;
684+ color: #555555;
685+}
686+
687+.ui-tabmenu .ui-tabmenu-nav.ui-widget-header {
688+ min-height: 38px;
689+ padding: 0 20px;
690+ background-color: #f5f5f5;
691+ *background-color: #e6e6e6;
692+ background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
693+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
694+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
695+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
696+ background-image: linear-gradient(top, #ffffff, #e6e6e6);
697+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
698+ background-repeat: repeat-x;
699+}
700+
701+.ui-tabmenu .ui-tabmenu-nav .ui-tabmenuitem.ui-state-default {
702+ padding: 5px 10px;
703+ color: #555555;
704+ text-decoration: none;
705+ text-shadow: 0 1px 0 #ffffff;
706+ border: 0 none;
707+ top: 0;
708+ margin: 0;
709+ font-weight: normal;
710+ -webkit-border-radius: 0px;
711+ -moz-border-radius: 0px;
712+ border-radius: 0px;
713+}
714+
715+/** Toolbar **/
716+.ui-toolbar.ui-widget-header {
717+ background-color: #fafafa;
718+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
719+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
720+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
721+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
722+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
723+ background-repeat: repeat-x;
724+ border: 1px solid #d4d4d4;
725+}
726+
727+/** **/
728+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary {
729+ color: #ffffff;
730+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
731+ background-color: #006dcc;
732+ *background-color: #0044cc;
733+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
734+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
735+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
736+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
737+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
738+ background-repeat: repeat-x;
739+ border-color: #0044cc #0044cc #002a80;
740+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
741+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
742+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
743+}
744+
745+.ui-priority-primary:hover,
746+.ui-priority-primary:active,
747+.ui-priority-primary.active,
748+.ui-priority-primary.disabled,
749+.ui-priority-primary[disabled] {
750+ color: #ffffff;
751+ background-color: #0044cc;
752+ *background-color: #003bb3;
753+}
754+
755+.ui-priority-primary:active,
756+.ui-priority-primary.active {
757+ background-color: #003399 \9;
758+}
759+
760+/** Menu **/
761+.ui-menu.ui-widget {
762+ min-width: 160px;
763+ padding: 5px 0;
764+ background-color: #ffffff;
765+ border: 1px solid #ccc;
766+ border: 1px solid rgba(0, 0, 0, 0.2);
767+ *border-right-width: 2px;
768+ *border-bottom-width: 2px;
769+ -webkit-border-radius: 6px;
770+ -moz-border-radius: 6px;
771+ border-radius: 6px;
772+ -webkit-background-clip: padding-box;
773+ -moz-background-clip: padding;
774+ background-clip: padding-box;
775+}
776+
777+.ui-menu.ui-widget a {
778+ display: block;
779+ clear: both;
780+ font-weight: normal;
781+ color: #333333;
782+ white-space: nowrap;
783+}
784+
785+.ui-menu.ui-widget li.ui-corner-all,
786+.ui-menu.ui-widget a.ui-corner-all {
787+ -webkit-border-radius: 0;
788+ -moz-border-radius: 0;
789+ border-radius: 0;
790+}
791+
792+.ui-menu.ui-widget .ui-menu-list {
793+
794+}
795+
796+.ui-menu.ui-widget li > .ui-menuitem-link {
797+ padding: 0.3em 0;
798+ width: 100%;
799+ border-width: 1px 0px;
800+}
801+
802+.ui-menu.ui-widget .ui-menu-list .ui-widget-header {
803+ border-width: 1px 0px;
804+ width: 100%;
805+}
806+
807+.ui-menu.ui-widget li > .ui-menuitem-link.ui-state-hover {
808+ color: #ffffff;
809+ text-decoration: none;
810+ background-color: #0088cc;
811+ background-color: #0081c2;
812+ background-position: 0px;
813+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
814+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
815+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
816+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
817+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
818+ background-repeat: repeat-x;
819+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
820+}
821+
822+.ui-menu.ui-widget li > .ui-menuitem-link.ui-state-hover .ui-icon {
823+ background-image: url(/@GSF/Web/Shared/Content/Images/ui-icons_ffffff_256x240.png);
824+}
825+
826+.ui-menu.ui-widget .ui-separator {
827+ height: 1px;
828+ overflow: hidden;
829+ background-color: #e5e5e5;
830+ border:0 none;
831+ border-bottom: 1px solid #ffffff;
832+-webkit-box-shadow: none;
833+-moz-box-shadow: none;
834+ box-shadow: none;
835+-webkit-border-radius: 0;
836+ -moz-border-radius: 0;
837+ border-radius: 0;
838+}
839+
840+.ui-menu.ui-widget .ui-menuitem-link .ui-menuitem-icon {
841+ margin-left: 0.3em;
842+}
843+.ui-menu.ui-widget .ui-menuitem-link .ui-menuitem-text {
844+ margin-left: 0.4em;
845+}
846+
847+.ui-shadow {
848+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) !important;
849+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) !important;
850+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2) !important;
851+}
852+
853+.ui-menu.ui-slidemenu .ui-shadow {
854+ -webkit-box-shadow: none !important;
855+ -moz-box-shadow: none !important;
856+ box-shadow: none !important;
857+}
858+
859+.ui-buttonset .ui-state-default {
860+ -webkit-border-radius: 0;
861+ -moz-border-radius: 0;
862+ border-radius: 0;
863+}
864+
865+.ui-buttonset .ui-corner-left.ui-state-default {
866+ -moz-border-radius-topleft: 4px;
867+ -webkit-border-top-left-radius: 4px;
868+ border-top-left-radius: 4px;
869+ -moz-border-radius-bottomleft: 4px;
870+ -webkit-border-bottom-left-radius: 4px;
871+ border-bottom-left-radius: 4px;
872+}
873+
874+.ui-buttonset .ui-corner-right.ui-state-default {
875+ -moz-border-radius-topright: 4px;
876+ -webkit-border-top-right-radius: 4px;
877+ border-top-right-radius: 4px;
878+ -moz-border-radius-bottomright: 4px;
879+ -webkit-border-bottom-right-radius: 4px;
880+ border-bottom-right-radius: 4px;
881+}
882+
883+/** MenuBar **/
884+.ui-menu.ui-menubar {
885+ padding-right: 20px;
886+ padding-left: 10px;
887+ background-color: #fafafa;
888+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
889+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
890+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
891+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
892+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
893+ background-repeat: repeat-x;
894+ border: 1px solid #d4d4d4;
895+ -webkit-border-radius: 4px;
896+ -moz-border-radius: 4px;
897+ border-radius: 4px;
898+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
899+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
900+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
901+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
902+}
903+
904+.ui-menu.ui-menubar .ui-menu-parent .ui-menu-child {
905+ padding: 5px 0;
906+}
907+
908+/** Panel **/
909+.ui-panel.ui-widget {
910+ margin-bottom: 20px;
911+ background-color: #fff;
912+ border: 1px solid transparent;
913+ border-radius: 4px;
914+ -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.05);
915+ box-shadow: 0 1px 1px rgba(0,0,0,.05);
916+ padding: 0;
917+ border-radius: 3px;
918+ border-color: #ddd;
919+}
920+
921+.ui-panel .ui-panel-titlebar.ui-widget-header {
922+ padding: 10px 15px;
923+ border: 0px none;
924+ border-bottom: 1px solid transparent;
925+ border-top-left-radius: 3px;
926+ border-top-right-radius: 3px;
927+ color: #333;
928+ background-color: #f5f5f5;
929+ border-color: #ddd;
930+ border-radius: 0px;
931+}
932+
933+.ui-panel .ui-panel-content.ui-widget-content {
934+ padding: 15px;
935+}
Source/Libraries/GSF.Web/Shared/Content/primeui.css+2921−0
@@ -0,0 +1,2921 @@
1+.ui-accordion {
2+ width: 100%;
3+}
4+
5+.ui-accordion .ui-accordion-header {
6+ cursor: pointer;
7+ position: relative;
8+ margin-top: 1px;
9+ zoom: 1;
10+}
11+
12+.ui-accordion .ui-accordion-header a {
13+ display: block;
14+ font-size: 1em;
15+ padding: .5em .5em .5em 2.2em;
16+}
17+
18+.ui-accordion .ui-accordion-header .fa {
19+ position: absolute;
20+ left: .5em;
21+ top: 50%;
22+ margin-top: -8px;
23+}
24+
25+.ui-accordion .ui-accordion-content {
26+ padding: 1em 2.2em;
27+ border-top: 0;
28+ margin-top: -2px;
29+ position: relative;
30+ top: 1px;
31+ margin-bottom: 2px;
32+ overflow: auto;
33+ zoom: 1;
34+}
35+
36+.ui-accordion .ui-accordion-header.ui-state-disabled,
37+.ui-accordion .ui-accordion-header.ui-state-disabled a {
38+ cursor: default;
39+}
40+.ui-autocomplete {
41+ width: auto;
42+ zoom: 1;
43+ cursor: pointer;
44+ -moz-box-shadow: none;
45+ -webkit-box-shadow: none;
46+ box-shadow: none;
47+ position: relative;
48+ display: inline-block;
49+}
50+
51+.ui-autocomplete .ui-autocomplete-dropdown {
52+ position: absolute;
53+ height: 100%;
54+ width: 2.4em;
55+}
56+
57+.ui-autocomplete-query {
58+ font-weight: bold;
59+}
60+
61+.ui-autocomplete-panel {
62+ position: absolute;
63+ overflow: auto;
64+}
65+
66+.ui-autocomplete-panel .ui-autocomplete-list {
67+ padding: 0.4em;
68+ border: 0 none;
69+}
70+
71+.ui-autocomplete-panel .ui-autocomplete-list-item {
72+ border:0px none;
73+ cursor:pointer;
74+ font-weight:normal;
75+ margin:1px 0;
76+ padding:3px 5px;
77+ text-align:left;
78+}
79+
80+.ui-autocomplete-panel .ui-autocomplete-table {
81+ border-collapse:collapse;
82+ width: 100%;
83+}
84+
85+.ui-autocomplete-panel .ui-autocomplete-table td {
86+ border-width: 1px;
87+ border-style: solid;
88+ border-color: inherit;
89+ padding:4px 10px 4px 10px;
90+}
91+
92+.ui-autocomplete .ui-button-icon-only .ui-button-text {
93+ padding: 0.29em;
94+}
95+
96+/* Multiple Selection */
97+.ui-autocomplete-multiple {
98+ clear: left;
99+ cursor: text;
100+ list-style-type: none;
101+ margin: 0;
102+ min-height: 1px;
103+ overflow: hidden;
104+}
105+
106+.ui-autocomplete-multiple-container.ui-inputfield {
107+ padding:0;
108+}
109+
110+.ui-autocomplete-token {
111+ cursor: default;
112+ float: left;
113+ overflow: hidden;
114+ padding: 1px 3px;
115+ white-space: nowrap;
116+ position: relative;
117+ margin:2px;
118+}
119+
120+.ui-autocomplete-token-label {
121+ display: block;
122+ padding: 0em 2.1em 0em 0.5em;
123+}
124+
125+.ui-autocomplete-token-icon {
126+ margin-top: -9px;
127+ position: absolute;
128+ right: 0.2em;
129+ top: 50%;
130+ cursor: pointer;
131+}
132+
133+.ui-autocomplete-input-token {
134+ float: left;
135+ list-style-type: none;
136+ margin: 2px;
137+ padding: 1px;
138+}
139+
140+.ui-autocomplete-input-token .ui-inputtext {
141+ border: 0 none;
142+ width: 140px;
143+ outline: medium none;
144+ background-color: transparent;
145+ margin: 0;
146+ padding: 0;
147+ box-shadow: none;
148+}
149+
150+.ui-autocomplete-itemtip-content {
151+ display:none;
152+}
153+
154+.ui-autocomplete-itemtip {
155+ position: absolute;
156+ display: none;
157+ padding: 0.4em;
158+}
159+
160+.ui-autocomplete-emptyMessage {
161+ padding:3px 5px;
162+}
163+
164+.ui-autocomplete-panel .ui-autocomplete-group {
165+ font-weight: bold;
166+ cursor: default;
167+}
168+
169+/* ng */
170+.ui-autocomplete-dd input.ui-corner-all {
171+ -moz-border-radius-topright: 0px;
172+ -webkit-border-top-right-radius: 0px;
173+ border-top-right-radius: 0px;
174+ -moz-border-radius-bottomright: 0px;
175+ -webkit-border-bottom-right-radius: 0px;
176+ border-bottom-right-radius: 0px;
177+ }
178+
179+.ui-autocomplete-dd .ui-autocomplete-dropdown.ui-corner-all {
180+ -moz-border-radius-topleft: 0px;
181+ -webkit-border-top-left-radius: 0px;
182+ border-top-left-radius: 0px;
183+ -moz-border-radius-bottomleft: 0px;
184+ -webkit-border-bottom-left-radius: 0px;
185+ border-bottom-left-radius: 0px;
186+}
187+
188+/** AutoComplete **/
189+.ui-fluid .ui-autocomplete,
190+.ui-fluid .ui-autocomplete-input {
191+ width: 100%;
192+}
193+
194+.ui-fluid .ui-autocomplete .ui-autocomplete-dropdown.ui-button {
195+ width: 2.4em;
196+}
197+/* Button */
198+.ui-button {
199+ display: inline-block;
200+ position: relative;
201+ padding: 0;
202+ margin-right: .1em;
203+ text-decoration: none !important;
204+ cursor: pointer;
205+ text-align: center;
206+ zoom: 1;
207+ overflow: visible; /* the overflow property removes extra width in IE */
208+}
209+
210+.ui-button-icon-only {
211+ width: 2.4em;
212+}
213+
214+/*button text element */
215+.ui-button .ui-button-text {
216+ display: block;
217+ line-height: normal;
218+}
219+
220+.ui-button-text-only .ui-button-text {
221+ padding: .3em 1em;
222+}
223+
224+.ui-button-icon-only .ui-button-text {
225+ padding: .3em;
226+ text-indent: -9999999px;
227+}
228+
229+.ui-button-text-icon-left .ui-button-text {
230+ padding: .3em 1em .3em 2.1em;
231+}
232+
233+.ui-button-text-icon-right .ui-button-text {
234+ padding: .3em 2.1em .3em 1em;
235+}
236+
237+/*button icon element(s) */
238+.ui-button-icon-only .fa,
239+.ui-button-text-icon-left .fa,
240+.ui-button-text-icon-right .fa {
241+ position: absolute;
242+ top: 50%;
243+ margin-top: -7px;
244+}
245+
246+.ui-button-icon-only .fa {
247+ left: 50%;
248+ margin-left: -8px;
249+}
250+
251+.ui-button-icon-left {
252+ left: .5em;
253+}
254+
255+.ui-button-icon-right {
256+ right: .5em;
257+}
258+
259+/*button sets*/
260+.ui-buttonset {
261+ margin-right: 7px;
262+}
263+.ui-buttonset .ui-button {
264+ margin-left: 0;
265+ margin-right: 0;
266+}
267+
268+/* workarounds */
269+button.ui-button::-moz-focus-inner {
270+ border: 0; padding: 0; /* reset extra padding in Firefox */
271+}
272+
273+/** Fluid **/
274+.ui-fluid .ui-button {
275+ width: 100%;
276+ box-sizing: border-box;
277+ -webkit-box-sizing:border-box;
278+ -moz-box-sizing: border-box;
279+}
280+
281+/** ButtonSet **/
282+.ui-fluid .ui-buttonset {
283+ width: 100%;
284+}
285+
286+.ui-fluid .ui-buttonset.ui-buttonset-1 .ui-button {width: 100%;}
287+.ui-fluid .ui-buttonset.ui-buttonset-2 .ui-button {width: 50%;}
288+.ui-fluid .ui-buttonset.ui-buttonset-3 .ui-button {width: 33.3%;}
289+.ui-fluid .ui-buttonset.ui-buttonset-4 .ui-button {width: 25%;}
290+.ui-fluid .ui-buttonset.ui-buttonset-5 .ui-button {width: 20%;}
291+.ui-fluid .ui-buttonset.ui-buttonset-6 .ui-button {width: 16.6%;}
292+
293+@media (max-width: 640px) {
294+ .ui-fluid .ui-buttonset.ui-buttonset-1 .ui-button,
295+ .ui-fluid .ui-buttonset.ui-buttonset-2 .ui-button,
296+ .ui-fluid .ui-buttonset.ui-buttonset-3 .ui-button,
297+ .ui-fluid .ui-buttonset.ui-buttonset-4 .ui-button,
298+ .ui-fluid .ui-buttonset.ui-buttonset-5 .ui-button,
299+ .ui-fluid .ui-buttonset.ui-buttonset-6 .ui-button {
300+ width: 100%;
301+ }
302+}
303+.ui-carousel {
304+ position: relative;
305+ padding: 1px;
306+}
307+
308+.ui-carousel .ui-carousel-viewport .ui-carousel-items {
309+ list-style: none outside none;
310+ margin: 0;
311+ padding:0;
312+ position: relative;
313+ width: 32000px;
314+ left: 0;
315+}
316+
317+.ui-carousel .ui-carousel-viewport .ui-carousel-items .ui-carousel-item {
318+ margin: 1px;
319+ padding: 0;
320+ float: left;
321+}
322+
323+.ui-carousel .ui-carousel-viewport {
324+ overflow: hidden;
325+ position: relative;
326+ border: 0;
327+}
328+
329+.ui-carousel .ui-carousel-footer {
330+ margin: 1px 1px 0px 1px;
331+ padding-top: 9px;
332+ padding-bottom: 6px;
333+ padding-right: 10px;
334+ padding-left: 10px;
335+ overflow: hidden;
336+}
337+
338+.ui-carousel .ui-carousel-header {
339+ margin: 0 1px;
340+ overflow: hidden;
341+ padding-top: 7px;
342+ padding-bottom: 8px;
343+ padding-right: 10px;
344+ padding-left: 10px;
345+}
346+
347+.ui-carousel .ui-carousel-header .ui-carousel-header-title {
348+ display: inline-block;
349+ padding-top: 2px;
350+ overflow: hidden;
351+}
352+
353+.ui-carousel .ui-carousel-dropdown,
354+.ui-carousel .ui-carousel-mobiledropdown {
355+ float: right;
356+ margin: 0px 10px;
357+ background-image: none;
358+}
359+
360+.ui-carousel .ui-carousel-dropdown option,
361+.ui-carousel .ui-carousel-mobiledropdown option{
362+ background-image: none;
363+ border:0 none;
364+ box-shadow:none;
365+ -moz-box-shadow: none;
366+ -webkit-box-shadow: none;
367+}
368+
369+.ui-carousel .ui-carousel-button {
370+ float: right;
371+ margin: 2px;
372+}
373+
374+.ui-carousel .ui-carousel-page-link {
375+ float: left;
376+ margin: 0 2px;
377+}
378+
379+.ui-carousel .ui-carousel-page-link,
380+.ui-carousel .ui-carousel-button {
381+ cursor: pointer;
382+}
383+
384+.ui-carousel .ui-carousel-page-links {
385+ margin: 0px 9px;
386+ margin-top: 2px;
387+ display: inline-table;
388+ float: right;
389+}
390+
391+.ui-carousel .ui-carousel-mobiledropdown {
392+ display: none;
393+}
394+.ui-chkbox {
395+ display: inline-block;
396+ cursor: pointer;
397+}
398+
399+.ui-chkbox .ui-chkbox-box {
400+ float: left;
401+ width: 16px;
402+ height: 16px;
403+ -moz-border-radius: 2px;
404+ -webkit-border-radius: 2px;
405+ border-radius: 2px;
406+ margin-right: 3px;
407+}
408+
409+.ui-chkbox .ui-chkbox-icon {
410+ margin-top: 1px;
411+ margin-left: -1px;
412+}
413+
414+.ui-chkbox .ui-chkbox-label {
415+ cursor: pointer;
416+ display: block;
417+ margin: 0 3px;
418+ outline: medium none;
419+ z-index: 1;
420+ float: left;
421+}
422+
423+
424+/*
425+ * PrimeUI Core
426+ */
427+.ui-shadow {
428+ -moz-box-shadow: 0px 5px 10px rgba(0,0,0,0.8);
429+ -webkit-box-shadow: 0px 5px 10px rgba(0,0,0,0.8);
430+ box-shadow: 0px 5px 10px rgba(0,0,0,0.8);
431+}
432+
433+.ui-unselectable-text {
434+ -webkit-user-select: none;
435+ -khtml-user-select: none;
436+ -moz-user-select: none;
437+ -o-user-select: none;
438+ user-select: none;
439+}
440+.ui-datagrid .ui-paginator {
441+ text-align: center;
442+ border-top: 0px none;
443+}
444+
445+.ui-datagrid-column {
446+ padding: 3px;
447+}
448+
449+.ui-datagrid-content-empty {
450+ padding: 4px 10px;
451+}
452+
453+.ui-datagrid .ui-datagrid-header,
454+.ui-datagrid .ui-datagrid-footer {
455+ text-align:center;
456+ padding:4px 10px;
457+}
458+
459+.ui-datagrid .ui-datagrid-header {
460+ border-bottom: 0px none;
461+}
462+
463+.ui-datagrid .ui-datagrid-footer {
464+ border-top: 0px none;
465+}
466+
467+.ui-datagrid .ui-paginator-top {
468+ border-bottom: 0px none;
469+}
470+
471+.ui-datagrid .ui-paginator-bottom {
472+ border-top: 0px none;
473+}
474+
475+.ui-datagrid-content {
476+ display: -webkit-flex;
477+ display: flex;
478+ -webkit-align-items: center;
479+ align-items: center;
480+ -webkit-justify-content: center;
481+ justify-content: center;
482+ -webkit-flex-direction: row;
483+ flex-direction: row;
484+ -webkit-flex-wrap: wrap;
485+ flex-wrap: wrap;
486+ -webkit-flex-flow: row wrap;
487+ flex-flow: row wrap;
488+ -webkit-align-content: flex-end;
489+ align-content: flex-end;
490+}
491+
492+.ui-datagrid-content > div {
493+ box-sizing: border-box;
494+}
495+
496+.ui-datagrid-col-1 > div {
497+ width: 100%
498+}
499+
500+.ui-datagrid-col-2 > div {
501+ width: 50%
502+}
503+
504+.ui-datagrid-col-3 > div {
505+ width: 33.33333%;
506+}
507+
508+.ui-datagrid-col-4 > div {
509+ width: 25%
510+}
511+
512+.ui-datagrid-col-5 > div {
513+ width: 20%
514+}
515+
516+.ui-datagrid-col-6 > div {
517+ width: 16.66666%;
518+}
519+
520+.ui-datagrid-col-7 > div {
521+ width: 14.28571%
522+}
523+
524+.ui-datagrid-col-8 > div {
525+ width: 12.5%
526+}
527+
528+.ui-datagrid-col-9 > div {
529+ width: 11.11111%
530+}
531+
532+.ui-datagrid-col-10 > div {
533+ width: 10%
534+}
535+
536+@media (max-width: 640px) {
537+ .ui-datagrid-content {
538+ display: block;
539+ }
540+
541+ .ui-datagrid-col-1 > div,
542+ .ui-datagrid-col-2 > div,
543+ .ui-datagrid-col-3 > div,
544+ .ui-datagrid-col-4 > div,
545+ .ui-datagrid-col-5 > div,
546+ .ui-datagrid-col-6 > div,
547+ .ui-datagrid-col-7 > div,
548+ .ui-datagrid-col-8 > div,
549+ .ui-datagrid-col-9 > div,
550+ .ui-datagrid-col-10 > div,
551+ .ui-datagrid-col-11 > div,
552+ .ui-datagrid-col-12 > div {
553+ width: 100%;
554+ }
555+}
556+
557+
558+.ui-datalist .ui-datalist-header,
559+.ui-datalist .ui-datalist-footer {
560+ text-align:center;
561+ padding:4px 10px;
562+}
563+
564+.ui-datalist .ui-datalist-header {
565+ border-bottom: 0px none;
566+}
567+
568+.ui-datalist .ui-datalist-footer {
569+ border-top: 0px none;
570+}
571+
572+.ui-datalist .ui-paginator {
573+ border-top: 0px none;
574+}
575+
576+.ui-datalist .ui-datalist-data {
577+ margin: 0;
578+ padding: 0;
579+}
580+
581+.ui-datalist .ui-datalist-data > li {
582+ list-style-type: none;
583+
584+}
585+.ui-datascroller {
586+}
587+
588+.ui-datascroller .ui-datascroller-header {
589+ text-align: center;
590+ padding: 4px 10px;
591+ border-bottom: 0px none;
592+}
593+
594+.ui-datascroller .ui-datascroller-footer {
595+ text-align: center;
596+ padding: 4px 10px;
597+ border-top: 0px none;
598+}
599+
600+.ui-datascroller .ui-datascroller-content {
601+ padding:4px 10px;
602+}
603+
604+.ui-datascroller-inline .ui-datascroller-content {
605+ overflow: auto;
606+}
607+
608+.ui-datascroller .ui-datascroller-list {
609+ list-style-type: none;
610+ margin: 0;
611+ padding: 0;
612+}
613+
614+.ui-datascroller .ui-datascroller-item {
615+ border: 0 none;
616+}
617+
618+.ui-datascroller .ui-datascroller-loader {
619+ text-align: center;
620+ padding: 4px 10px;
621+}
622+
623+.ui-datascroller .ui-datascroller-loading {
624+ background: url("/@GSF/Web/Shared/Content/Images/loadingbar.gif") center center no-repeat;
625+ width: 220px;
626+ height: 19px;
627+ padding: 0;
628+ margin: 0;
629+ display: inline-block;
630+}
631+.ui-datatable table {
632+ border-collapse:collapse;
633+ width: 100%;
634+ table-layout: fixed;
635+}
636+
637+.ui-datatable-tablewrapper {
638+ overflow: auto;
639+}
640+
641+.ui-datatable .ui-datatable-header,
642+.ui-datatable .ui-datatable-caption,
643+.ui-datatable .ui-datatable-footer {
644+ text-align: center;
645+ padding: 4px 10px;
646+}
647+
648+.ui-datatable .ui-datatable-caption,
649+.ui-datatable .ui-datatable-header {
650+ border-bottom: 0px none;
651+}
652+
653+.ui-datatable .ui-datatable-footer {
654+ border-top: 0px none;
655+}
656+
657+.ui-datatable thead th, .ui-datatable tfoot td {
658+ text-align: center;
659+}
660+
661+.ui-datatable thead th,
662+.ui-datatable tbody td,
663+.ui-datatable tfoot td,
664+.ui-datatable tfoot th{
665+ padding: 4px 10px;
666+ overflow: hidden;
667+ border-width: 1px;
668+ border-style: solid;
669+}
670+
671+.ui-datatable thead tr {
672+ border-width: 0px;
673+}
674+
675+.ui-datatable thead th {
676+ border-color: inherit;
677+}
678+
679+.ui-datatable tbody {
680+ outline: 0;
681+}
682+
683+.ui-datatable tbody td {
684+ border-color: inherit;
685+}
686+
687+.ui-datatable .ui-sortable-column {
688+ cursor: pointer;
689+}
690+
691+.ui-datatable .ui-sortable-column-icon {
692+ display: inline-block;
693+ margin: -3px 0px -3px 2px;
694+}
695+
696+.ui-datatable tr.ui-state-highlight {
697+ cursor: pointer;
698+}
699+
700+/* Scrollable */
701+.ui-datatable-scrollable-body {
702+ overflow:auto;
703+}
704+.ui-datatable-scrollable-header {
705+ overflow: hidden;
706+ border: 0px none;
707+}
708+
709+.ui-datatable-scrollable .ui-datatable-scrollable-header {
710+ position: relative;
711+}
712+
713+.ui-datatable-scrollable .ui-datatable-scrollable-header td {
714+ font-weight: normal;
715+}
716+
717+.ui-datatable .ui-datatable-scrollable-body {
718+ min-height: 0%;
719+}
720+
721+.ui-datatable .ui-datatable-data tr.ui-state-hover {
722+ border-color: inherit;
723+ font-weight: inherit;
724+ cursor: pointer;
725+}
726+
727+.ui-datatable-scrollable-theadclone {
728+ height:0px;
729+}
730+
731+.ui-datatable-scrollable-theadclone tr {
732+ height:0px;
733+}
734+
735+.ui-datatable-scrollable-theadclone th.ui-state-default {
736+ height:0px;
737+ border-bottom-width: 0px;
738+ border-top-width: 0px;
739+ padding-top: 0px;
740+ padding-bottom: 0px;
741+ outline: 0 none;
742+}
743+
744+.ui-datatable-scrollable-theadclone th span.ui-column-title {
745+ display: block;
746+ height: 0px;
747+}
748+
749+.ui-datatable .ui-paginator {
750+ padding: 2px;
751+ border-top: 0 none;
752+}
753+
754+.ui-datatable-rtl {
755+ direction: rtl;
756+}
757+
758+.ui-datatable-rtl.ui-datatable thead th,
759+.ui-datatable-rtl.ui-datatable tfoot td {
760+ text-align: right;
761+}
762+
763+/* Row Toggler */
764+.ui-row-toggler {
765+ cursor: pointer;
766+}
767+
768+/* Resizable */
769+.ui-datatable .ui-column-resizer {
770+ position: absolute !important;
771+ top: 0px;
772+ right: 0px;
773+ margin: 0;
774+ width:8px;
775+ height:20px;
776+ padding:0px;
777+ cursor:col-resize;
778+ border: 1px solid transparent;
779+}
780+
781+.ui-datatable .ui-column-resizer-helper {
782+ width: 1px;
783+ position: absolute;
784+ z-index: 10;
785+ display: none;
786+}
787+
788+.ui-datatable-resizable {
789+ padding-bottom:1px; /*fix for webkit overlow*/
790+ overflow:auto;
791+}
792+
793+.ui-datatable-resizable thead th,
794+.ui-datatable-resizable tbody td,
795+.ui-datatable-resizable tfoot td {
796+ white-space: nowrap;
797+}
798+
799+.ui-datatable-resizable th.ui-resizable-column {
800+ background-clip: padding-box;
801+ position: relative;
802+}
803+
804+/** Reflow **/
805+.ui-datatable-reflow .ui-datatable-data td .ui-column-title {
806+ display: none;
807+}
808+
809+/* Filter */
810+.ui-datatable .ui-column-filter {
811+ display: block;
812+ width: 100%;
813+ box-sizing: border-box;
814+ margin-top: 4px;
815+}
816+
817+/* Editing */
818+.ui-datatable td.ui-cell-editing {
819+ padding: 0px;
820+}
821+
822+.ui-datatable td.ui-cell-editing input {
823+ box-sizing: border-box;
824+ width: 100%;
825+ border: 0px none;
826+ outline: 0;
827+}
828+
829+.ui-datatable .ui-editable-column .ui-cell-editor {
830+ display: none;
831+}
832+
833+.ui-datatable .ui-editable-column.ui-cell-editing .ui-cell-editor {
834+ display: inline;
835+}
836+
837+.ui-datatable .ui-editable-column.ui-cell-editing .ui-cell-data {
838+ display: none;
839+}
840+
841+@media ( max-width: 35em ) {
842+ .ui-datatable-reflow thead th,
843+ .ui-datatable-reflow tfoot td {
844+ display: none;
845+ }
846+
847+ .ui-datatable-reflow .ui-datatable-data td {
848+ text-align: left;
849+ display: block;
850+ border: 0px none;
851+ width: 100%;
852+ -webkit-box-sizing: border-box;
853+ -moz-box-sizing: border-box;
854+ box-sizing: border-box;
855+ float: left;
856+ clear: left;
857+ }
858+
859+ .ui-datatable-reflow .ui-datatable-data.ui-widget-content {
860+ border: 0px none;
861+ }
862+
863+ .ui-datatable-reflow .ui-datatable-data tr.ui-widget-content {
864+ border-left: 0px none;
865+ border-right: 0px none;
866+ }
867+
868+ .ui-datatable-reflow .ui-datatable-data td .ui-column-title {
869+ padding: .4em;
870+ min-width: 30%;
871+ display: inline-block;
872+ margin: -.4em 1em -.4em -.4em;
873+ }
874+}
875+
876+.ui-dialog { position: fixed; padding: 0; overflow: hidden; }
877+.ui-dialog .ui-dialog-titlebar { padding: .4em .4em .4em 1em; position: relative; border:0px; }
878+.ui-dialog .ui-dialog-title { float: left; margin: .3em 16px .1em 0; }
879+.ui-dialog .ui-dialog-content {position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
880+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
881+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
882+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; float:right;}
883+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
884+.ui-draggable .ui-dialog-titlebar { cursor: move; }
885+.ui-dialog .ui-dialog-titlebar-close, .ui-dialog .ui-dialog-titlebar-minimize,.ui-dialog .ui-dialog-titlebar-maximize { float: right; margin-top: 2px; top:0px; padding: 1px; cursor:pointer; height: 16px;}
886+.ui-dialog .ui-dialog-titlebar-close span, .ui-dialog .ui-dialog-titlebar-minimize span, .ui-dialog .ui-dialog-titlebar-maximize span { display: block; margin: 0px; }
887+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus, .ui-dialog .ui-dialog-titlebar-minimize:hover, .ui-dialog .ui-dialog-titlebar-minimize:focus, .ui-dialog .ui-dialog-titlebar-maximize:hover, .ui-dialog .ui-dialog-titlebar-maximize:focus { padding: 0; }
888+.ui-dialog-footer {padding: .4em 1em; border-width: 1px 0 0 0;text-align:left;}
889+.ui-dialog-docking-zone {position: fixed;bottom: 0;left: 0;}
890+.ui-dialog-minimizing {border: 2px dotted gray;}
891+.ui-confirm-dialog-severity {float: left; margin: 3px 7px 20px 0;}
892+.ui-dialog.ui-dialog-minimized{*width: 200px !important;} /*IE7 hack*/
893+
894+.ui-dialog-mask {
895+ position: fixed;
896+ width: 100%;
897+ height: 100%;
898+}
899+
900+/** RTL **/
901+.ui-dialog-rtl {
902+ direction: rtl;
903+}
904+
905+.ui-dialog.ui-dialog-rtl .ui-dialog-title {
906+ float: right;
907+}
908+
909+.ui-dialog.ui-dialog-rtl .ui-dialog-titlebar-close,
910+.ui-dialog.ui-dialog-rtl .ui-dialog-titlebar-minimize,
911+.ui-dialog.ui-dialog-rtl .ui-dialog-titlebar-maximize {
912+ float: left;
913+}
914+
915+.ui-dialog.ui-dialog-rtl .ui-dialog-footer {
916+ text-align: right;
917+}
918+.ui-dropdown {
919+ display: inline-block;
920+ position: relative;
921+ width: auto;
922+ zoom: 1;
923+ cursor: pointer;
924+ padding-right: 2em;
925+}
926+
927+.ui-dropdown .ui-dropdown-trigger {
928+ border-right: none;
929+ border-top: none;
930+ border-bottom: none;
931+ cursor: pointer;
932+ width: 16px;
933+ height: 100%;
934+ position: absolute;
935+ right: 0;
936+ top: 0;
937+ padding: 0 3px;
938+}
939+
940+.ui-dropdown .ui-dropdown-trigger .fa {
941+ margin-top: 4px;
942+ margin-left: -1px;
943+}
944+
945+.ui-dropdown .ui-dropdown-label {
946+ display: block;
947+ border: none;
948+ white-space: nowrap;
949+ overflow: hidden;
950+ font-weight: normal;
951+ width: 100%;
952+ float:left;
953+}
954+
955+.ui-dropdown.ui-state-disabled .ui-dropdown-trigger,
956+.ui-dropdown.ui-state-disabled .ui-dropdown-label {
957+ cursor: default;
958+}
959+
960+.ui-dropdown label.ui-dropdown-label {
961+ cursor: pointer;
962+}
963+
964+.ui-dropdown input.ui-dropdown-label {
965+ cursor: default;
966+}
967+
968+.ui-dropdown-panel {
969+ position: absolute;
970+ height: auto;
971+}
972+
973+.ui-dropdown-panel .ui-dropdown-items-wrapper {
974+ overflow: auto;
975+}
976+
977+.ui-dropdown-panel .ui-dropdown-item {
978+ font-weight: normal;
979+}
980+
981+.ui-dropdown-panel .ui-dropdown-item-group {
982+ font-weight: bold;
983+}
984+
985+.ui-dropdown-panel .ui-dropdown-list {
986+ padding: 0.4em;
987+ border: 0 none;
988+}
989+
990+.ui-dropdown-panel .ui-dropdown-list-item {
991+ border:0px none;
992+ cursor:pointer;
993+ margin:1px 0;
994+ padding:3px 5px;
995+ text-align:left;
996+}
997+
998+.ui-dropdown-panel .ui-dropdown-filter {
999+ width: 100%;
1000+ padding-right:18px;
1001+ box-sizing: border-box;
1002+}
1003+
1004+.ui-dropdown-panel .ui-dropdown-filter-container {
1005+ position: relative;
1006+ margin: 0;
1007+ padding: 0.4em;
1008+ display: inline-block;
1009+}
1010+
1011+.ui-dropdown-panel .ui-dropdown-filter-container .fa {
1012+ position: absolute;
1013+ top: 12px;
1014+ right: 15px;
1015+}
1016+
1017+/** Dropdown **/
1018+.ui-fluid .ui-dropdown {
1019+ width: 100%;
1020+ box-sizing: border-box;
1021+ -webkit-box-sizing:border-box;
1022+ -moz-box-sizing: border-box;
1023+}
1024+.ui-fluid .ui-dropdown .ui-dropdown-trigger {
1025+ width: 32px;
1026+ padding: 0 6px;
1027+ box-sizing: border-box;
1028+ -webkit-box-sizing:border-box;
1029+ -moz-box-sizing: border-box;
1030+}
1031+.ui-editor-container .ui-editor-toolbar {
1032+ border:0 none;
1033+}
1034+.ui-fieldset, .ui-fieldset .ui-fieldset-legend {
1035+ padding:0.6em 1em;
1036+}
1037+
1038+.ui-fieldset-toggleable .ui-fieldset-legend {
1039+ padding: 0.5em 1em 0.5em 0.5em;
1040+ cursor:pointer;
1041+ white-space: nowrap;
1042+}
1043+
1044+.ui-fieldset .ui-fieldset-toggler {
1045+ padding-right: .1em;
1046+ margin-top: 0.1em;
1047+ float:left;
1048+}
1049+.ui-galleria {
1050+ overflow: hidden;
1051+ visibility: hidden;
1052+ position: relative;
1053+}
1054+
1055+.ui-galleria-panel-wrapper {
1056+ position: relative;
1057+ padding: 0px;
1058+ margin: 0px;
1059+}
1060+
1061+.ui-galleria-panel {
1062+ filter: inherit;
1063+ position: absolute;
1064+ top: 0px;
1065+ left: 0px;
1066+ list-style-type: none;
1067+}
1068+
1069+.ui-galleria-filmstrip-wrapper {
1070+ overflow: hidden;
1071+ margin: 5px auto;
1072+ position: relative;
1073+}
1074+
1075+.ui-galleria-filmstrip {
1076+ list-style: none outside none;
1077+ margin: 0;
1078+ padding: 0;
1079+ width: 2340px;
1080+ z-index: 900;
1081+ position: absolute;
1082+ top: 0px;
1083+ left: 0px;
1084+}
1085+
1086+.ui-galleria-frame {
1087+ float:left;
1088+ margin-right: 5px;
1089+ opacity: 0.3;
1090+ cursor: pointer;
1091+}
1092+
1093+.ui-galleria-frame-active {
1094+ opacity: 1;
1095+}
1096+
1097+.ui-galleria-frame-content {
1098+ overflow: hidden;
1099+}
1100+
1101+.ui-galleria-nav-next, .ui-galleria-nav-prev {
1102+ cursor: pointer;
1103+ position: absolute;
1104+}
1105+
1106+.ui-galleria-nav-prev {
1107+ left: 5px;
1108+}
1109+
1110+.ui-galleria-nav-next {
1111+ right: 5px;
1112+}
1113+
1114+.ui-galleria-caption {
1115+ position: absolute;
1116+ left:1px;
1117+ background-color: rgba(0,0,0,0.5);
1118+ display: none;
1119+ color: #FFFFFF;
1120+ padding: 0.2em 1em;
1121+}
1122+
1123+.ui-galleria-panel-content {
1124+ padding: 1em 1.4em;
1125+}
1126+/* Grid CSS */
1127+.ui-grid {
1128+ clear: both;
1129+ padding: 0px;
1130+ margin: 0px;
1131+}
1132+
1133+.ui-grid:before,
1134+.ui-grid:after {
1135+ content:"";
1136+ display:table;
1137+}
1138+
1139+.ui-grid:after {
1140+ clear:both;
1141+}
1142+
1143+.ui-grid .ui-grid-row {
1144+ display: -webkit-box;
1145+ display: -moz-box;
1146+ display: -ms-flexbox;
1147+ display: -webkit-flex;
1148+ display: flex;
1149+ clear:both;
1150+}
1151+
1152+.ui-grid-row:after {
1153+ clear: both;
1154+ content: "";
1155+ display: table;
1156+}
1157+
1158+.ui-grid-col-1,
1159+.ui-grid-col-2,
1160+.ui-grid-col-3,
1161+.ui-grid-col-4,
1162+.ui-grid-col-5,
1163+.ui-grid-col-6,
1164+.ui-grid-col-7,
1165+.ui-grid-col-8,
1166+.ui-grid-col-9,
1167+.ui-grid-col-10,
1168+.ui-grid-col-11,
1169+.ui-grid-col-12 {
1170+ float: left;
1171+ box-sizing: border-box;
1172+}
1173+
1174+.ui-grid-col-1 {
1175+ width: 8.33333%;
1176+}
1177+
1178+.ui-grid-col-2 {
1179+ width: 16.66666%;
1180+}
1181+
1182+.ui-grid-col-3 {
1183+ width: 25%;
1184+}
1185+
1186+.ui-grid-col-4 {
1187+ width: 33.33333%;
1188+}
1189+
1190+.ui-grid-col-5 {
1191+ width: 41.66666%;
1192+}
1193+
1194+.ui-grid-col-6 {
1195+ width: 50%;
1196+}
1197+
1198+.ui-grid-col-7 {
1199+ width: 58.33333%;
1200+}
1201+
1202+.ui-grid-col-8 {
1203+ width: 66.66666%;
1204+}
1205+
1206+.ui-grid-col-9 {
1207+ width: 75%;
1208+}
1209+
1210+.ui-grid-col-10 {
1211+ width: 83.33333%;
1212+}
1213+
1214+.ui-grid-col-11 {
1215+ width: 91.66666%;
1216+}
1217+
1218+.ui-grid-col-12 {
1219+ width: 100%;
1220+}
1221+
1222+@media (min-width: 480px) {
1223+ .ui-grid-fixed {
1224+ width: 480px;
1225+ }
1226+}
1227+
1228+@media (min-width: 768px) {
1229+ .ui-grid-fixed {
1230+ width: 768px;
1231+ }
1232+}
1233+
1234+@media (min-width: 960px) {
1235+ .ui-grid-fixed {
1236+ width: 960px;
1237+ }
1238+}
1239+
1240+@media (min-width: 1024px) {
1241+ .ui-grid-fixed {
1242+ width: 1024px;
1243+ }
1244+}
1245+
1246+/* Responsive */
1247+@media (max-width: 640px) {
1248+ .ui-grid-responsive .ui-grid-row {
1249+ display: block;
1250+ }
1251+
1252+ .ui-grid-responsive .ui-grid-col-1,
1253+ .ui-grid-responsive .ui-grid-col-2,
1254+ .ui-grid-responsive .ui-grid-col-3,
1255+ .ui-grid-responsive .ui-grid-col-4,
1256+ .ui-grid-responsive .ui-grid-col-5,
1257+ .ui-grid-responsive .ui-grid-col-6,
1258+ .ui-grid-responsive .ui-grid-col-7,
1259+ .ui-grid-responsive .ui-grid-col-8,
1260+ .ui-grid-responsive .ui-grid-col-9,
1261+ .ui-grid-responsive .ui-grid-col-10,
1262+ .ui-grid-responsive .ui-grid-col-11,
1263+ .ui-grid-responsive .ui-grid-col-12 {
1264+ width: 100%;
1265+ float: none;
1266+ }
1267+}
1268+
1269+.ui-grid.ui-grid-pad > .ui-grid-row > div {
1270+ padding: 4px 10px;
1271+}
1272+/* ie6 */
1273+* html .ui-growl {
1274+ position:absolute;
1275+}
1276+* html .ui-growl-item {
1277+ padding-bottom:0;
1278+}
1279+* html .ui-growl-icon-close {
1280+ top:7px;
1281+ right:7px;
1282+}
1283+
1284+.ui-growl {
1285+ position:fixed;
1286+ top:20px;
1287+ right:20px;
1288+ width:301px;
1289+}
1290+.ui-growl-item-container {
1291+ position:relative;
1292+ margin:0 0 10px 0;
1293+ opacity:0.85;
1294+ filter:alpha(opacity=85);
1295+}
1296+.ui-growl-item {
1297+ display:block;
1298+ padding:10px 15px;
1299+}
1300+.ui-growl-item p {
1301+ padding:0;
1302+ margin:0;
1303+}
1304+.ui-growl-icon-close {
1305+ position:absolute;
1306+ top:5px;
1307+ right:3px;
1308+ cursor:pointer;
1309+}
1310+.ui-growl-title {
1311+ font-weight:bold;
1312+ padding:0 0 7px 0;
1313+ display:block;
1314+}
1315+.ui-growl-image {
1316+ float:left;
1317+ margin-left: 5px;
1318+ padding:0;
1319+ display: block;
1320+}
1321+
1322+.ui-growl-message {
1323+ padding:0 0 5px 0;
1324+ width:220px;
1325+ float:right;
1326+}
1327+
1328+.ui-growl-message p {
1329+ font-weight: normal;
1330+}
1331+.ui-inputtext {
1332+ margin: 0;
1333+ outline: medium none;
1334+ padding: 4px;
1335+ font-weight: normal;
1336+}
1337+
1338+.ui-widget-header .ui-inputtext,
1339+.ui-widget-content .ui-inputtext {
1340+ font-weight: normal;
1341+}
1342+
1343+.ui-fluid .ui-inputtext {
1344+ width: 100%;
1345+ box-sizing: border-box;
1346+ -webkit-box-sizing:border-box;
1347+ -moz-box-sizing: border-box;
1348+}
1349+.ui-lightbox {
1350+ position: fixed;
1351+}
1352+
1353+.ui-lightbox-content-wrapper {
1354+ position: relative;
1355+}
1356+
1357+.ui-lightbox-content {
1358+ position: relative;
1359+ margin:0;
1360+ padding: 0;
1361+ background-color: #000000;
1362+}
1363+
1364+.ui-lightbox-nav-right, .ui-lightbox-nav-left {
1365+ position: absolute;
1366+ top:50%;
1367+ cursor: pointer;
1368+}
1369+
1370+.ui-lightbox-nav-left {
1371+ left:0;
1372+}
1373+
1374+.ui-lightbox-nav-right {
1375+ right:0;
1376+}
1377+
1378+.ui-lightbox-loading {
1379+ background: url("/@GSF/Web/Shared/Content/Images/loading.gif") #000000 center center no-repeat;
1380+}
1381+
1382+.ui-lightbox-caption {
1383+ padding: 0.2em 0.4em;
1384+ display: none;
1385+}
1386+
1387+.ui-lightbox-caption-text {
1388+ margin: 0.3em 0 0.1em 0;
1389+ float:left;
1390+}
1391+
1392+.ui-lightbox-close {
1393+ float:right;
1394+ margin:0;
1395+ padding:1px;
1396+}
1397+
1398+.ui-lightbox-close.ui-state-hover {
1399+ padding: 0;
1400+}
1401+.ui-inputtextarea-resizable {
1402+ overflow: hidden;
1403+ resize:none;
1404+}
1405+
1406+.ui-fluid .ui-inputtextarea {
1407+ width: 100%;
1408+}
1409+.ui-listbox {
1410+ overflow:auto;
1411+ padding:2px;
1412+ width:125px;
1413+}
1414+
1415+.ui-listbox .ui-listbox-list {
1416+ list-style-type: none;
1417+ margin: 0;
1418+ padding: 0;
1419+}
1420+
1421+.ui-listbox .ui-listbox-item {
1422+ margin:2px;
1423+ border:0 none;
1424+ cursor: pointer;
1425+ font-weight: normal;
1426+}
1427+
1428+.ui-listbox.ui-state-disabled .ui-listbox-item {
1429+ cursor: default;
1430+}
1431+.ui-menu {
1432+ width: 12.5em;
1433+ padding:0.3em;
1434+ position:relative;
1435+}
1436+
1437+.ui-menu.ui-menu-dynamic {
1438+ position: absolute;
1439+ display: none;
1440+ z-index: 100000;
1441+}
1442+
1443+.ui-menu-list {
1444+ position:static;
1445+}
1446+
1447+.ui-menu .ui-menu-list .ui-menuitem {
1448+ border:none;
1449+}
1450+
1451+.ui-menu .ui-menu-list .ui-widget-header {
1452+ clear:both;
1453+ float:left;
1454+ width:98%;
1455+ margin:1px 0;
1456+}
1457+
1458+.ui-menu .ui-menuitem {
1459+ width:100%;
1460+ float:left;
1461+ clear:both;
1462+ margin:1px 0;
1463+ padding:0;
1464+}
1465+
1466+.ui-menu .ui-menuitem-parent {
1467+ width:100%;
1468+ float:left;
1469+ clear:both;
1470+ margin:1px 0;
1471+ padding:0;
1472+}
1473+
1474+.ui-menu .ui-menuitem-link {
1475+ display:block;
1476+ width:92%;
1477+ outline:none;
1478+ text-decoration:none;
1479+ font-weight:400;
1480+ border:solid 1px transparent;
1481+ float:left;
1482+ line-height:16px;
1483+ padding:0.3em;
1484+ cursor: pointer;
1485+}
1486+
1487+.ui-menu .ui-menuitem-link .ui-menuitem-icon {
1488+ display:inline-block;
1489+ float:left;
1490+}
1491+
1492+.ui-menu .ui-menuitem-text {
1493+ float:left;
1494+}
1495+
1496+.ui-menu .ui-widget-header h1,
1497+.ui-menu .ui-widget-header h2,
1498+.ui-menu .ui-widget-header h3,
1499+.ui-menu .ui-widget-header h4,
1500+.ui-menu .ui-widget-header h5,
1501+.ui-menu .ui-widget-header h6 {
1502+ float:left;
1503+ display:block;
1504+ font-size:1em;
1505+ margin:0 auto;
1506+ padding:0.3em 3%;
1507+}
1508+
1509+.ui-menu .ui-menu-parent .ui-menu-child {
1510+ display:none;
1511+ width:12.5em;
1512+ padding:0.3em;
1513+ position:absolute;
1514+ margin:0;
1515+ outline:0;
1516+ line-height:1.3;
1517+ text-decoration:none;
1518+ font-size:100%;
1519+ list-style:none;
1520+}
1521+
1522+.ui-menu .ui-menu-parent {
1523+ position:relative;
1524+}
1525+
1526+.ui-menu .ui-menu-parent .ui-submenu-icon {
1527+ float:right;
1528+}
1529+
1530+.ui-menubutton {
1531+ padding:0;
1532+}
1533+
1534+.ui-menubutton .ui-button {
1535+ margin:0;
1536+}
1537+
1538+/** Menubar **/
1539+.ui-menubar {
1540+ width:auto;
1541+}
1542+
1543+.ui-menubar .ui-menuitem {
1544+ width:auto;
1545+ clear:none;
1546+}
1547+
1548+.ui-menubar .ui-menu-child .ui-menuitem {
1549+ width:100%;
1550+}
1551+
1552+.ui-menubar .ui-menu-child {
1553+ top:25px;
1554+ left:0;
1555+}
1556+
1557+.ui-menubar .ui-menuitem-link {
1558+ width:auto;
1559+ padding:0.4em 0.3em;
1560+}
1561+
1562+.ui-menubar .ui-menu-child .ui-menuitem-link {
1563+ width:92%;
1564+}
1565+
1566+.ui-menubar .ui-widget-header {
1567+ clear:none;
1568+ width:auto;
1569+ margin:0 3px 0 0;
1570+}
1571+
1572+.ui-menubar .ui-widget-header h1,
1573+.ui-menubar .ui-widget-header h2,
1574+.ui-menubar .ui-widget-header h3,
1575+.ui-menubar .ui-widget-header h4,
1576+.ui-menubar .ui-widget-header h5,
1577+.ui-menubar .ui-widget-header h6 {
1578+ padding:0.4em 0.3em;
1579+}
1580+
1581+.ui-menubar .ui-menubar-options {
1582+ float: right;
1583+}
1584+
1585+.ui-menu .ui-separator {
1586+ width:98%;
1587+ height:0px;
1588+ float:left;
1589+ clear:both;
1590+ margin:1px 0 0 0;
1591+ padding:0;
1592+ border-top: 0px none;
1593+}
1594+
1595+/** Breadcrumb **/
1596+.ui-breadcrumb {
1597+ margin: 0;
1598+ padding: 0;
1599+ overflow: hidden;
1600+ padding: 5px 5px 7px 5px;
1601+}
1602+
1603+.ui-breadcrumb ul {
1604+ margin: 0;
1605+ padding: 0;
1606+ display: block;
1607+}
1608+
1609+.ui-breadcrumb ul li {
1610+ display: block;
1611+ float: left;
1612+ position: relative;
1613+ overflow: hidden;
1614+}
1615+
1616+.ui-breadcrumb ul li span {
1617+ display: block;
1618+ overflow: hidden;
1619+}
1620+
1621+.ui-breadcrumb ul li .ui-menuitem-link {
1622+ display: block;
1623+ position: relative;
1624+ overflow: hidden;
1625+ float: left;
1626+ margin-top:3px;
1627+}
1628+
1629+.ui-breadcrumb ul li.fa {
1630+ padding: 0;
1631+ margin: 4px 3px 0px 3px;
1632+}
1633+
1634+.ui-breadcrumb-chevron {
1635+ float:left;
1636+}
1637+
1638+/** SlideMenu **/
1639+.ui-slidemenu .ui-slidemenu-wrapper {
1640+ position: relative;
1641+}
1642+
1643+.ui-slidemenu .ui-slidemenu-content {
1644+ overflow-x: hidden;
1645+ overflow-y: auto;
1646+ position: relative;
1647+}
1648+
1649+.ui-slidemenu .ui-menu-list {
1650+ position: absolute;
1651+ top: 0;
1652+}
1653+
1654+.ui-slidemenu .ui-menu-parent {
1655+ position: static;
1656+}
1657+
1658+.ui-slidemenu .ui-menu-child {
1659+ box-shadow : none;
1660+ border: 0 none;
1661+ background: none repeat scroll 0 0 transparent;
1662+}
1663+
1664+.ui-slidemenu-backward {
1665+ position: absolute;
1666+ bottom: 0;
1667+ width: 95%;
1668+ margin-bottom: 0.4em;
1669+ padding: 0.2em;
1670+ cursor: pointer;
1671+ display: none;
1672+}
1673+
1674+.ui-slidemenu-backward .fa {
1675+ float:left;
1676+ margin-top: 1px;
1677+}
1678+
1679+/** Fluid **/
1680+.ui-fluid .ui-menu {
1681+ width: 100%;
1682+}
1683+
1684+
1685+/** MegaMenu **/
1686+.ui-megamenu .ui-megamenu-panel.ui-menu-child {
1687+ width: auto;
1688+}
1689+
1690+.ui-megamenu .ui-megamenu-panel .ui-menu-list {
1691+ width: 12.5em;
1692+}
1693+
1694+.ui-megamenu-vertical {
1695+ width: 12.5em;
1696+}
1697+
1698+.ui-megamenu-vertical .ui-menuitem-link,
1699+.ui-megamenu-vertical .ui-menu-list .ui-menuitem {
1700+ width: 100%;
1701+ box-sizing: border-box;
1702+}
1703+
1704+/** PanelMenu **/
1705+.ui-panelmenu {
1706+ width: auto;
1707+}
1708+
1709+.ui-panelmenu .ui-panelmenu-panel {
1710+ padding: 0;
1711+ margin: 0;
1712+}
1713+
1714+.ui-panelmenu .ui-panelmenu-header {
1715+ cursor: pointer;
1716+ position: relative;
1717+ margin: 0;
1718+ zoom: 1;
1719+}
1720+
1721+.ui-panelmenu .ui-panelmenu-header a {
1722+ display: block;
1723+ padding: .5em .5em .5em 2.2em;
1724+}
1725+
1726+.ui-panelmenu .ui-panelmenu-header .fa {
1727+ position: absolute;
1728+ left: .5em;
1729+ top: 50%;
1730+ margin-top: -8px;
1731+}
1732+
1733+.ui-panelmenu .ui-panelmenu-header .ui-menuitem-icon.fa {
1734+ left: 1.5em;
1735+}
1736+
1737+.ui-panelmenu .ui-panelmenu-content {
1738+ padding: 0.2em 0;
1739+ border-top: 0;
1740+ margin-top: -2px;
1741+ position: relative;
1742+ top: 1px;
1743+ overflow: auto;
1744+ zoom: 1;
1745+ outline: none;
1746+}
1747+
1748+.ui-panelmenu .ui-panelmenu-header.ui-state-disabled,
1749+.ui-panelmenu .ui-panelmenu-header.ui-state-disabled a {
1750+ cursor: default;
1751+}
1752+
1753+.ui-panelmenu .ui-menu-list {
1754+ position: static;
1755+}
1756+
1757+.ui-panelmenu .ui-menuitem {
1758+ margin:1px 0;
1759+ padding:0;
1760+}
1761+
1762+.ui-panelmenu .ui-menuitem-link {
1763+ display:block;
1764+ outline:none;
1765+ text-decoration:none;
1766+ font-weight:400;
1767+ border:solid 1px transparent;
1768+ line-height:16px;
1769+ cursor: pointer;
1770+ position: relative;
1771+ padding: 0.3em 0.3em 0.3em 2em;
1772+}
1773+
1774+.ui-panelmenu .ui-menu-parent .ui-menuitem-link-hasicon,
1775+.ui-panelmenu .ui-panelmenu-header a.ui-panelmenu-headerlink-hasicon {
1776+ padding-left: 2.8em;
1777+}
1778+
1779+.ui-panelmenu .fa {
1780+ position: absolute;
1781+ right: auto;
1782+ top: 4px;
1783+ bottom: 0;
1784+ margin: auto 0;
1785+ left: 0.5em;
1786+}
1787+
1788+.ui-panelmenu .ui-menu-parent > .ui-menuitem-link > .fa {
1789+ left: 1.5em;
1790+}
1791+
1792+.ui-panelmenu .ui-menu-parent .ui-panelmenu-icon.fa {
1793+ left: 0.5em;
1794+}
1795+
1796+.ui-panelmenu .ui-menuitem-text {
1797+ float: none;
1798+}
1799+
1800+.ui-panelmenu .ui-menu-parent .ui-menu-list {
1801+ margin-left: 20px;
1802+}
1803+
1804+.ui-menuitem-outline {
1805+ outline: 1px dotted;
1806+ z-index: 1;
1807+}
1808+.ui-messages {
1809+ border: 1px solid;
1810+ margin: 10px 0px;
1811+ padding: 20px 20px 20px 10px;
1812+ display: none;
1813+ position: relative;
1814+}
1815+
1816+.ui-messages-icon {
1817+ display:block;
1818+ float:left;
1819+ margin-top:-5px;
1820+ padding:0;
1821+ position: relative;
1822+}
1823+
1824+.ui-messages-summary {
1825+ margin-left:10px;
1826+ font-weight:bold;
1827+}
1828+
1829+.ui-messages-detail {
1830+ margin-left:5px;
1831+}
1832+
1833+.ui-messages-info {
1834+ color: #ffffff;
1835+ background-color: #2196f3;
1836+ border-color: #2196f3;
1837+}
1838+
1839+.ui-messages-warn {
1840+ color: #ffffff;
1841+ background-color: #ff9800;
1842+ border-color: #ff9800;
1843+}
1844+
1845+.ui-messages-error {
1846+ color: #ffffff;
1847+ background-color: #f44336;
1848+ border-color: #f44336;
1849+}
1850+
1851+.ui-messages ul {
1852+ margin: 0 25px;
1853+ padding:0;
1854+ list-style-type:none;
1855+}
1856+
1857+.ui-messages.ui-messages-noicon ul {
1858+ margin: 0 25px 0 0;
1859+}
1860+
1861+.ui-messages .ui-messages-close {
1862+ color: #ffffff;
1863+ cursor: pointer;
1864+ position: absolute;
1865+ top: 5px;
1866+ right: 5px;
1867+}
1868+.ui-multiselectlistbox-listcontainer {
1869+ padding: 2px;
1870+ width: 150px;
1871+}
1872+
1873+.ui-multiselectlistbox-listcontainer {
1874+ overflow:auto;
1875+}
1876+
1877+.ui-multiselectlistbox .ui-multiselectlistbox-list {
1878+ list-style-type: none;
1879+ margin: 0;
1880+ padding: 0;
1881+}
1882+
1883+.ui-multiselectlistbox .ui-multiselectlistbox-item {
1884+ margin: 2px;
1885+ border: 0 none;
1886+ cursor: pointer;
1887+ font-weight: normal;
1888+}
1889+
1890+.ui-multiselectlistbox .ui-multiselectlistbox-listcontainer {
1891+ float: left;
1892+ margin-right: 4px;
1893+}
1894+
1895+.ui-multiselectlistbox .ui-multiselectlistbox-item {
1896+ white-space: nowrap;
1897+}
1898+
1899+.ui-multiselectlistbox.ui-state-disabled .ui-multiselectlistbox-item {
1900+ cursor: default;
1901+}
1902+
1903+.ui-multiselectlistbox .ui-multiselectlistbox-header {
1904+ text-align: center;
1905+ padding: 2px 10px;
1906+ border-bottom: 0px none;
1907+}
1908+.ui-notify {
1909+ position: fixed;
1910+ width: 100%;
1911+ height: 100px;
1912+ display: none;
1913+ padding: 10px;
1914+}
1915+
1916+.ui-notify-top {
1917+ top: 0;
1918+}
1919+
1920+.ui-notify-bottom {
1921+ bottom: 0;
1922+}
1923+
1924+.ui-notify-close {
1925+ position: absolute;
1926+ right: 3em;
1927+ top: 1em;
1928+ cursor: pointer;
1929+ opacity: 0.5;
1930+}
1931+
1932+.ui-notify-close:hover {
1933+ opacity: 1.0;
1934+}
1935+.ui-orderlist {
1936+ display: table;
1937+}
1938+
1939+.ui-orderlist .ui-orderlist-caption {
1940+ width:200px;
1941+}
1942+
1943+.ui-orderlist .ui-orderlist-list {
1944+ list-style-type: none;
1945+ margin: 0;
1946+ padding: 0;
1947+ overflow:auto;
1948+ height:200px;
1949+ width:200px;
1950+}
1951+
1952+.ui-orderlist .ui-orderlist-list li {
1953+ margin: 1px;
1954+ padding: 2px;
1955+}
1956+
1957+.ui-orderlist .ui-button {
1958+ display:block;
1959+ margin-bottom:0.3em;
1960+}
1961+
1962+.ui-orderlist .ui-orderlist-button.ui-button-text-icon-primary {
1963+ width:100%;
1964+}
1965+
1966+.ui-orderlist .ui-orderlist-item {
1967+ cursor:pointer;
1968+ border:0px none;
1969+ font-weight: inherit;
1970+}
1971+
1972+.ui-orderlist .ui-orderlist-caption {
1973+ text-align: center;
1974+ padding:4px 0px;
1975+ border-bottom:0px none;
1976+}
1977+
1978+.ui-orderlist table {
1979+ width:100%;
1980+ border-collapse:collapse;
1981+}
1982+
1983+.ui-orderlist.ui-state-disabled .ui-orderlist-item,
1984+.ui-orderlist.ui-state-disabled .ui-button {
1985+ cursor: default;
1986+}
1987+
1988+.ui-orderlist.ui-state-disabled .ui-orderlist-list {
1989+ overflow:hidden;
1990+}
1991+
1992+/* Responsive */
1993+.ui-orderlist.ui-grid-responsive {
1994+ display: block;
1995+ width: 100%;
1996+}
1997+
1998+.ui-orderlist.ui-grid-responsive .ui-orderlist-controls {
1999+ margin-right: 10px;
2000+}
2001+
2002+.ui-orderlist.ui-grid-responsive .ui-orderlist-list,
2003+.ui-orderlist.ui-grid-responsive .ui-orderlist-caption {
2004+ width: 100%;
2005+}
2006+
2007+.ui-orderlist.ui-grid-responsive .ui-orderlist-controls .ui-button {
2008+ width: 100%;
2009+}
2010+
2011+@media (max-width: 640px) {
2012+ .ui-orderlist.ui-grid-responsive .ui-orderlist-controls {
2013+ text-align: center;
2014+ }
2015+
2016+ .ui-orderlist.ui-grid-responsive .ui-orderlist-controls .ui-button {
2017+ display: inline;
2018+ width: 20%;
2019+ }
2020+}
2021+.ui-overlaypanel {
2022+ padding: 0;
2023+ margin: 0;
2024+ position: absolute;
2025+}
2026+
2027+.ui-overlaypanel-content {
2028+ padding: 0.5em 1em;
2029+}
2030+
2031+.ui-overlaypanel-close {
2032+ position: absolute;
2033+ top: -10px;
2034+ right: -10px;
2035+ -moz-border-radius: 10px;
2036+ -webkit-border-radius: 10px;
2037+ border-radius: 10px;
2038+}
2039+.ui-paginator {
2040+ margin:0px;
2041+ text-align: center;
2042+ padding:2px;
2043+}
2044+
2045+.ui-paginator .ui-paginator-top {
2046+ border-bottom:0px none;
2047+}
2048+
2049+.ui-paginator .ui-paginator-bottom {
2050+ border-top:0px none;
2051+}
2052+
2053+.ui-paginator .ui-paginator-page,
2054+.ui-paginator .ui-paginator-pages,
2055+.ui-paginator .ui-paginator-next,
2056+.ui-paginator .ui-paginator-last,
2057+.ui-paginator .ui-paginator-first,
2058+.ui-paginator .ui-paginator-prev,
2059+.ui-paginator .ui-paginator-current {
2060+ display: inline-block;
2061+ padding: 2px 6px;
2062+ zoom: 1;
2063+ margin-left: 1px;
2064+ margin-right: 1px;
2065+ text-decoration: none;
2066+ outline: none;
2067+}
2068+
2069+.ui-paginator .ui-paginator-page,
2070+.ui-paginator .ui-paginator-next,
2071+.ui-paginator .ui-paginator-last,
2072+.ui-paginator .ui-paginator-first,
2073+.ui-paginator .ui-paginator-prev{
2074+ cursor: pointer;
2075+}
2076+
2077+.ui-paginator .ui-paginator-current,
2078+.ui-paginator .ui-paginator-rpp-options {
2079+ margin-left: 1em;
2080+ margin-right: 1em;
2081+ background-image: none;
2082+}
2083+
2084+.ui-paginator .ui-paginator-jtp-select option,
2085+.ui-paginator .ui-paginator-rpp-options option {
2086+ background-image: none;
2087+ border:0 none;
2088+ box-shadow:none;
2089+ -moz-box-shadow: none;
2090+ -webkit-box-shadow: none;
2091+}
2092+.ui-panel {
2093+ padding: 0.2em;
2094+}
2095+
2096+.ui-panel .ui-panel-titlebar {
2097+ padding: 0.5em 1em 0.3em;
2098+}
2099+
2100+.ui-panel .ui-panel-title {
2101+ margin: 0.1em 16px 0.2em 0;
2102+}
2103+
2104+.ui-panel .ui-panel-titlebar-icon {
2105+ float: right;
2106+ cursor: pointer;
2107+}
2108+
2109+.ui-panel .ui-panel-titlebar-icon,
2110+.ui-panel .ui-panel-titlebar-icon:hover,
2111+.ui-panel .ui-panel-titlebar-icon:focus {
2112+ margin-left:0.2em;
2113+ margin-top:-0.1em;
2114+ *margin:-1.5em 0em 0em 0.2em;
2115+}
2116+
2117+.ui-panel .ui-panel-content {
2118+ border: 0;
2119+ background: none;
2120+ padding: 0.5em 1em;
2121+}
2122+
2123+.ui-panel .ui-panel-footer {
2124+ border-width:1px 0 0;
2125+ margin:0.5em 0 0;
2126+ padding:0.5em 1em;
2127+ text-align:left;
2128+}
2129+
2130+.ui-panel-collapsed-h .ui-panel-titlebar-icon,
2131+.ui-panel-collapsed-h .ui-panel-titlebar-icon:hover,
2132+.ui-panel-collapsed-h .ui-panel-titlebar-icon:focus {
2133+ *margin:-0.2em 0em 0em 0.1em;
2134+}
2135+
2136+.ui-panel.ui-panel-collapsed-h {
2137+ width: 42px;
2138+}
2139+
2140+.ui-panel.ui-panel-collapsed-h .ui-panel-title {
2141+ display:none;
2142+}
2143+.ui-password-panel {
2144+ padding: 4px 10px;
2145+ width: 150px;
2146+ margin-top: 2px;
2147+}
2148+
2149+.ui-password-panel .ui-password-meter {
2150+ height: 10px;
2151+ background:transparent url("/@GSF/Web/Shared/Content/Images/password-meter.png") no-repeat left top;
2152+ padding: 0;
2153+ margin: 0;
2154+}
2155+
2156+.ui-password-info {
2157+ margin-top: 4px;
2158+}
2159+
2160+.ui-password-panel-overlay {
2161+ position: absolute;
2162+}
2163+.ui-picklist > div {
2164+ float: left;
2165+}
2166+
2167+.ui-picklist .ui-picklist-buttons {
2168+ height: 200px;
2169+ padding: 0px 5px;
2170+}
2171+
2172+.ui-picklist .ui-picklist-list {
2173+ list-style-type: none;
2174+ margin: 0;
2175+ padding: 0;
2176+ overflow:auto;
2177+ height:200px;
2178+ width:200px;
2179+}
2180+
2181+.ui-picklist .ui-picklist-list li {
2182+ margin: 1px;
2183+ padding: 2px;
2184+}
2185+
2186+.ui-picklist .ui-button {
2187+ display:block;
2188+ margin-bottom:0.3em;
2189+}
2190+
2191+.ui-picklist .ui-button-text-icon-left {
2192+ width: 100%;
2193+}
2194+
2195+.ui-picklist .ui-picklist-item {
2196+ cursor:pointer;
2197+ border:0px none;
2198+ font-weight: inherit;
2199+}
2200+
2201+.ui-picklist .ui-picklist-caption {
2202+ text-align: center;
2203+ padding: 4px 0px;
2204+ border-bottom:0px none;
2205+}
2206+
2207+.ui-picklist table {
2208+ width:100%;
2209+ border-collapse:collapse;
2210+}
2211+
2212+.ui-picklist .ui-picklist-filter {
2213+ padding-right: 15px;
2214+ width: 100%;
2215+ box-sizing: border-box;
2216+}
2217+
2218+.ui-picklist .ui-picklist-filter-container {
2219+ position: relative;
2220+ margin: 0;
2221+ padding: 0;
2222+}
2223+
2224+.ui-picklist .ui-picklist-filter-container .fa {
2225+ position: absolute;
2226+ top: 5px;
2227+ right: 2px;
2228+}
2229+
2230+.ui-picklist {
2231+ display: table;
2232+}
2233+
2234+.ui-picklist > div {
2235+ float: none;
2236+ display: table-cell;
2237+ vertical-align: top;
2238+}
2239+
2240+.ui-picklist .ui-picklist-buttons {
2241+ vertical-align: middle;
2242+}
2243+
2244+/* Vertical */
2245+.ui-picklist.ui-picklist-vertical {
2246+ display: table;
2247+}
2248+
2249+.ui-picklist.ui-picklist-vertical > div {
2250+ float: none;
2251+ display: table-row;
2252+ vertical-align: top;
2253+}
2254+
2255+.ui-picklist.ui-picklist-vertical .ui-picklist-buttons {
2256+ text-align:center;
2257+ height: auto;
2258+}
2259+
2260+.ui-picklist.ui-picklist-vertical .ui-picklist-buttons .ui-button {
2261+ display: inline-block;
2262+}
2263+
2264+.ui-picklist.ui-picklist-vertical .ui-button {
2265+ margin-top: 0.3em;
2266+}
2267+
2268+.ui-picklist-outline {
2269+ outline: 1px dotted black;
2270+ z-index: 1;
2271+}
2272+
2273+.ui-picklist-list.ui-picklist-source,
2274+.ui-picklist-list.ui-picklist-target {
2275+ outline: none;
2276+}
2277+
2278+/* Responsive */
2279+.ui-picklist.ui-picklist-responsive * {
2280+ box-sizing: border-box;
2281+}
2282+
2283+.ui-picklist.ui-picklist-responsive {
2284+ width: 100%;
2285+}
2286+
2287+.ui-picklist.ui-picklist-responsive .ui-picklist-listwrapper {
2288+ width: 35%;
2289+}
2290+
2291+.ui-picklist.ui-picklist-responsive .ui-picklist-buttons {
2292+ width: 10%;
2293+}
2294+
2295+.ui-picklist.ui-picklist-responsive .ui-picklist-buttons button {
2296+ width: 100%;
2297+}
2298+
2299+.ui-picklist.ui-picklist-responsive .ui-picklist-list {
2300+ width: auto;
2301+}
2302+
2303+.ui-picklist.ui-picklist-responsive .ui-chkbox-box {
2304+ width: 18px;
2305+ height: 18px;
2306+}
2307+
2308+/* Responsive */
2309+@media (max-width: 640px) {
2310+ .ui-picklist.ui-picklist-responsive {
2311+ display: block;
2312+ }
2313+
2314+ .ui-picklist.ui-picklist-responsive > div {
2315+ display: block;
2316+ width: 100% !important;
2317+ }
2318+
2319+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons {
2320+ text-align: center;
2321+ height: auto;
2322+ padding: 5px 0px;
2323+ }
2324+
2325+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons button {
2326+ display: inline;
2327+ width: 20%;
2328+ }
2329+
2330+ .ui-picklist.ui-picklist-responsive .ui-picklist-source-controls.ui-picklist-buttons {
2331+ padding-bottom: 5px;
2332+ }
2333+
2334+ .ui-picklist.ui-picklist-responsive .ui-picklist-target-controls.ui-picklist-buttons {
2335+ padding-top: 5px;
2336+ }
2337+
2338+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons .fa-angle-right:before {
2339+ content: "\f107";
2340+ }
2341+
2342+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons .fa-angle-double-right:before {
2343+ content: "\f103";
2344+ }
2345+
2346+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons .fa-angle-left:before {
2347+ content: "\f106";
2348+ }
2349+
2350+ .ui-picklist.ui-picklist-responsive .ui-picklist-buttons .fa-angle-double-left:before {
2351+ content: "\f102";
2352+ }
2353+}
2354+
2355+.ui-progressbar {
2356+ height: 1.2em;
2357+ text-align: left;
2358+ position: relative;
2359+}
2360+
2361+.ui-progressbar .ui-progressbar-value {
2362+ margin: -1px;
2363+ height: 100%;
2364+ width: 0%;
2365+ position: absolute;
2366+ display: none;
2367+}
2368+
2369+.ui-progressbar .ui-progressbar-value-animate {
2370+ -webkit-transition: width 1s ease-in-out;
2371+ -moz-transition: width 1s ease-in-out;
2372+ -o-transition: width 1s ease-in-out;
2373+ transition: width 1s ease-in-out;
2374+}
2375+
2376+.ui-progressbar .ui-progressbar-label {
2377+ text-align: center;
2378+ height: 100%;
2379+ width: 100%;
2380+ position: absolute;
2381+ display: none;
2382+ font-weight: bold;
2383+}
2384+.ui-radiobutton {
2385+ position: relative;
2386+ width: 16px;
2387+ margin: 2px 0;
2388+ line-height: 16px;
2389+ cursor: pointer;
2390+}
2391+
2392+.ui-radiobutton .ui-radiobutton-box {
2393+ width: 16px;
2394+ height: 16px;
2395+ line-height: 16px;
2396+ -moz-border-radius: 10px;
2397+ -webkit-border-radius: 10px;
2398+ border-radius: 10px;
2399+}
2400+
2401+.ui-radiobutton-icon {
2402+ font-size: 10px;
2403+ margin-top: 3px;
2404+ margin-left: 2px;
2405+ display: block;
2406+}
2407+
2408+.ui-rating-star,
2409+.ui-rating-cancel {
2410+ float: left;
2411+ display: block;
2412+ overflow: hidden;
2413+ text-indent: -999em;
2414+ cursor: pointer;
2415+}
2416+
2417+.ui-rating-star a,
2418+.ui-rating-cancel a {
2419+ width: 16px;
2420+ height: 15px;
2421+ display: block;
2422+ background: url("/@GSF/Web/Shared/Content/Images/rating.png") no-repeat 0 0;
2423+}
2424+
2425+.ui-rating-star a {
2426+ background-position: 0 -32px;
2427+}
2428+
2429+.ui-rating-star-on a {
2430+ background-position: 0 -48px;
2431+}
2432+
2433+.ui-rating-star-hover a {
2434+ background-position: 0 -64px;
2435+}
2436+
2437+.ui-rating-cancel-hover a {
2438+ background-position: 0 -16px;
2439+}
2440+
2441+.ui-rating.ui-state-disabled .ui-rating-star,
2442+.ui-rating.ui-state-disabled .ui-rating-cancel {
2443+ cursor: default;
2444+}
2445+.ui-selectbutton{
2446+ display: inline-block;
2447+ padding:1px;
2448+}
2449+
2450+.ui-selectbutton.ui-state-error{
2451+ padding:0px;
2452+}
2453+
2454+.ui-selectbutton .ui-button.ui-state-focus{
2455+ outline: none;
2456+}
2457+.ui-spinner {
2458+ display: inline-block;
2459+ overflow: visible;
2460+ padding: 0;
2461+ position: relative;
2462+ vertical-align: middle;
2463+}
2464+.ui-spinner-input {
2465+ vertical-align: middle;
2466+ text-align: right;
2467+ padding-right: 20px;
2468+}
2469+.ui-spinner-button {
2470+ cursor: default;
2471+ display: block;
2472+ font-size: 0.5em;
2473+ height: 50%;
2474+ margin: 0;
2475+ overflow: hidden;
2476+ padding: 0;
2477+ position: absolute;
2478+ right: 0;
2479+ text-align: center;
2480+ vertical-align: middle;
2481+ width: 16px;
2482+ z-index: 100;
2483+}
2484+.ui-spinner .fa {
2485+ left: -1px;
2486+ margin-top: -8px;
2487+ position: absolute;
2488+ top: 50%;
2489+}
2490+.ui-spinner-up {
2491+ top: 0;
2492+}
2493+.ui-spinner-down {
2494+ bottom: 0;
2495+}
2496+
2497+/* Fluid */
2498+.ui-fluid .ui-spinner {
2499+ width: 100%;
2500+}
2501+.ui-fluid .ui-spinner .ui-spinner-input {
2502+ padding-right: 36px;
2503+ width: 100%;
2504+}
2505+.ui-fluid .ui-spinner .ui-spinner-button {
2506+ width: auto;
2507+}
2508+.ui-fluid .ui-spinner .ui-spinner-button .fa {
2509+ left: 6px;
2510+}
2511+.ui-splitbutton {
2512+ position: relative;
2513+ padding-right: 2em;
2514+}
2515+
2516+.ui-splitbutton .ui-button.ui-splitbutton-menubutton {
2517+ width: 32px;
2518+ position: absolute;
2519+ top: 0px;
2520+ margin-left: -1px;
2521+ right: 0px;
2522+}
2523+
2524+.ui-splitbutton {
2525+ display: inline-block;
2526+ zoom: 1;
2527+}
2528+
2529+.ui-fluid .ui-splitbutton {
2530+ width: 100%;
2531+ box-sizing: border-box;
2532+ -webkit-box-sizing:border-box;
2533+ -moz-box-sizing: border-box;
2534+}
2535+
2536+.ui-fluid .ui-splitbutton .ui-button {
2537+ width: 100%;
2538+}
2539+
2540+.ui-fluid .ui-splitbutton .ui-button.ui-splitbutton-menubutton {
2541+ width: 32px;
2542+ box-sizing: border-box;
2543+ -webkit-box-sizing:border-box;
2544+ -moz-box-sizing: border-box;
2545+}
2546+.ui-inputswitch {
2547+ display: inline-block;
2548+ padding: 0;
2549+ position: relative;
2550+ overflow: hidden;
2551+ cursor: pointer;
2552+ user-select: none;
2553+ -moz-user-select: none;
2554+ -khtml-user-select: none;
2555+ -webkit-user-select: none;
2556+ height: 24px;
2557+}
2558+
2559+.ui-inputswitch .ui-inputswitch-on,
2560+.ui-inputswitch .ui-inputswitch-off {
2561+ white-space: nowrap;
2562+ display: block;
2563+ position: absolute;
2564+ top: 0;
2565+ width: auto;
2566+ overflow: hidden;
2567+ user-select: none;
2568+ -moz-user-select: none;
2569+ -khtml-user-select: none;
2570+ -webkit-user-select: none;
2571+ font-weight: bold;
2572+ height: 20px;
2573+ padding-top: 4px;
2574+}
2575+
2576+.ui-inputswitch .ui-inputswitch-off {
2577+ right: 0;
2578+ text-align: right;
2579+}
2580+
2581+.ui-inputswitch .ui-inputswitch-off span {
2582+ display: inline-block;
2583+ text-align: center;
2584+ padding-left: 2px;
2585+ padding-right: 3px;
2586+}
2587+
2588+.ui-inputswitch .ui-inputswitch-on {
2589+ left: 0;
2590+ padding-right: 4px;
2591+ border: 0 none;
2592+}
2593+
2594+.ui-inputswitch .ui-inputswitch-on span {
2595+ display: inline-block;
2596+ text-align: center;
2597+ padding-left: 3px;
2598+ padding-right: 2px;
2599+}
2600+
2601+.ui-inputswitch .ui-inputswitch-handle {
2602+ display: block;
2603+ width: 0;
2604+ position: absolute;
2605+ top: 0;
2606+ left: 0;
2607+ height: 24px;
2608+ border-top: 0 none;
2609+ border-bottom: 0 none;
2610+}
2611+.ui-tabview {
2612+ position: relative;
2613+ padding: .2em;
2614+ zoom: 1;
2615+} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
2616+
2617+.ui-tabview .ui-tabview-nav {
2618+ margin: 0;
2619+}
2620+
2621+.ui-tabview .ui-tabview-nav li {
2622+ list-style: none;
2623+ float: left;
2624+ position: relative;
2625+ margin: 0 .2em 1px 0;
2626+ padding: 0;
2627+ white-space: nowrap;
2628+}
2629+
2630+.ui-tabview .ui-tabview-nav li a {
2631+ float: left;
2632+ padding: .5em 1em;
2633+ text-decoration: none;
2634+}
2635+
2636+.ui-tabview .ui-tabview-nav li.ui-tabview-selected a,
2637+.ui-tabview .ui-tabview-nav li.ui-state-disabled a,
2638+.ui-tabview .ui-tabview-nav li.ui-state-processing a {
2639+ cursor: text;
2640+}
2641+
2642+.ui-tabview .ui-tabview-nav li a,
2643+.ui-tabview.ui-tabview-collapsible .ui-tabview-nav li.ui-tabview-selected a {
2644+ cursor: pointer;
2645+} /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
2646+
2647+.ui-tabview .ui-tabview-panel {
2648+ border-width: 0;
2649+ padding: 1em 1.4em;
2650+ background: none;
2651+}
2652+
2653+.ui-tabview .ui-tabview-nav li {
2654+ display: block;
2655+}
2656+
2657+.ui-tabview .ui-tabview-nav li .fa {
2658+ float: left;
2659+ margin: 0.6em 0.3em 0 0;
2660+ cursor: pointer;
2661+}
2662+
2663+/* per orientation settings */
2664+/* top and bottom */
2665+.ui-tabview.ui-tabview-top > .ui-tabview-nav li {
2666+ border-bottom: 0;
2667+ top: 1px;
2668+}
2669+
2670+.ui-tabview.ui-tabview-top > .ui-tabview-nav {
2671+ padding: .2em .2em 0;
2672+}
2673+
2674+.ui-tabview.ui-tabview-bottom > .ui-tabview-nav {
2675+ padding: 0 .2em .2em;
2676+}
2677+
2678+.ui-tabview.ui-tabview-bottom > .ui-tabview-nav li {
2679+ border-top: 0;
2680+}
2681+
2682+/* left and right*/
2683+.ui-tabview-left:after,
2684+.ui-tabview-right:after {
2685+ clear:both;
2686+ content: ".";
2687+ display: block;
2688+ height: 0;
2689+ visibility: hidden;
2690+}
2691+
2692+.ui-tabview-left > .ui-tabview-nav {
2693+ float:left;
2694+ width:23%;
2695+ height:300px;
2696+ background-image: none;
2697+ padding-top:1px;
2698+}
2699+
2700+.ui-tabview-left > .ui-tabview-panels {
2701+ float:right;
2702+ width:75%;
2703+}
2704+
2705+.ui-tabview.ui-tabview-left > .ui-tabview-nav li,
2706+.ui-tabview.ui-tabview-right > .ui-tabview-nav li{
2707+ display: block;
2708+ float: right;
2709+ white-space: normal;
2710+ width: 98%;
2711+}
2712+
2713+.ui-tabview.ui-tabview-left > .ui-tabview-nav li {
2714+ margin:0 0 1px 0.2em;
2715+ border-right:0 none;
2716+}
2717+
2718+.ui-tabview.ui-tabview-right > .ui-tabview-nav {
2719+ float:right;
2720+ width:23%;
2721+ height:300px;
2722+ background-image: none;
2723+ padding-top:1px;
2724+}
2725+
2726+.ui-tabview.ui-tabview-right > .ui-tabview-panels {
2727+ float:left;
2728+ width:75%;
2729+}
2730+
2731+.ui-tabview.ui-tabview-right > .ui-tabview-nav li {
2732+ margin:0 0.2em 1px 0;
2733+ border-left:0 none;
2734+}
2735+.ui-terminal {
2736+ height: 300px;
2737+ overflow: auto;
2738+ padding: 3px;
2739+}
2740+
2741+.ui-terminal-input {
2742+ border: 0 none;
2743+ background-color: transparent;
2744+ color: inherit;
2745+ padding: 0;
2746+ margin: 0 0 0 2px;
2747+ width: 75%;
2748+ outline: none;
2749+ vertical-align: baseline;
2750+}
2751+
2752+.ui-terminal-command {
2753+ margin-left: 2px;
2754+ -moz-margin-start: 3px;
2755+}
2756+
2757+.ui-terminal-input::-ms-clear {
2758+ display: none;
2759+}
2760+.ui-tooltip {
2761+ position:absolute;
2762+ display:none;
2763+ padding:3px 5px;
2764+}
2765+.ui-tree {
2766+ width: 300px;
2767+}
2768+
2769+.ui-tree .ui-tree-container {
2770+ height: 100%;
2771+ margin: 0;
2772+ overflow: auto;
2773+ padding: 3px;
2774+ white-space: nowrap;
2775+}
2776+
2777+.ui-tree .ui-treenode-children {
2778+ margin: 0;
2779+ padding: 0 0 0 16px;
2780+}
2781+
2782+.ui-tree .ui-treenode {
2783+ background-attachment: scroll;
2784+ background-color: transparent;
2785+ background-image: none;
2786+ background-position: 0 0;
2787+ background-repeat: repeat-y;
2788+ list-style: none outside none;
2789+ margin: 0;
2790+ padding: 1px 0 0;
2791+}
2792+
2793+.ui-tree .ui-treenode-content {
2794+
2795+}
2796+
2797+.ui-tree .ui-tree-toggler {
2798+ cursor: pointer;
2799+ display: inline-block;
2800+ margin-top: 3px;
2801+}
2802+
2803+.ui-tree .ui-treenode-icon {
2804+ display: inline-block;
2805+ margin-top: 3px;
2806+}
2807+
2808+.ui-tree .ui-treenode-label {
2809+ display: inline-block;
2810+ margin: 2px 0 0 0;
2811+ padding: 0 3px;
2812+}
2813+
2814+.ui-tree .ui-treenode-selectable .ui-treenode-label,
2815+.ui-tree .ui-treenode-selectable .ui-treenode-icon {
2816+ cursor: pointer;
2817+}
2818+
2819+.ui-tree .ui-treenode-label.ui-state-hover,
2820+.ui-tree .ui-treenode-label.ui-state-highlight {
2821+ font-weight: normal;
2822+ border: 0 none;
2823+}
2824+
2825+.ui-tree .ui-treenode-leaf-icon {
2826+ width: 16px;
2827+ height: 16px;
2828+ display: inline-block;
2829+}
2830+
2831+.ui-tree .ui-chkbox-box {
2832+ cursor: pointer;
2833+ width: 15px;
2834+ height: 15px;
2835+ float: left;
2836+}
2837+
2838+.ui-tree .ui-chkbox {
2839+ display: inline-block;
2840+ zoom: 1;
2841+}
2842+.ui-treetable table {
2843+ border-collapse:collapse;
2844+ width: 100%;
2845+ table-layout: fixed;
2846+}
2847+
2848+.ui-treetable .ui-treetable-header,
2849+.ui-treetable .ui-treetable-footer {
2850+ text-align:center;
2851+ padding: 4px 10px;
2852+}
2853+
2854+.ui-treetable .ui-treetable-header {
2855+ border-bottom: 0px none;
2856+}
2857+
2858+.ui-treetable .ui-treetable-footer {
2859+ border-top: 0px none;
2860+}
2861+
2862+.ui-treetable th, .ui-treetable tfoot td {
2863+ text-align: center;
2864+}
2865+
2866+.ui-treetable thead th,
2867+.ui-treetable tbody td,
2868+.ui-treetable tfoot td {
2869+ padding: 4px 10px;
2870+ overflow: hidden;
2871+ white-space: nowrap;
2872+ border-width: 1px;
2873+ border-style: solid;
2874+}
2875+
2876+.ui-treetable tbody td {
2877+ border-color: inherit;
2878+}
2879+
2880+.ui-treetable .ui-treetable-toggler {
2881+ float: left;
2882+ cursor: pointer;
2883+}
2884+
2885+.ui-treetable .ui-treetable-data tr.ui-state-highlight,
2886+.ui-treetable .ui-treetable-data tr.ui-state-hover,
2887+.ui-treetable .ui-treetable-row.ui-state-highlight,
2888+.ui-treetable .ui-treetable-row.ui-state-hover {
2889+ cursor: pointer;
2890+}
2891+
2892+.ui-treetable tr.ui-state-hover {
2893+ border-color: inherit;
2894+ font-weight: inherit;
2895+}
2896+
2897+.ui-treetable .ui-treetable-indent {
2898+ width: 16px;
2899+ height: 16px;
2900+ float: left;
2901+}
2902+
2903+/* PrimeNG */
2904+.ui-treetable td.ui-treetable-child-table-container {
2905+ padding: 0px;
2906+ border: 0px none;
2907+}
2908+
2909+.ui-treetable .ui-treetable-row {
2910+ display:table-row;
2911+ border-bottom:0px transparent
2912+}
2913+
2914+.ui-treetable .ui-treetable-row.ui-state-hover,
2915+.ui-treetable .ui-treetable-row.ui-state-highlight {
2916+ border: 0px none;
2917+}
2918+
2919+.ui-treetable tbody .ui-treetable-row td {
2920+ border: 0px none;
2921+}
Source/Libraries/GSF.Web/Shared/Scripts/angular.js+31768−0
@@ -0,0 +1,31768 @@
1+/**
2+ * @license AngularJS v1.5.8
3+ * (c) 2010-2016 Google, Inc. http://angularjs.org
4+ * License: MIT
5+ */
6+(function(window) {'use strict';
7+
8+/**
9+ * @description
10+ *
11+ * This object provides a utility for producing rich Error messages within
12+ * Angular. It can be called as follows:
13+ *
14+ * var exampleMinErr = minErr('example');
15+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
16+ *
17+ * The above creates an instance of minErr in the example namespace. The
18+ * resulting error will have a namespaced error code of example.one. The
19+ * resulting error will replace {0} with the value of foo, and {1} with the
20+ * value of bar. The object is not restricted in the number of arguments it can
21+ * take.
22+ *
23+ * If fewer arguments are specified than necessary for interpolation, the extra
24+ * interpolation markers will be preserved in the final string.
25+ *
26+ * Since data will be parsed statically during a build step, some restrictions
27+ * are applied with respect to how minErr instances are created and called.
28+ * Instances should have names of the form namespaceMinErr for a minErr created
29+ * using minErr('namespace') . Error codes, namespaces and template strings
30+ * should all be static strings, not variables or general expressions.
31+ *
32+ * @param {string} module The namespace to use for the new minErr instance.
33+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
34+ * error from returned function, for cases when a particular type of error is useful.
35+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
36+ */
37+
38+function minErr(module, ErrorConstructor) {
39+ ErrorConstructor = ErrorConstructor || Error;
40+ return function() {
41+ var SKIP_INDEXES = 2;
42+
43+ var templateArgs = arguments,
44+ code = templateArgs[0],
45+ message = '[' + (module ? module + ':' : '') + code + '] ',
46+ template = templateArgs[1],
47+ paramPrefix, i;
48+
49+ message += template.replace(/\{\d+\}/g, function(match) {
50+ var index = +match.slice(1, -1),
51+ shiftedIndex = index + SKIP_INDEXES;
52+
53+ if (shiftedIndex < templateArgs.length) {
54+ return toDebugString(templateArgs[shiftedIndex]);
55+ }
56+
57+ return match;
58+ });
59+
60+ message += '\nhttp://errors.angularjs.org/1.5.8/' +
61+ (module ? module + '/' : '') + code;
62+
63+ for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
64+ message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
65+ encodeURIComponent(toDebugString(templateArgs[i]));
66+ }
67+
68+ return new ErrorConstructor(message);
69+ };
70+}
71+
72+/* We need to tell jshint what variables are being exported */
73+/* global angular: true,
74+ msie: true,
75+ jqLite: true,
76+ jQuery: true,
77+ slice: true,
78+ splice: true,
79+ push: true,
80+ toString: true,
81+ ngMinErr: true,
82+ angularModule: true,
83+ uid: true,
84+ REGEX_STRING_REGEXP: true,
85+ VALIDITY_STATE_PROPERTY: true,
86+
87+ lowercase: true,
88+ uppercase: true,
89+ manualLowercase: true,
90+ manualUppercase: true,
91+ nodeName_: true,
92+ isArrayLike: true,
93+ forEach: true,
94+ forEachSorted: true,
95+ reverseParams: true,
96+ nextUid: true,
97+ setHashKey: true,
98+ extend: true,
99+ toInt: true,
100+ inherit: true,
101+ merge: true,
102+ noop: true,
103+ identity: true,
104+ valueFn: true,
105+ isUndefined: true,
106+ isDefined: true,
107+ isObject: true,
108+ isBlankObject: true,
109+ isString: true,
110+ isNumber: true,
111+ isDate: true,
112+ isArray: true,
113+ isFunction: true,
114+ isRegExp: true,
115+ isWindow: true,
116+ isScope: true,
117+ isFile: true,
118+ isFormData: true,
119+ isBlob: true,
120+ isBoolean: true,
121+ isPromiseLike: true,
122+ trim: true,
123+ escapeForRegexp: true,
124+ isElement: true,
125+ makeMap: true,
126+ includes: true,
127+ arrayRemove: true,
128+ copy: true,
129+ equals: true,
130+ csp: true,
131+ jq: true,
132+ concat: true,
133+ sliceArgs: true,
134+ bind: true,
135+ toJsonReplacer: true,
136+ toJson: true,
137+ fromJson: true,
138+ convertTimezoneToLocal: true,
139+ timezoneToOffset: true,
140+ startingTag: true,
141+ tryDecodeURIComponent: true,
142+ parseKeyValue: true,
143+ toKeyValue: true,
144+ encodeUriSegment: true,
145+ encodeUriQuery: true,
146+ angularInit: true,
147+ bootstrap: true,
148+ getTestability: true,
149+ snake_case: true,
150+ bindJQuery: true,
151+ assertArg: true,
152+ assertArgFn: true,
153+ assertNotHasOwnProperty: true,
154+ getter: true,
155+ getBlockNodes: true,
156+ hasOwnProperty: true,
157+ createMap: true,
158+
159+ NODE_TYPE_ELEMENT: true,
160+ NODE_TYPE_ATTRIBUTE: true,
161+ NODE_TYPE_TEXT: true,
162+ NODE_TYPE_COMMENT: true,
163+ NODE_TYPE_DOCUMENT: true,
164+ NODE_TYPE_DOCUMENT_FRAGMENT: true,
165+*/
166+
167+////////////////////////////////////
168+
169+/**
170+ * @ngdoc module
171+ * @name ng
172+ * @module ng
173+ * @installation
174+ * @description
175+ *
176+ * # ng (core module)
177+ * The ng module is loaded by default when an AngularJS application is started. The module itself
178+ * contains the essential components for an AngularJS application to function. The table below
179+ * lists a high level breakdown of each of the services/factories, filters, directives and testing
180+ * components available within this core module.
181+ *
182+ * <div doc-module-components="ng"></div>
183+ */
184+
185+var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/;
186+
187+// The name of a form control's ValidityState property.
188+// This is used so that it's possible for internal tests to create mock ValidityStates.
189+var VALIDITY_STATE_PROPERTY = 'validity';
190+
191+var hasOwnProperty = Object.prototype.hasOwnProperty;
192+
193+var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;};
194+var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;};
195+
196+
197+var manualLowercase = function(s) {
198+ /* jshint bitwise: false */
199+ return isString(s)
200+ ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})
201+ : s;
202+};
203+var manualUppercase = function(s) {
204+ /* jshint bitwise: false */
205+ return isString(s)
206+ ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})
207+ : s;
208+};
209+
210+
211+// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish
212+// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods
213+// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387
214+if ('i' !== 'I'.toLowerCase()) {
215+ lowercase = manualLowercase;
216+ uppercase = manualUppercase;
217+}
218+
219+
220+var
221+ msie, // holds major version number for IE, or NaN if UA is not IE.
222+ jqLite, // delay binding since jQuery could be loaded after us.
223+ jQuery, // delay binding
224+ slice = [].slice,
225+ splice = [].splice,
226+ push = [].push,
227+ toString = Object.prototype.toString,
228+ getPrototypeOf = Object.getPrototypeOf,
229+ ngMinErr = minErr('ng'),
230+
231+ /** @name angular */
232+ angular = window.angular || (window.angular = {}),
233+ angularModule,
234+ uid = 0;
235+
236+/**
237+ * documentMode is an IE-only property
238+ * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
239+ */
240+msie = window.document.documentMode;
241+
242+
243+/**
244+ * @private
245+ * @param {*} obj
246+ * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,
247+ * String ...)
248+ */
249+function isArrayLike(obj) {
250+
251+ // `null`, `undefined` and `window` are not array-like
252+ if (obj == null || isWindow(obj)) return false;
253+
254+ // arrays, strings and jQuery/jqLite objects are array like
255+ // * jqLite is either the jQuery or jqLite constructor function
256+ // * we have to check the existence of jqLite first as this method is called
257+ // via the forEach method when constructing the jqLite object in the first place
258+ if (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite)) return true;
259+
260+ // Support: iOS 8.2 (not reproducible in simulator)
261+ // "length" in obj used to prevent JIT error (gh-11508)
262+ var length = "length" in Object(obj) && obj.length;
263+
264+ // NodeList objects (with `item` method) and
265+ // other objects with suitable length characteristics are array-like
266+ return isNumber(length) &&
267+ (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item == 'function');
268+
269+}
270+
271+/**
272+ * @ngdoc function
273+ * @name angular.forEach
274+ * @module ng
275+ * @kind function
276+ *
277+ * @description
278+ * Invokes the `iterator` function once for each item in `obj` collection, which can be either an
279+ * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`
280+ * is the value of an object property or an array element, `key` is the object property key or
281+ * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.
282+ *
283+ * It is worth noting that `.forEach` does not iterate over inherited properties because it filters
284+ * using the `hasOwnProperty` method.
285+ *
286+ * Unlike ES262's
287+ * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18),
288+ * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just
289+ * return the value provided.
290+ *
291+ ```js
292+ var values = {name: 'misko', gender: 'male'};
293+ var log = [];
294+ angular.forEach(values, function(value, key) {
295+ this.push(key + ': ' + value);
296+ }, log);
297+ expect(log).toEqual(['name: misko', 'gender: male']);
298+ ```
299+ *
300+ * @param {Object|Array} obj Object to iterate over.
301+ * @param {Function} iterator Iterator function.
302+ * @param {Object=} context Object to become context (`this`) for the iterator function.
303+ * @returns {Object|Array} Reference to `obj`.
304+ */
305+
306+function forEach(obj, iterator, context) {
307+ var key, length;
308+ if (obj) {
309+ if (isFunction(obj)) {
310+ for (key in obj) {
311+ // Need to check if hasOwnProperty exists,
312+ // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
313+ if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
314+ iterator.call(context, obj[key], key, obj);
315+ }
316+ }
317+ } else if (isArray(obj) || isArrayLike(obj)) {
318+ var isPrimitive = typeof obj !== 'object';
319+ for (key = 0, length = obj.length; key < length; key++) {
320+ if (isPrimitive || key in obj) {
321+ iterator.call(context, obj[key], key, obj);
322+ }
323+ }
324+ } else if (obj.forEach && obj.forEach !== forEach) {
325+ obj.forEach(iterator, context, obj);
326+ } else if (isBlankObject(obj)) {
327+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
328+ for (key in obj) {
329+ iterator.call(context, obj[key], key, obj);
330+ }
331+ } else if (typeof obj.hasOwnProperty === 'function') {
332+ // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed
333+ for (key in obj) {
334+ if (obj.hasOwnProperty(key)) {
335+ iterator.call(context, obj[key], key, obj);
336+ }
337+ }
338+ } else {
339+ // Slow path for objects which do not have a method `hasOwnProperty`
340+ for (key in obj) {
341+ if (hasOwnProperty.call(obj, key)) {
342+ iterator.call(context, obj[key], key, obj);
343+ }
344+ }
345+ }
346+ }
347+ return obj;
348+}
349+
350+function forEachSorted(obj, iterator, context) {
351+ var keys = Object.keys(obj).sort();
352+ for (var i = 0; i < keys.length; i++) {
353+ iterator.call(context, obj[keys[i]], keys[i]);
354+ }
355+ return keys;
356+}
357+
358+
359+/**
360+ * when using forEach the params are value, key, but it is often useful to have key, value.
361+ * @param {function(string, *)} iteratorFn
362+ * @returns {function(*, string)}
363+ */
364+function reverseParams(iteratorFn) {
365+ return function(value, key) {iteratorFn(key, value);};
366+}
367+
368+/**
369+ * A consistent way of creating unique IDs in angular.
370+ *
371+ * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before
372+ * we hit number precision issues in JavaScript.
373+ *
374+ * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M
375+ *
376+ * @returns {number} an unique alpha-numeric string
377+ */
378+function nextUid() {
379+ return ++uid;
380+}
381+
382+
383+/**
384+ * Set or clear the hashkey for an object.
385+ * @param obj object
386+ * @param h the hashkey (!truthy to delete the hashkey)
387+ */
388+function setHashKey(obj, h) {
389+ if (h) {
390+ obj.$$hashKey = h;
391+ } else {
392+ delete obj.$$hashKey;
393+ }
394+}
395+
396+
397+function baseExtend(dst, objs, deep) {
398+ var h = dst.$$hashKey;
399+
400+ for (var i = 0, ii = objs.length; i < ii; ++i) {
401+ var obj = objs[i];
402+ if (!isObject(obj) && !isFunction(obj)) continue;
403+ var keys = Object.keys(obj);
404+ for (var j = 0, jj = keys.length; j < jj; j++) {
405+ var key = keys[j];
406+ var src = obj[key];
407+
408+ if (deep && isObject(src)) {
409+ if (isDate(src)) {
410+ dst[key] = new Date(src.valueOf());
411+ } else if (isRegExp(src)) {
412+ dst[key] = new RegExp(src);
413+ } else if (src.nodeName) {
414+ dst[key] = src.cloneNode(true);
415+ } else if (isElement(src)) {
416+ dst[key] = src.clone();
417+ } else {
418+ if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {};
419+ baseExtend(dst[key], [src], true);
420+ }
421+ } else {
422+ dst[key] = src;
423+ }
424+ }
425+ }
426+
427+ setHashKey(dst, h);
428+ return dst;
429+}
430+
431+/**
432+ * @ngdoc function
433+ * @name angular.extend
434+ * @module ng
435+ * @kind function
436+ *
437+ * @description
438+ * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
439+ * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
440+ * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`.
441+ *
442+ * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use
443+ * {@link angular.merge} for this.
444+ *
445+ * @param {Object} dst Destination object.
446+ * @param {...Object} src Source object(s).
447+ * @returns {Object} Reference to `dst`.
448+ */
449+function extend(dst) {
450+ return baseExtend(dst, slice.call(arguments, 1), false);
451+}
452+
453+
454+/**
455+* @ngdoc function
456+* @name angular.merge
457+* @module ng
458+* @kind function
459+*
460+* @description
461+* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s)
462+* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so
463+* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`.
464+*
465+* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source
466+* objects, performing a deep copy.
467+*
468+* @param {Object} dst Destination object.
469+* @param {...Object} src Source object(s).
470+* @returns {Object} Reference to `dst`.
471+*/
472+function merge(dst) {
473+ return baseExtend(dst, slice.call(arguments, 1), true);
474+}
475+
476+
477+
478+function toInt(str) {
479+ return parseInt(str, 10);
480+}
481+
482+
483+function inherit(parent, extra) {
484+ return extend(Object.create(parent), extra);
485+}
486+
487+/**
488+ * @ngdoc function
489+ * @name angular.noop
490+ * @module ng
491+ * @kind function
492+ *
493+ * @description
494+ * A function that performs no operations. This function can be useful when writing code in the
495+ * functional style.
496+ ```js
497+ function foo(callback) {
498+ var result = calculateResult();
499+ (callback || angular.noop)(result);
500+ }
501+ ```
502+ */
503+function noop() {}
504+noop.$inject = [];
505+
506+
507+/**
508+ * @ngdoc function
509+ * @name angular.identity
510+ * @module ng
511+ * @kind function
512+ *
513+ * @description
514+ * A function that returns its first argument. This function is useful when writing code in the
515+ * functional style.
516+ *
517+ ```js
518+ function transformer(transformationFn, value) {
519+ return (transformationFn || angular.identity)(value);
520+ };
521+
522+ // E.g.
523+ function getResult(fn, input) {
524+ return (fn || angular.identity)(input);
525+ };
526+
527+ getResult(function(n) { return n * 2; }, 21); // returns 42
528+ getResult(null, 21); // returns 21
529+ getResult(undefined, 21); // returns 21
530+ ```
531+ *
532+ * @param {*} value to be returned.
533+ * @returns {*} the value passed in.
534+ */
535+function identity($) {return $;}
536+identity.$inject = [];
537+
538+
539+function valueFn(value) {return function valueRef() {return value;};}
540+
541+function hasCustomToString(obj) {
542+ return isFunction(obj.toString) && obj.toString !== toString;
543+}
544+
545+
546+/**
547+ * @ngdoc function
548+ * @name angular.isUndefined
549+ * @module ng
550+ * @kind function
551+ *
552+ * @description
553+ * Determines if a reference is undefined.
554+ *
555+ * @param {*} value Reference to check.
556+ * @returns {boolean} True if `value` is undefined.
557+ */
558+function isUndefined(value) {return typeof value === 'undefined';}
559+
560+
561+/**
562+ * @ngdoc function
563+ * @name angular.isDefined
564+ * @module ng
565+ * @kind function
566+ *
567+ * @description
568+ * Determines if a reference is defined.
569+ *
570+ * @param {*} value Reference to check.
571+ * @returns {boolean} True if `value` is defined.
572+ */
573+function isDefined(value) {return typeof value !== 'undefined';}
574+
575+
576+/**
577+ * @ngdoc function
578+ * @name angular.isObject
579+ * @module ng
580+ * @kind function
581+ *
582+ * @description
583+ * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not
584+ * considered to be objects. Note that JavaScript arrays are objects.
585+ *
586+ * @param {*} value Reference to check.
587+ * @returns {boolean} True if `value` is an `Object` but not `null`.
588+ */
589+function isObject(value) {
590+ // http://jsperf.com/isobject4
591+ return value !== null && typeof value === 'object';
592+}
593+
594+
595+/**
596+ * Determine if a value is an object with a null prototype
597+ *
598+ * @returns {boolean} True if `value` is an `Object` with a null prototype
599+ */
600+function isBlankObject(value) {
601+ return value !== null && typeof value === 'object' && !getPrototypeOf(value);
602+}
603+
604+
605+/**
606+ * @ngdoc function
607+ * @name angular.isString
608+ * @module ng
609+ * @kind function
610+ *
611+ * @description
612+ * Determines if a reference is a `String`.
613+ *
614+ * @param {*} value Reference to check.
615+ * @returns {boolean} True if `value` is a `String`.
616+ */
617+function isString(value) {return typeof value === 'string';}
618+
619+
620+/**
621+ * @ngdoc function
622+ * @name angular.isNumber
623+ * @module ng
624+ * @kind function
625+ *
626+ * @description
627+ * Determines if a reference is a `Number`.
628+ *
629+ * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`.
630+ *
631+ * If you wish to exclude these then you can use the native
632+ * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite)
633+ * method.
634+ *
635+ * @param {*} value Reference to check.
636+ * @returns {boolean} True if `value` is a `Number`.
637+ */
638+function isNumber(value) {return typeof value === 'number';}
639+
640+
641+/**
642+ * @ngdoc function
643+ * @name angular.isDate
644+ * @module ng
645+ * @kind function
646+ *
647+ * @description
648+ * Determines if a value is a date.
649+ *
650+ * @param {*} value Reference to check.
651+ * @returns {boolean} True if `value` is a `Date`.
652+ */
653+function isDate(value) {
654+ return toString.call(value) === '[object Date]';
655+}
656+
657+
658+/**
659+ * @ngdoc function
660+ * @name angular.isArray
661+ * @module ng
662+ * @kind function
663+ *
664+ * @description
665+ * Determines if a reference is an `Array`.
666+ *
667+ * @param {*} value Reference to check.
668+ * @returns {boolean} True if `value` is an `Array`.
669+ */
670+var isArray = Array.isArray;
671+
672+/**
673+ * @ngdoc function
674+ * @name angular.isFunction
675+ * @module ng
676+ * @kind function
677+ *
678+ * @description
679+ * Determines if a reference is a `Function`.
680+ *
681+ * @param {*} value Reference to check.
682+ * @returns {boolean} True if `value` is a `Function`.
683+ */
684+function isFunction(value) {return typeof value === 'function';}
685+
686+
687+/**
688+ * Determines if a value is a regular expression object.
689+ *
690+ * @private
691+ * @param {*} value Reference to check.
692+ * @returns {boolean} True if `value` is a `RegExp`.
693+ */
694+function isRegExp(value) {
695+ return toString.call(value) === '[object RegExp]';
696+}
697+
698+
699+/**
700+ * Checks if `obj` is a window object.
701+ *
702+ * @private
703+ * @param {*} obj Object to check
704+ * @returns {boolean} True if `obj` is a window obj.
705+ */
706+function isWindow(obj) {
707+ return obj && obj.window === obj;
708+}
709+
710+
711+function isScope(obj) {
712+ return obj && obj.$evalAsync && obj.$watch;
713+}
714+
715+
716+function isFile(obj) {
717+ return toString.call(obj) === '[object File]';
718+}
719+
720+
721+function isFormData(obj) {
722+ return toString.call(obj) === '[object FormData]';
723+}
724+
725+
726+function isBlob(obj) {
727+ return toString.call(obj) === '[object Blob]';
728+}
729+
730+
731+function isBoolean(value) {
732+ return typeof value === 'boolean';
733+}
734+
735+
736+function isPromiseLike(obj) {
737+ return obj && isFunction(obj.then);
738+}
739+
740+
741+var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/;
742+function isTypedArray(value) {
743+ return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value));
744+}
745+
746+function isArrayBuffer(obj) {
747+ return toString.call(obj) === '[object ArrayBuffer]';
748+}
749+
750+
751+var trim = function(value) {
752+ return isString(value) ? value.trim() : value;
753+};
754+
755+// Copied from:
756+// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021
757+// Prereq: s is a string.
758+var escapeForRegexp = function(s) {
759+ return s.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, '\\$1').
760+ replace(/\x08/g, '\\x08');
761+};
762+
763+
764+/**
765+ * @ngdoc function
766+ * @name angular.isElement
767+ * @module ng
768+ * @kind function
769+ *
770+ * @description
771+ * Determines if a reference is a DOM element (or wrapped jQuery element).
772+ *
773+ * @param {*} value Reference to check.
774+ * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).
775+ */
776+function isElement(node) {
777+ return !!(node &&
778+ (node.nodeName // We are a direct element.
779+ || (node.prop && node.attr && node.find))); // We have an on and find method part of jQuery API.
780+}
781+
782+/**
783+ * @param str 'key1,key2,...'
784+ * @returns {object} in the form of {key1:true, key2:true, ...}
785+ */
786+function makeMap(str) {
787+ var obj = {}, items = str.split(','), i;
788+ for (i = 0; i < items.length; i++) {
789+ obj[items[i]] = true;
790+ }
791+ return obj;
792+}
793+
794+
795+function nodeName_(element) {
796+ return lowercase(element.nodeName || (element[0] && element[0].nodeName));
797+}
798+
799+function includes(array, obj) {
800+ return Array.prototype.indexOf.call(array, obj) != -1;
801+}
802+
803+function arrayRemove(array, value) {
804+ var index = array.indexOf(value);
805+ if (index >= 0) {
806+ array.splice(index, 1);
807+ }
808+ return index;
809+}
810+
811+/**
812+ * @ngdoc function
813+ * @name angular.copy
814+ * @module ng
815+ * @kind function
816+ *
817+ * @description
818+ * Creates a deep copy of `source`, which should be an object or an array.
819+ *
820+ * * If no destination is supplied, a copy of the object or array is created.
821+ * * If a destination is provided, all of its elements (for arrays) or properties (for objects)
822+ * are deleted and then all elements/properties from the source are copied to it.
823+ * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.
824+ * * If `source` is identical to `destination` an exception will be thrown.
825+ *
826+ * <br />
827+ * <div class="alert alert-warning">
828+ * Only enumerable properties are taken into account. Non-enumerable properties (both on `source`
829+ * and on `destination`) will be ignored.
830+ * </div>
831+ *
832+ * @param {*} source The source that will be used to make a copy.
833+ * Can be any type, including primitives, `null`, and `undefined`.
834+ * @param {(Object|Array)=} destination Destination into which the source is copied. If
835+ * provided, must be of the same type as `source`.
836+ * @returns {*} The copy or updated `destination`, if `destination` was specified.
837+ *
838+ * @example
839+ <example module="copyExample">
840+ <file name="index.html">
841+ <div ng-controller="ExampleController">
842+ <form novalidate class="simple-form">
843+ <label>Name: <input type="text" ng-model="user.name" /></label><br />
844+ <label>Age: <input type="number" ng-model="user.age" /></label><br />
845+ Gender: <label><input type="radio" ng-model="user.gender" value="male" />male</label>
846+ <label><input type="radio" ng-model="user.gender" value="female" />female</label><br />
847+ <button ng-click="reset()">RESET</button>
848+ <button ng-click="update(user)">SAVE</button>
849+ </form>
850+ <pre>form = {{user | json}}</pre>
851+ <pre>master = {{master | json}}</pre>
852+ </div>
853+ </file>
854+ <file name="script.js">
855+ // Module: copyExample
856+ angular.
857+ module('copyExample', []).
858+ controller('ExampleController', ['$scope', function($scope) {
859+ $scope.master = {};
860+
861+ $scope.reset = function() {
862+ // Example with 1 argument
863+ $scope.user = angular.copy($scope.master);
864+ };
865+
866+ $scope.update = function(user) {
867+ // Example with 2 arguments
868+ angular.copy(user, $scope.master);
869+ };
870+
871+ $scope.reset();
872+ }]);
873+ </file>
874+ </example>
875+ */
876+function copy(source, destination) {
877+ var stackSource = [];
878+ var stackDest = [];
879+
880+ if (destination) {
881+ if (isTypedArray(destination) || isArrayBuffer(destination)) {
882+ throw ngMinErr('cpta', "Can't copy! TypedArray destination cannot be mutated.");
883+ }
884+ if (source === destination) {
885+ throw ngMinErr('cpi', "Can't copy! Source and destination are identical.");
886+ }
887+
888+ // Empty the destination object
889+ if (isArray(destination)) {
890+ destination.length = 0;
891+ } else {
892+ forEach(destination, function(value, key) {
893+ if (key !== '$$hashKey') {
894+ delete destination[key];
895+ }
896+ });
897+ }
898+
899+ stackSource.push(source);
900+ stackDest.push(destination);
901+ return copyRecurse(source, destination);
902+ }
903+
904+ return copyElement(source);
905+
906+ function copyRecurse(source, destination) {
907+ var h = destination.$$hashKey;
908+ var key;
909+ if (isArray(source)) {
910+ for (var i = 0, ii = source.length; i < ii; i++) {
911+ destination.push(copyElement(source[i]));
912+ }
913+ } else if (isBlankObject(source)) {
914+ // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty
915+ for (key in source) {
916+ destination[key] = copyElement(source[key]);
917+ }
918+ } else if (source && typeof source.hasOwnProperty === 'function') {
919+ // Slow path, which must rely on hasOwnProperty
920+ for (key in source) {
921+ if (source.hasOwnProperty(key)) {
922+ destination[key] = copyElement(source[key]);
923+ }
924+ }
925+ } else {
926+ // Slowest path --- hasOwnProperty can't be called as a method
927+ for (key in source) {
928+ if (hasOwnProperty.call(source, key)) {
929+ destination[key] = copyElement(source[key]);
930+ }
931+ }
932+ }
933+ setHashKey(destination, h);
934+ return destination;
935+ }
936+
937+ function copyElement(source) {
938+ // Simple values
939+ if (!isObject(source)) {
940+ return source;
941+ }
942+
943+ // Already copied values
944+ var index = stackSource.indexOf(source);
945+ if (index !== -1) {
946+ return stackDest[index];
947+ }
948+
949+ if (isWindow(source) || isScope(source)) {
950+ throw ngMinErr('cpws',
951+ "Can't copy! Making copies of Window or Scope instances is not supported.");
952+ }
953+
954+ var needsRecurse = false;
955+ var destination = copyType(source);
956+
957+ if (destination === undefined) {
958+ destination = isArray(source) ? [] : Object.create(getPrototypeOf(source));
959+ needsRecurse = true;
960+ }
961+
962+ stackSource.push(source);
963+ stackDest.push(destination);
964+
965+ return needsRecurse
966+ ? copyRecurse(source, destination)
967+ : destination;
968+ }
969+
970+ function copyType(source) {
971+ switch (toString.call(source)) {
972+ case '[object Int8Array]':
973+ case '[object Int16Array]':
974+ case '[object Int32Array]':
975+ case '[object Float32Array]':
976+ case '[object Float64Array]':
977+ case '[object Uint8Array]':
978+ case '[object Uint8ClampedArray]':
979+ case '[object Uint16Array]':
980+ case '[object Uint32Array]':
981+ return new source.constructor(copyElement(source.buffer), source.byteOffset, source.length);
982+
983+ case '[object ArrayBuffer]':
984+ //Support: IE10
985+ if (!source.slice) {
986+ var copied = new ArrayBuffer(source.byteLength);
987+ new Uint8Array(copied).set(new Uint8Array(source));
988+ return copied;
989+ }
990+ return source.slice(0);
991+
992+ case '[object Boolean]':
993+ case '[object Number]':
994+ case '[object String]':
995+ case '[object Date]':
996+ return new source.constructor(source.valueOf());
997+
998+ case '[object RegExp]':
999+ var re = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]);
1000+ re.lastIndex = source.lastIndex;
1001+ return re;
1002+
1003+ case '[object Blob]':
1004+ return new source.constructor([source], {type: source.type});
1005+ }
1006+
1007+ if (isFunction(source.cloneNode)) {
1008+ return source.cloneNode(true);
1009+ }
1010+ }
1011+}
1012+
1013+
1014+/**
1015+ * @ngdoc function
1016+ * @name angular.equals
1017+ * @module ng
1018+ * @kind function
1019+ *
1020+ * @description
1021+ * Determines if two objects or two values are equivalent. Supports value types, regular
1022+ * expressions, arrays and objects.
1023+ *
1024+ * Two objects or values are considered equivalent if at least one of the following is true:
1025+ *
1026+ * * Both objects or values pass `===` comparison.
1027+ * * Both objects or values are of the same type and all of their properties are equal by
1028+ * comparing them with `angular.equals`.
1029+ * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)
1030+ * * Both values represent the same regular expression (In JavaScript,
1031+ * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual
1032+ * representation matches).
1033+ *
1034+ * During a property comparison, properties of `function` type and properties with names
1035+ * that begin with `$` are ignored.
1036+ *
1037+ * Scope and DOMWindow objects are being compared only by identify (`===`).
1038+ *
1039+ * @param {*} o1 Object or value to compare.
1040+ * @param {*} o2 Object or value to compare.
1041+ * @returns {boolean} True if arguments are equal.
1042+ *
1043+ * @example
1044+ <example module="equalsExample" name="equalsExample">
1045+ <file name="index.html">
1046+ <div ng-controller="ExampleController">
1047+ <form novalidate>
1048+ <h3>User 1</h3>
1049+ Name: <input type="text" ng-model="user1.name">
1050+ Age: <input type="number" ng-model="user1.age">
1051+
1052+ <h3>User 2</h3>
1053+ Name: <input type="text" ng-model="user2.name">
1054+ Age: <input type="number" ng-model="user2.age">
1055+
1056+ <div>
1057+ <br/>
1058+ <input type="button" value="Compare" ng-click="compare()">
1059+ </div>
1060+ User 1: <pre>{{user1 | json}}</pre>
1061+ User 2: <pre>{{user2 | json}}</pre>
1062+ Equal: <pre>{{result}}</pre>
1063+ </form>
1064+ </div>
1065+ </file>
1066+ <file name="script.js">
1067+ angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) {
1068+ $scope.user1 = {};
1069+ $scope.user2 = {};
1070+ $scope.result;
1071+ $scope.compare = function() {
1072+ $scope.result = angular.equals($scope.user1, $scope.user2);
1073+ };
1074+ }]);
1075+ </file>
1076+ </example>
1077+ */
1078+function equals(o1, o2) {
1079+ if (o1 === o2) return true;
1080+ if (o1 === null || o2 === null) return false;
1081+ if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
1082+ var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
1083+ if (t1 == t2 && t1 == 'object') {
1084+ if (isArray(o1)) {
1085+ if (!isArray(o2)) return false;
1086+ if ((length = o1.length) == o2.length) {
1087+ for (key = 0; key < length; key++) {
1088+ if (!equals(o1[key], o2[key])) return false;
1089+ }
1090+ return true;
1091+ }
1092+ } else if (isDate(o1)) {
1093+ if (!isDate(o2)) return false;
1094+ return equals(o1.getTime(), o2.getTime());
1095+ } else if (isRegExp(o1)) {
1096+ if (!isRegExp(o2)) return false;
1097+ return o1.toString() == o2.toString();
1098+ } else {
1099+ if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
1100+ isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
1101+ keySet = createMap();
1102+ for (key in o1) {
1103+ if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
1104+ if (!equals(o1[key], o2[key])) return false;
1105+ keySet[key] = true;
1106+ }
1107+ for (key in o2) {
1108+ if (!(key in keySet) &&
1109+ key.charAt(0) !== '$' &&
1110+ isDefined(o2[key]) &&
1111+ !isFunction(o2[key])) return false;
1112+ }
1113+ return true;
1114+ }
1115+ }
1116+ return false;
1117+}
1118+
1119+var csp = function() {
1120+ if (!isDefined(csp.rules)) {
1121+
1122+
1123+ var ngCspElement = (window.document.querySelector('[ng-csp]') ||
1124+ window.document.querySelector('[data-ng-csp]'));
1125+
1126+ if (ngCspElement) {
1127+ var ngCspAttribute = ngCspElement.getAttribute('ng-csp') ||
1128+ ngCspElement.getAttribute('data-ng-csp');
1129+ csp.rules = {
1130+ noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1),
1131+ noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1)
1132+ };
1133+ } else {
1134+ csp.rules = {
1135+ noUnsafeEval: noUnsafeEval(),
1136+ noInlineStyle: false
1137+ };
1138+ }
1139+ }
1140+
1141+ return csp.rules;
1142+
1143+ function noUnsafeEval() {
1144+ try {
1145+ /* jshint -W031, -W054 */
1146+ new Function('');
1147+ /* jshint +W031, +W054 */
1148+ return false;
1149+ } catch (e) {
1150+ return true;
1151+ }
1152+ }
1153+};
1154+
1155+/**
1156+ * @ngdoc directive
1157+ * @module ng
1158+ * @name ngJq
1159+ *
1160+ * @element ANY
1161+ * @param {string=} ngJq the name of the library available under `window`
1162+ * to be used for angular.element
1163+ * @description
1164+ * Use this directive to force the angular.element library. This should be
1165+ * used to force either jqLite by leaving ng-jq blank or setting the name of
1166+ * the jquery variable under window (eg. jQuery).
1167+ *
1168+ * Since angular looks for this directive when it is loaded (doesn't wait for the
1169+ * DOMContentLoaded event), it must be placed on an element that comes before the script
1170+ * which loads angular. Also, only the first instance of `ng-jq` will be used and all
1171+ * others ignored.
1172+ *
1173+ * @example
1174+ * This example shows how to force jqLite using the `ngJq` directive to the `html` tag.
1175+ ```html
1176+ <!doctype html>
1177+ <html ng-app ng-jq>
1178+ ...
1179+ ...
1180+ </html>
1181+ ```
1182+ * @example
1183+ * This example shows how to use a jQuery based library of a different name.
1184+ * The library name must be available at the top most 'window'.
1185+ ```html
1186+ <!doctype html>
1187+ <html ng-app ng-jq="jQueryLib">
1188+ ...
1189+ ...
1190+ </html>
1191+ ```
1192+ */
1193+var jq = function() {
1194+ if (isDefined(jq.name_)) return jq.name_;
1195+ var el;
1196+ var i, ii = ngAttrPrefixes.length, prefix, name;
1197+ for (i = 0; i < ii; ++i) {
1198+ prefix = ngAttrPrefixes[i];
1199+ if (el = window.document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) {
1200+ name = el.getAttribute(prefix + 'jq');
1201+ break;
1202+ }
1203+ }
1204+
1205+ return (jq.name_ = name);
1206+};
1207+
1208+function concat(array1, array2, index) {
1209+ return array1.concat(slice.call(array2, index));
1210+}
1211+
1212+function sliceArgs(args, startIndex) {
1213+ return slice.call(args, startIndex || 0);
1214+}
1215+
1216+
1217+/* jshint -W101 */
1218+/**
1219+ * @ngdoc function
1220+ * @name angular.bind
1221+ * @module ng
1222+ * @kind function
1223+ *
1224+ * @description
1225+ * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for
1226+ * `fn`). You can supply optional `args` that are prebound to the function. This feature is also
1227+ * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as
1228+ * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application).
1229+ *
1230+ * @param {Object} self Context which `fn` should be evaluated in.
1231+ * @param {function()} fn Function to be bound.
1232+ * @param {...*} args Optional arguments to be prebound to the `fn` function call.
1233+ * @returns {function()} Function that wraps the `fn` with all the specified bindings.
1234+ */
1235+/* jshint +W101 */
1236+function bind(self, fn) {
1237+ var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];
1238+ if (isFunction(fn) && !(fn instanceof RegExp)) {
1239+ return curryArgs.length
1240+ ? function() {
1241+ return arguments.length
1242+ ? fn.apply(self, concat(curryArgs, arguments, 0))
1243+ : fn.apply(self, curryArgs);
1244+ }
1245+ : function() {
1246+ return arguments.length
1247+ ? fn.apply(self, arguments)
1248+ : fn.call(self);
1249+ };
1250+ } else {
1251+ // In IE, native methods are not functions so they cannot be bound (note: they don't need to be).
1252+ return fn;
1253+ }
1254+}
1255+
1256+
1257+function toJsonReplacer(key, value) {
1258+ var val = value;
1259+
1260+ if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
1261+ val = undefined;
1262+ } else if (isWindow(value)) {
1263+ val = '$WINDOW';
1264+ } else if (value && window.document === value) {
1265+ val = '$DOCUMENT';
1266+ } else if (isScope(value)) {
1267+ val = '$SCOPE';
1268+ }
1269+
1270+ return val;
1271+}
1272+
1273+
1274+/**
1275+ * @ngdoc function
1276+ * @name angular.toJson
1277+ * @module ng
1278+ * @kind function
1279+ *
1280+ * @description
1281+ * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
1282+ * stripped since angular uses this notation internally.
1283+ *
1284+ * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
1285+ * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace.
1286+ * If set to an integer, the JSON output will contain that many spaces per indentation.
1287+ * @returns {string|undefined} JSON-ified string representing `obj`.
1288+ * @knownIssue
1289+ *
1290+ * The Safari browser throws a `RangeError` instead of returning `null` when it tries to stringify a `Date`
1291+ * object with an invalid date value. The only reliable way to prevent this is to monkeypatch the
1292+ * `Date.prototype.toJSON` method as follows:
1293+ *
1294+ * ```
1295+ * var _DatetoJSON = Date.prototype.toJSON;
1296+ * Date.prototype.toJSON = function() {
1297+ * try {
1298+ * return _DatetoJSON.call(this);
1299+ * } catch(e) {
1300+ * if (e instanceof RangeError) {
1301+ * return null;
1302+ * }
1303+ * throw e;
1304+ * }
1305+ * };
1306+ * ```
1307+ *
1308+ * See https://github.com/angular/angular.js/pull/14221 for more information.
1309+ */
1310+function toJson(obj, pretty) {
1311+ if (isUndefined(obj)) return undefined;
1312+ if (!isNumber(pretty)) {
1313+ pretty = pretty ? 2 : null;
1314+ }
1315+ return JSON.stringify(obj, toJsonReplacer, pretty);
1316+}
1317+
1318+
1319+/**
1320+ * @ngdoc function
1321+ * @name angular.fromJson
1322+ * @module ng
1323+ * @kind function
1324+ *
1325+ * @description
1326+ * Deserializes a JSON string.
1327+ *
1328+ * @param {string} json JSON string to deserialize.
1329+ * @returns {Object|Array|string|number} Deserialized JSON string.
1330+ */
1331+function fromJson(json) {
1332+ return isString(json)
1333+ ? JSON.parse(json)
1334+ : json;
1335+}
1336+
1337+
1338+var ALL_COLONS = /:/g;
1339+function timezoneToOffset(timezone, fallback) {
1340+ // IE/Edge do not "understand" colon (`:`) in timezone
1341+ timezone = timezone.replace(ALL_COLONS, '');
1342+ var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
1343+ return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
1344+}
1345+
1346+
1347+function addDateMinutes(date, minutes) {
1348+ date = new Date(date.getTime());
1349+ date.setMinutes(date.getMinutes() + minutes);
1350+ return date;
1351+}
1352+
1353+
1354+function convertTimezoneToLocal(date, timezone, reverse) {
1355+ reverse = reverse ? -1 : 1;
1356+ var dateTimezoneOffset = date.getTimezoneOffset();
1357+ var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);
1358+ return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));
1359+}
1360+
1361+
1362+/**
1363+ * @returns {string} Returns the string representation of the element.
1364+ */
1365+function startingTag(element) {
1366+ element = jqLite(element).clone();
1367+ try {
1368+ // turns out IE does not let you set .html() on elements which
1369+ // are not allowed to have children. So we just ignore it.
1370+ element.empty();
1371+ } catch (e) {}
1372+ var elemHtml = jqLite('<div>').append(element).html();
1373+ try {
1374+ return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
1375+ elemHtml.
1376+ match(/^(<[^>]+>)/)[1].
1377+ replace(/^<([\w\-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);});
1378+ } catch (e) {
1379+ return lowercase(elemHtml);
1380+ }
1381+
1382+}
1383+
1384+
1385+/////////////////////////////////////////////////
1386+
1387+/**
1388+ * Tries to decode the URI component without throwing an exception.
1389+ *
1390+ * @private
1391+ * @param str value potential URI component to check.
1392+ * @returns {boolean} True if `value` can be decoded
1393+ * with the decodeURIComponent function.
1394+ */
1395+function tryDecodeURIComponent(value) {
1396+ try {
1397+ return decodeURIComponent(value);
1398+ } catch (e) {
1399+ // Ignore any invalid uri component.
1400+ }
1401+}
1402+
1403+
1404+/**
1405+ * Parses an escaped url query string into key-value pairs.
1406+ * @returns {Object.<string,boolean|Array>}
1407+ */
1408+function parseKeyValue(/**string*/keyValue) {
1409+ var obj = {};
1410+ forEach((keyValue || "").split('&'), function(keyValue) {
1411+ var splitPoint, key, val;
1412+ if (keyValue) {
1413+ key = keyValue = keyValue.replace(/\+/g,'%20');
1414+ splitPoint = keyValue.indexOf('=');
1415+ if (splitPoint !== -1) {
1416+ key = keyValue.substring(0, splitPoint);
1417+ val = keyValue.substring(splitPoint + 1);
1418+ }
1419+ key = tryDecodeURIComponent(key);
1420+ if (isDefined(key)) {
1421+ val = isDefined(val) ? tryDecodeURIComponent(val) : true;
1422+ if (!hasOwnProperty.call(obj, key)) {
1423+ obj[key] = val;
1424+ } else if (isArray(obj[key])) {
1425+ obj[key].push(val);
1426+ } else {
1427+ obj[key] = [obj[key],val];
1428+ }
1429+ }
1430+ }
1431+ });
1432+ return obj;
1433+}
1434+
1435+function toKeyValue(obj) {
1436+ var parts = [];
1437+ forEach(obj, function(value, key) {
1438+ if (isArray(value)) {
1439+ forEach(value, function(arrayValue) {
1440+ parts.push(encodeUriQuery(key, true) +
1441+ (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
1442+ });
1443+ } else {
1444+ parts.push(encodeUriQuery(key, true) +
1445+ (value === true ? '' : '=' + encodeUriQuery(value, true)));
1446+ }
1447+ });
1448+ return parts.length ? parts.join('&') : '';
1449+}
1450+
1451+
1452+/**
1453+ * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
1454+ * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path
1455+ * segments:
1456+ * segment = *pchar
1457+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
1458+ * pct-encoded = "%" HEXDIG HEXDIG
1459+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
1460+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
1461+ * / "*" / "+" / "," / ";" / "="
1462+ */
1463+function encodeUriSegment(val) {
1464+ return encodeUriQuery(val, true).
1465+ replace(/%26/gi, '&').
1466+ replace(/%3D/gi, '=').
1467+ replace(/%2B/gi, '+');
1468+}
1469+
1470+
1471+/**
1472+ * This method is intended for encoding *key* or *value* parts of query component. We need a custom
1473+ * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be
1474+ * encoded per http://tools.ietf.org/html/rfc3986:
1475+ * query = *( pchar / "/" / "?" )
1476+ * pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
1477+ * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
1478+ * pct-encoded = "%" HEXDIG HEXDIG
1479+ * sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
1480+ * / "*" / "+" / "," / ";" / "="
1481+ */
1482+function encodeUriQuery(val, pctEncodeSpaces) {
1483+ return encodeURIComponent(val).
1484+ replace(/%40/gi, '@').
1485+ replace(/%3A/gi, ':').
1486+ replace(/%24/g, '$').
1487+ replace(/%2C/gi, ',').
1488+ replace(/%3B/gi, ';').
1489+ replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
1490+}
1491+
1492+var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];
1493+
1494+function getNgAttribute(element, ngAttr) {
1495+ var attr, i, ii = ngAttrPrefixes.length;
1496+ for (i = 0; i < ii; ++i) {
1497+ attr = ngAttrPrefixes[i] + ngAttr;
1498+ if (isString(attr = element.getAttribute(attr))) {
1499+ return attr;
1500+ }
1501+ }
1502+ return null;
1503+}
1504+
1505+/**
1506+ * @ngdoc directive
1507+ * @name ngApp
1508+ * @module ng
1509+ *
1510+ * @element ANY
1511+ * @param {angular.Module} ngApp an optional application
1512+ * {@link angular.module module} name to load.
1513+ * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be
1514+ * created in "strict-di" mode. This means that the application will fail to invoke functions which
1515+ * do not use explicit function annotation (and are thus unsuitable for minification), as described
1516+ * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in
1517+ * tracking down the root of these bugs.
1518+ *
1519+ * @description
1520+ *
1521+ * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
1522+ * designates the **root element** of the application and is typically placed near the root element
1523+ * of the page - e.g. on the `<body>` or `<html>` tags.
1524+ *
1525+ * There are a few things to keep in mind when using `ngApp`:
1526+ * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
1527+ * found in the document will be used to define the root element to auto-bootstrap as an
1528+ * application. To run multiple applications in an HTML document you must manually bootstrap them using
1529+ * {@link angular.bootstrap} instead.
1530+ * - AngularJS applications cannot be nested within each other.
1531+ * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`.
1532+ * This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and
1533+ * {@link ngRoute.ngView `ngView`}.
1534+ * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},
1535+ * causing animations to stop working and making the injector inaccessible from outside the app.
1536+ *
1537+ * You can specify an **AngularJS module** to be used as the root module for the application. This
1538+ * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It
1539+ * should contain the application code needed or have dependencies on other modules that will
1540+ * contain the code. See {@link angular.module} for more information.
1541+ *
1542+ * In the example below if the `ngApp` directive were not placed on the `html` element then the
1543+ * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
1544+ * would not be resolved to `3`.
1545+ *
1546+ * `ngApp` is the easiest, and most common way to bootstrap an application.
1547+ *
1548+ <example module="ngAppDemo">
1549+ <file name="index.html">
1550+ <div ng-controller="ngAppDemoController">
1551+ I can add: {{a}} + {{b}} = {{ a+b }}
1552+ </div>
1553+ </file>
1554+ <file name="script.js">
1555+ angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
1556+ $scope.a = 1;
1557+ $scope.b = 2;
1558+ });
1559+ </file>
1560+ </example>
1561+ *
1562+ * Using `ngStrictDi`, you would see something like this:
1563+ *
1564+ <example ng-app-included="true">
1565+ <file name="index.html">
1566+ <div ng-app="ngAppStrictDemo" ng-strict-di>
1567+ <div ng-controller="GoodController1">
1568+ I can add: {{a}} + {{b}} = {{ a+b }}
1569+
1570+ <p>This renders because the controller does not fail to
1571+ instantiate, by using explicit annotation style (see
1572+ script.js for details)
1573+ </p>
1574+ </div>
1575+
1576+ <div ng-controller="GoodController2">
1577+ Name: <input ng-model="name"><br />
1578+ Hello, {{name}}!
1579+
1580+ <p>This renders because the controller does not fail to
1581+ instantiate, by using explicit annotation style
1582+ (see script.js for details)
1583+ </p>
1584+ </div>
1585+
1586+ <div ng-controller="BadController">
1587+ I can add: {{a}} + {{b}} = {{ a+b }}
1588+
1589+ <p>The controller could not be instantiated, due to relying
1590+ on automatic function annotations (which are disabled in
1591+ strict mode). As such, the content of this section is not
1592+ interpolated, and there should be an error in your web console.
1593+ </p>
1594+ </div>
1595+ </div>
1596+ </file>
1597+ <file name="script.js">
1598+ angular.module('ngAppStrictDemo', [])
1599+ // BadController will fail to instantiate, due to relying on automatic function annotation,
1600+ // rather than an explicit annotation
1601+ .controller('BadController', function($scope) {
1602+ $scope.a = 1;
1603+ $scope.b = 2;
1604+ })
1605+ // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,
1606+ // due to using explicit annotations using the array style and $inject property, respectively.
1607+ .controller('GoodController1', ['$scope', function($scope) {
1608+ $scope.a = 1;
1609+ $scope.b = 2;
1610+ }])
1611+ .controller('GoodController2', GoodController2);
1612+ function GoodController2($scope) {
1613+ $scope.name = "World";
1614+ }
1615+ GoodController2.$inject = ['$scope'];
1616+ </file>
1617+ <file name="style.css">
1618+ div[ng-controller] {
1619+ margin-bottom: 1em;
1620+ -webkit-border-radius: 4px;
1621+ border-radius: 4px;
1622+ border: 1px solid;
1623+ padding: .5em;
1624+ }
1625+ div[ng-controller^=Good] {
1626+ border-color: #d6e9c6;
1627+ background-color: #dff0d8;
1628+ color: #3c763d;
1629+ }
1630+ div[ng-controller^=Bad] {
1631+ border-color: #ebccd1;
1632+ background-color: #f2dede;
1633+ color: #a94442;
1634+ margin-bottom: 0;
1635+ }
1636+ </file>
1637+ </example>
1638+ */
1639+function angularInit(element, bootstrap) {
1640+ var appElement,
1641+ module,
1642+ config = {};
1643+
1644+ // The element `element` has priority over any other element.
1645+ forEach(ngAttrPrefixes, function(prefix) {
1646+ var name = prefix + 'app';
1647+
1648+ if (!appElement && element.hasAttribute && element.hasAttribute(name)) {
1649+ appElement = element;
1650+ module = element.getAttribute(name);
1651+ }
1652+ });
1653+ forEach(ngAttrPrefixes, function(prefix) {
1654+ var name = prefix + 'app';
1655+ var candidate;
1656+
1657+ if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) {
1658+ appElement = candidate;
1659+ module = candidate.getAttribute(name);
1660+ }
1661+ });
1662+ if (appElement) {
1663+ config.strictDi = getNgAttribute(appElement, "strict-di") !== null;
1664+ bootstrap(appElement, module ? [module] : [], config);
1665+ }
1666+}
1667+
1668+/**
1669+ * @ngdoc function
1670+ * @name angular.bootstrap
1671+ * @module ng
1672+ * @description
1673+ * Use this function to manually start up angular application.
1674+ *
1675+ * For more information, see the {@link guide/bootstrap Bootstrap guide}.
1676+ *
1677+ * Angular will detect if it has been loaded into the browser more than once and only allow the
1678+ * first loaded script to be bootstrapped and will report a warning to the browser console for
1679+ * each of the subsequent scripts. This prevents strange results in applications, where otherwise
1680+ * multiple instances of Angular try to work on the DOM.
1681+ *
1682+ * <div class="alert alert-warning">
1683+ * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually.
1684+ * They must use {@link ng.directive:ngApp ngApp}.
1685+ * </div>
1686+ *
1687+ * <div class="alert alert-warning">
1688+ * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion},
1689+ * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}.
1690+ * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector},
1691+ * causing animations to stop working and making the injector inaccessible from outside the app.
1692+ * </div>
1693+ *
1694+ * ```html
1695+ * <!doctype html>
1696+ * <html>
1697+ * <body>
1698+ * <div ng-controller="WelcomeController">
1699+ * {{greeting}}
1700+ * </div>
1701+ *
1702+ * <script src="angular.js"></script>
1703+ * <script>
1704+ * var app = angular.module('demo', [])
1705+ * .controller('WelcomeController', function($scope) {
1706+ * $scope.greeting = 'Welcome!';
1707+ * });
1708+ * angular.bootstrap(document, ['demo']);
1709+ * </script>
1710+ * </body>
1711+ * </html>
1712+ * ```
1713+ *
1714+ * @param {DOMElement} element DOM element which is the root of angular application.
1715+ * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
1716+ * Each item in the array should be the name of a predefined module or a (DI annotated)
1717+ * function that will be invoked by the injector as a `config` block.
1718+ * See: {@link angular.module modules}
1719+ * @param {Object=} config an object for defining configuration options for the application. The
1720+ * following keys are supported:
1721+ *
1722+ * * `strictDi` - disable automatic function annotation for the application. This is meant to
1723+ * assist in finding bugs which break minified code. Defaults to `false`.
1724+ *
1725+ * @returns {auto.$injector} Returns the newly created injector for this app.
1726+ */
1727+function bootstrap(element, modules, config) {
1728+ if (!isObject(config)) config = {};
1729+ var defaultConfig = {
1730+ strictDi: false
1731+ };
1732+ config = extend(defaultConfig, config);
1733+ var doBootstrap = function() {
1734+ element = jqLite(element);
1735+
1736+ if (element.injector()) {
1737+ var tag = (element[0] === window.document) ? 'document' : startingTag(element);
1738+ // Encode angle brackets to prevent input from being sanitized to empty string #8683.
1739+ throw ngMinErr(
1740+ 'btstrpd',
1741+ "App already bootstrapped with this element '{0}'",
1742+ tag.replace(/</,'&lt;').replace(/>/,'&gt;'));
1743+ }
1744+
1745+ modules = modules || [];
1746+ modules.unshift(['$provide', function($provide) {
1747+ $provide.value('$rootElement', element);
1748+ }]);
1749+
1750+ if (config.debugInfoEnabled) {
1751+ // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.
1752+ modules.push(['$compileProvider', function($compileProvider) {
1753+ $compileProvider.debugInfoEnabled(true);
1754+ }]);
1755+ }
1756+
1757+ modules.unshift('ng');
1758+ var injector = createInjector(modules, config.strictDi);
1759+ injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',
1760+ function bootstrapApply(scope, element, compile, injector) {
1761+ scope.$apply(function() {
1762+ element.data('$injector', injector);
1763+ compile(element)(scope);
1764+ });
1765+ }]
1766+ );
1767+ return injector;
1768+ };
1769+
1770+ var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;
1771+ var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;
1772+
1773+ if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {
1774+ config.debugInfoEnabled = true;
1775+ window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');
1776+ }
1777+
1778+ if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {
1779+ return doBootstrap();
1780+ }
1781+
1782+ window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');
1783+ angular.resumeBootstrap = function(extraModules) {
1784+ forEach(extraModules, function(module) {
1785+ modules.push(module);
1786+ });
1787+ return doBootstrap();
1788+ };
1789+
1790+ if (isFunction(angular.resumeDeferredBootstrap)) {
1791+ angular.resumeDeferredBootstrap();
1792+ }
1793+}
1794+
1795+/**
1796+ * @ngdoc function
1797+ * @name angular.reloadWithDebugInfo
1798+ * @module ng
1799+ * @description
1800+ * Use this function to reload the current application with debug information turned on.
1801+ * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.
1802+ *
1803+ * See {@link ng.$compileProvider#debugInfoEnabled} for more.
1804+ */
1805+function reloadWithDebugInfo() {
1806+ window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;
1807+ window.location.reload();
1808+}
1809+
1810+/**
1811+ * @name angular.getTestability
1812+ * @module ng
1813+ * @description
1814+ * Get the testability service for the instance of Angular on the given
1815+ * element.
1816+ * @param {DOMElement} element DOM element which is the root of angular application.
1817+ */
1818+function getTestability(rootElement) {
1819+ var injector = angular.element(rootElement).injector();
1820+ if (!injector) {
1821+ throw ngMinErr('test',
1822+ 'no injector found for element argument to getTestability');
1823+ }
1824+ return injector.get('$$testability');
1825+}
1826+
1827+var SNAKE_CASE_REGEXP = /[A-Z]/g;
1828+function snake_case(name, separator) {
1829+ separator = separator || '_';
1830+ return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
1831+ return (pos ? separator : '') + letter.toLowerCase();
1832+ });
1833+}
1834+
1835+var bindJQueryFired = false;
1836+function bindJQuery() {
1837+ var originalCleanData;
1838+
1839+ if (bindJQueryFired) {
1840+ return;
1841+ }
1842+
1843+ // bind to jQuery if present;
1844+ var jqName = jq();
1845+ jQuery = isUndefined(jqName) ? window.jQuery : // use jQuery (if present)
1846+ !jqName ? undefined : // use jqLite
1847+ window[jqName]; // use jQuery specified by `ngJq`
1848+
1849+ // Use jQuery if it exists with proper functionality, otherwise default to us.
1850+ // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.
1851+ // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older
1852+ // versions. It will not work for sure with jQuery <1.7, though.
1853+ if (jQuery && jQuery.fn.on) {
1854+ jqLite = jQuery;
1855+ extend(jQuery.fn, {
1856+ scope: JQLitePrototype.scope,
1857+ isolateScope: JQLitePrototype.isolateScope,
1858+ controller: JQLitePrototype.controller,
1859+ injector: JQLitePrototype.injector,
1860+ inheritedData: JQLitePrototype.inheritedData
1861+ });
1862+
1863+ // All nodes removed from the DOM via various jQuery APIs like .remove()
1864+ // are passed through jQuery.cleanData. Monkey-patch this method to fire
1865+ // the $destroy event on all removed nodes.
1866+ originalCleanData = jQuery.cleanData;
1867+ jQuery.cleanData = function(elems) {
1868+ var events;
1869+ for (var i = 0, elem; (elem = elems[i]) != null; i++) {
1870+ events = jQuery._data(elem, "events");
1871+ if (events && events.$destroy) {
1872+ jQuery(elem).triggerHandler('$destroy');
1873+ }
1874+ }
1875+ originalCleanData(elems);
1876+ };
1877+ } else {
1878+ jqLite = JQLite;
1879+ }
1880+
1881+ angular.element = jqLite;
1882+
1883+ // Prevent double-proxying.
1884+ bindJQueryFired = true;
1885+}
1886+
1887+/**
1888+ * throw error if the argument is falsy.
1889+ */
1890+function assertArg(arg, name, reason) {
1891+ if (!arg) {
1892+ throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
1893+ }
1894+ return arg;
1895+}
1896+
1897+function assertArgFn(arg, name, acceptArrayAnnotation) {
1898+ if (acceptArrayAnnotation && isArray(arg)) {
1899+ arg = arg[arg.length - 1];
1900+ }
1901+
1902+ assertArg(isFunction(arg), name, 'not a function, got ' +
1903+ (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));
1904+ return arg;
1905+}
1906+
1907+/**
1908+ * throw error if the name given is hasOwnProperty
1909+ * @param {String} name the name to test
1910+ * @param {String} context the context in which the name is used, such as module or directive
1911+ */
1912+function assertNotHasOwnProperty(name, context) {
1913+ if (name === 'hasOwnProperty') {
1914+ throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context);
1915+ }
1916+}
1917+
1918+/**
1919+ * Return the value accessible from the object by path. Any undefined traversals are ignored
1920+ * @param {Object} obj starting object
1921+ * @param {String} path path to traverse
1922+ * @param {boolean} [bindFnToScope=true]
1923+ * @returns {Object} value as accessible by path
1924+ */
1925+//TODO(misko): this function needs to be removed
1926+function getter(obj, path, bindFnToScope) {
1927+ if (!path) return obj;
1928+ var keys = path.split('.');
1929+ var key;
1930+ var lastInstance = obj;
1931+ var len = keys.length;
1932+
1933+ for (var i = 0; i < len; i++) {
1934+ key = keys[i];
1935+ if (obj) {
1936+ obj = (lastInstance = obj)[key];
1937+ }
1938+ }
1939+ if (!bindFnToScope && isFunction(obj)) {
1940+ return bind(lastInstance, obj);
1941+ }
1942+ return obj;
1943+}
1944+
1945+/**
1946+ * Return the DOM siblings between the first and last node in the given array.
1947+ * @param {Array} array like object
1948+ * @returns {Array} the inputted object or a jqLite collection containing the nodes
1949+ */
1950+function getBlockNodes(nodes) {
1951+ // TODO(perf): update `nodes` instead of creating a new object?
1952+ var node = nodes[0];
1953+ var endNode = nodes[nodes.length - 1];
1954+ var blockNodes;
1955+
1956+ for (var i = 1; node !== endNode && (node = node.nextSibling); i++) {
1957+ if (blockNodes || nodes[i] !== node) {
1958+ if (!blockNodes) {
1959+ blockNodes = jqLite(slice.call(nodes, 0, i));
1960+ }
1961+ blockNodes.push(node);
1962+ }
1963+ }
1964+
1965+ return blockNodes || nodes;
1966+}
1967+
1968+
1969+/**
1970+ * Creates a new object without a prototype. This object is useful for lookup without having to
1971+ * guard against prototypically inherited properties via hasOwnProperty.
1972+ *
1973+ * Related micro-benchmarks:
1974+ * - http://jsperf.com/object-create2
1975+ * - http://jsperf.com/proto-map-lookup/2
1976+ * - http://jsperf.com/for-in-vs-object-keys2
1977+ *
1978+ * @returns {Object}
1979+ */
1980+function createMap() {
1981+ return Object.create(null);
1982+}
1983+
1984+var NODE_TYPE_ELEMENT = 1;
1985+var NODE_TYPE_ATTRIBUTE = 2;
1986+var NODE_TYPE_TEXT = 3;
1987+var NODE_TYPE_COMMENT = 8;
1988+var NODE_TYPE_DOCUMENT = 9;
1989+var NODE_TYPE_DOCUMENT_FRAGMENT = 11;
1990+
1991+/**
1992+ * @ngdoc type
1993+ * @name angular.Module
1994+ * @module ng
1995+ * @description
1996+ *
1997+ * Interface for configuring angular {@link angular.module modules}.
1998+ */
1999+
2000+function setupModuleLoader(window) {
2001+
2002+ var $injectorMinErr = minErr('$injector');
2003+ var ngMinErr = minErr('ng');
2004+
2005+ function ensure(obj, name, factory) {
2006+ return obj[name] || (obj[name] = factory());
2007+ }
2008+
2009+ var angular = ensure(window, 'angular', Object);
2010+
2011+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
2012+ angular.$$minErr = angular.$$minErr || minErr;
2013+
2014+ return ensure(angular, 'module', function() {
2015+ /** @type {Object.<string, angular.Module>} */
2016+ var modules = {};
2017+
2018+ /**
2019+ * @ngdoc function
2020+ * @name angular.module
2021+ * @module ng
2022+ * @description
2023+ *
2024+ * The `angular.module` is a global place for creating, registering and retrieving Angular
2025+ * modules.
2026+ * All modules (angular core or 3rd party) that should be available to an application must be
2027+ * registered using this mechanism.
2028+ *
2029+ * Passing one argument retrieves an existing {@link angular.Module},
2030+ * whereas passing more than one argument creates a new {@link angular.Module}
2031+ *
2032+ *
2033+ * # Module
2034+ *
2035+ * A module is a collection of services, directives, controllers, filters, and configuration information.
2036+ * `angular.module` is used to configure the {@link auto.$injector $injector}.
2037+ *
2038+ * ```js
2039+ * // Create a new module
2040+ * var myModule = angular.module('myModule', []);
2041+ *
2042+ * // register a new service
2043+ * myModule.value('appName', 'MyCoolApp');
2044+ *
2045+ * // configure existing services inside initialization blocks.
2046+ * myModule.config(['$locationProvider', function($locationProvider) {
2047+ * // Configure existing providers
2048+ * $locationProvider.hashPrefix('!');
2049+ * }]);
2050+ * ```
2051+ *
2052+ * Then you can create an injector and load your modules like this:
2053+ *
2054+ * ```js
2055+ * var injector = angular.injector(['ng', 'myModule'])
2056+ * ```
2057+ *
2058+ * However it's more likely that you'll just use
2059+ * {@link ng.directive:ngApp ngApp} or
2060+ * {@link angular.bootstrap} to simplify this process for you.
2061+ *
2062+ * @param {!string} name The name of the module to create or retrieve.
2063+ * @param {!Array.<string>=} requires If specified then new module is being created. If
2064+ * unspecified then the module is being retrieved for further configuration.
2065+ * @param {Function=} configFn Optional configuration function for the module. Same as
2066+ * {@link angular.Module#config Module#config()}.
2067+ * @returns {angular.Module} new module with the {@link angular.Module} api.
2068+ */
2069+ return function module(name, requires, configFn) {
2070+ var assertNotHasOwnProperty = function(name, context) {
2071+ if (name === 'hasOwnProperty') {
2072+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
2073+ }
2074+ };
2075+
2076+ assertNotHasOwnProperty(name, 'module');
2077+ if (requires && modules.hasOwnProperty(name)) {
2078+ modules[name] = null;
2079+ }
2080+ return ensure(modules, name, function() {
2081+ if (!requires) {
2082+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
2083+ "the module name or forgot to load it. If registering a module ensure that you " +
2084+ "specify the dependencies as the second argument.", name);
2085+ }
2086+
2087+ /** @type {!Array.<Array.<*>>} */
2088+ var invokeQueue = [];
2089+
2090+ /** @type {!Array.<Function>} */
2091+ var configBlocks = [];
2092+
2093+ /** @type {!Array.<Function>} */
2094+ var runBlocks = [];
2095+
2096+ var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
2097+
2098+ /** @type {angular.Module} */
2099+ var moduleInstance = {
2100+ // Private state
2101+ _invokeQueue: invokeQueue,
2102+ _configBlocks: configBlocks,
2103+ _runBlocks: runBlocks,
2104+
2105+ /**
2106+ * @ngdoc property
2107+ * @name angular.Module#requires
2108+ * @module ng
2109+ *
2110+ * @description
2111+ * Holds the list of modules which the injector will load before the current module is
2112+ * loaded.
2113+ */
2114+ requires: requires,
2115+
2116+ /**
2117+ * @ngdoc property
2118+ * @name angular.Module#name
2119+ * @module ng
2120+ *
2121+ * @description
2122+ * Name of the module.
2123+ */
2124+ name: name,
2125+
2126+
2127+ /**
2128+ * @ngdoc method
2129+ * @name angular.Module#provider
2130+ * @module ng
2131+ * @param {string} name service name
2132+ * @param {Function} providerType Construction function for creating new instance of the
2133+ * service.
2134+ * @description
2135+ * See {@link auto.$provide#provider $provide.provider()}.
2136+ */
2137+ provider: invokeLaterAndSetModuleName('$provide', 'provider'),
2138+
2139+ /**
2140+ * @ngdoc method
2141+ * @name angular.Module#factory
2142+ * @module ng
2143+ * @param {string} name service name
2144+ * @param {Function} providerFunction Function for creating new instance of the service.
2145+ * @description
2146+ * See {@link auto.$provide#factory $provide.factory()}.
2147+ */
2148+ factory: invokeLaterAndSetModuleName('$provide', 'factory'),
2149+
2150+ /**
2151+ * @ngdoc method
2152+ * @name angular.Module#service
2153+ * @module ng
2154+ * @param {string} name service name
2155+ * @param {Function} constructor A constructor function that will be instantiated.
2156+ * @description
2157+ * See {@link auto.$provide#service $provide.service()}.
2158+ */
2159+ service: invokeLaterAndSetModuleName('$provide', 'service'),
2160+
2161+ /**
2162+ * @ngdoc method
2163+ * @name angular.Module#value
2164+ * @module ng
2165+ * @param {string} name service name
2166+ * @param {*} object Service instance object.
2167+ * @description
2168+ * See {@link auto.$provide#value $provide.value()}.
2169+ */
2170+ value: invokeLater('$provide', 'value'),
2171+
2172+ /**
2173+ * @ngdoc method
2174+ * @name angular.Module#constant
2175+ * @module ng
2176+ * @param {string} name constant name
2177+ * @param {*} object Constant value.
2178+ * @description
2179+ * Because the constants are fixed, they get applied before other provide methods.
2180+ * See {@link auto.$provide#constant $provide.constant()}.
2181+ */
2182+ constant: invokeLater('$provide', 'constant', 'unshift'),
2183+
2184+ /**
2185+ * @ngdoc method
2186+ * @name angular.Module#decorator
2187+ * @module ng
2188+ * @param {string} name The name of the service to decorate.
2189+ * @param {Function} decorFn This function will be invoked when the service needs to be
2190+ * instantiated and should return the decorated service instance.
2191+ * @description
2192+ * See {@link auto.$provide#decorator $provide.decorator()}.
2193+ */
2194+ decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
2195+
2196+ /**
2197+ * @ngdoc method
2198+ * @name angular.Module#animation
2199+ * @module ng
2200+ * @param {string} name animation name
2201+ * @param {Function} animationFactory Factory function for creating new instance of an
2202+ * animation.
2203+ * @description
2204+ *
2205+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
2206+ *
2207+ *
2208+ * Defines an animation hook that can be later used with
2209+ * {@link $animate $animate} service and directives that use this service.
2210+ *
2211+ * ```js
2212+ * module.animation('.animation-name', function($inject1, $inject2) {
2213+ * return {
2214+ * eventName : function(element, done) {
2215+ * //code to run the animation
2216+ * //once complete, then run done()
2217+ * return function cancellationFunction(element) {
2218+ * //code to cancel the animation
2219+ * }
2220+ * }
2221+ * }
2222+ * })
2223+ * ```
2224+ *
2225+ * See {@link ng.$animateProvider#register $animateProvider.register()} and
2226+ * {@link ngAnimate ngAnimate module} for more information.
2227+ */
2228+ animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
2229+
2230+ /**
2231+ * @ngdoc method
2232+ * @name angular.Module#filter
2233+ * @module ng
2234+ * @param {string} name Filter name - this must be a valid angular expression identifier
2235+ * @param {Function} filterFactory Factory function for creating new instance of filter.
2236+ * @description
2237+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
2238+ *
2239+ * <div class="alert alert-warning">
2240+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
2241+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
2242+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
2243+ * (`myapp_subsection_filterx`).
2244+ * </div>
2245+ */
2246+ filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
2247+
2248+ /**
2249+ * @ngdoc method
2250+ * @name angular.Module#controller
2251+ * @module ng
2252+ * @param {string|Object} name Controller name, or an object map of controllers where the
2253+ * keys are the names and the values are the constructors.
2254+ * @param {Function} constructor Controller constructor function.
2255+ * @description
2256+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
2257+ */
2258+ controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
2259+
2260+ /**
2261+ * @ngdoc method
2262+ * @name angular.Module#directive
2263+ * @module ng
2264+ * @param {string|Object} name Directive name, or an object map of directives where the
2265+ * keys are the names and the values are the factories.
2266+ * @param {Function} directiveFactory Factory function for creating new instance of
2267+ * directives.
2268+ * @description
2269+ * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
2270+ */
2271+ directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
2272+
2273+ /**
2274+ * @ngdoc method
2275+ * @name angular.Module#component
2276+ * @module ng
2277+ * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp)
2278+ * @param {Object} options Component definition object (a simplified
2279+ * {@link ng.$compile#directive-definition-object directive definition object})
2280+ *
2281+ * @description
2282+ * See {@link ng.$compileProvider#component $compileProvider.component()}.
2283+ */
2284+ component: invokeLaterAndSetModuleName('$compileProvider', 'component'),
2285+
2286+ /**
2287+ * @ngdoc method
2288+ * @name angular.Module#config
2289+ * @module ng
2290+ * @param {Function} configFn Execute this function on module load. Useful for service
2291+ * configuration.
2292+ * @description
2293+ * Use this method to register work which needs to be performed on module loading.
2294+ * For more about how to configure services, see
2295+ * {@link providers#provider-recipe Provider Recipe}.
2296+ */
2297+ config: config,
2298+
2299+ /**
2300+ * @ngdoc method
2301+ * @name angular.Module#run
2302+ * @module ng
2303+ * @param {Function} initializationFn Execute this function after injector creation.
2304+ * Useful for application initialization.
2305+ * @description
2306+ * Use this method to register work which should be performed when the injector is done
2307+ * loading all modules.
2308+ */
2309+ run: function(block) {
2310+ runBlocks.push(block);
2311+ return this;
2312+ }
2313+ };
2314+
2315+ if (configFn) {
2316+ config(configFn);
2317+ }
2318+
2319+ return moduleInstance;
2320+
2321+ /**
2322+ * @param {string} provider
2323+ * @param {string} method
2324+ * @param {String=} insertMethod
2325+ * @returns {angular.Module}
2326+ */
2327+ function invokeLater(provider, method, insertMethod, queue) {
2328+ if (!queue) queue = invokeQueue;
2329+ return function() {
2330+ queue[insertMethod || 'push']([provider, method, arguments]);
2331+ return moduleInstance;
2332+ };
2333+ }
2334+
2335+ /**
2336+ * @param {string} provider
2337+ * @param {string} method
2338+ * @returns {angular.Module}
2339+ */
2340+ function invokeLaterAndSetModuleName(provider, method) {
2341+ return function(recipeName, factoryFunction) {
2342+ if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
2343+ invokeQueue.push([provider, method, arguments]);
2344+ return moduleInstance;
2345+ };
2346+ }
2347+ });
2348+ };
2349+ });
2350+
2351+}
2352+
2353+/* global shallowCopy: true */
2354+
2355+/**
2356+ * Creates a shallow copy of an object, an array or a primitive.
2357+ *
2358+ * Assumes that there are no proto properties for objects.
2359+ */
2360+function shallowCopy(src, dst) {
2361+ if (isArray(src)) {
2362+ dst = dst || [];
2363+
2364+ for (var i = 0, ii = src.length; i < ii; i++) {
2365+ dst[i] = src[i];
2366+ }
2367+ } else if (isObject(src)) {
2368+ dst = dst || {};
2369+
2370+ for (var key in src) {
2371+ if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
2372+ dst[key] = src[key];
2373+ }
2374+ }
2375+ }
2376+
2377+ return dst || src;
2378+}
2379+
2380+/* global toDebugString: true */
2381+
2382+function serializeObject(obj) {
2383+ var seen = [];
2384+
2385+ return JSON.stringify(obj, function(key, val) {
2386+ val = toJsonReplacer(key, val);
2387+ if (isObject(val)) {
2388+
2389+ if (seen.indexOf(val) >= 0) return '...';
2390+
2391+ seen.push(val);
2392+ }
2393+ return val;
2394+ });
2395+}
2396+
2397+function toDebugString(obj) {
2398+ if (typeof obj === 'function') {
2399+ return obj.toString().replace(/ \{[\s\S]*$/, '');
2400+ } else if (isUndefined(obj)) {
2401+ return 'undefined';
2402+ } else if (typeof obj !== 'string') {
2403+ return serializeObject(obj);
2404+ }
2405+ return obj;
2406+}
2407+
2408+/* global angularModule: true,
2409+ version: true,
2410+
2411+ $CompileProvider,
2412+
2413+ htmlAnchorDirective,
2414+ inputDirective,
2415+ inputDirective,
2416+ formDirective,
2417+ scriptDirective,
2418+ selectDirective,
2419+ styleDirective,
2420+ optionDirective,
2421+ ngBindDirective,
2422+ ngBindHtmlDirective,
2423+ ngBindTemplateDirective,
2424+ ngClassDirective,
2425+ ngClassEvenDirective,
2426+ ngClassOddDirective,
2427+ ngCloakDirective,
2428+ ngControllerDirective,
2429+ ngFormDirective,
2430+ ngHideDirective,
2431+ ngIfDirective,
2432+ ngIncludeDirective,
2433+ ngIncludeFillContentDirective,
2434+ ngInitDirective,
2435+ ngNonBindableDirective,
2436+ ngPluralizeDirective,
2437+ ngRepeatDirective,
2438+ ngShowDirective,
2439+ ngStyleDirective,
2440+ ngSwitchDirective,
2441+ ngSwitchWhenDirective,
2442+ ngSwitchDefaultDirective,
2443+ ngOptionsDirective,
2444+ ngTranscludeDirective,
2445+ ngModelDirective,
2446+ ngListDirective,
2447+ ngChangeDirective,
2448+ patternDirective,
2449+ patternDirective,
2450+ requiredDirective,
2451+ requiredDirective,
2452+ minlengthDirective,
2453+ minlengthDirective,
2454+ maxlengthDirective,
2455+ maxlengthDirective,
2456+ ngValueDirective,
2457+ ngModelOptionsDirective,
2458+ ngAttributeAliasDirectives,
2459+ ngEventDirectives,
2460+
2461+ $AnchorScrollProvider,
2462+ $AnimateProvider,
2463+ $CoreAnimateCssProvider,
2464+ $$CoreAnimateJsProvider,
2465+ $$CoreAnimateQueueProvider,
2466+ $$AnimateRunnerFactoryProvider,
2467+ $$AnimateAsyncRunFactoryProvider,
2468+ $BrowserProvider,
2469+ $CacheFactoryProvider,
2470+ $ControllerProvider,
2471+ $DateProvider,
2472+ $DocumentProvider,
2473+ $ExceptionHandlerProvider,
2474+ $FilterProvider,
2475+ $$ForceReflowProvider,
2476+ $InterpolateProvider,
2477+ $IntervalProvider,
2478+ $$HashMapProvider,
2479+ $HttpProvider,
2480+ $HttpParamSerializerProvider,
2481+ $HttpParamSerializerJQLikeProvider,
2482+ $HttpBackendProvider,
2483+ $xhrFactoryProvider,
2484+ $jsonpCallbacksProvider,
2485+ $LocationProvider,
2486+ $LogProvider,
2487+ $ParseProvider,
2488+ $RootScopeProvider,
2489+ $QProvider,
2490+ $$QProvider,
2491+ $$SanitizeUriProvider,
2492+ $SceProvider,
2493+ $SceDelegateProvider,
2494+ $SnifferProvider,
2495+ $TemplateCacheProvider,
2496+ $TemplateRequestProvider,
2497+ $$TestabilityProvider,
2498+ $TimeoutProvider,
2499+ $$RAFProvider,
2500+ $WindowProvider,
2501+ $$jqLiteProvider,
2502+ $$CookieReaderProvider
2503+*/
2504+
2505+
2506+/**
2507+ * @ngdoc object
2508+ * @name angular.version
2509+ * @module ng
2510+ * @description
2511+ * An object that contains information about the current AngularJS version.
2512+ *
2513+ * This object has the following properties:
2514+ *
2515+ * - `full` – `{string}` – Full version string, such as "0.9.18".
2516+ * - `major` – `{number}` – Major version number, such as "0".
2517+ * - `minor` – `{number}` – Minor version number, such as "9".
2518+ * - `dot` – `{number}` – Dot version number, such as "18".
2519+ * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
2520+ */
2521+var version = {
2522+ full: '1.5.8', // all of these placeholder strings will be replaced by grunt's
2523+ major: 1, // package task
2524+ minor: 5,
2525+ dot: 8,
2526+ codeName: 'arbitrary-fallbacks'
2527+};
2528+
2529+
2530+function publishExternalAPI(angular) {
2531+ extend(angular, {
2532+ 'bootstrap': bootstrap,
2533+ 'copy': copy,
2534+ 'extend': extend,
2535+ 'merge': merge,
2536+ 'equals': equals,
2537+ 'element': jqLite,
2538+ 'forEach': forEach,
2539+ 'injector': createInjector,
2540+ 'noop': noop,
2541+ 'bind': bind,
2542+ 'toJson': toJson,
2543+ 'fromJson': fromJson,
2544+ 'identity': identity,
2545+ 'isUndefined': isUndefined,
2546+ 'isDefined': isDefined,
2547+ 'isString': isString,
2548+ 'isFunction': isFunction,
2549+ 'isObject': isObject,
2550+ 'isNumber': isNumber,
2551+ 'isElement': isElement,
2552+ 'isArray': isArray,
2553+ 'version': version,
2554+ 'isDate': isDate,
2555+ 'lowercase': lowercase,
2556+ 'uppercase': uppercase,
2557+ 'callbacks': {$$counter: 0},
2558+ 'getTestability': getTestability,
2559+ '$$minErr': minErr,
2560+ '$$csp': csp,
2561+ 'reloadWithDebugInfo': reloadWithDebugInfo
2562+ });
2563+
2564+ angularModule = setupModuleLoader(window);
2565+
2566+ angularModule('ng', ['ngLocale'], ['$provide',
2567+ function ngModule($provide) {
2568+ // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.
2569+ $provide.provider({
2570+ $$sanitizeUri: $$SanitizeUriProvider
2571+ });
2572+ $provide.provider('$compile', $CompileProvider).
2573+ directive({
2574+ a: htmlAnchorDirective,
2575+ input: inputDirective,
2576+ textarea: inputDirective,
2577+ form: formDirective,
2578+ script: scriptDirective,
2579+ select: selectDirective,
2580+ style: styleDirective,
2581+ option: optionDirective,
2582+ ngBind: ngBindDirective,
2583+ ngBindHtml: ngBindHtmlDirective,
2584+ ngBindTemplate: ngBindTemplateDirective,
2585+ ngClass: ngClassDirective,
2586+ ngClassEven: ngClassEvenDirective,
2587+ ngClassOdd: ngClassOddDirective,
2588+ ngCloak: ngCloakDirective,
2589+ ngController: ngControllerDirective,
2590+ ngForm: ngFormDirective,
2591+ ngHide: ngHideDirective,
2592+ ngIf: ngIfDirective,
2593+ ngInclude: ngIncludeDirective,
2594+ ngInit: ngInitDirective,
2595+ ngNonBindable: ngNonBindableDirective,
2596+ ngPluralize: ngPluralizeDirective,
2597+ ngRepeat: ngRepeatDirective,
2598+ ngShow: ngShowDirective,
2599+ ngStyle: ngStyleDirective,
2600+ ngSwitch: ngSwitchDirective,
2601+ ngSwitchWhen: ngSwitchWhenDirective,
2602+ ngSwitchDefault: ngSwitchDefaultDirective,
2603+ ngOptions: ngOptionsDirective,
2604+ ngTransclude: ngTranscludeDirective,
2605+ ngModel: ngModelDirective,
2606+ ngList: ngListDirective,
2607+ ngChange: ngChangeDirective,
2608+ pattern: patternDirective,
2609+ ngPattern: patternDirective,
2610+ required: requiredDirective,
2611+ ngRequired: requiredDirective,
2612+ minlength: minlengthDirective,
2613+ ngMinlength: minlengthDirective,
2614+ maxlength: maxlengthDirective,
2615+ ngMaxlength: maxlengthDirective,
2616+ ngValue: ngValueDirective,
2617+ ngModelOptions: ngModelOptionsDirective
2618+ }).
2619+ directive({
2620+ ngInclude: ngIncludeFillContentDirective
2621+ }).
2622+ directive(ngAttributeAliasDirectives).
2623+ directive(ngEventDirectives);
2624+ $provide.provider({
2625+ $anchorScroll: $AnchorScrollProvider,
2626+ $animate: $AnimateProvider,
2627+ $animateCss: $CoreAnimateCssProvider,
2628+ $$animateJs: $$CoreAnimateJsProvider,
2629+ $$animateQueue: $$CoreAnimateQueueProvider,
2630+ $$AnimateRunner: $$AnimateRunnerFactoryProvider,
2631+ $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider,
2632+ $browser: $BrowserProvider,
2633+ $cacheFactory: $CacheFactoryProvider,
2634+ $controller: $ControllerProvider,
2635+ $document: $DocumentProvider,
2636+ $exceptionHandler: $ExceptionHandlerProvider,
2637+ $filter: $FilterProvider,
2638+ $$forceReflow: $$ForceReflowProvider,
2639+ $interpolate: $InterpolateProvider,
2640+ $interval: $IntervalProvider,
2641+ $http: $HttpProvider,
2642+ $httpParamSerializer: $HttpParamSerializerProvider,
2643+ $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider,
2644+ $httpBackend: $HttpBackendProvider,
2645+ $xhrFactory: $xhrFactoryProvider,
2646+ $jsonpCallbacks: $jsonpCallbacksProvider,
2647+ $location: $LocationProvider,
2648+ $log: $LogProvider,
2649+ $parse: $ParseProvider,
2650+ $rootScope: $RootScopeProvider,
2651+ $q: $QProvider,
2652+ $$q: $$QProvider,
2653+ $sce: $SceProvider,
2654+ $sceDelegate: $SceDelegateProvider,
2655+ $sniffer: $SnifferProvider,
2656+ $templateCache: $TemplateCacheProvider,
2657+ $templateRequest: $TemplateRequestProvider,
2658+ $$testability: $$TestabilityProvider,
2659+ $timeout: $TimeoutProvider,
2660+ $window: $WindowProvider,
2661+ $$rAF: $$RAFProvider,
2662+ $$jqLite: $$jqLiteProvider,
2663+ $$HashMap: $$HashMapProvider,
2664+ $$cookieReader: $$CookieReaderProvider
2665+ });
2666+ }
2667+ ]);
2668+}
2669+
2670+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2671+ * Any commits to this file should be reviewed with security in mind. *
2672+ * Changes to this file can potentially create security vulnerabilities. *
2673+ * An approval from 2 Core members with history of modifying *
2674+ * this file is required. *
2675+ * *
2676+ * Does the change somehow allow for arbitrary javascript to be executed? *
2677+ * Or allows for someone to change the prototype of built-in objects? *
2678+ * Or gives undesired access to variables likes document or window? *
2679+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2680+
2681+/* global JQLitePrototype: true,
2682+ addEventListenerFn: true,
2683+ removeEventListenerFn: true,
2684+ BOOLEAN_ATTR: true,
2685+ ALIASED_ATTR: true,
2686+*/
2687+
2688+//////////////////////////////////
2689+//JQLite
2690+//////////////////////////////////
2691+
2692+/**
2693+ * @ngdoc function
2694+ * @name angular.element
2695+ * @module ng
2696+ * @kind function
2697+ *
2698+ * @description
2699+ * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.
2700+ *
2701+ * If jQuery is available, `angular.element` is an alias for the
2702+ * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`
2703+ * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or **jqLite**.
2704+ *
2705+ * jqLite is a tiny, API-compatible subset of jQuery that allows
2706+ * Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most
2707+ * commonly needed functionality with the goal of having a very small footprint.
2708+ *
2709+ * To use `jQuery`, simply ensure it is loaded before the `angular.js` file. You can also use the
2710+ * {@link ngJq `ngJq`} directive to specify that jqlite should be used over jQuery, or to use a
2711+ * specific version of jQuery if multiple versions exist on the page.
2712+ *
2713+ * <div class="alert alert-info">**Note:** All element references in Angular are always wrapped with jQuery or
2714+ * jqLite (such as the element argument in a directive's compile / link function). They are never raw DOM references.</div>
2715+ *
2716+ * <div class="alert alert-warning">**Note:** Keep in mind that this function will not find elements
2717+ * by tag name / CSS selector. For lookups by tag name, try instead `angular.element(document).find(...)`
2718+ * or `$document.find()`, or use the standard DOM APIs, e.g. `document.querySelectorAll()`.</div>
2719+ *
2720+ * ## Angular's jqLite
2721+ * jqLite provides only the following jQuery methods:
2722+ *
2723+ * - [`addClass()`](http://api.jquery.com/addClass/) - Does not support a function as first argument
2724+ * - [`after()`](http://api.jquery.com/after/)
2725+ * - [`append()`](http://api.jquery.com/append/)
2726+ * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters
2727+ * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
2728+ * - [`children()`](http://api.jquery.com/children/) - Does not support selectors
2729+ * - [`clone()`](http://api.jquery.com/clone/)
2730+ * - [`contents()`](http://api.jquery.com/contents/)
2731+ * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`.
2732+ * As a setter, does not convert numbers to strings or append 'px', and also does not have automatic property prefixing.
2733+ * - [`data()`](http://api.jquery.com/data/)
2734+ * - [`detach()`](http://api.jquery.com/detach/)
2735+ * - [`empty()`](http://api.jquery.com/empty/)
2736+ * - [`eq()`](http://api.jquery.com/eq/)
2737+ * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name
2738+ * - [`hasClass()`](http://api.jquery.com/hasClass/)
2739+ * - [`html()`](http://api.jquery.com/html/)
2740+ * - [`next()`](http://api.jquery.com/next/) - Does not support selectors
2741+ * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData
2742+ * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces, selectors or event object as parameter
2743+ * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors
2744+ * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors
2745+ * - [`prepend()`](http://api.jquery.com/prepend/)
2746+ * - [`prop()`](http://api.jquery.com/prop/)
2747+ * - [`ready()`](http://api.jquery.com/ready/)
2748+ * - [`remove()`](http://api.jquery.com/remove/)
2749+ * - [`removeAttr()`](http://api.jquery.com/removeAttr/)
2750+ * - [`removeClass()`](http://api.jquery.com/removeClass/) - Does not support a function as first argument
2751+ * - [`removeData()`](http://api.jquery.com/removeData/)
2752+ * - [`replaceWith()`](http://api.jquery.com/replaceWith/)
2753+ * - [`text()`](http://api.jquery.com/text/)
2754+ * - [`toggleClass()`](http://api.jquery.com/toggleClass/) - Does not support a function as first argument
2755+ * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers
2756+ * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces or event object as parameter
2757+ * - [`val()`](http://api.jquery.com/val/)
2758+ * - [`wrap()`](http://api.jquery.com/wrap/)
2759+ *
2760+ * ## jQuery/jqLite Extras
2761+ * Angular also provides the following additional methods and events to both jQuery and jqLite:
2762+ *
2763+ * ### Events
2764+ * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event
2765+ * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM
2766+ * element before it is removed.
2767+ *
2768+ * ### Methods
2769+ * - `controller(name)` - retrieves the controller of the current element or its parent. By default
2770+ * retrieves controller associated with the `ngController` directive. If `name` is provided as
2771+ * camelCase directive name, then the controller for this directive will be retrieved (e.g.
2772+ * `'ngModel'`).
2773+ * - `injector()` - retrieves the injector of the current element or its parent.
2774+ * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
2775+ * element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
2776+ * be enabled.
2777+ * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
2778+ * current element. This getter should be used only on elements that contain a directive which starts a new isolate
2779+ * scope. Calling `scope()` on this element always returns the original non-isolate scope.
2780+ * Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
2781+ * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
2782+ * parent element is reached.
2783+ *
2784+ * @knownIssue You cannot spy on `angular.element` if you are using Jasmine version 1.x. See
2785+ * https://github.com/angular/angular.js/issues/14251 for more information.
2786+ *
2787+ * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.
2788+ * @returns {Object} jQuery object.
2789+ */
2790+
2791+JQLite.expando = 'ng339';
2792+
2793+var jqCache = JQLite.cache = {},
2794+ jqId = 1,
2795+ addEventListenerFn = function(element, type, fn) {
2796+ element.addEventListener(type, fn, false);
2797+ },
2798+ removeEventListenerFn = function(element, type, fn) {
2799+ element.removeEventListener(type, fn, false);
2800+ };
2801+
2802+/*
2803+ * !!! This is an undocumented "private" function !!!
2804+ */
2805+JQLite._data = function(node) {
2806+ //jQuery always returns an object on cache miss
2807+ return this.cache[node[this.expando]] || {};
2808+};
2809+
2810+function jqNextId() { return ++jqId; }
2811+
2812+
2813+var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
2814+var MOZ_HACK_REGEXP = /^moz([A-Z])/;
2815+var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"};
2816+var jqLiteMinErr = minErr('jqLite');
2817+
2818+/**
2819+ * Converts snake_case to camelCase.
2820+ * Also there is special case for Moz prefix starting with upper case letter.
2821+ * @param name Name to normalize
2822+ */
2823+function camelCase(name) {
2824+ return name.
2825+ replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
2826+ return offset ? letter.toUpperCase() : letter;
2827+ }).
2828+ replace(MOZ_HACK_REGEXP, 'Moz$1');
2829+}
2830+
2831+var SINGLE_TAG_REGEXP = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;
2832+var HTML_REGEXP = /<|&#?\w+;/;
2833+var TAG_NAME_REGEXP = /<([\w:-]+)/;
2834+var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi;
2835+
2836+var wrapMap = {
2837+ 'option': [1, '<select multiple="multiple">', '</select>'],
2838+
2839+ 'thead': [1, '<table>', '</table>'],
2840+ 'col': [2, '<table><colgroup>', '</colgroup></table>'],
2841+ 'tr': [2, '<table><tbody>', '</tbody></table>'],
2842+ 'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
2843+ '_default': [0, "", ""]
2844+};
2845+
2846+wrapMap.optgroup = wrapMap.option;
2847+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
2848+wrapMap.th = wrapMap.td;
2849+
2850+
2851+function jqLiteIsTextNode(html) {
2852+ return !HTML_REGEXP.test(html);
2853+}
2854+
2855+function jqLiteAcceptsData(node) {
2856+ // The window object can accept data but has no nodeType
2857+ // Otherwise we are only interested in elements (1) and documents (9)
2858+ var nodeType = node.nodeType;
2859+ return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
2860+}
2861+
2862+function jqLiteHasData(node) {
2863+ for (var key in jqCache[node.ng339]) {
2864+ return true;
2865+ }
2866+ return false;
2867+}
2868+
2869+function jqLiteCleanData(nodes) {
2870+ for (var i = 0, ii = nodes.length; i < ii; i++) {
2871+ jqLiteRemoveData(nodes[i]);
2872+ }
2873+}
2874+
2875+function jqLiteBuildFragment(html, context) {
2876+ var tmp, tag, wrap,
2877+ fragment = context.createDocumentFragment(),
2878+ nodes = [], i;
2879+
2880+ if (jqLiteIsTextNode(html)) {
2881+ // Convert non-html into a text node
2882+ nodes.push(context.createTextNode(html));
2883+ } else {
2884+ // Convert html into DOM nodes
2885+ tmp = fragment.appendChild(context.createElement("div"));
2886+ tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
2887+ wrap = wrapMap[tag] || wrapMap._default;
2888+ tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
2889+
2890+ // Descend through wrappers to the right content
2891+ i = wrap[0];
2892+ while (i--) {
2893+ tmp = tmp.lastChild;
2894+ }
2895+
2896+ nodes = concat(nodes, tmp.childNodes);
2897+
2898+ tmp = fragment.firstChild;
2899+ tmp.textContent = "";
2900+ }
2901+
2902+ // Remove wrapper from fragment
2903+ fragment.textContent = "";
2904+ fragment.innerHTML = ""; // Clear inner HTML
2905+ forEach(nodes, function(node) {
2906+ fragment.appendChild(node);
2907+ });
2908+
2909+ return fragment;
2910+}
2911+
2912+function jqLiteParseHTML(html, context) {
2913+ context = context || window.document;
2914+ var parsed;
2915+
2916+ if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
2917+ return [context.createElement(parsed[1])];
2918+ }
2919+
2920+ if ((parsed = jqLiteBuildFragment(html, context))) {
2921+ return parsed.childNodes;
2922+ }
2923+
2924+ return [];
2925+}
2926+
2927+function jqLiteWrapNode(node, wrapper) {
2928+ var parent = node.parentNode;
2929+
2930+ if (parent) {
2931+ parent.replaceChild(wrapper, node);
2932+ }
2933+
2934+ wrapper.appendChild(node);
2935+}
2936+
2937+
2938+// IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259.
2939+var jqLiteContains = window.Node.prototype.contains || function(arg) {
2940+ // jshint bitwise: false
2941+ return !!(this.compareDocumentPosition(arg) & 16);
2942+ // jshint bitwise: true
2943+};
2944+
2945+/////////////////////////////////////////////
2946+function JQLite(element) {
2947+ if (element instanceof JQLite) {
2948+ return element;
2949+ }
2950+
2951+ var argIsString;
2952+
2953+ if (isString(element)) {
2954+ element = trim(element);
2955+ argIsString = true;
2956+ }
2957+ if (!(this instanceof JQLite)) {
2958+ if (argIsString && element.charAt(0) != '<') {
2959+ throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');
2960+ }
2961+ return new JQLite(element);
2962+ }
2963+
2964+ if (argIsString) {
2965+ jqLiteAddNodes(this, jqLiteParseHTML(element));
2966+ } else {
2967+ jqLiteAddNodes(this, element);
2968+ }
2969+}
2970+
2971+function jqLiteClone(element) {
2972+ return element.cloneNode(true);
2973+}
2974+
2975+function jqLiteDealoc(element, onlyDescendants) {
2976+ if (!onlyDescendants) jqLiteRemoveData(element);
2977+
2978+ if (element.querySelectorAll) {
2979+ var descendants = element.querySelectorAll('*');
2980+ for (var i = 0, l = descendants.length; i < l; i++) {
2981+ jqLiteRemoveData(descendants[i]);
2982+ }
2983+ }
2984+}
2985+
2986+function jqLiteOff(element, type, fn, unsupported) {
2987+ if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');
2988+
2989+ var expandoStore = jqLiteExpandoStore(element);
2990+ var events = expandoStore && expandoStore.events;
2991+ var handle = expandoStore && expandoStore.handle;
2992+
2993+ if (!handle) return; //no listeners registered
2994+
2995+ if (!type) {
2996+ for (type in events) {
2997+ if (type !== '$destroy') {
2998+ removeEventListenerFn(element, type, handle);
2999+ }
3000+ delete events[type];
3001+ }
3002+ } else {
3003+
3004+ var removeHandler = function(type) {
3005+ var listenerFns = events[type];
3006+ if (isDefined(fn)) {
3007+ arrayRemove(listenerFns || [], fn);
3008+ }
3009+ if (!(isDefined(fn) && listenerFns && listenerFns.length > 0)) {
3010+ removeEventListenerFn(element, type, handle);
3011+ delete events[type];
3012+ }
3013+ };
3014+
3015+ forEach(type.split(' '), function(type) {
3016+ removeHandler(type);
3017+ if (MOUSE_EVENT_MAP[type]) {
3018+ removeHandler(MOUSE_EVENT_MAP[type]);
3019+ }
3020+ });
3021+ }
3022+}
3023+
3024+function jqLiteRemoveData(element, name) {
3025+ var expandoId = element.ng339;
3026+ var expandoStore = expandoId && jqCache[expandoId];
3027+
3028+ if (expandoStore) {
3029+ if (name) {
3030+ delete expandoStore.data[name];
3031+ return;
3032+ }
3033+
3034+ if (expandoStore.handle) {
3035+ if (expandoStore.events.$destroy) {
3036+ expandoStore.handle({}, '$destroy');
3037+ }
3038+ jqLiteOff(element);
3039+ }
3040+ delete jqCache[expandoId];
3041+ element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it
3042+ }
3043+}
3044+
3045+
3046+function jqLiteExpandoStore(element, createIfNecessary) {
3047+ var expandoId = element.ng339,
3048+ expandoStore = expandoId && jqCache[expandoId];
3049+
3050+ if (createIfNecessary && !expandoStore) {
3051+ element.ng339 = expandoId = jqNextId();
3052+ expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};
3053+ }
3054+
3055+ return expandoStore;
3056+}
3057+
3058+
3059+function jqLiteData(element, key, value) {
3060+ if (jqLiteAcceptsData(element)) {
3061+
3062+ var isSimpleSetter = isDefined(value);
3063+ var isSimpleGetter = !isSimpleSetter && key && !isObject(key);
3064+ var massGetter = !key;
3065+ var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);
3066+ var data = expandoStore && expandoStore.data;
3067+
3068+ if (isSimpleSetter) { // data('key', value)
3069+ data[key] = value;
3070+ } else {
3071+ if (massGetter) { // data()
3072+ return data;
3073+ } else {
3074+ if (isSimpleGetter) { // data('key')
3075+ // don't force creation of expandoStore if it doesn't exist yet
3076+ return data && data[key];
3077+ } else { // mass-setter: data({key1: val1, key2: val2})
3078+ extend(data, key);
3079+ }
3080+ }
3081+ }
3082+ }
3083+}
3084+
3085+function jqLiteHasClass(element, selector) {
3086+ if (!element.getAttribute) return false;
3087+ return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
3088+ indexOf(" " + selector + " ") > -1);
3089+}
3090+
3091+function jqLiteRemoveClass(element, cssClasses) {
3092+ if (cssClasses && element.setAttribute) {
3093+ forEach(cssClasses.split(' '), function(cssClass) {
3094+ element.setAttribute('class', trim(
3095+ (" " + (element.getAttribute('class') || '') + " ")
3096+ .replace(/[\n\t]/g, " ")
3097+ .replace(" " + trim(cssClass) + " ", " "))
3098+ );
3099+ });
3100+ }
3101+}
3102+
3103+function jqLiteAddClass(element, cssClasses) {
3104+ if (cssClasses && element.setAttribute) {
3105+ var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
3106+ .replace(/[\n\t]/g, " ");
3107+
3108+ forEach(cssClasses.split(' '), function(cssClass) {
3109+ cssClass = trim(cssClass);
3110+ if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {
3111+ existingClasses += cssClass + ' ';
3112+ }
3113+ });
3114+
3115+ element.setAttribute('class', trim(existingClasses));
3116+ }
3117+}
3118+
3119+
3120+function jqLiteAddNodes(root, elements) {
3121+ // THIS CODE IS VERY HOT. Don't make changes without benchmarking.
3122+
3123+ if (elements) {
3124+
3125+ // if a Node (the most common case)
3126+ if (elements.nodeType) {
3127+ root[root.length++] = elements;
3128+ } else {
3129+ var length = elements.length;
3130+
3131+ // if an Array or NodeList and not a Window
3132+ if (typeof length === 'number' && elements.window !== elements) {
3133+ if (length) {
3134+ for (var i = 0; i < length; i++) {
3135+ root[root.length++] = elements[i];
3136+ }
3137+ }
3138+ } else {
3139+ root[root.length++] = elements;
3140+ }
3141+ }
3142+ }
3143+}
3144+
3145+
3146+function jqLiteController(element, name) {
3147+ return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller');
3148+}
3149+
3150+function jqLiteInheritedData(element, name, value) {
3151+ // if element is the document object work with the html element instead
3152+ // this makes $(document).scope() possible
3153+ if (element.nodeType == NODE_TYPE_DOCUMENT) {
3154+ element = element.documentElement;
3155+ }
3156+ var names = isArray(name) ? name : [name];
3157+
3158+ while (element) {
3159+ for (var i = 0, ii = names.length; i < ii; i++) {
3160+ if (isDefined(value = jqLite.data(element, names[i]))) return value;
3161+ }
3162+
3163+ // If dealing with a document fragment node with a host element, and no parent, use the host
3164+ // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
3165+ // to lookup parent controllers.
3166+ element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
3167+ }
3168+}
3169+
3170+function jqLiteEmpty(element) {
3171+ jqLiteDealoc(element, true);
3172+ while (element.firstChild) {
3173+ element.removeChild(element.firstChild);
3174+ }
3175+}
3176+
3177+function jqLiteRemove(element, keepData) {
3178+ if (!keepData) jqLiteDealoc(element);
3179+ var parent = element.parentNode;
3180+ if (parent) parent.removeChild(element);
3181+}
3182+
3183+
3184+function jqLiteDocumentLoaded(action, win) {
3185+ win = win || window;
3186+ if (win.document.readyState === 'complete') {
3187+ // Force the action to be run async for consistent behavior
3188+ // from the action's point of view
3189+ // i.e. it will definitely not be in a $apply
3190+ win.setTimeout(action);
3191+ } else {
3192+ // No need to unbind this handler as load is only ever called once
3193+ jqLite(win).on('load', action);
3194+ }
3195+}
3196+
3197+//////////////////////////////////////////
3198+// Functions which are declared directly.
3199+//////////////////////////////////////////
3200+var JQLitePrototype = JQLite.prototype = {
3201+ ready: function(fn) {
3202+ var fired = false;
3203+
3204+ function trigger() {
3205+ if (fired) return;
3206+ fired = true;
3207+ fn();
3208+ }
3209+
3210+ // check if document is already loaded
3211+ if (window.document.readyState === 'complete') {
3212+ window.setTimeout(trigger);
3213+ } else {
3214+ this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9
3215+ // we can not use jqLite since we are not done loading and jQuery could be loaded later.
3216+ // jshint -W064
3217+ JQLite(window).on('load', trigger); // fallback to window.onload for others
3218+ // jshint +W064
3219+ }
3220+ },
3221+ toString: function() {
3222+ var value = [];
3223+ forEach(this, function(e) { value.push('' + e);});
3224+ return '[' + value.join(', ') + ']';
3225+ },
3226+
3227+ eq: function(index) {
3228+ return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);
3229+ },
3230+
3231+ length: 0,
3232+ push: push,
3233+ sort: [].sort,
3234+ splice: [].splice
3235+};
3236+
3237+//////////////////////////////////////////
3238+// Functions iterating getter/setters.
3239+// these functions return self on setter and
3240+// value on get.
3241+//////////////////////////////////////////
3242+var BOOLEAN_ATTR = {};
3243+forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {
3244+ BOOLEAN_ATTR[lowercase(value)] = value;
3245+});
3246+var BOOLEAN_ELEMENTS = {};
3247+forEach('input,select,option,textarea,button,form,details'.split(','), function(value) {
3248+ BOOLEAN_ELEMENTS[value] = true;
3249+});
3250+var ALIASED_ATTR = {
3251+ 'ngMinlength': 'minlength',
3252+ 'ngMaxlength': 'maxlength',
3253+ 'ngMin': 'min',
3254+ 'ngMax': 'max',
3255+ 'ngPattern': 'pattern'
3256+};
3257+
3258+function getBooleanAttrName(element, name) {
3259+ // check dom last since we will most likely fail on name
3260+ var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];
3261+
3262+ // booleanAttr is here twice to minimize DOM access
3263+ return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;
3264+}
3265+
3266+function getAliasedAttrName(name) {
3267+ return ALIASED_ATTR[name];
3268+}
3269+
3270+forEach({
3271+ data: jqLiteData,
3272+ removeData: jqLiteRemoveData,
3273+ hasData: jqLiteHasData,
3274+ cleanData: jqLiteCleanData
3275+}, function(fn, name) {
3276+ JQLite[name] = fn;
3277+});
3278+
3279+forEach({
3280+ data: jqLiteData,
3281+ inheritedData: jqLiteInheritedData,
3282+
3283+ scope: function(element) {
3284+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
3285+ return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);
3286+ },
3287+
3288+ isolateScope: function(element) {
3289+ // Can't use jqLiteData here directly so we stay compatible with jQuery!
3290+ return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');
3291+ },
3292+
3293+ controller: jqLiteController,
3294+
3295+ injector: function(element) {
3296+ return jqLiteInheritedData(element, '$injector');
3297+ },
3298+
3299+ removeAttr: function(element, name) {
3300+ element.removeAttribute(name);
3301+ },
3302+
3303+ hasClass: jqLiteHasClass,
3304+
3305+ css: function(element, name, value) {
3306+ name = camelCase(name);
3307+
3308+ if (isDefined(value)) {
3309+ element.style[name] = value;
3310+ } else {
3311+ return element.style[name];
3312+ }
3313+ },
3314+
3315+ attr: function(element, name, value) {
3316+ var nodeType = element.nodeType;
3317+ if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT) {
3318+ return;
3319+ }
3320+ var lowercasedName = lowercase(name);
3321+ if (BOOLEAN_ATTR[lowercasedName]) {
3322+ if (isDefined(value)) {
3323+ if (!!value) {
3324+ element[name] = true;
3325+ element.setAttribute(name, lowercasedName);
3326+ } else {
3327+ element[name] = false;
3328+ element.removeAttribute(lowercasedName);
3329+ }
3330+ } else {
3331+ return (element[name] ||
3332+ (element.attributes.getNamedItem(name) || noop).specified)
3333+ ? lowercasedName
3334+ : undefined;
3335+ }
3336+ } else if (isDefined(value)) {
3337+ element.setAttribute(name, value);
3338+ } else if (element.getAttribute) {
3339+ // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code
3340+ // some elements (e.g. Document) don't have get attribute, so return undefined
3341+ var ret = element.getAttribute(name, 2);
3342+ // normalize non-existing attributes to undefined (as jQuery)
3343+ return ret === null ? undefined : ret;
3344+ }
3345+ },
3346+
3347+ prop: function(element, name, value) {
3348+ if (isDefined(value)) {
3349+ element[name] = value;
3350+ } else {
3351+ return element[name];
3352+ }
3353+ },
3354+
3355+ text: (function() {
3356+ getText.$dv = '';
3357+ return getText;
3358+
3359+ function getText(element, value) {
3360+ if (isUndefined(value)) {
3361+ var nodeType = element.nodeType;
3362+ return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
3363+ }
3364+ element.textContent = value;
3365+ }
3366+ })(),
3367+
3368+ val: function(element, value) {
3369+ if (isUndefined(value)) {
3370+ if (element.multiple && nodeName_(element) === 'select') {
3371+ var result = [];
3372+ forEach(element.options, function(option) {
3373+ if (option.selected) {
3374+ result.push(option.value || option.text);
3375+ }
3376+ });
3377+ return result.length === 0 ? null : result;
3378+ }
3379+ return element.value;
3380+ }
3381+ element.value = value;
3382+ },
3383+
3384+ html: function(element, value) {
3385+ if (isUndefined(value)) {
3386+ return element.innerHTML;
3387+ }
3388+ jqLiteDealoc(element, true);
3389+ element.innerHTML = value;
3390+ },
3391+
3392+ empty: jqLiteEmpty
3393+}, function(fn, name) {
3394+ /**
3395+ * Properties: writes return selection, reads return first value
3396+ */
3397+ JQLite.prototype[name] = function(arg1, arg2) {
3398+ var i, key;
3399+ var nodeCount = this.length;
3400+
3401+ // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it
3402+ // in a way that survives minification.
3403+ // jqLiteEmpty takes no arguments but is a setter.
3404+ if (fn !== jqLiteEmpty &&
3405+ (isUndefined((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2))) {
3406+ if (isObject(arg1)) {
3407+
3408+ // we are a write, but the object properties are the key/values
3409+ for (i = 0; i < nodeCount; i++) {
3410+ if (fn === jqLiteData) {
3411+ // data() takes the whole object in jQuery
3412+ fn(this[i], arg1);
3413+ } else {
3414+ for (key in arg1) {
3415+ fn(this[i], key, arg1[key]);
3416+ }
3417+ }
3418+ }
3419+ // return self for chaining
3420+ return this;
3421+ } else {
3422+ // we are a read, so read the first child.
3423+ // TODO: do we still need this?
3424+ var value = fn.$dv;
3425+ // Only if we have $dv do we iterate over all, otherwise it is just the first element.
3426+ var jj = (isUndefined(value)) ? Math.min(nodeCount, 1) : nodeCount;
3427+ for (var j = 0; j < jj; j++) {
3428+ var nodeValue = fn(this[j], arg1, arg2);
3429+ value = value ? value + nodeValue : nodeValue;
3430+ }
3431+ return value;
3432+ }
3433+ } else {
3434+ // we are a write, so apply to all children
3435+ for (i = 0; i < nodeCount; i++) {
3436+ fn(this[i], arg1, arg2);
3437+ }
3438+ // return self for chaining
3439+ return this;
3440+ }
3441+ };
3442+});
3443+
3444+function createEventHandler(element, events) {
3445+ var eventHandler = function(event, type) {
3446+ // jQuery specific api
3447+ event.isDefaultPrevented = function() {
3448+ return event.defaultPrevented;
3449+ };
3450+
3451+ var eventFns = events[type || event.type];
3452+ var eventFnsLength = eventFns ? eventFns.length : 0;
3453+
3454+ if (!eventFnsLength) return;
3455+
3456+ if (isUndefined(event.immediatePropagationStopped)) {
3457+ var originalStopImmediatePropagation = event.stopImmediatePropagation;
3458+ event.stopImmediatePropagation = function() {
3459+ event.immediatePropagationStopped = true;
3460+
3461+ if (event.stopPropagation) {
3462+ event.stopPropagation();
3463+ }
3464+
3465+ if (originalStopImmediatePropagation) {
3466+ originalStopImmediatePropagation.call(event);
3467+ }
3468+ };
3469+ }
3470+
3471+ event.isImmediatePropagationStopped = function() {
3472+ return event.immediatePropagationStopped === true;
3473+ };
3474+
3475+ // Some events have special handlers that wrap the real handler
3476+ var handlerWrapper = eventFns.specialHandlerWrapper || defaultHandlerWrapper;
3477+
3478+ // Copy event handlers in case event handlers array is modified during execution.
3479+ if ((eventFnsLength > 1)) {
3480+ eventFns = shallowCopy(eventFns);
3481+ }
3482+
3483+ for (var i = 0; i < eventFnsLength; i++) {
3484+ if (!event.isImmediatePropagationStopped()) {
3485+ handlerWrapper(element, event, eventFns[i]);
3486+ }
3487+ }
3488+ };
3489+
3490+ // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all
3491+ // events on `element`
3492+ eventHandler.elem = element;
3493+ return eventHandler;
3494+}
3495+
3496+function defaultHandlerWrapper(element, event, handler) {
3497+ handler.call(element, event);
3498+}
3499+
3500+function specialMouseHandlerWrapper(target, event, handler) {
3501+ // Refer to jQuery's implementation of mouseenter & mouseleave
3502+ // Read about mouseenter and mouseleave:
3503+ // http://www.quirksmode.org/js/events_mouse.html#link8
3504+ var related = event.relatedTarget;
3505+ // For mousenter/leave call the handler if related is outside the target.
3506+ // NB: No relatedTarget if the mouse left/entered the browser window
3507+ if (!related || (related !== target && !jqLiteContains.call(target, related))) {
3508+ handler.call(target, event);
3509+ }
3510+}
3511+
3512+//////////////////////////////////////////
3513+// Functions iterating traversal.
3514+// These functions chain results into a single
3515+// selector.
3516+//////////////////////////////////////////
3517+forEach({
3518+ removeData: jqLiteRemoveData,
3519+
3520+ on: function jqLiteOn(element, type, fn, unsupported) {
3521+ if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');
3522+
3523+ // Do not add event handlers to non-elements because they will not be cleaned up.
3524+ if (!jqLiteAcceptsData(element)) {
3525+ return;
3526+ }
3527+
3528+ var expandoStore = jqLiteExpandoStore(element, true);
3529+ var events = expandoStore.events;
3530+ var handle = expandoStore.handle;
3531+
3532+ if (!handle) {
3533+ handle = expandoStore.handle = createEventHandler(element, events);
3534+ }
3535+
3536+ // http://jsperf.com/string-indexof-vs-split
3537+ var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];
3538+ var i = types.length;
3539+
3540+ var addHandler = function(type, specialHandlerWrapper, noEventListener) {
3541+ var eventFns = events[type];
3542+
3543+ if (!eventFns) {
3544+ eventFns = events[type] = [];
3545+ eventFns.specialHandlerWrapper = specialHandlerWrapper;
3546+ if (type !== '$destroy' && !noEventListener) {
3547+ addEventListenerFn(element, type, handle);
3548+ }
3549+ }
3550+
3551+ eventFns.push(fn);
3552+ };
3553+
3554+ while (i--) {
3555+ type = types[i];
3556+ if (MOUSE_EVENT_MAP[type]) {
3557+ addHandler(MOUSE_EVENT_MAP[type], specialMouseHandlerWrapper);
3558+ addHandler(type, undefined, true);
3559+ } else {
3560+ addHandler(type);
3561+ }
3562+ }
3563+ },
3564+
3565+ off: jqLiteOff,
3566+
3567+ one: function(element, type, fn) {
3568+ element = jqLite(element);
3569+
3570+ //add the listener twice so that when it is called
3571+ //you can remove the original function and still be
3572+ //able to call element.off(ev, fn) normally
3573+ element.on(type, function onFn() {
3574+ element.off(type, fn);
3575+ element.off(type, onFn);
3576+ });
3577+ element.on(type, fn);
3578+ },
3579+
3580+ replaceWith: function(element, replaceNode) {
3581+ var index, parent = element.parentNode;
3582+ jqLiteDealoc(element);
3583+ forEach(new JQLite(replaceNode), function(node) {
3584+ if (index) {
3585+ parent.insertBefore(node, index.nextSibling);
3586+ } else {
3587+ parent.replaceChild(node, element);
3588+ }
3589+ index = node;
3590+ });
3591+ },
3592+
3593+ children: function(element) {
3594+ var children = [];
3595+ forEach(element.childNodes, function(element) {
3596+ if (element.nodeType === NODE_TYPE_ELEMENT) {
3597+ children.push(element);
3598+ }
3599+ });
3600+ return children;
3601+ },
3602+
3603+ contents: function(element) {
3604+ return element.contentDocument || element.childNodes || [];
3605+ },
3606+
3607+ append: function(element, node) {
3608+ var nodeType = element.nodeType;
3609+ if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
3610+
3611+ node = new JQLite(node);
3612+
3613+ for (var i = 0, ii = node.length; i < ii; i++) {
3614+ var child = node[i];
3615+ element.appendChild(child);
3616+ }
3617+ },
3618+
3619+ prepend: function(element, node) {
3620+ if (element.nodeType === NODE_TYPE_ELEMENT) {
3621+ var index = element.firstChild;
3622+ forEach(new JQLite(node), function(child) {
3623+ element.insertBefore(child, index);
3624+ });
3625+ }
3626+ },
3627+
3628+ wrap: function(element, wrapNode) {
3629+ jqLiteWrapNode(element, jqLite(wrapNode).eq(0).clone()[0]);
3630+ },
3631+
3632+ remove: jqLiteRemove,
3633+
3634+ detach: function(element) {
3635+ jqLiteRemove(element, true);
3636+ },
3637+
3638+ after: function(element, newElement) {
3639+ var index = element, parent = element.parentNode;
3640+ newElement = new JQLite(newElement);
3641+
3642+ for (var i = 0, ii = newElement.length; i < ii; i++) {
3643+ var node = newElement[i];
3644+ parent.insertBefore(node, index.nextSibling);
3645+ index = node;
3646+ }
3647+ },
3648+
3649+ addClass: jqLiteAddClass,
3650+ removeClass: jqLiteRemoveClass,
3651+
3652+ toggleClass: function(element, selector, condition) {
3653+ if (selector) {
3654+ forEach(selector.split(' '), function(className) {
3655+ var classCondition = condition;
3656+ if (isUndefined(classCondition)) {
3657+ classCondition = !jqLiteHasClass(element, className);
3658+ }
3659+ (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);
3660+ });
3661+ }
3662+ },
3663+
3664+ parent: function(element) {
3665+ var parent = element.parentNode;
3666+ return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
3667+ },
3668+
3669+ next: function(element) {
3670+ return element.nextElementSibling;
3671+ },
3672+
3673+ find: function(element, selector) {
3674+ if (element.getElementsByTagName) {
3675+ return element.getElementsByTagName(selector);
3676+ } else {
3677+ return [];
3678+ }
3679+ },
3680+
3681+ clone: jqLiteClone,
3682+
3683+ triggerHandler: function(element, event, extraParameters) {
3684+
3685+ var dummyEvent, eventFnsCopy, handlerArgs;
3686+ var eventName = event.type || event;
3687+ var expandoStore = jqLiteExpandoStore(element);
3688+ var events = expandoStore && expandoStore.events;
3689+ var eventFns = events && events[eventName];
3690+
3691+ if (eventFns) {
3692+ // Create a dummy event to pass to the handlers
3693+ dummyEvent = {
3694+ preventDefault: function() { this.defaultPrevented = true; },
3695+ isDefaultPrevented: function() { return this.defaultPrevented === true; },
3696+ stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },
3697+ isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },
3698+ stopPropagation: noop,
3699+ type: eventName,
3700+ target: element
3701+ };
3702+
3703+ // If a custom event was provided then extend our dummy event with it
3704+ if (event.type) {
3705+ dummyEvent = extend(dummyEvent, event);
3706+ }
3707+
3708+ // Copy event handlers in case event handlers array is modified during execution.
3709+ eventFnsCopy = shallowCopy(eventFns);
3710+ handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
3711+
3712+ forEach(eventFnsCopy, function(fn) {
3713+ if (!dummyEvent.isImmediatePropagationStopped()) {
3714+ fn.apply(element, handlerArgs);
3715+ }
3716+ });
3717+ }
3718+ }
3719+}, function(fn, name) {
3720+ /**
3721+ * chaining functions
3722+ */
3723+ JQLite.prototype[name] = function(arg1, arg2, arg3) {
3724+ var value;
3725+
3726+ for (var i = 0, ii = this.length; i < ii; i++) {
3727+ if (isUndefined(value)) {
3728+ value = fn(this[i], arg1, arg2, arg3);
3729+ if (isDefined(value)) {
3730+ // any function which returns a value needs to be wrapped
3731+ value = jqLite(value);
3732+ }
3733+ } else {
3734+ jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));
3735+ }
3736+ }
3737+ return isDefined(value) ? value : this;
3738+ };
3739+
3740+ // bind legacy bind/unbind to on/off
3741+ JQLite.prototype.bind = JQLite.prototype.on;
3742+ JQLite.prototype.unbind = JQLite.prototype.off;
3743+});
3744+
3745+
3746+// Provider for private $$jqLite service
3747+function $$jqLiteProvider() {
3748+ this.$get = function $$jqLite() {
3749+ return extend(JQLite, {
3750+ hasClass: function(node, classes) {
3751+ if (node.attr) node = node[0];
3752+ return jqLiteHasClass(node, classes);
3753+ },
3754+ addClass: function(node, classes) {
3755+ if (node.attr) node = node[0];
3756+ return jqLiteAddClass(node, classes);
3757+ },
3758+ removeClass: function(node, classes) {
3759+ if (node.attr) node = node[0];
3760+ return jqLiteRemoveClass(node, classes);
3761+ }
3762+ });
3763+ };
3764+}
3765+
3766+/**
3767+ * Computes a hash of an 'obj'.
3768+ * Hash of a:
3769+ * string is string
3770+ * number is number as string
3771+ * object is either result of calling $$hashKey function on the object or uniquely generated id,
3772+ * that is also assigned to the $$hashKey property of the object.
3773+ *
3774+ * @param obj
3775+ * @returns {string} hash string such that the same input will have the same hash string.
3776+ * The resulting string key is in 'type:hashKey' format.
3777+ */
3778+function hashKey(obj, nextUidFn) {
3779+ var key = obj && obj.$$hashKey;
3780+
3781+ if (key) {
3782+ if (typeof key === 'function') {
3783+ key = obj.$$hashKey();
3784+ }
3785+ return key;
3786+ }
3787+
3788+ var objType = typeof obj;
3789+ if (objType == 'function' || (objType == 'object' && obj !== null)) {
3790+ key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();
3791+ } else {
3792+ key = objType + ':' + obj;
3793+ }
3794+
3795+ return key;
3796+}
3797+
3798+/**
3799+ * HashMap which can use objects as keys
3800+ */
3801+function HashMap(array, isolatedUid) {
3802+ if (isolatedUid) {
3803+ var uid = 0;
3804+ this.nextUid = function() {
3805+ return ++uid;
3806+ };
3807+ }
3808+ forEach(array, this.put, this);
3809+}
3810+HashMap.prototype = {
3811+ /**
3812+ * Store key value pair
3813+ * @param key key to store can be any type
3814+ * @param value value to store can be any type
3815+ */
3816+ put: function(key, value) {
3817+ this[hashKey(key, this.nextUid)] = value;
3818+ },
3819+
3820+ /**
3821+ * @param key
3822+ * @returns {Object} the value for the key
3823+ */
3824+ get: function(key) {
3825+ return this[hashKey(key, this.nextUid)];
3826+ },
3827+
3828+ /**
3829+ * Remove the key/value pair
3830+ * @param key
3831+ */
3832+ remove: function(key) {
3833+ var value = this[key = hashKey(key, this.nextUid)];
3834+ delete this[key];
3835+ return value;
3836+ }
3837+};
3838+
3839+var $$HashMapProvider = [function() {
3840+ this.$get = [function() {
3841+ return HashMap;
3842+ }];
3843+}];
3844+
3845+/**
3846+ * @ngdoc function
3847+ * @module ng
3848+ * @name angular.injector
3849+ * @kind function
3850+ *
3851+ * @description
3852+ * Creates an injector object that can be used for retrieving services as well as for
3853+ * dependency injection (see {@link guide/di dependency injection}).
3854+ *
3855+ * @param {Array.<string|Function>} modules A list of module functions or their aliases. See
3856+ * {@link angular.module}. The `ng` module must be explicitly added.
3857+ * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
3858+ * disallows argument name annotation inference.
3859+ * @returns {injector} Injector object. See {@link auto.$injector $injector}.
3860+ *
3861+ * @example
3862+ * Typical usage
3863+ * ```js
3864+ * // create an injector
3865+ * var $injector = angular.injector(['ng']);
3866+ *
3867+ * // use the injector to kick off your application
3868+ * // use the type inference to auto inject arguments, or use implicit injection
3869+ * $injector.invoke(function($rootScope, $compile, $document) {
3870+ * $compile($document)($rootScope);
3871+ * $rootScope.$digest();
3872+ * });
3873+ * ```
3874+ *
3875+ * Sometimes you want to get access to the injector of a currently running Angular app
3876+ * from outside Angular. Perhaps, you want to inject and compile some markup after the
3877+ * application has been bootstrapped. You can do this using the extra `injector()` added
3878+ * to JQuery/jqLite elements. See {@link angular.element}.
3879+ *
3880+ * *This is fairly rare but could be the case if a third party library is injecting the
3881+ * markup.*
3882+ *
3883+ * In the following example a new block of HTML containing a `ng-controller`
3884+ * directive is added to the end of the document body by JQuery. We then compile and link
3885+ * it into the current AngularJS scope.
3886+ *
3887+ * ```js
3888+ * var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
3889+ * $(document.body).append($div);
3890+ *
3891+ * angular.element(document).injector().invoke(function($compile) {
3892+ * var scope = angular.element($div).scope();
3893+ * $compile($div)(scope);
3894+ * });
3895+ * ```
3896+ */
3897+
3898+
3899+/**
3900+ * @ngdoc module
3901+ * @name auto
3902+ * @installation
3903+ * @description
3904+ *
3905+ * Implicit module which gets automatically added to each {@link auto.$injector $injector}.
3906+ */
3907+
3908+var ARROW_ARG = /^([^\(]+?)=>/;
3909+var FN_ARGS = /^[^\(]*\(\s*([^\)]*)\)/m;
3910+var FN_ARG_SPLIT = /,/;
3911+var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
3912+var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
3913+var $injectorMinErr = minErr('$injector');
3914+
3915+function stringifyFn(fn) {
3916+ // Support: Chrome 50-51 only
3917+ // Creating a new string by adding `' '` at the end, to hack around some bug in Chrome v50/51
3918+ // (See https://github.com/angular/angular.js/issues/14487.)
3919+ // TODO (gkalpak): Remove workaround when Chrome v52 is released
3920+ return Function.prototype.toString.call(fn) + ' ';
3921+}
3922+
3923+function extractArgs(fn) {
3924+ var fnText = stringifyFn(fn).replace(STRIP_COMMENTS, ''),
3925+ args = fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);
3926+ return args;
3927+}
3928+
3929+function anonFn(fn) {
3930+ // For anonymous functions, showing at the very least the function signature can help in
3931+ // debugging.
3932+ var args = extractArgs(fn);
3933+ if (args) {
3934+ return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')';
3935+ }
3936+ return 'fn';
3937+}
3938+
3939+function annotate(fn, strictDi, name) {
3940+ var $inject,
3941+ argDecl,
3942+ last;
3943+
3944+ if (typeof fn === 'function') {
3945+ if (!($inject = fn.$inject)) {
3946+ $inject = [];
3947+ if (fn.length) {
3948+ if (strictDi) {
3949+ if (!isString(name) || !name) {
3950+ name = fn.name || anonFn(fn);
3951+ }
3952+ throw $injectorMinErr('strictdi',
3953+ '{0} is not using explicit annotation and cannot be invoked in strict mode', name);
3954+ }
3955+ argDecl = extractArgs(fn);
3956+ forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {
3957+ arg.replace(FN_ARG, function(all, underscore, name) {
3958+ $inject.push(name);
3959+ });
3960+ });
3961+ }
3962+ fn.$inject = $inject;
3963+ }
3964+ } else if (isArray(fn)) {
3965+ last = fn.length - 1;
3966+ assertArgFn(fn[last], 'fn');
3967+ $inject = fn.slice(0, last);
3968+ } else {
3969+ assertArgFn(fn, 'fn', true);
3970+ }
3971+ return $inject;
3972+}
3973+
3974+///////////////////////////////////////
3975+
3976+/**
3977+ * @ngdoc service
3978+ * @name $injector
3979+ *
3980+ * @description
3981+ *
3982+ * `$injector` is used to retrieve object instances as defined by
3983+ * {@link auto.$provide provider}, instantiate types, invoke methods,
3984+ * and load modules.
3985+ *
3986+ * The following always holds true:
3987+ *
3988+ * ```js
3989+ * var $injector = angular.injector();
3990+ * expect($injector.get('$injector')).toBe($injector);
3991+ * expect($injector.invoke(function($injector) {
3992+ * return $injector;
3993+ * })).toBe($injector);
3994+ * ```
3995+ *
3996+ * # Injection Function Annotation
3997+ *
3998+ * JavaScript does not have annotations, and annotations are needed for dependency injection. The
3999+ * following are all valid ways of annotating function with injection arguments and are equivalent.
4000+ *
4001+ * ```js
4002+ * // inferred (only works if code not minified/obfuscated)
4003+ * $injector.invoke(function(serviceA){});
4004+ *
4005+ * // annotated
4006+ * function explicit(serviceA) {};
4007+ * explicit.$inject = ['serviceA'];
4008+ * $injector.invoke(explicit);
4009+ *
4010+ * // inline
4011+ * $injector.invoke(['serviceA', function(serviceA){}]);
4012+ * ```
4013+ *
4014+ * ## Inference
4015+ *
4016+ * In JavaScript calling `toString()` on a function returns the function definition. The definition
4017+ * can then be parsed and the function arguments can be extracted. This method of discovering
4018+ * annotations is disallowed when the injector is in strict mode.
4019+ * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
4020+ * argument names.
4021+ *
4022+ * ## `$inject` Annotation
4023+ * By adding an `$inject` property onto a function the injection parameters can be specified.
4024+ *
4025+ * ## Inline
4026+ * As an array of injection names, where the last item in the array is the function to call.
4027+ */
4028+
4029+/**
4030+ * @ngdoc method
4031+ * @name $injector#get
4032+ *
4033+ * @description
4034+ * Return an instance of the service.
4035+ *
4036+ * @param {string} name The name of the instance to retrieve.
4037+ * @param {string=} caller An optional string to provide the origin of the function call for error messages.
4038+ * @return {*} The instance.
4039+ */
4040+
4041+/**
4042+ * @ngdoc method
4043+ * @name $injector#invoke
4044+ *
4045+ * @description
4046+ * Invoke the method and supply the method arguments from the `$injector`.
4047+ *
4048+ * @param {Function|Array.<string|Function>} fn The injectable function to invoke. Function parameters are
4049+ * injected according to the {@link guide/di $inject Annotation} rules.
4050+ * @param {Object=} self The `this` for the invoked method.
4051+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
4052+ * object first, before the `$injector` is consulted.
4053+ * @returns {*} the value returned by the invoked `fn` function.
4054+ */
4055+
4056+/**
4057+ * @ngdoc method
4058+ * @name $injector#has
4059+ *
4060+ * @description
4061+ * Allows the user to query if the particular service exists.
4062+ *
4063+ * @param {string} name Name of the service to query.
4064+ * @returns {boolean} `true` if injector has given service.
4065+ */
4066+
4067+/**
4068+ * @ngdoc method
4069+ * @name $injector#instantiate
4070+ * @description
4071+ * Create a new instance of JS type. The method takes a constructor function, invokes the new
4072+ * operator, and supplies all of the arguments to the constructor function as specified by the
4073+ * constructor annotation.
4074+ *
4075+ * @param {Function} Type Annotated constructor function.
4076+ * @param {Object=} locals Optional object. If preset then any argument names are read from this
4077+ * object first, before the `$injector` is consulted.
4078+ * @returns {Object} new instance of `Type`.
4079+ */
4080+
4081+/**
4082+ * @ngdoc method
4083+ * @name $injector#annotate
4084+ *
4085+ * @description
4086+ * Returns an array of service names which the function is requesting for injection. This API is
4087+ * used by the injector to determine which services need to be injected into the function when the
4088+ * function is invoked. There are three ways in which the function can be annotated with the needed
4089+ * dependencies.
4090+ *
4091+ * # Argument names
4092+ *
4093+ * The simplest form is to extract the dependencies from the arguments of the function. This is done
4094+ * by converting the function into a string using `toString()` method and extracting the argument
4095+ * names.
4096+ * ```js
4097+ * // Given
4098+ * function MyController($scope, $route) {
4099+ * // ...
4100+ * }
4101+ *
4102+ * // Then
4103+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
4104+ * ```
4105+ *
4106+ * You can disallow this method by using strict injection mode.
4107+ *
4108+ * This method does not work with code minification / obfuscation. For this reason the following
4109+ * annotation strategies are supported.
4110+ *
4111+ * # The `$inject` property
4112+ *
4113+ * If a function has an `$inject` property and its value is an array of strings, then the strings
4114+ * represent names of services to be injected into the function.
4115+ * ```js
4116+ * // Given
4117+ * var MyController = function(obfuscatedScope, obfuscatedRoute) {
4118+ * // ...
4119+ * }
4120+ * // Define function dependencies
4121+ * MyController['$inject'] = ['$scope', '$route'];
4122+ *
4123+ * // Then
4124+ * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
4125+ * ```
4126+ *
4127+ * # The array notation
4128+ *
4129+ * It is often desirable to inline Injected functions and that's when setting the `$inject` property
4130+ * is very inconvenient. In these situations using the array notation to specify the dependencies in
4131+ * a way that survives minification is a better choice:
4132+ *
4133+ * ```js
4134+ * // We wish to write this (not minification / obfuscation safe)
4135+ * injector.invoke(function($compile, $rootScope) {
4136+ * // ...
4137+ * });
4138+ *
4139+ * // We are forced to write break inlining
4140+ * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {
4141+ * // ...
4142+ * };
4143+ * tmpFn.$inject = ['$compile', '$rootScope'];
4144+ * injector.invoke(tmpFn);
4145+ *
4146+ * // To better support inline function the inline annotation is supported
4147+ * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {
4148+ * // ...
4149+ * }]);
4150+ *
4151+ * // Therefore
4152+ * expect(injector.annotate(
4153+ * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])
4154+ * ).toEqual(['$compile', '$rootScope']);
4155+ * ```
4156+ *
4157+ * @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
4158+ * be retrieved as described above.
4159+ *
4160+ * @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
4161+ *
4162+ * @returns {Array.<string>} The names of the services which the function requires.
4163+ */
4164+
4165+
4166+
4167+
4168+/**
4169+ * @ngdoc service
4170+ * @name $provide
4171+ *
4172+ * @description
4173+ *
4174+ * The {@link auto.$provide $provide} service has a number of methods for registering components
4175+ * with the {@link auto.$injector $injector}. Many of these functions are also exposed on
4176+ * {@link angular.Module}.
4177+ *
4178+ * An Angular **service** is a singleton object created by a **service factory**. These **service
4179+ * factories** are functions which, in turn, are created by a **service provider**.
4180+ * The **service providers** are constructor functions. When instantiated they must contain a
4181+ * property called `$get`, which holds the **service factory** function.
4182+ *
4183+ * When you request a service, the {@link auto.$injector $injector} is responsible for finding the
4184+ * correct **service provider**, instantiating it and then calling its `$get` **service factory**
4185+ * function to get the instance of the **service**.
4186+ *
4187+ * Often services have no configuration options and there is no need to add methods to the service
4188+ * provider. The provider will be no more than a constructor function with a `$get` property. For
4189+ * these cases the {@link auto.$provide $provide} service has additional helper methods to register
4190+ * services without specifying a provider.
4191+ *
4192+ * * {@link auto.$provide#provider provider(name, provider)} - registers a **service provider** with the
4193+ * {@link auto.$injector $injector}
4194+ * * {@link auto.$provide#constant constant(name, obj)} - registers a value/object that can be accessed by
4195+ * providers and services.
4196+ * * {@link auto.$provide#value value(name, obj)} - registers a value/object that can only be accessed by
4197+ * services, not providers.
4198+ * * {@link auto.$provide#factory factory(name, fn)} - registers a service **factory function**
4199+ * that will be wrapped in a **service provider** object, whose `$get` property will contain the
4200+ * given factory function.
4201+ * * {@link auto.$provide#service service(name, Fn)} - registers a **constructor function**
4202+ * that will be wrapped in a **service provider** object, whose `$get` property will instantiate
4203+ * a new object using the given constructor function.
4204+ * * {@link auto.$provide#decorator decorator(name, decorFn)} - registers a **decorator function** that
4205+ * will be able to modify or replace the implementation of another service.
4206+ *
4207+ * See the individual methods for more information and examples.
4208+ */
4209+
4210+/**
4211+ * @ngdoc method
4212+ * @name $provide#provider
4213+ * @description
4214+ *
4215+ * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions
4216+ * are constructor functions, whose instances are responsible for "providing" a factory for a
4217+ * service.
4218+ *
4219+ * Service provider names start with the name of the service they provide followed by `Provider`.
4220+ * For example, the {@link ng.$log $log} service has a provider called
4221+ * {@link ng.$logProvider $logProvider}.
4222+ *
4223+ * Service provider objects can have additional methods which allow configuration of the provider
4224+ * and its service. Importantly, you can configure what kind of service is created by the `$get`
4225+ * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a
4226+ * method {@link ng.$logProvider#debugEnabled debugEnabled}
4227+ * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the
4228+ * console or not.
4229+ *
4230+ * @param {string} name The name of the instance. NOTE: the provider will be available under `name +
4231+ 'Provider'` key.
4232+ * @param {(Object|function())} provider If the provider is:
4233+ *
4234+ * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using
4235+ * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.
4236+ * - `Constructor`: a new instance of the provider will be created using
4237+ * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.
4238+ *
4239+ * @returns {Object} registered provider instance
4240+
4241+ * @example
4242+ *
4243+ * The following example shows how to create a simple event tracking service and register it using
4244+ * {@link auto.$provide#provider $provide.provider()}.
4245+ *
4246+ * ```js
4247+ * // Define the eventTracker provider
4248+ * function EventTrackerProvider() {
4249+ * var trackingUrl = '/track';
4250+ *
4251+ * // A provider method for configuring where the tracked events should been saved
4252+ * this.setTrackingUrl = function(url) {
4253+ * trackingUrl = url;
4254+ * };
4255+ *
4256+ * // The service factory function
4257+ * this.$get = ['$http', function($http) {
4258+ * var trackedEvents = {};
4259+ * return {
4260+ * // Call this to track an event
4261+ * event: function(event) {
4262+ * var count = trackedEvents[event] || 0;
4263+ * count += 1;
4264+ * trackedEvents[event] = count;
4265+ * return count;
4266+ * },
4267+ * // Call this to save the tracked events to the trackingUrl
4268+ * save: function() {
4269+ * $http.post(trackingUrl, trackedEvents);
4270+ * }
4271+ * };
4272+ * }];
4273+ * }
4274+ *
4275+ * describe('eventTracker', function() {
4276+ * var postSpy;
4277+ *
4278+ * beforeEach(module(function($provide) {
4279+ * // Register the eventTracker provider
4280+ * $provide.provider('eventTracker', EventTrackerProvider);
4281+ * }));
4282+ *
4283+ * beforeEach(module(function(eventTrackerProvider) {
4284+ * // Configure eventTracker provider
4285+ * eventTrackerProvider.setTrackingUrl('/custom-track');
4286+ * }));
4287+ *
4288+ * it('tracks events', inject(function(eventTracker) {
4289+ * expect(eventTracker.event('login')).toEqual(1);
4290+ * expect(eventTracker.event('login')).toEqual(2);
4291+ * }));
4292+ *
4293+ * it('saves to the tracking url', inject(function(eventTracker, $http) {
4294+ * postSpy = spyOn($http, 'post');
4295+ * eventTracker.event('login');
4296+ * eventTracker.save();
4297+ * expect(postSpy).toHaveBeenCalled();
4298+ * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');
4299+ * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');
4300+ * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });
4301+ * }));
4302+ * });
4303+ * ```
4304+ */
4305+
4306+/**
4307+ * @ngdoc method
4308+ * @name $provide#factory
4309+ * @description
4310+ *
4311+ * Register a **service factory**, which will be called to return the service instance.
4312+ * This is short for registering a service where its provider consists of only a `$get` property,
4313+ * which is the given service factory function.
4314+ * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
4315+ * configure your service in a provider.
4316+ *
4317+ * @param {string} name The name of the instance.
4318+ * @param {Function|Array.<string|Function>} $getFn The injectable $getFn for the instance creation.
4319+ * Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`.
4320+ * @returns {Object} registered provider instance
4321+ *
4322+ * @example
4323+ * Here is an example of registering a service
4324+ * ```js
4325+ * $provide.factory('ping', ['$http', function($http) {
4326+ * return function ping() {
4327+ * return $http.send('/ping');
4328+ * };
4329+ * }]);
4330+ * ```
4331+ * You would then inject and use this service like this:
4332+ * ```js
4333+ * someModule.controller('Ctrl', ['ping', function(ping) {
4334+ * ping();
4335+ * }]);
4336+ * ```
4337+ */
4338+
4339+
4340+/**
4341+ * @ngdoc method
4342+ * @name $provide#service
4343+ * @description
4344+ *
4345+ * Register a **service constructor**, which will be invoked with `new` to create the service
4346+ * instance.
4347+ * This is short for registering a service where its provider's `$get` property is a factory
4348+ * function that returns an instance instantiated by the injector from the service constructor
4349+ * function.
4350+ *
4351+ * Internally it looks a bit like this:
4352+ *
4353+ * ```
4354+ * {
4355+ * $get: function() {
4356+ * return $injector.instantiate(constructor);
4357+ * }
4358+ * }
4359+ * ```
4360+ *
4361+ *
4362+ * You should use {@link auto.$provide#service $provide.service(class)} if you define your service
4363+ * as a type/class.
4364+ *
4365+ * @param {string} name The name of the instance.
4366+ * @param {Function|Array.<string|Function>} constructor An injectable class (constructor function)
4367+ * that will be instantiated.
4368+ * @returns {Object} registered provider instance
4369+ *
4370+ * @example
4371+ * Here is an example of registering a service using
4372+ * {@link auto.$provide#service $provide.service(class)}.
4373+ * ```js
4374+ * var Ping = function($http) {
4375+ * this.$http = $http;
4376+ * };
4377+ *
4378+ * Ping.$inject = ['$http'];
4379+ *
4380+ * Ping.prototype.send = function() {
4381+ * return this.$http.get('/ping');
4382+ * };
4383+ * $provide.service('ping', Ping);
4384+ * ```
4385+ * You would then inject and use this service like this:
4386+ * ```js
4387+ * someModule.controller('Ctrl', ['ping', function(ping) {
4388+ * ping.send();
4389+ * }]);
4390+ * ```
4391+ */
4392+
4393+
4394+/**
4395+ * @ngdoc method
4396+ * @name $provide#value
4397+ * @description
4398+ *
4399+ * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a
4400+ * number, an array, an object or a function. This is short for registering a service where its
4401+ * provider's `$get` property is a factory function that takes no arguments and returns the **value
4402+ * service**. That also means it is not possible to inject other services into a value service.
4403+ *
4404+ * Value services are similar to constant services, except that they cannot be injected into a
4405+ * module configuration function (see {@link angular.Module#config}) but they can be overridden by
4406+ * an Angular {@link auto.$provide#decorator decorator}.
4407+ *
4408+ * @param {string} name The name of the instance.
4409+ * @param {*} value The value.
4410+ * @returns {Object} registered provider instance
4411+ *
4412+ * @example
4413+ * Here are some examples of creating value services.
4414+ * ```js
4415+ * $provide.value('ADMIN_USER', 'admin');
4416+ *
4417+ * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
4418+ *
4419+ * $provide.value('halfOf', function(value) {
4420+ * return value / 2;
4421+ * });
4422+ * ```
4423+ */
4424+
4425+
4426+/**
4427+ * @ngdoc method
4428+ * @name $provide#constant
4429+ * @description
4430+ *
4431+ * Register a **constant service** with the {@link auto.$injector $injector}, such as a string,
4432+ * a number, an array, an object or a function. Like the {@link auto.$provide#value value}, it is not
4433+ * possible to inject other services into a constant.
4434+ *
4435+ * But unlike {@link auto.$provide#value value}, a constant can be
4436+ * injected into a module configuration function (see {@link angular.Module#config}) and it cannot
4437+ * be overridden by an Angular {@link auto.$provide#decorator decorator}.
4438+ *
4439+ * @param {string} name The name of the constant.
4440+ * @param {*} value The constant value.
4441+ * @returns {Object} registered instance
4442+ *
4443+ * @example
4444+ * Here a some examples of creating constants:
4445+ * ```js
4446+ * $provide.constant('SHARD_HEIGHT', 306);
4447+ *
4448+ * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);
4449+ *
4450+ * $provide.constant('double', function(value) {
4451+ * return value * 2;
4452+ * });
4453+ * ```
4454+ */
4455+
4456+
4457+/**
4458+ * @ngdoc method
4459+ * @name $provide#decorator
4460+ * @description
4461+ *
4462+ * Register a **decorator function** with the {@link auto.$injector $injector}. A decorator function
4463+ * intercepts the creation of a service, allowing it to override or modify the behavior of the
4464+ * service. The return value of the decorator function may be the original service, or a new service
4465+ * that replaces (or wraps and delegates to) the original service.
4466+ *
4467+ * You can find out more about using decorators in the {@link guide/decorators} guide.
4468+ *
4469+ * @param {string} name The name of the service to decorate.
4470+ * @param {Function|Array.<string|Function>} decorator This function will be invoked when the service needs to be
4471+ * provided and should return the decorated service instance. The function is called using
4472+ * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.
4473+ * Local injection arguments:
4474+ *
4475+ * * `$delegate` - The original service instance, which can be replaced, monkey patched, configured,
4476+ * decorated or delegated to.
4477+ *
4478+ * @example
4479+ * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting
4480+ * calls to {@link ng.$log#error $log.warn()}.
4481+ * ```js
4482+ * $provide.decorator('$log', ['$delegate', function($delegate) {
4483+ * $delegate.warn = $delegate.error;
4484+ * return $delegate;
4485+ * }]);
4486+ * ```
4487+ */
4488+
4489+
4490+function createInjector(modulesToLoad, strictDi) {
4491+ strictDi = (strictDi === true);
4492+ var INSTANTIATING = {},
4493+ providerSuffix = 'Provider',
4494+ path = [],
4495+ loadedModules = new HashMap([], true),
4496+ providerCache = {
4497+ $provide: {
4498+ provider: supportObject(provider),
4499+ factory: supportObject(factory),
4500+ service: supportObject(service),
4501+ value: supportObject(value),
4502+ constant: supportObject(constant),
4503+ decorator: decorator
4504+ }
4505+ },
4506+ providerInjector = (providerCache.$injector =
4507+ createInternalInjector(providerCache, function(serviceName, caller) {
4508+ if (angular.isString(caller)) {
4509+ path.push(caller);
4510+ }
4511+ throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- '));
4512+ })),
4513+ instanceCache = {},
4514+ protoInstanceInjector =
4515+ createInternalInjector(instanceCache, function(serviceName, caller) {
4516+ var provider = providerInjector.get(serviceName + providerSuffix, caller);
4517+ return instanceInjector.invoke(
4518+ provider.$get, provider, undefined, serviceName);
4519+ }),
4520+ instanceInjector = protoInstanceInjector;
4521+
4522+ providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) };
4523+ var runBlocks = loadModules(modulesToLoad);
4524+ instanceInjector = protoInstanceInjector.get('$injector');
4525+ instanceInjector.strictDi = strictDi;
4526+ forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); });
4527+
4528+ return instanceInjector;
4529+
4530+ ////////////////////////////////////
4531+ // $provider
4532+ ////////////////////////////////////
4533+
4534+ function supportObject(delegate) {
4535+ return function(key, value) {
4536+ if (isObject(key)) {
4537+ forEach(key, reverseParams(delegate));
4538+ } else {
4539+ return delegate(key, value);
4540+ }
4541+ };
4542+ }
4543+
4544+ function provider(name, provider_) {
4545+ assertNotHasOwnProperty(name, 'service');
4546+ if (isFunction(provider_) || isArray(provider_)) {
4547+ provider_ = providerInjector.instantiate(provider_);
4548+ }
4549+ if (!provider_.$get) {
4550+ throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
4551+ }
4552+ return providerCache[name + providerSuffix] = provider_;
4553+ }
4554+
4555+ function enforceReturnValue(name, factory) {
4556+ return function enforcedReturnValue() {
4557+ var result = instanceInjector.invoke(factory, this);
4558+ if (isUndefined(result)) {
4559+ throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name);
4560+ }
4561+ return result;
4562+ };
4563+ }
4564+
4565+ function factory(name, factoryFn, enforce) {
4566+ return provider(name, {
4567+ $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
4568+ });
4569+ }
4570+
4571+ function service(name, constructor) {
4572+ return factory(name, ['$injector', function($injector) {
4573+ return $injector.instantiate(constructor);
4574+ }]);
4575+ }
4576+
4577+ function value(name, val) { return factory(name, valueFn(val), false); }
4578+
4579+ function constant(name, value) {
4580+ assertNotHasOwnProperty(name, 'constant');
4581+ providerCache[name] = value;
4582+ instanceCache[name] = value;
4583+ }
4584+
4585+ function decorator(serviceName, decorFn) {
4586+ var origProvider = providerInjector.get(serviceName + providerSuffix),
4587+ orig$get = origProvider.$get;
4588+
4589+ origProvider.$get = function() {
4590+ var origInstance = instanceInjector.invoke(orig$get, origProvider);
4591+ return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});
4592+ };
4593+ }
4594+
4595+ ////////////////////////////////////
4596+ // Module Loading
4597+ ////////////////////////////////////
4598+ function loadModules(modulesToLoad) {
4599+ assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array');
4600+ var runBlocks = [], moduleFn;
4601+ forEach(modulesToLoad, function(module) {
4602+ if (loadedModules.get(module)) return;
4603+ loadedModules.put(module, true);
4604+
4605+ function runInvokeQueue(queue) {
4606+ var i, ii;
4607+ for (i = 0, ii = queue.length; i < ii; i++) {
4608+ var invokeArgs = queue[i],
4609+ provider = providerInjector.get(invokeArgs[0]);
4610+
4611+ provider[invokeArgs[1]].apply(provider, invokeArgs[2]);
4612+ }
4613+ }
4614+
4615+ try {
4616+ if (isString(module)) {
4617+ moduleFn = angularModule(module);
4618+ runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);
4619+ runInvokeQueue(moduleFn._invokeQueue);
4620+ runInvokeQueue(moduleFn._configBlocks);
4621+ } else if (isFunction(module)) {
4622+ runBlocks.push(providerInjector.invoke(module));
4623+ } else if (isArray(module)) {
4624+ runBlocks.push(providerInjector.invoke(module));
4625+ } else {
4626+ assertArgFn(module, 'module');
4627+ }
4628+ } catch (e) {
4629+ if (isArray(module)) {
4630+ module = module[module.length - 1];
4631+ }
4632+ if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {
4633+ // Safari & FF's stack traces don't contain error.message content
4634+ // unlike those of Chrome and IE
4635+ // So if stack doesn't contain message, we create a new string that contains both.
4636+ // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.
4637+ /* jshint -W022 */
4638+ e = e.message + '\n' + e.stack;
4639+ }
4640+ throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}",
4641+ module, e.stack || e.message || e);
4642+ }
4643+ });
4644+ return runBlocks;
4645+ }
4646+
4647+ ////////////////////////////////////
4648+ // internal Injector
4649+ ////////////////////////////////////
4650+
4651+ function createInternalInjector(cache, factory) {
4652+
4653+ function getService(serviceName, caller) {
4654+ if (cache.hasOwnProperty(serviceName)) {
4655+ if (cache[serviceName] === INSTANTIATING) {
4656+ throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
4657+ serviceName + ' <- ' + path.join(' <- '));
4658+ }
4659+ return cache[serviceName];
4660+ } else {
4661+ try {
4662+ path.unshift(serviceName);
4663+ cache[serviceName] = INSTANTIATING;
4664+ return cache[serviceName] = factory(serviceName, caller);
4665+ } catch (err) {
4666+ if (cache[serviceName] === INSTANTIATING) {
4667+ delete cache[serviceName];
4668+ }
4669+ throw err;
4670+ } finally {
4671+ path.shift();
4672+ }
4673+ }
4674+ }
4675+
4676+
4677+ function injectionArgs(fn, locals, serviceName) {
4678+ var args = [],
4679+ $inject = createInjector.$$annotate(fn, strictDi, serviceName);
4680+
4681+ for (var i = 0, length = $inject.length; i < length; i++) {
4682+ var key = $inject[i];
4683+ if (typeof key !== 'string') {
4684+ throw $injectorMinErr('itkn',
4685+ 'Incorrect injection token! Expected service name as string, got {0}', key);
4686+ }
4687+ args.push(locals && locals.hasOwnProperty(key) ? locals[key] :
4688+ getService(key, serviceName));
4689+ }
4690+ return args;
4691+ }
4692+
4693+ function isClass(func) {
4694+ // IE 9-11 do not support classes and IE9 leaks with the code below.
4695+ if (msie <= 11) {
4696+ return false;
4697+ }
4698+ // Support: Edge 12-13 only
4699+ // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6156135/
4700+ return typeof func === 'function'
4701+ && /^(?:class\b|constructor\()/.test(stringifyFn(func));
4702+ }
4703+
4704+ function invoke(fn, self, locals, serviceName) {
4705+ if (typeof locals === 'string') {
4706+ serviceName = locals;
4707+ locals = null;
4708+ }
4709+
4710+ var args = injectionArgs(fn, locals, serviceName);
4711+ if (isArray(fn)) {
4712+ fn = fn[fn.length - 1];
4713+ }
4714+
4715+ if (!isClass(fn)) {
4716+ // http://jsperf.com/angularjs-invoke-apply-vs-switch
4717+ // #5388
4718+ return fn.apply(self, args);
4719+ } else {
4720+ args.unshift(null);
4721+ return new (Function.prototype.bind.apply(fn, args))();
4722+ }
4723+ }
4724+
4725+
4726+ function instantiate(Type, locals, serviceName) {
4727+ // Check if Type is annotated and use just the given function at n-1 as parameter
4728+ // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
4729+ var ctor = (isArray(Type) ? Type[Type.length - 1] : Type);
4730+ var args = injectionArgs(Type, locals, serviceName);
4731+ // Empty object at position 0 is ignored for invocation with `new`, but required.
4732+ args.unshift(null);
4733+ return new (Function.prototype.bind.apply(ctor, args))();
4734+ }
4735+
4736+
4737+ return {
4738+ invoke: invoke,
4739+ instantiate: instantiate,
4740+ get: getService,
4741+ annotate: createInjector.$$annotate,
4742+ has: function(name) {
4743+ return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
4744+ }
4745+ };
4746+ }
4747+}
4748+
4749+createInjector.$$annotate = annotate;
4750+
4751+/**
4752+ * @ngdoc provider
4753+ * @name $anchorScrollProvider
4754+ *
4755+ * @description
4756+ * Use `$anchorScrollProvider` to disable automatic scrolling whenever
4757+ * {@link ng.$location#hash $location.hash()} changes.
4758+ */
4759+function $AnchorScrollProvider() {
4760+
4761+ var autoScrollingEnabled = true;
4762+
4763+ /**
4764+ * @ngdoc method
4765+ * @name $anchorScrollProvider#disableAutoScrolling
4766+ *
4767+ * @description
4768+ * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to
4769+ * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.<br />
4770+ * Use this method to disable automatic scrolling.
4771+ *
4772+ * If automatic scrolling is disabled, one must explicitly call
4773+ * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the
4774+ * current hash.
4775+ */
4776+ this.disableAutoScrolling = function() {
4777+ autoScrollingEnabled = false;
4778+ };
4779+
4780+ /**
4781+ * @ngdoc service
4782+ * @name $anchorScroll
4783+ * @kind function
4784+ * @requires $window
4785+ * @requires $location
4786+ * @requires $rootScope
4787+ *
4788+ * @description
4789+ * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the
4790+ * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified
4791+ * in the
4792+ * [HTML5 spec](http://www.w3.org/html/wg/drafts/html/master/browsers.html#an-indicated-part-of-the-document).
4793+ *
4794+ * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to
4795+ * match any anchor whenever it changes. This can be disabled by calling
4796+ * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}.
4797+ *
4798+ * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a
4799+ * vertical scroll-offset (either fixed or dynamic).
4800+ *
4801+ * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of
4802+ * {@link ng.$location#hash $location.hash()} will be used.
4803+ *
4804+ * @property {(number|function|jqLite)} yOffset
4805+ * If set, specifies a vertical scroll-offset. This is often useful when there are fixed
4806+ * positioned elements at the top of the page, such as navbars, headers etc.
4807+ *
4808+ * `yOffset` can be specified in various ways:
4809+ * - **number**: A fixed number of pixels to be used as offset.<br /><br />
4810+ * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return
4811+ * a number representing the offset (in pixels).<br /><br />
4812+ * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from
4813+ * the top of the page to the element's bottom will be used as offset.<br />
4814+ * **Note**: The element will be taken into account only as long as its `position` is set to
4815+ * `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust
4816+ * their height and/or positioning according to the viewport's size.
4817+ *
4818+ * <br />
4819+ * <div class="alert alert-warning">
4820+ * In order for `yOffset` to work properly, scrolling should take place on the document's root and
4821+ * not some child element.
4822+ * </div>
4823+ *
4824+ * @example
4825+ <example module="anchorScrollExample">
4826+ <file name="index.html">
4827+ <div id="scrollArea" ng-controller="ScrollController">
4828+ <a ng-click="gotoBottom()">Go to bottom</a>
4829+ <a id="bottom"></a> You're at the bottom!
4830+ </div>
4831+ </file>
4832+ <file name="script.js">
4833+ angular.module('anchorScrollExample', [])
4834+ .controller('ScrollController', ['$scope', '$location', '$anchorScroll',
4835+ function ($scope, $location, $anchorScroll) {
4836+ $scope.gotoBottom = function() {
4837+ // set the location.hash to the id of
4838+ // the element you wish to scroll to.
4839+ $location.hash('bottom');
4840+
4841+ // call $anchorScroll()
4842+ $anchorScroll();
4843+ };
4844+ }]);
4845+ </file>
4846+ <file name="style.css">
4847+ #scrollArea {
4848+ height: 280px;
4849+ overflow: auto;
4850+ }
4851+
4852+ #bottom {
4853+ display: block;
4854+ margin-top: 2000px;
4855+ }
4856+ </file>
4857+ </example>
4858+ *
4859+ * <hr />
4860+ * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value).
4861+ * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details.
4862+ *
4863+ * @example
4864+ <example module="anchorScrollOffsetExample">
4865+ <file name="index.html">
4866+ <div class="fixed-header" ng-controller="headerCtrl">
4867+ <a href="" ng-click="gotoAnchor(x)" ng-repeat="x in [1,2,3,4,5]">
4868+ Go to anchor {{x}}
4869+ </a>
4870+ </div>
4871+ <div id="anchor{{x}}" class="anchor" ng-repeat="x in [1,2,3,4,5]">
4872+ Anchor {{x}} of 5
4873+ </div>
4874+ </file>
4875+ <file name="script.js">
4876+ angular.module('anchorScrollOffsetExample', [])
4877+ .run(['$anchorScroll', function($anchorScroll) {
4878+ $anchorScroll.yOffset = 50; // always scroll by 50 extra pixels
4879+ }])
4880+ .controller('headerCtrl', ['$anchorScroll', '$location', '$scope',
4881+ function ($anchorScroll, $location, $scope) {
4882+ $scope.gotoAnchor = function(x) {
4883+ var newHash = 'anchor' + x;
4884+ if ($location.hash() !== newHash) {
4885+ // set the $location.hash to `newHash` and
4886+ // $anchorScroll will automatically scroll to it
4887+ $location.hash('anchor' + x);
4888+ } else {
4889+ // call $anchorScroll() explicitly,
4890+ // since $location.hash hasn't changed
4891+ $anchorScroll();
4892+ }
4893+ };
4894+ }
4895+ ]);
4896+ </file>
4897+ <file name="style.css">
4898+ body {
4899+ padding-top: 50px;
4900+ }
4901+
4902+ .anchor {
4903+ border: 2px dashed DarkOrchid;
4904+ padding: 10px 10px 200px 10px;
4905+ }
4906+
4907+ .fixed-header {
4908+ background-color: rgba(0, 0, 0, 0.2);
4909+ height: 50px;
4910+ position: fixed;
4911+ top: 0; left: 0; right: 0;
4912+ }
4913+
4914+ .fixed-header > a {
4915+ display: inline-block;
4916+ margin: 5px 15px;
4917+ }
4918+ </file>
4919+ </example>
4920+ */
4921+ this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {
4922+ var document = $window.document;
4923+
4924+ // Helper function to get first anchor from a NodeList
4925+ // (using `Array#some()` instead of `angular#forEach()` since it's more performant
4926+ // and working in all supported browsers.)
4927+ function getFirstAnchor(list) {
4928+ var result = null;
4929+ Array.prototype.some.call(list, function(element) {
4930+ if (nodeName_(element) === 'a') {
4931+ result = element;
4932+ return true;
4933+ }
4934+ });
4935+ return result;
4936+ }
4937+
4938+ function getYOffset() {
4939+
4940+ var offset = scroll.yOffset;
4941+
4942+ if (isFunction(offset)) {
4943+ offset = offset();
4944+ } else if (isElement(offset)) {
4945+ var elem = offset[0];
4946+ var style = $window.getComputedStyle(elem);
4947+ if (style.position !== 'fixed') {
4948+ offset = 0;
4949+ } else {
4950+ offset = elem.getBoundingClientRect().bottom;
4951+ }
4952+ } else if (!isNumber(offset)) {
4953+ offset = 0;
4954+ }
4955+
4956+ return offset;
4957+ }
4958+
4959+ function scrollTo(elem) {
4960+ if (elem) {
4961+ elem.scrollIntoView();
4962+
4963+ var offset = getYOffset();
4964+
4965+ if (offset) {
4966+ // `offset` is the number of pixels we should scroll UP in order to align `elem` properly.
4967+ // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the
4968+ // top of the viewport.
4969+ //
4970+ // IF the number of pixels from the top of `elem` to the end of the page's content is less
4971+ // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some
4972+ // way down the page.
4973+ //
4974+ // This is often the case for elements near the bottom of the page.
4975+ //
4976+ // In such cases we do not need to scroll the whole `offset` up, just the difference between
4977+ // the top of the element and the offset, which is enough to align the top of `elem` at the
4978+ // desired position.
4979+ var elemTop = elem.getBoundingClientRect().top;
4980+ $window.scrollBy(0, elemTop - offset);
4981+ }
4982+ } else {
4983+ $window.scrollTo(0, 0);
4984+ }
4985+ }
4986+
4987+ function scroll(hash) {
4988+ hash = isString(hash) ? hash : $location.hash();
4989+ var elm;
4990+
4991+ // empty hash, scroll to the top of the page
4992+ if (!hash) scrollTo(null);
4993+
4994+ // element with given id
4995+ else if ((elm = document.getElementById(hash))) scrollTo(elm);
4996+
4997+ // first anchor with given name :-D
4998+ else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm);
4999+

26769 more lines aren’t shown here.

Source/Libraries/GSF.Web/Shared/Scripts/gsf.web.client.js+5−5
@@ -786,25 +786,25 @@ $.fn.disable = function() { · 785 unmodified lines
786786
787787 $.fn.visible = function() {
788788 return this.each(function() {
789− this.css("visibility", "visible");
789+ $(this).css("visibility", "visible");
790790 });
791791 }
792792
793793 $.fn.invisible = function() {
794794 return this.each(function() {
795− this.css("visibility", "hidden");
795+ $(this).css("visibility", "hidden");
796796 });
797797 }
798798
799799 $.fn.readCookie = function(name) {
800− this.val(Cookies.get(name));
800+ $(this).val(Cookies.get(name));
801801 }
802802
803803 $.fn.writeCookie = function(name, expiration) {
804804 if (expiration) // Date or number of days
805− Cookies.set(name, this.val(), { expires: expiration });
805+ Cookies.set(name, $(this).val(), { expires: expiration });
806806 else
807− Cookies.set(name, this.val());
807+ Cookies.set(name, $(this).val());
808808 }
809809
810810 $.fn.removeCookie = function(name) {
Source/Libraries/GSF.Web/Shared/Scripts/jquery-ui.js+16617−0
@@ -0,0 +1,16617 @@
1+/*! jQuery UI - v1.11.4 - 2016-03-31
2+* http://jqueryui.com
3+* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, menu.js, progressbar.js, selectmenu.js, slider.js, spinner.js, tabs.js, tooltip.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
4+* Copyright jQuery Foundation and other contributors; Licensed MIT */
5+
6+(function( factory ) {
7+ if ( typeof define === "function" && define.amd ) {
8+
9+ // AMD. Register as an anonymous module.
10+ define([ "jquery" ], factory );
11+ } else {
12+
13+ // Browser globals
14+ factory( jQuery );
15+ }
16+}(function( $ ) {
17+/*!
18+ * jQuery UI Core 1.11.4
19+ * http://jqueryui.com
20+ *
21+ * Copyright jQuery Foundation and other contributors
22+ * Released under the MIT license.
23+ * http://jquery.org/license
24+ *
25+ * http://api.jqueryui.com/category/ui-core/
26+ */
27+
28+
29+// $.ui might exist from components with no dependencies, e.g., $.ui.position
30+$.ui = $.ui || {};
31+
32+$.extend( $.ui, {
33+ version: "1.11.4",
34+
35+ keyCode: {
36+ BACKSPACE: 8,
37+ COMMA: 188,
38+ DELETE: 46,
39+ DOWN: 40,
40+ END: 35,
41+ ENTER: 13,
42+ ESCAPE: 27,
43+ HOME: 36,
44+ LEFT: 37,
45+ PAGE_DOWN: 34,
46+ PAGE_UP: 33,
47+ PERIOD: 190,
48+ RIGHT: 39,
49+ SPACE: 32,
50+ TAB: 9,
51+ UP: 38
52+ }
53+});
54+
55+// plugins
56+$.fn.extend({
57+ scrollParent: function( includeHidden ) {
58+ var position = this.css( "position" ),
59+ excludeStaticParent = position === "absolute",
60+ overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
61+ scrollParent = this.parents().filter( function() {
62+ var parent = $( this );
63+ if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
64+ return false;
65+ }
66+ return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
67+ }).eq( 0 );
68+
69+ return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;
70+ },
71+
72+ uniqueId: (function() {
73+ var uuid = 0;
74+
75+ return function() {
76+ return this.each(function() {
77+ if ( !this.id ) {
78+ this.id = "ui-id-" + ( ++uuid );
79+ }
80+ });
81+ };
82+ })(),
83+
84+ removeUniqueId: function() {
85+ return this.each(function() {
86+ if ( /^ui-id-\d+$/.test( this.id ) ) {
87+ $( this ).removeAttr( "id" );
88+ }
89+ });
90+ }
91+});
92+
93+// selectors
94+function focusable( element, isTabIndexNotNaN ) {
95+ var map, mapName, img,
96+ nodeName = element.nodeName.toLowerCase();
97+ if ( "area" === nodeName ) {
98+ map = element.parentNode;
99+ mapName = map.name;
100+ if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
101+ return false;
102+ }
103+ img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
104+ return !!img && visible( img );
105+ }
106+ return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ?
107+ !element.disabled :
108+ "a" === nodeName ?
109+ element.href || isTabIndexNotNaN :
110+ isTabIndexNotNaN) &&
111+ // the element and all of its ancestors must be visible
112+ visible( element );
113+}
114+
115+function visible( element ) {
116+ return $.expr.filters.visible( element ) &&
117+ !$( element ).parents().addBack().filter(function() {
118+ return $.css( this, "visibility" ) === "hidden";
119+ }).length;
120+}
121+
122+$.extend( $.expr[ ":" ], {
123+ data: $.expr.createPseudo ?
124+ $.expr.createPseudo(function( dataName ) {
125+ return function( elem ) {
126+ return !!$.data( elem, dataName );
127+ };
128+ }) :
129+ // support: jQuery <1.8
130+ function( elem, i, match ) {
131+ return !!$.data( elem, match[ 3 ] );
132+ },
133+
134+ focusable: function( element ) {
135+ return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
136+ },
137+
138+ tabbable: function( element ) {
139+ var tabIndex = $.attr( element, "tabindex" ),
140+ isTabIndexNaN = isNaN( tabIndex );
141+ return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
142+ }
143+});
144+
145+// support: jQuery <1.8
146+if ( !$( "<a>" ).outerWidth( 1 ).jquery ) {
147+ $.each( [ "Width", "Height" ], function( i, name ) {
148+ var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
149+ type = name.toLowerCase(),
150+ orig = {
151+ innerWidth: $.fn.innerWidth,
152+ innerHeight: $.fn.innerHeight,
153+ outerWidth: $.fn.outerWidth,
154+ outerHeight: $.fn.outerHeight
155+ };
156+
157+ function reduce( elem, size, border, margin ) {
158+ $.each( side, function() {
159+ size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
160+ if ( border ) {
161+ size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
162+ }
163+ if ( margin ) {
164+ size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
165+ }
166+ });
167+ return size;
168+ }
169+
170+ $.fn[ "inner" + name ] = function( size ) {
171+ if ( size === undefined ) {
172+ return orig[ "inner" + name ].call( this );
173+ }
174+
175+ return this.each(function() {
176+ $( this ).css( type, reduce( this, size ) + "px" );
177+ });
178+ };
179+
180+ $.fn[ "outer" + name] = function( size, margin ) {
181+ if ( typeof size !== "number" ) {
182+ return orig[ "outer" + name ].call( this, size );
183+ }
184+
185+ return this.each(function() {
186+ $( this).css( type, reduce( this, size, true, margin ) + "px" );
187+ });
188+ };
189+ });
190+}
191+
192+// support: jQuery <1.8
193+if ( !$.fn.addBack ) {
194+ $.fn.addBack = function( selector ) {
195+ return this.add( selector == null ?
196+ this.prevObject : this.prevObject.filter( selector )
197+ );
198+ };
199+}
200+
201+// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413)
202+if ( $( "<a>" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) {
203+ $.fn.removeData = (function( removeData ) {
204+ return function( key ) {
205+ if ( arguments.length ) {
206+ return removeData.call( this, $.camelCase( key ) );
207+ } else {
208+ return removeData.call( this );
209+ }
210+ };
211+ })( $.fn.removeData );
212+}
213+
214+// deprecated
215+$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
216+
217+$.fn.extend({
218+ focus: (function( orig ) {
219+ return function( delay, fn ) {
220+ return typeof delay === "number" ?
221+ this.each(function() {
222+ var elem = this;
223+ setTimeout(function() {
224+ $( elem ).focus();
225+ if ( fn ) {
226+ fn.call( elem );
227+ }
228+ }, delay );
229+ }) :
230+ orig.apply( this, arguments );
231+ };
232+ })( $.fn.focus ),
233+
234+ disableSelection: (function() {
235+ var eventType = "onselectstart" in document.createElement( "div" ) ?
236+ "selectstart" :
237+ "mousedown";
238+
239+ return function() {
240+ return this.bind( eventType + ".ui-disableSelection", function( event ) {
241+ event.preventDefault();
242+ });
243+ };
244+ })(),
245+
246+ enableSelection: function() {
247+ return this.unbind( ".ui-disableSelection" );
248+ },
249+
250+ zIndex: function( zIndex ) {
251+ if ( zIndex !== undefined ) {
252+ return this.css( "zIndex", zIndex );
253+ }
254+
255+ if ( this.length ) {
256+ var elem = $( this[ 0 ] ), position, value;
257+ while ( elem.length && elem[ 0 ] !== document ) {
258+ // Ignore z-index if position is set to a value where z-index is ignored by the browser
259+ // This makes behavior of this function consistent across browsers
260+ // WebKit always returns auto if the element is positioned
261+ position = elem.css( "position" );
262+ if ( position === "absolute" || position === "relative" || position === "fixed" ) {
263+ // IE returns 0 when zIndex is not specified
264+ // other browsers return a string
265+ // we ignore the case of nested elements with an explicit value of 0
266+ // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
267+ value = parseInt( elem.css( "zIndex" ), 10 );
268+ if ( !isNaN( value ) && value !== 0 ) {
269+ return value;
270+ }
271+ }
272+ elem = elem.parent();
273+ }
274+ }
275+
276+ return 0;
277+ }
278+});
279+
280+// $.ui.plugin is deprecated. Use $.widget() extensions instead.
281+$.ui.plugin = {
282+ add: function( module, option, set ) {
283+ var i,
284+ proto = $.ui[ module ].prototype;
285+ for ( i in set ) {
286+ proto.plugins[ i ] = proto.plugins[ i ] || [];
287+ proto.plugins[ i ].push( [ option, set[ i ] ] );
288+ }
289+ },
290+ call: function( instance, name, args, allowDisconnected ) {
291+ var i,
292+ set = instance.plugins[ name ];
293+
294+ if ( !set ) {
295+ return;
296+ }
297+
298+ if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
299+ return;
300+ }
301+
302+ for ( i = 0; i < set.length; i++ ) {
303+ if ( instance.options[ set[ i ][ 0 ] ] ) {
304+ set[ i ][ 1 ].apply( instance.element, args );
305+ }
306+ }
307+ }
308+};
309+
310+
311+/*!
312+ * jQuery UI Widget 1.11.4
313+ * http://jqueryui.com
314+ *
315+ * Copyright jQuery Foundation and other contributors
316+ * Released under the MIT license.
317+ * http://jquery.org/license
318+ *
319+ * http://api.jqueryui.com/jQuery.widget/
320+ */
321+
322+
323+var widget_uuid = 0,
324+ widget_slice = Array.prototype.slice;
325+
326+$.cleanData = (function( orig ) {
327+ return function( elems ) {
328+ var events, elem, i;
329+ for ( i = 0; (elem = elems[i]) != null; i++ ) {
330+ try {
331+
332+ // Only trigger remove when necessary to save time
333+ events = $._data( elem, "events" );
334+ if ( events && events.remove ) {
335+ $( elem ).triggerHandler( "remove" );
336+ }
337+
338+ // http://bugs.jquery.com/ticket/8235
339+ } catch ( e ) {}
340+ }
341+ orig( elems );
342+ };
343+})( $.cleanData );
344+
345+$.widget = function( name, base, prototype ) {
346+ var fullName, existingConstructor, constructor, basePrototype,
347+ // proxiedPrototype allows the provided prototype to remain unmodified
348+ // so that it can be used as a mixin for multiple widgets (#8876)
349+ proxiedPrototype = {},
350+ namespace = name.split( "." )[ 0 ];
351+
352+ name = name.split( "." )[ 1 ];
353+ fullName = namespace + "-" + name;
354+
355+ if ( !prototype ) {
356+ prototype = base;
357+ base = $.Widget;
358+ }
359+
360+ // create selector for plugin
361+ $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
362+ return !!$.data( elem, fullName );
363+ };
364+
365+ $[ namespace ] = $[ namespace ] || {};
366+ existingConstructor = $[ namespace ][ name ];
367+ constructor = $[ namespace ][ name ] = function( options, element ) {
368+ // allow instantiation without "new" keyword
369+ if ( !this._createWidget ) {
370+ return new constructor( options, element );
371+ }
372+
373+ // allow instantiation without initializing for simple inheritance
374+ // must use "new" keyword (the code above always passes args)
375+ if ( arguments.length ) {
376+ this._createWidget( options, element );
377+ }
378+ };
379+ // extend with the existing constructor to carry over any static properties
380+ $.extend( constructor, existingConstructor, {
381+ version: prototype.version,
382+ // copy the object used to create the prototype in case we need to
383+ // redefine the widget later
384+ _proto: $.extend( {}, prototype ),
385+ // track widgets that inherit from this widget in case this widget is
386+ // redefined after a widget inherits from it
387+ _childConstructors: []
388+ });
389+
390+ basePrototype = new base();
391+ // we need to make the options hash a property directly on the new instance
392+ // otherwise we'll modify the options hash on the prototype that we're
393+ // inheriting from
394+ basePrototype.options = $.widget.extend( {}, basePrototype.options );
395+ $.each( prototype, function( prop, value ) {
396+ if ( !$.isFunction( value ) ) {
397+ proxiedPrototype[ prop ] = value;
398+ return;
399+ }
400+ proxiedPrototype[ prop ] = (function() {
401+ var _super = function() {
402+ return base.prototype[ prop ].apply( this, arguments );
403+ },
404+ _superApply = function( args ) {
405+ return base.prototype[ prop ].apply( this, args );
406+ };
407+ return function() {
408+ var __super = this._super,
409+ __superApply = this._superApply,
410+ returnValue;
411+
412+ this._super = _super;
413+ this._superApply = _superApply;
414+
415+ returnValue = value.apply( this, arguments );
416+
417+ this._super = __super;
418+ this._superApply = __superApply;
419+
420+ return returnValue;
421+ };
422+ })();
423+ });
424+ constructor.prototype = $.widget.extend( basePrototype, {
425+ // TODO: remove support for widgetEventPrefix
426+ // always use the name + a colon as the prefix, e.g., draggable:start
427+ // don't prefix for widgets that aren't DOM-based
428+ widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name
429+ }, proxiedPrototype, {
430+ constructor: constructor,
431+ namespace: namespace,
432+ widgetName: name,
433+ widgetFullName: fullName
434+ });
435+
436+ // If this widget is being redefined then we need to find all widgets that
437+ // are inheriting from it and redefine all of them so that they inherit from
438+ // the new version of this widget. We're essentially trying to replace one
439+ // level in the prototype chain.
440+ if ( existingConstructor ) {
441+ $.each( existingConstructor._childConstructors, function( i, child ) {
442+ var childPrototype = child.prototype;
443+
444+ // redefine the child widget using the same prototype that was
445+ // originally used, but inherit from the new version of the base
446+ $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto );
447+ });
448+ // remove the list of existing child constructors from the old constructor
449+ // so the old child constructors can be garbage collected
450+ delete existingConstructor._childConstructors;
451+ } else {
452+ base._childConstructors.push( constructor );
453+ }
454+
455+ $.widget.bridge( name, constructor );
456+
457+ return constructor;
458+};
459+
460+$.widget.extend = function( target ) {
461+ var input = widget_slice.call( arguments, 1 ),
462+ inputIndex = 0,
463+ inputLength = input.length,
464+ key,
465+ value;
466+ for ( ; inputIndex < inputLength; inputIndex++ ) {
467+ for ( key in input[ inputIndex ] ) {
468+ value = input[ inputIndex ][ key ];
469+ if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
470+ // Clone objects
471+ if ( $.isPlainObject( value ) ) {
472+ target[ key ] = $.isPlainObject( target[ key ] ) ?
473+ $.widget.extend( {}, target[ key ], value ) :
474+ // Don't extend strings, arrays, etc. with objects
475+ $.widget.extend( {}, value );
476+ // Copy everything else by reference
477+ } else {
478+ target[ key ] = value;
479+ }
480+ }
481+ }
482+ }
483+ return target;
484+};
485+
486+$.widget.bridge = function( name, object ) {
487+ var fullName = object.prototype.widgetFullName || name;
488+ $.fn[ name ] = function( options ) {
489+ var isMethodCall = typeof options === "string",
490+ args = widget_slice.call( arguments, 1 ),
491+ returnValue = this;
492+
493+ if ( isMethodCall ) {
494+ this.each(function() {
495+ var methodValue,
496+ instance = $.data( this, fullName );
497+ if ( options === "instance" ) {
498+ returnValue = instance;
499+ return false;
500+ }
501+ if ( !instance ) {
502+ return $.error( "cannot call methods on " + name + " prior to initialization; " +
503+ "attempted to call method '" + options + "'" );
504+ }
505+ if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) {
506+ return $.error( "no such method '" + options + "' for " + name + " widget instance" );
507+ }
508+ methodValue = instance[ options ].apply( instance, args );
509+ if ( methodValue !== instance && methodValue !== undefined ) {
510+ returnValue = methodValue && methodValue.jquery ?
511+ returnValue.pushStack( methodValue.get() ) :
512+ methodValue;
513+ return false;
514+ }
515+ });
516+ } else {
517+
518+ // Allow multiple hashes to be passed on init
519+ if ( args.length ) {
520+ options = $.widget.extend.apply( null, [ options ].concat(args) );
521+ }
522+
523+ this.each(function() {
524+ var instance = $.data( this, fullName );
525+ if ( instance ) {
526+ instance.option( options || {} );
527+ if ( instance._init ) {
528+ instance._init();
529+ }
530+ } else {
531+ $.data( this, fullName, new object( options, this ) );
532+ }
533+ });
534+ }
535+
536+ return returnValue;
537+ };
538+};
539+
540+$.Widget = function( /* options, element */ ) {};
541+$.Widget._childConstructors = [];
542+
543+$.Widget.prototype = {
544+ widgetName: "widget",
545+ widgetEventPrefix: "",
546+ defaultElement: "<div>",
547+ options: {
548+ disabled: false,
549+
550+ // callbacks
551+ create: null
552+ },
553+ _createWidget: function( options, element ) {
554+ element = $( element || this.defaultElement || this )[ 0 ];
555+ this.element = $( element );
556+ this.uuid = widget_uuid++;
557+ this.eventNamespace = "." + this.widgetName + this.uuid;
558+
559+ this.bindings = $();
560+ this.hoverable = $();
561+ this.focusable = $();
562+
563+ if ( element !== this ) {
564+ $.data( element, this.widgetFullName, this );
565+ this._on( true, this.element, {
566+ remove: function( event ) {
567+ if ( event.target === element ) {
568+ this.destroy();
569+ }
570+ }
571+ });
572+ this.document = $( element.style ?
573+ // element within the document
574+ element.ownerDocument :
575+ // element is window or document
576+ element.document || element );
577+ this.window = $( this.document[0].defaultView || this.document[0].parentWindow );
578+ }
579+
580+ this.options = $.widget.extend( {},
581+ this.options,
582+ this._getCreateOptions(),
583+ options );
584+
585+ this._create();
586+ this._trigger( "create", null, this._getCreateEventData() );
587+ this._init();
588+ },
589+ _getCreateOptions: $.noop,
590+ _getCreateEventData: $.noop,
591+ _create: $.noop,
592+ _init: $.noop,
593+
594+ destroy: function() {
595+ this._destroy();
596+ // we can probably remove the unbind calls in 2.0
597+ // all event bindings should go through this._on()
598+ this.element
599+ .unbind( this.eventNamespace )
600+ .removeData( this.widgetFullName )
601+ // support: jquery <1.6.3
602+ // http://bugs.jquery.com/ticket/9413
603+ .removeData( $.camelCase( this.widgetFullName ) );
604+ this.widget()
605+ .unbind( this.eventNamespace )
606+ .removeAttr( "aria-disabled" )
607+ .removeClass(
608+ this.widgetFullName + "-disabled " +
609+ "ui-state-disabled" );
610+
611+ // clean up events and states
612+ this.bindings.unbind( this.eventNamespace );
613+ this.hoverable.removeClass( "ui-state-hover" );
614+ this.focusable.removeClass( "ui-state-focus" );
615+ },
616+ _destroy: $.noop,
617+
618+ widget: function() {
619+ return this.element;
620+ },
621+
622+ option: function( key, value ) {
623+ var options = key,
624+ parts,
625+ curOption,
626+ i;
627+
628+ if ( arguments.length === 0 ) {
629+ // don't return a reference to the internal hash
630+ return $.widget.extend( {}, this.options );
631+ }
632+
633+ if ( typeof key === "string" ) {
634+ // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
635+ options = {};
636+ parts = key.split( "." );
637+ key = parts.shift();
638+ if ( parts.length ) {
639+ curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
640+ for ( i = 0; i < parts.length - 1; i++ ) {
641+ curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
642+ curOption = curOption[ parts[ i ] ];
643+ }
644+ key = parts.pop();
645+ if ( arguments.length === 1 ) {
646+ return curOption[ key ] === undefined ? null : curOption[ key ];
647+ }
648+ curOption[ key ] = value;
649+ } else {
650+ if ( arguments.length === 1 ) {
651+ return this.options[ key ] === undefined ? null : this.options[ key ];
652+ }
653+ options[ key ] = value;
654+ }
655+ }
656+
657+ this._setOptions( options );
658+
659+ return this;
660+ },
661+ _setOptions: function( options ) {
662+ var key;
663+
664+ for ( key in options ) {
665+ this._setOption( key, options[ key ] );
666+ }
667+
668+ return this;
669+ },
670+ _setOption: function( key, value ) {
671+ this.options[ key ] = value;
672+
673+ if ( key === "disabled" ) {
674+ this.widget()
675+ .toggleClass( this.widgetFullName + "-disabled", !!value );
676+
677+ // If the widget is becoming disabled, then nothing is interactive
678+ if ( value ) {
679+ this.hoverable.removeClass( "ui-state-hover" );
680+ this.focusable.removeClass( "ui-state-focus" );
681+ }
682+ }
683+
684+ return this;
685+ },
686+
687+ enable: function() {
688+ return this._setOptions({ disabled: false });
689+ },
690+ disable: function() {
691+ return this._setOptions({ disabled: true });
692+ },
693+
694+ _on: function( suppressDisabledCheck, element, handlers ) {
695+ var delegateElement,
696+ instance = this;
697+
698+ // no suppressDisabledCheck flag, shuffle arguments
699+ if ( typeof suppressDisabledCheck !== "boolean" ) {
700+ handlers = element;
701+ element = suppressDisabledCheck;
702+ suppressDisabledCheck = false;
703+ }
704+
705+ // no element argument, shuffle and use this.element
706+ if ( !handlers ) {
707+ handlers = element;
708+ element = this.element;
709+ delegateElement = this.widget();
710+ } else {
711+ element = delegateElement = $( element );
712+ this.bindings = this.bindings.add( element );
713+ }
714+
715+ $.each( handlers, function( event, handler ) {
716+ function handlerProxy() {
717+ // allow widgets to customize the disabled handling
718+ // - disabled as an array instead of boolean
719+ // - disabled class as method for disabling individual parts
720+ if ( !suppressDisabledCheck &&
721+ ( instance.options.disabled === true ||
722+ $( this ).hasClass( "ui-state-disabled" ) ) ) {
723+ return;
724+ }
725+ return ( typeof handler === "string" ? instance[ handler ] : handler )
726+ .apply( instance, arguments );
727+ }
728+
729+ // copy the guid so direct unbinding works
730+ if ( typeof handler !== "string" ) {
731+ handlerProxy.guid = handler.guid =
732+ handler.guid || handlerProxy.guid || $.guid++;
733+ }
734+
735+ var match = event.match( /^([\w:-]*)\s*(.*)$/ ),
736+ eventName = match[1] + instance.eventNamespace,
737+ selector = match[2];
738+ if ( selector ) {
739+ delegateElement.delegate( selector, eventName, handlerProxy );
740+ } else {
741+ element.bind( eventName, handlerProxy );
742+ }
743+ });
744+ },
745+
746+ _off: function( element, eventName ) {
747+ eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) +
748+ this.eventNamespace;
749+ element.unbind( eventName ).undelegate( eventName );
750+
751+ // Clear the stack to avoid memory leaks (#10056)
752+ this.bindings = $( this.bindings.not( element ).get() );
753+ this.focusable = $( this.focusable.not( element ).get() );
754+ this.hoverable = $( this.hoverable.not( element ).get() );
755+ },
756+
757+ _delay: function( handler, delay ) {
758+ function handlerProxy() {
759+ return ( typeof handler === "string" ? instance[ handler ] : handler )
760+ .apply( instance, arguments );
761+ }
762+ var instance = this;
763+ return setTimeout( handlerProxy, delay || 0 );
764+ },
765+
766+ _hoverable: function( element ) {
767+ this.hoverable = this.hoverable.add( element );
768+ this._on( element, {
769+ mouseenter: function( event ) {
770+ $( event.currentTarget ).addClass( "ui-state-hover" );
771+ },
772+ mouseleave: function( event ) {
773+ $( event.currentTarget ).removeClass( "ui-state-hover" );
774+ }
775+ });
776+ },
777+
778+ _focusable: function( element ) {
779+ this.focusable = this.focusable.add( element );
780+ this._on( element, {
781+ focusin: function( event ) {
782+ $( event.currentTarget ).addClass( "ui-state-focus" );
783+ },
784+ focusout: function( event ) {
785+ $( event.currentTarget ).removeClass( "ui-state-focus" );
786+ }
787+ });
788+ },
789+
790+ _trigger: function( type, event, data ) {
791+ var prop, orig,
792+ callback = this.options[ type ];
793+
794+ data = data || {};
795+ event = $.Event( event );
796+ event.type = ( type === this.widgetEventPrefix ?
797+ type :
798+ this.widgetEventPrefix + type ).toLowerCase();
799+ // the original event may come from any element
800+ // so we need to reset the target on the new event
801+ event.target = this.element[ 0 ];
802+
803+ // copy original event properties over to the new event
804+ orig = event.originalEvent;
805+ if ( orig ) {
806+ for ( prop in orig ) {
807+ if ( !( prop in event ) ) {
808+ event[ prop ] = orig[ prop ];
809+ }
810+ }
811+ }
812+
813+ this.element.trigger( event, data );
814+ return !( $.isFunction( callback ) &&
815+ callback.apply( this.element[0], [ event ].concat( data ) ) === false ||
816+ event.isDefaultPrevented() );
817+ }
818+};
819+
820+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
821+ $.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
822+ if ( typeof options === "string" ) {
823+ options = { effect: options };
824+ }
825+ var hasOptions,
826+ effectName = !options ?
827+ method :
828+ options === true || typeof options === "number" ?
829+ defaultEffect :
830+ options.effect || defaultEffect;
831+ options = options || {};
832+ if ( typeof options === "number" ) {
833+ options = { duration: options };
834+ }
835+ hasOptions = !$.isEmptyObject( options );
836+ options.complete = callback;
837+ if ( options.delay ) {
838+ element.delay( options.delay );
839+ }
840+ if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
841+ element[ method ]( options );
842+ } else if ( effectName !== method && element[ effectName ] ) {
843+ element[ effectName ]( options.duration, options.easing, callback );
844+ } else {
845+ element.queue(function( next ) {
846+ $( this )[ method ]();
847+ if ( callback ) {
848+ callback.call( element[ 0 ] );
849+ }
850+ next();
851+ });
852+ }
853+ };
854+});
855+
856+var widget = $.widget;
857+
858+
859+/*!
860+ * jQuery UI Mouse 1.11.4
861+ * http://jqueryui.com
862+ *
863+ * Copyright jQuery Foundation and other contributors
864+ * Released under the MIT license.
865+ * http://jquery.org/license
866+ *
867+ * http://api.jqueryui.com/mouse/
868+ */
869+
870+
871+var mouseHandled = false;
872+$( document ).mouseup( function() {
873+ mouseHandled = false;
874+});
875+
876+var mouse = $.widget("ui.mouse", {
877+ version: "1.11.4",
878+ options: {
879+ cancel: "input,textarea,button,select,option",
880+ distance: 1,
881+ delay: 0
882+ },
883+ _mouseInit: function() {
884+ var that = this;
885+
886+ this.element
887+ .bind("mousedown." + this.widgetName, function(event) {
888+ return that._mouseDown(event);
889+ })
890+ .bind("click." + this.widgetName, function(event) {
891+ if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) {
892+ $.removeData(event.target, that.widgetName + ".preventClickEvent");
893+ event.stopImmediatePropagation();
894+ return false;
895+ }
896+ });
897+
898+ this.started = false;
899+ },
900+
901+ // TODO: make sure destroying one instance of mouse doesn't mess with
902+ // other instances of mouse
903+ _mouseDestroy: function() {
904+ this.element.unbind("." + this.widgetName);
905+ if ( this._mouseMoveDelegate ) {
906+ this.document
907+ .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate)
908+ .unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
909+ }
910+ },
911+
912+ _mouseDown: function(event) {
913+ // don't let more than one widget handle mouseStart
914+ if ( mouseHandled ) {
915+ return;
916+ }
917+
918+ this._mouseMoved = false;
919+
920+ // we may have missed mouseup (out of window)
921+ (this._mouseStarted && this._mouseUp(event));
922+
923+ this._mouseDownEvent = event;
924+
925+ var that = this,
926+ btnIsLeft = (event.which === 1),
927+ // event.target.nodeName works around a bug in IE 8 with
928+ // disabled inputs (#7620)
929+ elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
930+ if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
931+ return true;
932+ }
933+
934+ this.mouseDelayMet = !this.options.delay;
935+ if (!this.mouseDelayMet) {
936+ this._mouseDelayTimer = setTimeout(function() {
937+ that.mouseDelayMet = true;
938+ }, this.options.delay);
939+ }
940+
941+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
942+ this._mouseStarted = (this._mouseStart(event) !== false);
943+ if (!this._mouseStarted) {
944+ event.preventDefault();
945+ return true;
946+ }
947+ }
948+
949+ // Click event may never have fired (Gecko & Opera)
950+ if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) {
951+ $.removeData(event.target, this.widgetName + ".preventClickEvent");
952+ }
953+
954+ // these delegates are required to keep context
955+ this._mouseMoveDelegate = function(event) {
956+ return that._mouseMove(event);
957+ };
958+ this._mouseUpDelegate = function(event) {
959+ return that._mouseUp(event);
960+ };
961+
962+ this.document
963+ .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
964+ .bind( "mouseup." + this.widgetName, this._mouseUpDelegate );
965+
966+ event.preventDefault();
967+
968+ mouseHandled = true;
969+ return true;
970+ },
971+
972+ _mouseMove: function(event) {
973+ // Only check for mouseups outside the document if you've moved inside the document
974+ // at least once. This prevents the firing of mouseup in the case of IE<9, which will
975+ // fire a mousemove event if content is placed under the cursor. See #7778
976+ // Support: IE <9
977+ if ( this._mouseMoved ) {
978+ // IE mouseup check - mouseup happened when mouse was out of window
979+ if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) {
980+ return this._mouseUp(event);
981+
982+ // Iframe mouseup check - mouseup occurred in another document
983+ } else if ( !event.which ) {
984+ return this._mouseUp( event );
985+ }
986+ }
987+
988+ if ( event.which || event.button ) {
989+ this._mouseMoved = true;
990+ }
991+
992+ if (this._mouseStarted) {
993+ this._mouseDrag(event);
994+ return event.preventDefault();
995+ }
996+
997+ if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
998+ this._mouseStarted =
999+ (this._mouseStart(this._mouseDownEvent, event) !== false);
1000+ (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
1001+ }
1002+
1003+ return !this._mouseStarted;
1004+ },
1005+
1006+ _mouseUp: function(event) {
1007+ this.document
1008+ .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate )
1009+ .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate );
1010+
1011+ if (this._mouseStarted) {
1012+ this._mouseStarted = false;
1013+
1014+ if (event.target === this._mouseDownEvent.target) {
1015+ $.data(event.target, this.widgetName + ".preventClickEvent", true);
1016+ }
1017+
1018+ this._mouseStop(event);
1019+ }
1020+
1021+ mouseHandled = false;
1022+ return false;
1023+ },
1024+
1025+ _mouseDistanceMet: function(event) {
1026+ return (Math.max(
1027+ Math.abs(this._mouseDownEvent.pageX - event.pageX),
1028+ Math.abs(this._mouseDownEvent.pageY - event.pageY)
1029+ ) >= this.options.distance
1030+ );
1031+ },
1032+
1033+ _mouseDelayMet: function(/* event */) {
1034+ return this.mouseDelayMet;
1035+ },
1036+
1037+ // These are placeholder methods, to be overriden by extending plugin
1038+ _mouseStart: function(/* event */) {},
1039+ _mouseDrag: function(/* event */) {},
1040+ _mouseStop: function(/* event */) {},
1041+ _mouseCapture: function(/* event */) { return true; }
1042+});
1043+
1044+
1045+/*!
1046+ * jQuery UI Position 1.11.4
1047+ * http://jqueryui.com
1048+ *
1049+ * Copyright jQuery Foundation and other contributors
1050+ * Released under the MIT license.
1051+ * http://jquery.org/license
1052+ *
1053+ * http://api.jqueryui.com/position/
1054+ */
1055+
1056+(function() {
1057+
1058+$.ui = $.ui || {};
1059+
1060+var cachedScrollbarWidth, supportsOffsetFractions,
1061+ max = Math.max,
1062+ abs = Math.abs,
1063+ round = Math.round,
1064+ rhorizontal = /left|center|right/,
1065+ rvertical = /top|center|bottom/,
1066+ roffset = /[\+\-]\d+(\.[\d]+)?%?/,
1067+ rposition = /^\w+/,
1068+ rpercent = /%$/,
1069+ _position = $.fn.position;
1070+
1071+function getOffsets( offsets, width, height ) {
1072+ return [
1073+ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
1074+ parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
1075+ ];
1076+}
1077+
1078+function parseCss( element, property ) {
1079+ return parseInt( $.css( element, property ), 10 ) || 0;
1080+}
1081+
1082+function getDimensions( elem ) {
1083+ var raw = elem[0];
1084+ if ( raw.nodeType === 9 ) {
1085+ return {
1086+ width: elem.width(),
1087+ height: elem.height(),
1088+ offset: { top: 0, left: 0 }
1089+ };
1090+ }
1091+ if ( $.isWindow( raw ) ) {
1092+ return {
1093+ width: elem.width(),
1094+ height: elem.height(),
1095+ offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
1096+ };
1097+ }
1098+ if ( raw.preventDefault ) {
1099+ return {
1100+ width: 0,
1101+ height: 0,
1102+ offset: { top: raw.pageY, left: raw.pageX }
1103+ };
1104+ }
1105+ return {
1106+ width: elem.outerWidth(),
1107+ height: elem.outerHeight(),
1108+ offset: elem.offset()
1109+ };
1110+}
1111+
1112+$.position = {
1113+ scrollbarWidth: function() {
1114+ if ( cachedScrollbarWidth !== undefined ) {
1115+ return cachedScrollbarWidth;
1116+ }
1117+ var w1, w2,
1118+ div = $( "<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
1119+ innerDiv = div.children()[0];
1120+
1121+ $( "body" ).append( div );
1122+ w1 = innerDiv.offsetWidth;
1123+ div.css( "overflow", "scroll" );
1124+
1125+ w2 = innerDiv.offsetWidth;
1126+
1127+ if ( w1 === w2 ) {
1128+ w2 = div[0].clientWidth;
1129+ }
1130+
1131+ div.remove();
1132+
1133+ return (cachedScrollbarWidth = w1 - w2);
1134+ },
1135+ getScrollInfo: function( within ) {
1136+ var overflowX = within.isWindow || within.isDocument ? "" :
1137+ within.element.css( "overflow-x" ),
1138+ overflowY = within.isWindow || within.isDocument ? "" :
1139+ within.element.css( "overflow-y" ),
1140+ hasOverflowX = overflowX === "scroll" ||
1141+ ( overflowX === "auto" && within.width < within.element[0].scrollWidth ),
1142+ hasOverflowY = overflowY === "scroll" ||
1143+ ( overflowY === "auto" && within.height < within.element[0].scrollHeight );
1144+ return {
1145+ width: hasOverflowY ? $.position.scrollbarWidth() : 0,
1146+ height: hasOverflowX ? $.position.scrollbarWidth() : 0
1147+ };
1148+ },
1149+ getWithinInfo: function( element ) {
1150+ var withinElement = $( element || window ),
1151+ isWindow = $.isWindow( withinElement[0] ),
1152+ isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9;
1153+ return {
1154+ element: withinElement,
1155+ isWindow: isWindow,
1156+ isDocument: isDocument,
1157+ offset: withinElement.offset() || { left: 0, top: 0 },
1158+ scrollLeft: withinElement.scrollLeft(),
1159+ scrollTop: withinElement.scrollTop(),
1160+
1161+ // support: jQuery 1.6.x
1162+ // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows
1163+ width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),
1164+ height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight()
1165+ };
1166+ }
1167+};
1168+
1169+$.fn.position = function( options ) {
1170+ if ( !options || !options.of ) {
1171+ return _position.apply( this, arguments );
1172+ }
1173+
1174+ // make a copy, we don't want to modify arguments
1175+ options = $.extend( {}, options );
1176+
1177+ var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
1178+ target = $( options.of ),
1179+ within = $.position.getWithinInfo( options.within ),
1180+ scrollInfo = $.position.getScrollInfo( within ),
1181+ collision = ( options.collision || "flip" ).split( " " ),
1182+ offsets = {};
1183+
1184+ dimensions = getDimensions( target );
1185+ if ( target[0].preventDefault ) {
1186+ // force left top to allow flipping
1187+ options.at = "left top";
1188+ }
1189+ targetWidth = dimensions.width;
1190+ targetHeight = dimensions.height;
1191+ targetOffset = dimensions.offset;
1192+ // clone to reuse original targetOffset later
1193+ basePosition = $.extend( {}, targetOffset );
1194+
1195+ // force my and at to have valid horizontal and vertical positions
1196+ // if a value is missing or invalid, it will be converted to center
1197+ $.each( [ "my", "at" ], function() {
1198+ var pos = ( options[ this ] || "" ).split( " " ),
1199+ horizontalOffset,
1200+ verticalOffset;
1201+
1202+ if ( pos.length === 1) {
1203+ pos = rhorizontal.test( pos[ 0 ] ) ?
1204+ pos.concat( [ "center" ] ) :
1205+ rvertical.test( pos[ 0 ] ) ?
1206+ [ "center" ].concat( pos ) :
1207+ [ "center", "center" ];
1208+ }
1209+ pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
1210+ pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
1211+
1212+ // calculate offsets
1213+ horizontalOffset = roffset.exec( pos[ 0 ] );
1214+ verticalOffset = roffset.exec( pos[ 1 ] );
1215+ offsets[ this ] = [
1216+ horizontalOffset ? horizontalOffset[ 0 ] : 0,
1217+ verticalOffset ? verticalOffset[ 0 ] : 0
1218+ ];
1219+
1220+ // reduce to just the positions without the offsets
1221+ options[ this ] = [
1222+ rposition.exec( pos[ 0 ] )[ 0 ],
1223+ rposition.exec( pos[ 1 ] )[ 0 ]
1224+ ];
1225+ });
1226+
1227+ // normalize collision option
1228+ if ( collision.length === 1 ) {
1229+ collision[ 1 ] = collision[ 0 ];
1230+ }
1231+
1232+ if ( options.at[ 0 ] === "right" ) {
1233+ basePosition.left += targetWidth;
1234+ } else if ( options.at[ 0 ] === "center" ) {
1235+ basePosition.left += targetWidth / 2;
1236+ }
1237+
1238+ if ( options.at[ 1 ] === "bottom" ) {
1239+ basePosition.top += targetHeight;
1240+ } else if ( options.at[ 1 ] === "center" ) {
1241+ basePosition.top += targetHeight / 2;
1242+ }
1243+
1244+ atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
1245+ basePosition.left += atOffset[ 0 ];
1246+ basePosition.top += atOffset[ 1 ];
1247+
1248+ return this.each(function() {
1249+ var collisionPosition, using,
1250+ elem = $( this ),
1251+ elemWidth = elem.outerWidth(),
1252+ elemHeight = elem.outerHeight(),
1253+ marginLeft = parseCss( this, "marginLeft" ),
1254+ marginTop = parseCss( this, "marginTop" ),
1255+ collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width,
1256+ collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height,
1257+ position = $.extend( {}, basePosition ),
1258+ myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
1259+
1260+ if ( options.my[ 0 ] === "right" ) {
1261+ position.left -= elemWidth;
1262+ } else if ( options.my[ 0 ] === "center" ) {
1263+ position.left -= elemWidth / 2;
1264+ }
1265+
1266+ if ( options.my[ 1 ] === "bottom" ) {
1267+ position.top -= elemHeight;
1268+ } else if ( options.my[ 1 ] === "center" ) {
1269+ position.top -= elemHeight / 2;
1270+ }
1271+
1272+ position.left += myOffset[ 0 ];
1273+ position.top += myOffset[ 1 ];
1274+
1275+ // if the browser doesn't support fractions, then round for consistent results
1276+ if ( !supportsOffsetFractions ) {
1277+ position.left = round( position.left );
1278+ position.top = round( position.top );
1279+ }
1280+
1281+ collisionPosition = {
1282+ marginLeft: marginLeft,
1283+ marginTop: marginTop
1284+ };
1285+
1286+ $.each( [ "left", "top" ], function( i, dir ) {
1287+ if ( $.ui.position[ collision[ i ] ] ) {
1288+ $.ui.position[ collision[ i ] ][ dir ]( position, {
1289+ targetWidth: targetWidth,
1290+ targetHeight: targetHeight,
1291+ elemWidth: elemWidth,
1292+ elemHeight: elemHeight,
1293+ collisionPosition: collisionPosition,
1294+ collisionWidth: collisionWidth,
1295+ collisionHeight: collisionHeight,
1296+ offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
1297+ my: options.my,
1298+ at: options.at,
1299+ within: within,
1300+ elem: elem
1301+ });
1302+ }
1303+ });
1304+
1305+ if ( options.using ) {
1306+ // adds feedback as second argument to using callback, if present
1307+ using = function( props ) {
1308+ var left = targetOffset.left - position.left,
1309+ right = left + targetWidth - elemWidth,
1310+ top = targetOffset.top - position.top,
1311+ bottom = top + targetHeight - elemHeight,
1312+ feedback = {
1313+ target: {
1314+ element: target,
1315+ left: targetOffset.left,
1316+ top: targetOffset.top,
1317+ width: targetWidth,
1318+ height: targetHeight
1319+ },
1320+ element: {
1321+ element: elem,
1322+ left: position.left,
1323+ top: position.top,
1324+ width: elemWidth,
1325+ height: elemHeight
1326+ },
1327+ horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
1328+ vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
1329+ };
1330+ if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
1331+ feedback.horizontal = "center";
1332+ }
1333+ if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
1334+ feedback.vertical = "middle";
1335+ }
1336+ if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
1337+ feedback.important = "horizontal";
1338+ } else {
1339+ feedback.important = "vertical";
1340+ }
1341+ options.using.call( this, props, feedback );
1342+ };
1343+ }
1344+
1345+ elem.offset( $.extend( position, { using: using } ) );
1346+ });
1347+};
1348+
1349+$.ui.position = {
1350+ fit: {
1351+ left: function( position, data ) {
1352+ var within = data.within,
1353+ withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
1354+ outerWidth = within.width,
1355+ collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1356+ overLeft = withinOffset - collisionPosLeft,
1357+ overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
1358+ newOverRight;
1359+
1360+ // element is wider than within
1361+ if ( data.collisionWidth > outerWidth ) {
1362+ // element is initially over the left side of within
1363+ if ( overLeft > 0 && overRight <= 0 ) {
1364+ newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;
1365+ position.left += overLeft - newOverRight;
1366+ // element is initially over right side of within
1367+ } else if ( overRight > 0 && overLeft <= 0 ) {
1368+ position.left = withinOffset;
1369+ // element is initially over both left and right sides of within
1370+ } else {
1371+ if ( overLeft > overRight ) {
1372+ position.left = withinOffset + outerWidth - data.collisionWidth;
1373+ } else {
1374+ position.left = withinOffset;
1375+ }
1376+ }
1377+ // too far left -> align with left edge
1378+ } else if ( overLeft > 0 ) {
1379+ position.left += overLeft;
1380+ // too far right -> align with right edge
1381+ } else if ( overRight > 0 ) {
1382+ position.left -= overRight;
1383+ // adjust based on position and margin
1384+ } else {
1385+ position.left = max( position.left - collisionPosLeft, position.left );
1386+ }
1387+ },
1388+ top: function( position, data ) {
1389+ var within = data.within,
1390+ withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
1391+ outerHeight = data.within.height,
1392+ collisionPosTop = position.top - data.collisionPosition.marginTop,
1393+ overTop = withinOffset - collisionPosTop,
1394+ overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
1395+ newOverBottom;
1396+
1397+ // element is taller than within
1398+ if ( data.collisionHeight > outerHeight ) {
1399+ // element is initially over the top of within
1400+ if ( overTop > 0 && overBottom <= 0 ) {
1401+ newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;
1402+ position.top += overTop - newOverBottom;
1403+ // element is initially over bottom of within
1404+ } else if ( overBottom > 0 && overTop <= 0 ) {
1405+ position.top = withinOffset;
1406+ // element is initially over both top and bottom of within
1407+ } else {
1408+ if ( overTop > overBottom ) {
1409+ position.top = withinOffset + outerHeight - data.collisionHeight;
1410+ } else {
1411+ position.top = withinOffset;
1412+ }
1413+ }
1414+ // too far up -> align with top
1415+ } else if ( overTop > 0 ) {
1416+ position.top += overTop;
1417+ // too far down -> align with bottom edge
1418+ } else if ( overBottom > 0 ) {
1419+ position.top -= overBottom;
1420+ // adjust based on position and margin
1421+ } else {
1422+ position.top = max( position.top - collisionPosTop, position.top );
1423+ }
1424+ }
1425+ },
1426+ flip: {
1427+ left: function( position, data ) {
1428+ var within = data.within,
1429+ withinOffset = within.offset.left + within.scrollLeft,
1430+ outerWidth = within.width,
1431+ offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
1432+ collisionPosLeft = position.left - data.collisionPosition.marginLeft,
1433+ overLeft = collisionPosLeft - offsetLeft,
1434+ overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
1435+ myOffset = data.my[ 0 ] === "left" ?
1436+ -data.elemWidth :
1437+ data.my[ 0 ] === "right" ?
1438+ data.elemWidth :
1439+ 0,
1440+ atOffset = data.at[ 0 ] === "left" ?
1441+ data.targetWidth :
1442+ data.at[ 0 ] === "right" ?
1443+ -data.targetWidth :
1444+ 0,
1445+ offset = -2 * data.offset[ 0 ],
1446+ newOverRight,
1447+ newOverLeft;
1448+
1449+ if ( overLeft < 0 ) {
1450+ newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;
1451+ if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
1452+ position.left += myOffset + atOffset + offset;
1453+ }
1454+ } else if ( overRight > 0 ) {
1455+ newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;
1456+ if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
1457+ position.left += myOffset + atOffset + offset;
1458+ }
1459+ }
1460+ },
1461+ top: function( position, data ) {
1462+ var within = data.within,
1463+ withinOffset = within.offset.top + within.scrollTop,
1464+ outerHeight = within.height,
1465+ offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
1466+ collisionPosTop = position.top - data.collisionPosition.marginTop,
1467+ overTop = collisionPosTop - offsetTop,
1468+ overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
1469+ top = data.my[ 1 ] === "top",
1470+ myOffset = top ?
1471+ -data.elemHeight :
1472+ data.my[ 1 ] === "bottom" ?
1473+ data.elemHeight :
1474+ 0,
1475+ atOffset = data.at[ 1 ] === "top" ?
1476+ data.targetHeight :
1477+ data.at[ 1 ] === "bottom" ?
1478+ -data.targetHeight :
1479+ 0,
1480+ offset = -2 * data.offset[ 1 ],
1481+ newOverTop,
1482+ newOverBottom;
1483+ if ( overTop < 0 ) {
1484+ newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;
1485+ if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
1486+ position.top += myOffset + atOffset + offset;
1487+ }
1488+ } else if ( overBottom > 0 ) {
1489+ newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;
1490+ if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
1491+ position.top += myOffset + atOffset + offset;
1492+ }
1493+ }
1494+ }
1495+ },
1496+ flipfit: {
1497+ left: function() {
1498+ $.ui.position.flip.left.apply( this, arguments );
1499+ $.ui.position.fit.left.apply( this, arguments );
1500+ },
1501+ top: function() {
1502+ $.ui.position.flip.top.apply( this, arguments );
1503+ $.ui.position.fit.top.apply( this, arguments );
1504+ }
1505+ }
1506+};
1507+
1508+// fraction support test
1509+(function() {
1510+ var testElement, testElementParent, testElementStyle, offsetLeft, i,
1511+ body = document.getElementsByTagName( "body" )[ 0 ],
1512+ div = document.createElement( "div" );
1513+
1514+ //Create a "fake body" for testing based on method used in jQuery.support
1515+ testElement = document.createElement( body ? "div" : "body" );
1516+ testElementStyle = {
1517+ visibility: "hidden",
1518+ width: 0,
1519+ height: 0,
1520+ border: 0,
1521+ margin: 0,
1522+ background: "none"
1523+ };
1524+ if ( body ) {
1525+ $.extend( testElementStyle, {
1526+ position: "absolute",
1527+ left: "-1000px",
1528+ top: "-1000px"
1529+ });
1530+ }
1531+ for ( i in testElementStyle ) {
1532+ testElement.style[ i ] = testElementStyle[ i ];
1533+ }
1534+ testElement.appendChild( div );
1535+ testElementParent = body || document.documentElement;
1536+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
1537+
1538+ div.style.cssText = "position: absolute; left: 10.7432222px;";
1539+
1540+ offsetLeft = $( div ).offset().left;
1541+ supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11;
1542+
1543+ testElement.innerHTML = "";
1544+ testElementParent.removeChild( testElement );
1545+})();
1546+
1547+})();
1548+
1549+var position = $.ui.position;
1550+
1551+
1552+/*!
1553+ * jQuery UI Draggable 1.11.4
1554+ * http://jqueryui.com
1555+ *
1556+ * Copyright jQuery Foundation and other contributors
1557+ * Released under the MIT license.
1558+ * http://jquery.org/license
1559+ *
1560+ * http://api.jqueryui.com/draggable/
1561+ */
1562+
1563+
1564+$.widget("ui.draggable", $.ui.mouse, {
1565+ version: "1.11.4",
1566+ widgetEventPrefix: "drag",
1567+ options: {
1568+ addClasses: true,
1569+ appendTo: "parent",
1570+ axis: false,
1571+ connectToSortable: false,
1572+ containment: false,
1573+ cursor: "auto",
1574+ cursorAt: false,
1575+ grid: false,
1576+ handle: false,
1577+ helper: "original",
1578+ iframeFix: false,
1579+ opacity: false,
1580+ refreshPositions: false,
1581+ revert: false,
1582+ revertDuration: 500,
1583+ scope: "default",
1584+ scroll: true,
1585+ scrollSensitivity: 20,
1586+ scrollSpeed: 20,
1587+ snap: false,
1588+ snapMode: "both",
1589+ snapTolerance: 20,
1590+ stack: false,
1591+ zIndex: false,
1592+
1593+ // callbacks
1594+ drag: null,
1595+ start: null,
1596+ stop: null
1597+ },
1598+ _create: function() {
1599+
1600+ if ( this.options.helper === "original" ) {
1601+ this._setPositionRelative();
1602+ }
1603+ if (this.options.addClasses){
1604+ this.element.addClass("ui-draggable");
1605+ }
1606+ if (this.options.disabled){
1607+ this.element.addClass("ui-draggable-disabled");
1608+ }
1609+ this._setHandleClassName();
1610+
1611+ this._mouseInit();
1612+ },
1613+
1614+ _setOption: function( key, value ) {
1615+ this._super( key, value );
1616+ if ( key === "handle" ) {
1617+ this._removeHandleClassName();
1618+ this._setHandleClassName();
1619+ }
1620+ },
1621+
1622+ _destroy: function() {
1623+ if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
1624+ this.destroyOnClear = true;
1625+ return;
1626+ }
1627+ this.element.removeClass( "ui-draggable ui-draggable-dragging ui-draggable-disabled" );
1628+ this._removeHandleClassName();
1629+ this._mouseDestroy();
1630+ },
1631+
1632+ _mouseCapture: function(event) {
1633+ var o = this.options;
1634+
1635+ this._blurActiveElement( event );
1636+
1637+ // among others, prevent a drag on a resizable-handle
1638+ if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
1639+ return false;
1640+ }
1641+
1642+ //Quit if we're not on a valid handle
1643+ this.handle = this._getHandle(event);
1644+ if (!this.handle) {
1645+ return false;
1646+ }
1647+
1648+ this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
1649+
1650+ return true;
1651+
1652+ },
1653+
1654+ _blockFrames: function( selector ) {
1655+ this.iframeBlocks = this.document.find( selector ).map(function() {
1656+ var iframe = $( this );
1657+
1658+ return $( "<div>" )
1659+ .css( "position", "absolute" )
1660+ .appendTo( iframe.parent() )
1661+ .outerWidth( iframe.outerWidth() )
1662+ .outerHeight( iframe.outerHeight() )
1663+ .offset( iframe.offset() )[ 0 ];
1664+ });
1665+ },
1666+
1667+ _unblockFrames: function() {
1668+ if ( this.iframeBlocks ) {
1669+ this.iframeBlocks.remove();
1670+ delete this.iframeBlocks;
1671+ }
1672+ },
1673+
1674+ _blurActiveElement: function( event ) {
1675+ var document = this.document[ 0 ];
1676+
1677+ // Only need to blur if the event occurred on the draggable itself, see #10527
1678+ if ( !this.handleElement.is( event.target ) ) {
1679+ return;
1680+ }
1681+
1682+ // support: IE9
1683+ // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
1684+ try {
1685+
1686+ // Support: IE9, IE10
1687+ // If the <body> is blurred, IE will switch windows, see #9520
1688+ if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) {
1689+
1690+ // Blur any element that currently has focus, see #4261
1691+ $( document.activeElement ).blur();
1692+ }
1693+ } catch ( error ) {}
1694+ },
1695+
1696+ _mouseStart: function(event) {
1697+
1698+ var o = this.options;
1699+
1700+ //Create and append the visible helper
1701+ this.helper = this._createHelper(event);
1702+
1703+ this.helper.addClass("ui-draggable-dragging");
1704+
1705+ //Cache the helper size
1706+ this._cacheHelperProportions();
1707+
1708+ //If ddmanager is used for droppables, set the global draggable
1709+ if ($.ui.ddmanager) {
1710+ $.ui.ddmanager.current = this;
1711+ }
1712+
1713+ /*
1714+ * - Position generation -
1715+ * This block generates everything position related - it's the core of draggables.
1716+ */
1717+
1718+ //Cache the margins of the original element
1719+ this._cacheMargins();
1720+
1721+ //Store the helper's css position
1722+ this.cssPosition = this.helper.css( "position" );
1723+ this.scrollParent = this.helper.scrollParent( true );
1724+ this.offsetParent = this.helper.offsetParent();
1725+ this.hasFixedAncestor = this.helper.parents().filter(function() {
1726+ return $( this ).css( "position" ) === "fixed";
1727+ }).length > 0;
1728+
1729+ //The element's absolute position on the page minus margins
1730+ this.positionAbs = this.element.offset();
1731+ this._refreshOffsets( event );
1732+
1733+ //Generate the original position
1734+ this.originalPosition = this.position = this._generatePosition( event, false );
1735+ this.originalPageX = event.pageX;
1736+ this.originalPageY = event.pageY;
1737+
1738+ //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
1739+ (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt));
1740+
1741+ //Set a containment if given in the options
1742+ this._setContainment();
1743+
1744+ //Trigger event + callbacks
1745+ if (this._trigger("start", event) === false) {
1746+ this._clear();
1747+ return false;
1748+ }
1749+
1750+ //Recache the helper size
1751+ this._cacheHelperProportions();
1752+
1753+ //Prepare the droppable offsets
1754+ if ($.ui.ddmanager && !o.dropBehaviour) {
1755+ $.ui.ddmanager.prepareOffsets(this, event);
1756+ }
1757+
1758+ // Reset helper's right/bottom css if they're set and set explicit width/height instead
1759+ // as this prevents resizing of elements with right/bottom set (see #7772)
1760+ this._normalizeRightBottom();
1761+
1762+ this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
1763+
1764+ //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
1765+ if ( $.ui.ddmanager ) {
1766+ $.ui.ddmanager.dragStart(this, event);
1767+ }
1768+
1769+ return true;
1770+ },
1771+
1772+ _refreshOffsets: function( event ) {
1773+ this.offset = {
1774+ top: this.positionAbs.top - this.margins.top,
1775+ left: this.positionAbs.left - this.margins.left,
1776+ scroll: false,
1777+ parent: this._getParentOffset(),
1778+ relative: this._getRelativeOffset()
1779+ };
1780+
1781+ this.offset.click = {
1782+ left: event.pageX - this.offset.left,
1783+ top: event.pageY - this.offset.top
1784+ };
1785+ },
1786+
1787+ _mouseDrag: function(event, noPropagation) {
1788+ // reset any necessary cached properties (see #5009)
1789+ if ( this.hasFixedAncestor ) {
1790+ this.offset.parent = this._getParentOffset();
1791+ }
1792+
1793+ //Compute the helpers position
1794+ this.position = this._generatePosition( event, true );
1795+ this.positionAbs = this._convertPositionTo("absolute");
1796+
1797+ //Call plugins and callbacks and use the resulting position if something is returned
1798+ if (!noPropagation) {
1799+ var ui = this._uiHash();
1800+ if (this._trigger("drag", event, ui) === false) {
1801+ this._mouseUp({});
1802+ return false;
1803+ }
1804+ this.position = ui.position;
1805+ }
1806+
1807+ this.helper[ 0 ].style.left = this.position.left + "px";
1808+ this.helper[ 0 ].style.top = this.position.top + "px";
1809+
1810+ if ($.ui.ddmanager) {
1811+ $.ui.ddmanager.drag(this, event);
1812+ }
1813+
1814+ return false;
1815+ },
1816+
1817+ _mouseStop: function(event) {
1818+
1819+ //If we are using droppables, inform the manager about the drop
1820+ var that = this,
1821+ dropped = false;
1822+ if ($.ui.ddmanager && !this.options.dropBehaviour) {
1823+ dropped = $.ui.ddmanager.drop(this, event);
1824+ }
1825+
1826+ //if a drop comes from outside (a sortable)
1827+ if (this.dropped) {
1828+ dropped = this.dropped;
1829+ this.dropped = false;
1830+ }
1831+
1832+ if ((this.options.revert === "invalid" && !dropped) || (this.options.revert === "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
1833+ $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
1834+ if (that._trigger("stop", event) !== false) {
1835+ that._clear();
1836+ }
1837+ });
1838+ } else {
1839+ if (this._trigger("stop", event) !== false) {
1840+ this._clear();
1841+ }
1842+ }
1843+
1844+ return false;
1845+ },
1846+
1847+ _mouseUp: function( event ) {
1848+ this._unblockFrames();
1849+
1850+ //If the ddmanager is used for droppables, inform the manager that dragging has stopped (see #5003)
1851+ if ( $.ui.ddmanager ) {
1852+ $.ui.ddmanager.dragStop(this, event);
1853+ }
1854+
1855+ // Only need to focus if the event occurred on the draggable itself, see #10527
1856+ if ( this.handleElement.is( event.target ) ) {
1857+ // The interaction is over; whether or not the click resulted in a drag, focus the element
1858+ this.element.focus();
1859+ }
1860+
1861+ return $.ui.mouse.prototype._mouseUp.call(this, event);
1862+ },
1863+
1864+ cancel: function() {
1865+
1866+ if (this.helper.is(".ui-draggable-dragging")) {
1867+ this._mouseUp({});
1868+ } else {
1869+ this._clear();
1870+ }
1871+
1872+ return this;
1873+
1874+ },
1875+
1876+ _getHandle: function(event) {
1877+ return this.options.handle ?
1878+ !!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
1879+ true;
1880+ },
1881+
1882+ _setHandleClassName: function() {
1883+ this.handleElement = this.options.handle ?
1884+ this.element.find( this.options.handle ) : this.element;
1885+ this.handleElement.addClass( "ui-draggable-handle" );
1886+ },
1887+
1888+ _removeHandleClassName: function() {
1889+ this.handleElement.removeClass( "ui-draggable-handle" );
1890+ },
1891+
1892+ _createHelper: function(event) {
1893+
1894+ var o = this.options,
1895+ helperIsFunction = $.isFunction( o.helper ),
1896+ helper = helperIsFunction ?
1897+ $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
1898+ ( o.helper === "clone" ?
1899+ this.element.clone().removeAttr( "id" ) :
1900+ this.element );
1901+
1902+ if (!helper.parents("body").length) {
1903+ helper.appendTo((o.appendTo === "parent" ? this.element[0].parentNode : o.appendTo));
1904+ }
1905+
1906+ // http://bugs.jqueryui.com/ticket/9446
1907+ // a helper function can return the original element
1908+ // which wouldn't have been set to relative in _create
1909+ if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
1910+ this._setPositionRelative();
1911+ }
1912+
1913+ if (helper[0] !== this.element[0] && !(/(fixed|absolute)/).test(helper.css("position"))) {
1914+ helper.css("position", "absolute");
1915+ }
1916+
1917+ return helper;
1918+
1919+ },
1920+
1921+ _setPositionRelative: function() {
1922+ if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
1923+ this.element[ 0 ].style.position = "relative";
1924+ }
1925+ },
1926+
1927+ _adjustOffsetFromHelper: function(obj) {
1928+ if (typeof obj === "string") {
1929+ obj = obj.split(" ");
1930+ }
1931+ if ($.isArray(obj)) {
1932+ obj = { left: +obj[0], top: +obj[1] || 0 };
1933+ }
1934+ if ("left" in obj) {
1935+ this.offset.click.left = obj.left + this.margins.left;
1936+ }
1937+ if ("right" in obj) {
1938+ this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
1939+ }
1940+ if ("top" in obj) {
1941+ this.offset.click.top = obj.top + this.margins.top;
1942+ }
1943+ if ("bottom" in obj) {
1944+ this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
1945+ }
1946+ },
1947+
1948+ _isRootNode: function( element ) {
1949+ return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
1950+ },
1951+
1952+ _getParentOffset: function() {
1953+
1954+ //Get the offsetParent and cache its position
1955+ var po = this.offsetParent.offset(),
1956+ document = this.document[ 0 ];
1957+
1958+ // This is a special case where we need to modify a offset calculated on start, since the following happened:
1959+ // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent
1960+ // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that
1961+ // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag
1962+ if (this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {
1963+ po.left += this.scrollParent.scrollLeft();
1964+ po.top += this.scrollParent.scrollTop();
1965+ }
1966+
1967+ if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
1968+ po = { top: 0, left: 0 };
1969+ }
1970+
1971+ return {
1972+ top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
1973+ left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
1974+ };
1975+
1976+ },
1977+
1978+ _getRelativeOffset: function() {
1979+ if ( this.cssPosition !== "relative" ) {
1980+ return { top: 0, left: 0 };
1981+ }
1982+
1983+ var p = this.element.position(),
1984+ scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
1985+
1986+ return {
1987+ top: p.top - ( parseInt(this.helper.css( "top" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
1988+ left: p.left - ( parseInt(this.helper.css( "left" ), 10) || 0 ) + ( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
1989+ };
1990+
1991+ },
1992+
1993+ _cacheMargins: function() {
1994+ this.margins = {
1995+ left: (parseInt(this.element.css("marginLeft"), 10) || 0),
1996+ top: (parseInt(this.element.css("marginTop"), 10) || 0),
1997+ right: (parseInt(this.element.css("marginRight"), 10) || 0),
1998+ bottom: (parseInt(this.element.css("marginBottom"), 10) || 0)
1999+ };
2000+ },
2001+
2002+ _cacheHelperProportions: function() {
2003+ this.helperProportions = {
2004+ width: this.helper.outerWidth(),
2005+ height: this.helper.outerHeight()
2006+ };
2007+ },
2008+
2009+ _setContainment: function() {
2010+
2011+ var isUserScrollable, c, ce,
2012+ o = this.options,
2013+ document = this.document[ 0 ];
2014+
2015+ this.relativeContainer = null;
2016+
2017+ if ( !o.containment ) {
2018+ this.containment = null;
2019+ return;
2020+ }
2021+
2022+ if ( o.containment === "window" ) {
2023+ this.containment = [
2024+ $( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
2025+ $( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
2026+ $( window ).scrollLeft() + $( window ).width() - this.helperProportions.width - this.margins.left,
2027+ $( window ).scrollTop() + ( $( window ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
2028+ ];
2029+ return;
2030+ }
2031+
2032+ if ( o.containment === "document") {
2033+ this.containment = [
2034+ 0,
2035+ 0,
2036+ $( document ).width() - this.helperProportions.width - this.margins.left,
2037+ ( $( document ).height() || document.body.parentNode.scrollHeight ) - this.helperProportions.height - this.margins.top
2038+ ];
2039+ return;
2040+ }
2041+
2042+ if ( o.containment.constructor === Array ) {
2043+ this.containment = o.containment;
2044+ return;
2045+ }
2046+
2047+ if ( o.containment === "parent" ) {
2048+ o.containment = this.helper[ 0 ].parentNode;
2049+ }
2050+
2051+ c = $( o.containment );
2052+ ce = c[ 0 ];
2053+
2054+ if ( !ce ) {
2055+ return;
2056+ }
2057+
2058+ isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
2059+
2060+ this.containment = [
2061+ ( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
2062+ ( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) + ( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
2063+ ( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
2064+ ( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
2065+ ( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
2066+ this.helperProportions.width -
2067+ this.margins.left -
2068+ this.margins.right,
2069+ ( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
2070+ ( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
2071+ ( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
2072+ this.helperProportions.height -
2073+ this.margins.top -
2074+ this.margins.bottom
2075+ ];
2076+ this.relativeContainer = c;
2077+ },
2078+
2079+ _convertPositionTo: function(d, pos) {
2080+
2081+ if (!pos) {
2082+ pos = this.position;
2083+ }
2084+
2085+ var mod = d === "absolute" ? 1 : -1,
2086+ scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
2087+
2088+ return {
2089+ top: (
2090+ pos.top + // The absolute mouse position
2091+ this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
2092+ this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border)
2093+ ( ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod)
2094+ ),
2095+ left: (
2096+ pos.left + // The absolute mouse position
2097+ this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent
2098+ this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border)
2099+ ( ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod)
2100+ )
2101+ };
2102+
2103+ },
2104+
2105+ _generatePosition: function( event, constrainPosition ) {
2106+
2107+ var containment, co, top, left,
2108+ o = this.options,
2109+ scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
2110+ pageX = event.pageX,
2111+ pageY = event.pageY;
2112+
2113+ // Cache the scroll
2114+ if ( !scrollIsRootNode || !this.offset.scroll ) {
2115+ this.offset.scroll = {
2116+ top: this.scrollParent.scrollTop(),
2117+ left: this.scrollParent.scrollLeft()
2118+ };
2119+ }
2120+
2121+ /*
2122+ * - Position constraining -
2123+ * Constrain the position to a mix of grid, containment.
2124+ */
2125+
2126+ // If we are not dragging yet, we won't check for options
2127+ if ( constrainPosition ) {
2128+ if ( this.containment ) {
2129+ if ( this.relativeContainer ){
2130+ co = this.relativeContainer.offset();
2131+ containment = [
2132+ this.containment[ 0 ] + co.left,
2133+ this.containment[ 1 ] + co.top,
2134+ this.containment[ 2 ] + co.left,
2135+ this.containment[ 3 ] + co.top
2136+ ];
2137+ } else {
2138+ containment = this.containment;
2139+ }
2140+
2141+ if (event.pageX - this.offset.click.left < containment[0]) {
2142+ pageX = containment[0] + this.offset.click.left;
2143+ }
2144+ if (event.pageY - this.offset.click.top < containment[1]) {
2145+ pageY = containment[1] + this.offset.click.top;
2146+ }
2147+ if (event.pageX - this.offset.click.left > containment[2]) {
2148+ pageX = containment[2] + this.offset.click.left;
2149+ }
2150+ if (event.pageY - this.offset.click.top > containment[3]) {
2151+ pageY = containment[3] + this.offset.click.top;
2152+ }
2153+ }
2154+
2155+ if (o.grid) {
2156+ //Check for grid elements set to 0 to prevent divide by 0 error causing invalid argument errors in IE (see ticket #6950)
2157+ top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;
2158+ pageY = containment ? ((top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3]) ? top : ((top - this.offset.click.top >= containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;
2159+
2160+ left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;
2161+ pageX = containment ? ((left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2]) ? left : ((left - this.offset.click.left >= containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;
2162+ }
2163+
2164+ if ( o.axis === "y" ) {
2165+ pageX = this.originalPageX;
2166+ }
2167+
2168+ if ( o.axis === "x" ) {
2169+ pageY = this.originalPageY;
2170+ }
2171+ }
2172+
2173+ return {
2174+ top: (
2175+ pageY - // The absolute mouse position
2176+ this.offset.click.top - // Click offset (relative to the element)
2177+ this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent
2178+ this.offset.parent.top + // The offsetParent's offset without borders (offset + border)
2179+ ( this.cssPosition === "fixed" ? -this.offset.scroll.top : ( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
2180+ ),
2181+ left: (
2182+ pageX - // The absolute mouse position
2183+ this.offset.click.left - // Click offset (relative to the element)
2184+ this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent
2185+ this.offset.parent.left + // The offsetParent's offset without borders (offset + border)
2186+ ( this.cssPosition === "fixed" ? -this.offset.scroll.left : ( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
2187+ )
2188+ };
2189+
2190+ },
2191+
2192+ _clear: function() {
2193+ this.helper.removeClass("ui-draggable-dragging");
2194+ if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {
2195+ this.helper.remove();
2196+ }
2197+ this.helper = null;
2198+ this.cancelHelperRemoval = false;
2199+ if ( this.destroyOnClear ) {
2200+ this.destroy();
2201+ }
2202+ },
2203+
2204+ _normalizeRightBottom: function() {
2205+ if ( this.options.axis !== "y" && this.helper.css( "right" ) !== "auto" ) {
2206+ this.helper.width( this.helper.width() );
2207+ this.helper.css( "right", "auto" );
2208+ }
2209+ if ( this.options.axis !== "x" && this.helper.css( "bottom" ) !== "auto" ) {
2210+ this.helper.height( this.helper.height() );
2211+ this.helper.css( "bottom", "auto" );
2212+ }
2213+ },
2214+
2215+ // From now on bulk stuff - mainly helpers
2216+
2217+ _trigger: function( type, event, ui ) {
2218+ ui = ui || this._uiHash();
2219+ $.ui.plugin.call( this, type, [ event, ui, this ], true );
2220+
2221+ // Absolute position and offset (see #6884 ) have to be recalculated after plugins
2222+ if ( /^(drag|start|stop)/.test( type ) ) {
2223+ this.positionAbs = this._convertPositionTo( "absolute" );
2224+ ui.offset = this.positionAbs;
2225+ }
2226+ return $.Widget.prototype._trigger.call( this, type, event, ui );
2227+ },
2228+
2229+ plugins: {},
2230+
2231+ _uiHash: function() {
2232+ return {
2233+ helper: this.helper,
2234+ position: this.position,
2235+ originalPosition: this.originalPosition,
2236+ offset: this.positionAbs
2237+ };
2238+ }
2239+
2240+});
2241+
2242+$.ui.plugin.add( "draggable", "connectToSortable", {
2243+ start: function( event, ui, draggable ) {
2244+ var uiSortable = $.extend( {}, ui, {
2245+ item: draggable.element
2246+ });
2247+
2248+ draggable.sortables = [];
2249+ $( draggable.options.connectToSortable ).each(function() {
2250+ var sortable = $( this ).sortable( "instance" );
2251+
2252+ if ( sortable && !sortable.options.disabled ) {
2253+ draggable.sortables.push( sortable );
2254+
2255+ // refreshPositions is called at drag start to refresh the containerCache
2256+ // which is used in drag. This ensures it's initialized and synchronized
2257+ // with any changes that might have happened on the page since initialization.
2258+ sortable.refreshPositions();
2259+ sortable._trigger("activate", event, uiSortable);
2260+ }
2261+ });
2262+ },
2263+ stop: function( event, ui, draggable ) {
2264+ var uiSortable = $.extend( {}, ui, {
2265+ item: draggable.element
2266+ });
2267+
2268+ draggable.cancelHelperRemoval = false;
2269+
2270+ $.each( draggable.sortables, function() {
2271+ var sortable = this;
2272+
2273+ if ( sortable.isOver ) {
2274+ sortable.isOver = 0;
2275+
2276+ // Allow this sortable to handle removing the helper
2277+ draggable.cancelHelperRemoval = true;
2278+ sortable.cancelHelperRemoval = false;
2279+
2280+ // Use _storedCSS To restore properties in the sortable,
2281+ // as this also handles revert (#9675) since the draggable
2282+ // may have modified them in unexpected ways (#8809)
2283+ sortable._storedCSS = {
2284+ position: sortable.placeholder.css( "position" ),
2285+ top: sortable.placeholder.css( "top" ),
2286+ left: sortable.placeholder.css( "left" )
2287+ };
2288+
2289+ sortable._mouseStop(event);
2290+
2291+ // Once drag has ended, the sortable should return to using
2292+ // its original helper, not the shared helper from draggable
2293+ sortable.options.helper = sortable.options._helper;
2294+ } else {
2295+ // Prevent this Sortable from removing the helper.
2296+ // However, don't set the draggable to remove the helper
2297+ // either as another connected Sortable may yet handle the removal.
2298+ sortable.cancelHelperRemoval = true;
2299+
2300+ sortable._trigger( "deactivate", event, uiSortable );
2301+ }
2302+ });
2303+ },
2304+ drag: function( event, ui, draggable ) {
2305+ $.each( draggable.sortables, function() {
2306+ var innermostIntersecting = false,
2307+ sortable = this;
2308+
2309+ // Copy over variables that sortable's _intersectsWith uses
2310+ sortable.positionAbs = draggable.positionAbs;
2311+ sortable.helperProportions = draggable.helperProportions;
2312+ sortable.offset.click = draggable.offset.click;
2313+
2314+ if ( sortable._intersectsWith( sortable.containerCache ) ) {
2315+ innermostIntersecting = true;
2316+
2317+ $.each( draggable.sortables, function() {
2318+ // Copy over variables that sortable's _intersectsWith uses
2319+ this.positionAbs = draggable.positionAbs;
2320+ this.helperProportions = draggable.helperProportions;
2321+ this.offset.click = draggable.offset.click;
2322+
2323+ if ( this !== sortable &&
2324+ this._intersectsWith( this.containerCache ) &&
2325+ $.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
2326+ innermostIntersecting = false;
2327+ }
2328+
2329+ return innermostIntersecting;
2330+ });
2331+ }
2332+
2333+ if ( innermostIntersecting ) {
2334+ // If it intersects, we use a little isOver variable and set it once,
2335+ // so that the move-in stuff gets fired only once.
2336+ if ( !sortable.isOver ) {
2337+ sortable.isOver = 1;
2338+
2339+ // Store draggable's parent in case we need to reappend to it later.
2340+ draggable._parent = ui.helper.parent();
2341+
2342+ sortable.currentItem = ui.helper
2343+ .appendTo( sortable.element )
2344+ .data( "ui-sortable-item", true );
2345+
2346+ // Store helper option to later restore it
2347+ sortable.options._helper = sortable.options.helper;
2348+
2349+ sortable.options.helper = function() {
2350+ return ui.helper[ 0 ];
2351+ };
2352+
2353+ // Fire the start events of the sortable with our passed browser event,
2354+ // and our own helper (so it doesn't create a new one)
2355+ event.target = sortable.currentItem[ 0 ];
2356+ sortable._mouseCapture( event, true );
2357+ sortable._mouseStart( event, true, true );
2358+
2359+ // Because the browser event is way off the new appended portlet,
2360+ // modify necessary variables to reflect the changes
2361+ sortable.offset.click.top = draggable.offset.click.top;
2362+ sortable.offset.click.left = draggable.offset.click.left;
2363+ sortable.offset.parent.left -= draggable.offset.parent.left -
2364+ sortable.offset.parent.left;
2365+ sortable.offset.parent.top -= draggable.offset.parent.top -
2366+ sortable.offset.parent.top;
2367+
2368+ draggable._trigger( "toSortable", event );
2369+
2370+ // Inform draggable that the helper is in a valid drop zone,
2371+ // used solely in the revert option to handle "valid/invalid".
2372+ draggable.dropped = sortable.element;
2373+
2374+ // Need to refreshPositions of all sortables in the case that
2375+ // adding to one sortable changes the location of the other sortables (#9675)
2376+ $.each( draggable.sortables, function() {
2377+ this.refreshPositions();
2378+ });
2379+
2380+ // hack so receive/update callbacks work (mostly)
2381+ draggable.currentItem = draggable.element;
2382+ sortable.fromOutside = draggable;
2383+ }
2384+
2385+ if ( sortable.currentItem ) {
2386+ sortable._mouseDrag( event );
2387+ // Copy the sortable's position because the draggable's can potentially reflect
2388+ // a relative position, while sortable is always absolute, which the dragged
2389+ // element has now become. (#8809)
2390+ ui.position = sortable.position;
2391+ }
2392+ } else {
2393+ // If it doesn't intersect with the sortable, and it intersected before,
2394+ // we fake the drag stop of the sortable, but make sure it doesn't remove
2395+ // the helper by using cancelHelperRemoval.
2396+ if ( sortable.isOver ) {
2397+
2398+ sortable.isOver = 0;
2399+ sortable.cancelHelperRemoval = true;
2400+
2401+ // Calling sortable's mouseStop would trigger a revert,
2402+ // so revert must be temporarily false until after mouseStop is called.
2403+ sortable.options._revert = sortable.options.revert;
2404+ sortable.options.revert = false;
2405+
2406+ sortable._trigger( "out", event, sortable._uiHash( sortable ) );
2407+ sortable._mouseStop( event, true );
2408+
2409+ // restore sortable behaviors that were modfied
2410+ // when the draggable entered the sortable area (#9481)
2411+ sortable.options.revert = sortable.options._revert;
2412+ sortable.options.helper = sortable.options._helper;
2413+
2414+ if ( sortable.placeholder ) {
2415+ sortable.placeholder.remove();
2416+ }
2417+
2418+ // Restore and recalculate the draggable's offset considering the sortable
2419+ // may have modified them in unexpected ways. (#8809, #10669)
2420+ ui.helper.appendTo( draggable._parent );
2421+ draggable._refreshOffsets( event );
2422+ ui.position = draggable._generatePosition( event, true );
2423+
2424+ draggable._trigger( "fromSortable", event );
2425+
2426+ // Inform draggable that the helper is no longer in a valid drop zone
2427+ draggable.dropped = false;
2428+
2429+ // Need to refreshPositions of all sortables just in case removing
2430+ // from one sortable changes the location of other sortables (#9675)
2431+ $.each( draggable.sortables, function() {
2432+ this.refreshPositions();
2433+ });
2434+ }
2435+ }
2436+ });
2437+ }
2438+});
2439+
2440+$.ui.plugin.add("draggable", "cursor", {
2441+ start: function( event, ui, instance ) {
2442+ var t = $( "body" ),
2443+ o = instance.options;
2444+
2445+ if (t.css("cursor")) {
2446+ o._cursor = t.css("cursor");
2447+ }
2448+ t.css("cursor", o.cursor);
2449+ },
2450+ stop: function( event, ui, instance ) {
2451+ var o = instance.options;
2452+ if (o._cursor) {
2453+ $("body").css("cursor", o._cursor);
2454+ }
2455+ }
2456+});
2457+
2458+$.ui.plugin.add("draggable", "opacity", {
2459+ start: function( event, ui, instance ) {
2460+ var t = $( ui.helper ),
2461+ o = instance.options;
2462+ if (t.css("opacity")) {
2463+ o._opacity = t.css("opacity");
2464+ }
2465+ t.css("opacity", o.opacity);
2466+ },
2467+ stop: function( event, ui, instance ) {
2468+ var o = instance.options;
2469+ if (o._opacity) {
2470+ $(ui.helper).css("opacity", o._opacity);
2471+ }
2472+ }
2473+});
2474+
2475+$.ui.plugin.add("draggable", "scroll", {
2476+ start: function( event, ui, i ) {
2477+ if ( !i.scrollParentNotHidden ) {
2478+ i.scrollParentNotHidden = i.helper.scrollParent( false );
2479+ }
2480+
2481+ if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] && i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
2482+ i.overflowOffset = i.scrollParentNotHidden.offset();
2483+ }
2484+ },
2485+ drag: function( event, ui, i ) {
2486+
2487+ var o = i.options,
2488+ scrolled = false,
2489+ scrollParent = i.scrollParentNotHidden[ 0 ],
2490+ document = i.document[ 0 ];
2491+
2492+ if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
2493+ if ( !o.axis || o.axis !== "x" ) {
2494+ if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY < o.scrollSensitivity ) {
2495+ scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
2496+ } else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
2497+ scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
2498+ }
2499+ }
2500+
2501+ if ( !o.axis || o.axis !== "y" ) {
2502+ if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX < o.scrollSensitivity ) {
2503+ scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
2504+ } else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
2505+ scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
2506+ }
2507+ }
2508+
2509+ } else {
2510+
2511+ if (!o.axis || o.axis !== "x") {
2512+ if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
2513+ scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
2514+ } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
2515+ scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
2516+ }
2517+ }
2518+
2519+ if (!o.axis || o.axis !== "y") {
2520+ if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {
2521+ scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);
2522+ } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {
2523+ scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);
2524+ }
2525+ }
2526+
2527+ }
2528+
2529+ if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
2530+ $.ui.ddmanager.prepareOffsets(i, event);
2531+ }
2532+
2533+ }
2534+});
2535+
2536+$.ui.plugin.add("draggable", "snap", {
2537+ start: function( event, ui, i ) {
2538+
2539+ var o = i.options;
2540+
2541+ i.snapElements = [];
2542+
2543+ $(o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap).each(function() {
2544+ var $t = $(this),
2545+ $o = $t.offset();
2546+ if (this !== i.element[0]) {
2547+ i.snapElements.push({
2548+ item: this,
2549+ width: $t.outerWidth(), height: $t.outerHeight(),
2550+ top: $o.top, left: $o.left
2551+ });
2552+ }
2553+ });
2554+
2555+ },
2556+ drag: function( event, ui, inst ) {
2557+
2558+ var ts, bs, ls, rs, l, r, t, b, i, first,
2559+ o = inst.options,
2560+ d = o.snapTolerance,
2561+ x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
2562+ y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
2563+
2564+ for (i = inst.snapElements.length - 1; i >= 0; i--){
2565+
2566+ l = inst.snapElements[i].left - inst.margins.left;
2567+ r = l + inst.snapElements[i].width;
2568+ t = inst.snapElements[i].top - inst.margins.top;
2569+ b = t + inst.snapElements[i].height;
2570+
2571+ if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains( inst.snapElements[ i ].item.ownerDocument, inst.snapElements[ i ].item ) ) {
2572+ if (inst.snapElements[i].snapping) {
2573+ (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
2574+ }
2575+ inst.snapElements[i].snapping = false;
2576+ continue;
2577+ }
2578+
2579+ if (o.snapMode !== "inner") {
2580+ ts = Math.abs(t - y2) <= d;
2581+ bs = Math.abs(b - y1) <= d;
2582+ ls = Math.abs(l - x2) <= d;
2583+ rs = Math.abs(r - x1) <= d;
2584+ if (ts) {
2585+ ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top;
2586+ }
2587+ if (bs) {
2588+ ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top;
2589+ }
2590+ if (ls) {
2591+ ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left;
2592+ }
2593+ if (rs) {
2594+ ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left;
2595+ }
2596+ }
2597+
2598+ first = (ts || bs || ls || rs);
2599+
2600+ if (o.snapMode !== "outer") {
2601+ ts = Math.abs(t - y1) <= d;
2602+ bs = Math.abs(b - y2) <= d;
2603+ ls = Math.abs(l - x1) <= d;
2604+ rs = Math.abs(r - x2) <= d;
2605+ if (ts) {
2606+ ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top;
2607+ }
2608+ if (bs) {
2609+ ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top;
2610+ }
2611+ if (ls) {
2612+ ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left;
2613+ }
2614+ if (rs) {
2615+ ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left;
2616+ }
2617+ }
2618+
2619+ if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {
2620+ (inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));
2621+ }
2622+ inst.snapElements[i].snapping = (ts || bs || ls || rs || first);
2623+
2624+ }
2625+
2626+ }
2627+});
2628+
2629+$.ui.plugin.add("draggable", "stack", {
2630+ start: function( event, ui, instance ) {
2631+ var min,
2632+ o = instance.options,
2633+ group = $.makeArray($(o.stack)).sort(function(a, b) {
2634+ return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0);
2635+ });
2636+
2637+ if (!group.length) { return; }
2638+
2639+ min = parseInt($(group[0]).css("zIndex"), 10) || 0;
2640+ $(group).each(function(i) {
2641+ $(this).css("zIndex", min + i);
2642+ });
2643+ this.css("zIndex", (min + group.length));
2644+ }
2645+});
2646+
2647+$.ui.plugin.add("draggable", "zIndex", {
2648+ start: function( event, ui, instance ) {
2649+ var t = $( ui.helper ),
2650+ o = instance.options;
2651+
2652+ if (t.css("zIndex")) {
2653+ o._zIndex = t.css("zIndex");
2654+ }
2655+ t.css("zIndex", o.zIndex);
2656+ },
2657+ stop: function( event, ui, instance ) {
2658+ var o = instance.options;
2659+
2660+ if (o._zIndex) {
2661+ $(ui.helper).css("zIndex", o._zIndex);
2662+ }
2663+ }
2664+});
2665+
2666+var draggable = $.ui.draggable;
2667+
2668+
2669+/*!
2670+ * jQuery UI Droppable 1.11.4
2671+ * http://jqueryui.com
2672+ *
2673+ * Copyright jQuery Foundation and other contributors
2674+ * Released under the MIT license.
2675+ * http://jquery.org/license
2676+ *
2677+ * http://api.jqueryui.com/droppable/
2678+ */
2679+
2680+
2681+$.widget( "ui.droppable", {
2682+ version: "1.11.4",
2683+ widgetEventPrefix: "drop",
2684+ options: {
2685+ accept: "*",
2686+ activeClass: false,
2687+ addClasses: true,
2688+ greedy: false,
2689+ hoverClass: false,
2690+ scope: "default",
2691+ tolerance: "intersect",
2692+
2693+ // callbacks
2694+ activate: null,
2695+ deactivate: null,
2696+ drop: null,
2697+ out: null,
2698+ over: null
2699+ },
2700+ _create: function() {
2701+
2702+ var proportions,
2703+ o = this.options,
2704+ accept = o.accept;
2705+
2706+ this.isover = false;
2707+ this.isout = true;
2708+
2709+ this.accept = $.isFunction( accept ) ? accept : function( d ) {
2710+ return d.is( accept );
2711+ };
2712+
2713+ this.proportions = function( /* valueToWrite */ ) {
2714+ if ( arguments.length ) {
2715+ // Store the droppable's proportions
2716+ proportions = arguments[ 0 ];
2717+ } else {
2718+ // Retrieve or derive the droppable's proportions
2719+ return proportions ?
2720+ proportions :
2721+ proportions = {
2722+ width: this.element[ 0 ].offsetWidth,
2723+ height: this.element[ 0 ].offsetHeight
2724+ };
2725+ }
2726+ };
2727+
2728+ this._addToManager( o.scope );
2729+
2730+ o.addClasses && this.element.addClass( "ui-droppable" );
2731+
2732+ },
2733+
2734+ _addToManager: function( scope ) {
2735+ // Add the reference and positions to the manager
2736+ $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
2737+ $.ui.ddmanager.droppables[ scope ].push( this );
2738+ },
2739+
2740+ _splice: function( drop ) {
2741+ var i = 0;
2742+ for ( ; i < drop.length; i++ ) {
2743+ if ( drop[ i ] === this ) {
2744+ drop.splice( i, 1 );
2745+ }
2746+ }
2747+ },
2748+
2749+ _destroy: function() {
2750+ var drop = $.ui.ddmanager.droppables[ this.options.scope ];
2751+
2752+ this._splice( drop );
2753+
2754+ this.element.removeClass( "ui-droppable ui-droppable-disabled" );
2755+ },
2756+
2757+ _setOption: function( key, value ) {
2758+
2759+ if ( key === "accept" ) {
2760+ this.accept = $.isFunction( value ) ? value : function( d ) {
2761+ return d.is( value );
2762+ };
2763+ } else if ( key === "scope" ) {
2764+ var drop = $.ui.ddmanager.droppables[ this.options.scope ];
2765+
2766+ this._splice( drop );
2767+ this._addToManager( value );
2768+ }
2769+
2770+ this._super( key, value );
2771+ },
2772+
2773+ _activate: function( event ) {
2774+ var draggable = $.ui.ddmanager.current;
2775+ if ( this.options.activeClass ) {
2776+ this.element.addClass( this.options.activeClass );
2777+ }
2778+ if ( draggable ){
2779+ this._trigger( "activate", event, this.ui( draggable ) );
2780+ }
2781+ },
2782+
2783+ _deactivate: function( event ) {
2784+ var draggable = $.ui.ddmanager.current;
2785+ if ( this.options.activeClass ) {
2786+ this.element.removeClass( this.options.activeClass );
2787+ }
2788+ if ( draggable ){
2789+ this._trigger( "deactivate", event, this.ui( draggable ) );
2790+ }
2791+ },
2792+
2793+ _over: function( event ) {
2794+
2795+ var draggable = $.ui.ddmanager.current;
2796+
2797+ // Bail if draggable and droppable are same element
2798+ if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
2799+ return;
2800+ }
2801+
2802+ if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
2803+ if ( this.options.hoverClass ) {
2804+ this.element.addClass( this.options.hoverClass );
2805+ }
2806+ this._trigger( "over", event, this.ui( draggable ) );
2807+ }
2808+
2809+ },
2810+
2811+ _out: function( event ) {
2812+
2813+ var draggable = $.ui.ddmanager.current;
2814+
2815+ // Bail if draggable and droppable are same element
2816+ if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
2817+ return;
2818+ }
2819+
2820+ if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
2821+ if ( this.options.hoverClass ) {
2822+ this.element.removeClass( this.options.hoverClass );
2823+ }
2824+ this._trigger( "out", event, this.ui( draggable ) );
2825+ }
2826+
2827+ },
2828+
2829+ _drop: function( event, custom ) {
2830+
2831+ var draggable = custom || $.ui.ddmanager.current,
2832+ childrenIntersection = false;
2833+
2834+ // Bail if draggable and droppable are same element
2835+ if ( !draggable || ( draggable.currentItem || draggable.element )[ 0 ] === this.element[ 0 ] ) {
2836+ return false;
2837+ }
2838+
2839+ this.element.find( ":data(ui-droppable)" ).not( ".ui-draggable-dragging" ).each(function() {
2840+ var inst = $( this ).droppable( "instance" );
2841+ if (
2842+ inst.options.greedy &&
2843+ !inst.options.disabled &&
2844+ inst.options.scope === draggable.options.scope &&
2845+ inst.accept.call( inst.element[ 0 ], ( draggable.currentItem || draggable.element ) ) &&
2846+ $.ui.intersect( draggable, $.extend( inst, { offset: inst.element.offset() } ), inst.options.tolerance, event )
2847+ ) { childrenIntersection = true; return false; }
2848+ });
2849+ if ( childrenIntersection ) {
2850+ return false;
2851+ }
2852+
2853+ if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
2854+ if ( this.options.activeClass ) {
2855+ this.element.removeClass( this.options.activeClass );
2856+ }
2857+ if ( this.options.hoverClass ) {
2858+ this.element.removeClass( this.options.hoverClass );
2859+ }
2860+ this._trigger( "drop", event, this.ui( draggable ) );
2861+ return this.element;
2862+ }
2863+
2864+ return false;
2865+
2866+ },
2867+
2868+ ui: function( c ) {
2869+ return {
2870+ draggable: ( c.currentItem || c.element ),
2871+ helper: c.helper,
2872+ position: c.position,
2873+ offset: c.positionAbs
2874+ };
2875+ }
2876+
2877+});
2878+
2879+$.ui.intersect = (function() {
2880+ function isOverAxis( x, reference, size ) {
2881+ return ( x >= reference ) && ( x < ( reference + size ) );
2882+ }
2883+
2884+ return function( draggable, droppable, toleranceMode, event ) {
2885+
2886+ if ( !droppable.offset ) {
2887+ return false;
2888+ }
2889+
2890+ var x1 = ( draggable.positionAbs || draggable.position.absolute ).left + draggable.margins.left,
2891+ y1 = ( draggable.positionAbs || draggable.position.absolute ).top + draggable.margins.top,
2892+ x2 = x1 + draggable.helperProportions.width,
2893+ y2 = y1 + draggable.helperProportions.height,
2894+ l = droppable.offset.left,
2895+ t = droppable.offset.top,
2896+ r = l + droppable.proportions().width,
2897+ b = t + droppable.proportions().height;
2898+
2899+ switch ( toleranceMode ) {
2900+ case "fit":
2901+ return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
2902+ case "intersect":
2903+ return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
2904+ x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
2905+ t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
2906+ y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
2907+ case "pointer":
2908+ return isOverAxis( event.pageY, t, droppable.proportions().height ) && isOverAxis( event.pageX, l, droppable.proportions().width );
2909+ case "touch":
2910+ return (
2911+ ( y1 >= t && y1 <= b ) || // Top edge touching
2912+ ( y2 >= t && y2 <= b ) || // Bottom edge touching
2913+ ( y1 < t && y2 > b ) // Surrounded vertically
2914+ ) && (
2915+ ( x1 >= l && x1 <= r ) || // Left edge touching
2916+ ( x2 >= l && x2 <= r ) || // Right edge touching
2917+ ( x1 < l && x2 > r ) // Surrounded horizontally
2918+ );
2919+ default:
2920+ return false;
2921+ }
2922+ };
2923+})();
2924+
2925+/*
2926+ This manager tracks offsets of draggables and droppables
2927+*/
2928+$.ui.ddmanager = {
2929+ current: null,
2930+ droppables: { "default": [] },
2931+ prepareOffsets: function( t, event ) {
2932+
2933+ var i, j,
2934+ m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
2935+ type = event ? event.type : null, // workaround for #2317
2936+ list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
2937+
2938+ droppablesLoop: for ( i = 0; i < m.length; i++ ) {
2939+
2940+ // No disabled and non-accepted
2941+ if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], ( t.currentItem || t.element ) ) ) ) {
2942+ continue;
2943+ }
2944+
2945+ // Filter out elements in the current dragged item
2946+ for ( j = 0; j < list.length; j++ ) {
2947+ if ( list[ j ] === m[ i ].element[ 0 ] ) {
2948+ m[ i ].proportions().height = 0;
2949+ continue droppablesLoop;
2950+ }
2951+ }
2952+
2953+ m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
2954+ if ( !m[ i ].visible ) {
2955+ continue;
2956+ }
2957+
2958+ // Activate the droppable if used directly from draggables
2959+ if ( type === "mousedown" ) {
2960+ m[ i ]._activate.call( m[ i ], event );
2961+ }
2962+
2963+ m[ i ].offset = m[ i ].element.offset();
2964+ m[ i ].proportions({ width: m[ i ].element[ 0 ].offsetWidth, height: m[ i ].element[ 0 ].offsetHeight });
2965+
2966+ }
2967+
2968+ },
2969+ drop: function( draggable, event ) {
2970+
2971+ var dropped = false;
2972+ // Create a copy of the droppables in case the list changes during the drop (#9116)
2973+ $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
2974+
2975+ if ( !this.options ) {
2976+ return;
2977+ }
2978+ if ( !this.options.disabled && this.visible && $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
2979+ dropped = this._drop.call( this, event ) || dropped;
2980+ }
2981+
2982+ if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], ( draggable.currentItem || draggable.element ) ) ) {
2983+ this.isout = true;
2984+ this.isover = false;
2985+ this._deactivate.call( this, event );
2986+ }
2987+
2988+ });
2989+ return dropped;
2990+
2991+ },
2992+ dragStart: function( draggable, event ) {
2993+ // Listen for scrolling so that if the dragging causes scrolling the position of the droppables can be recalculated (see #5003)
2994+ draggable.element.parentsUntil( "body" ).bind( "scroll.droppable", function() {
2995+ if ( !draggable.options.refreshPositions ) {
2996+ $.ui.ddmanager.prepareOffsets( draggable, event );
2997+ }
2998+ });
2999+ },
3000+ drag: function( draggable, event ) {
3001+
3002+ // If you have a highly dynamic page, you might try this option. It renders positions every time you move the mouse.
3003+ if ( draggable.options.refreshPositions ) {
3004+ $.ui.ddmanager.prepareOffsets( draggable, event );
3005+ }
3006+
3007+ // Run through all droppables and check their positions based on specific tolerance options
3008+ $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
3009+
3010+ if ( this.options.disabled || this.greedyChild || !this.visible ) {
3011+ return;
3012+ }
3013+
3014+ var parentInstance, scope, parent,
3015+ intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
3016+ c = !intersects && this.isover ? "isout" : ( intersects && !this.isover ? "isover" : null );
3017+ if ( !c ) {
3018+ return;
3019+ }
3020+
3021+ if ( this.options.greedy ) {
3022+ // find droppable parents with same scope
3023+ scope = this.options.scope;
3024+ parent = this.element.parents( ":data(ui-droppable)" ).filter(function() {
3025+ return $( this ).droppable( "instance" ).options.scope === scope;
3026+ });
3027+
3028+ if ( parent.length ) {
3029+ parentInstance = $( parent[ 0 ] ).droppable( "instance" );
3030+ parentInstance.greedyChild = ( c === "isover" );
3031+ }
3032+ }
3033+
3034+ // we just moved into a greedy child
3035+ if ( parentInstance && c === "isover" ) {
3036+ parentInstance.isover = false;
3037+ parentInstance.isout = true;
3038+ parentInstance._out.call( parentInstance, event );
3039+ }
3040+
3041+ this[ c ] = true;
3042+ this[c === "isout" ? "isover" : "isout"] = false;
3043+ this[c === "isover" ? "_over" : "_out"].call( this, event );
3044+
3045+ // we just moved out of a greedy child
3046+ if ( parentInstance && c === "isout" ) {
3047+ parentInstance.isout = false;
3048+ parentInstance.isover = true;
3049+ parentInstance._over.call( parentInstance, event );
3050+ }
3051+ });
3052+
3053+ },
3054+ dragStop: function( draggable, event ) {
3055+ draggable.element.parentsUntil( "body" ).unbind( "scroll.droppable" );
3056+ // Call prepareOffsets one final time since IE does not fire return scroll events when overflow was caused by drag (see #5003)
3057+ if ( !draggable.options.refreshPositions ) {
3058+ $.ui.ddmanager.prepareOffsets( draggable, event );
3059+ }
3060+ }
3061+};
3062+
3063+var droppable = $.ui.droppable;
3064+
3065+
3066+/*!
3067+ * jQuery UI Resizable 1.11.4
3068+ * http://jqueryui.com
3069+ *
3070+ * Copyright jQuery Foundation and other contributors
3071+ * Released under the MIT license.
3072+ * http://jquery.org/license
3073+ *
3074+ * http://api.jqueryui.com/resizable/
3075+ */
3076+
3077+
3078+$.widget("ui.resizable", $.ui.mouse, {
3079+ version: "1.11.4",
3080+ widgetEventPrefix: "resize",
3081+ options: {
3082+ alsoResize: false,
3083+ animate: false,
3084+ animateDuration: "slow",
3085+ animateEasing: "swing",
3086+ aspectRatio: false,
3087+ autoHide: false,
3088+ containment: false,
3089+ ghost: false,
3090+ grid: false,
3091+ handles: "e,s,se",
3092+ helper: false,
3093+ maxHeight: null,
3094+ maxWidth: null,
3095+ minHeight: 10,
3096+ minWidth: 10,
3097+ // See #7960
3098+ zIndex: 90,
3099+
3100+ // callbacks
3101+ resize: null,
3102+ start: null,
3103+ stop: null
3104+ },
3105+
3106+ _num: function( value ) {
3107+ return parseInt( value, 10 ) || 0;
3108+ },
3109+
3110+ _isNumber: function( value ) {
3111+ return !isNaN( parseInt( value, 10 ) );
3112+ },
3113+
3114+ _hasScroll: function( el, a ) {
3115+
3116+ if ( $( el ).css( "overflow" ) === "hidden") {
3117+ return false;
3118+ }
3119+
3120+ var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
3121+ has = false;
3122+
3123+ if ( el[ scroll ] > 0 ) {
3124+ return true;
3125+ }
3126+
3127+ // TODO: determine which cases actually cause this to happen
3128+ // if the element doesn't have the scroll set, see if it's possible to
3129+ // set the scroll
3130+ el[ scroll ] = 1;
3131+ has = ( el[ scroll ] > 0 );
3132+ el[ scroll ] = 0;
3133+ return has;
3134+ },
3135+
3136+ _create: function() {
3137+
3138+ var n, i, handle, axis, hname,
3139+ that = this,
3140+ o = this.options;
3141+ this.element.addClass("ui-resizable");
3142+
3143+ $.extend(this, {
3144+ _aspectRatio: !!(o.aspectRatio),
3145+ aspectRatio: o.aspectRatio,
3146+ originalElement: this.element,
3147+ _proportionallyResizeElements: [],
3148+ _helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
3149+ });
3150+
3151+ // Wrap the element if it cannot hold child nodes
3152+ if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) {
3153+
3154+ this.element.wrap(
3155+ $("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
3156+ position: this.element.css("position"),
3157+ width: this.element.outerWidth(),
3158+ height: this.element.outerHeight(),
3159+ top: this.element.css("top"),
3160+ left: this.element.css("left")
3161+ })
3162+ );
3163+
3164+ this.element = this.element.parent().data(
3165+ "ui-resizable", this.element.resizable( "instance" )
3166+ );
3167+
3168+ this.elementIsWrapper = true;
3169+
3170+ this.element.css({
3171+ marginLeft: this.originalElement.css("marginLeft"),
3172+ marginTop: this.originalElement.css("marginTop"),
3173+ marginRight: this.originalElement.css("marginRight"),
3174+ marginBottom: this.originalElement.css("marginBottom")
3175+ });
3176+ this.originalElement.css({
3177+ marginLeft: 0,
3178+ marginTop: 0,
3179+ marginRight: 0,
3180+ marginBottom: 0
3181+ });
3182+ // support: Safari
3183+ // Prevent Safari textarea resize
3184+ this.originalResizeStyle = this.originalElement.css("resize");
3185+ this.originalElement.css("resize", "none");
3186+
3187+ this._proportionallyResizeElements.push( this.originalElement.css({
3188+ position: "static",
3189+ zoom: 1,
3190+ display: "block"
3191+ }) );
3192+
3193+ // support: IE9
3194+ // avoid IE jump (hard set the margin)
3195+ this.originalElement.css({ margin: this.originalElement.css("margin") });
3196+
3197+ this._proportionallyResize();
3198+ }
3199+
3200+ this.handles = o.handles ||
3201+ ( !$(".ui-resizable-handle", this.element).length ?
3202+ "e,s,se" : {
3203+ n: ".ui-resizable-n",
3204+ e: ".ui-resizable-e",
3205+ s: ".ui-resizable-s",
3206+ w: ".ui-resizable-w",
3207+ se: ".ui-resizable-se",
3208+ sw: ".ui-resizable-sw",
3209+ ne: ".ui-resizable-ne",
3210+ nw: ".ui-resizable-nw"
3211+ } );
3212+
3213+ this._handles = $();
3214+ if ( this.handles.constructor === String ) {
3215+
3216+ if ( this.handles === "all") {

13401 more lines aren’t shown here.

Source/Libraries/GSF.Web/Shared/Scripts/primeui.js+13963−0

This diff is large: its 13964 lines aren’t shown here.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t