vines 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -7,7 +7,7 @@ LDAP authentication can be used so user names and passwords aren't stored in the
7
7
  database. SSL encryption is mandatory on all client and server connections.
8
8
 
9
9
  The Vines XMPP server includes a web chat client. The web application is available
10
- immediately after starting the chat server at http://localhost:5280/chat/
10
+ immediately after starting the chat server at http://localhost:5280/chat/.
11
11
 
12
12
  Additional documentation can be found at www.getvines.com.
13
13
 
@@ -21,9 +21,9 @@ Additional documentation can be found at www.getvines.com.
21
21
 
22
22
  == Dependencies
23
23
 
24
- * bcrypt-ruby >= 3.0.0
24
+ * bcrypt-ruby >= 3.0.1
25
25
  * eventmachine >= 0.12.10
26
- * nokogiri >= 1.5.0
26
+ * nokogiri >= 1.4.7
27
27
  * ruby >= 1.9.2
28
28
 
29
29
  == Ubuntu setup
@@ -31,8 +31,7 @@ $ sudo apt-get install build-essential ruby1.9.1 ruby1.9.1-dev libxml2-dev libxs
31
31
 
32
32
  == Contact
33
33
 
34
- * David Graham <david@negativecode.com>
35
- * Chris Johnson <chris@negativecode.com>
34
+ * David Graham <david@negativecode.com>
36
35
 
37
36
  == License
38
37
 
data/Rakefile CHANGED
@@ -5,10 +5,14 @@ require 'rubygems/package_task'
5
5
  require 'nokogiri'
6
6
  require_relative 'lib/vines/version'
7
7
 
8
- spec = Gem::Specification.new do |s|
8
+ ignore = File.read('web/lib/javascripts/.gitignore')
9
+ .split("\n").map {|f| "web/lib/javascripts/#{f}" }
10
+
11
+ CLOBBER.include('pkg', 'web/chat/javascripts', *ignore)
12
+
13
+ spec = Gem::Specification.new do |s|
9
14
  s.name = "vines"
10
15
  s.version = Vines::VERSION
11
- s.date = Time.now.strftime("%Y-%m-%d")
12
16
 
13
17
  s.summary = "Vines is an XMPP chat server that's easy to install and run."
14
18
  s.description = "Vines is an XMPP chat server that supports thousands of
@@ -18,21 +22,20 @@ implementation that you provide. LDAP authentication can be used so user names
18
22
  and passwords aren't stored in the chat database. SSL encryption is mandatory on
19
23
  all client and server connections."
20
24
 
21
- s.authors = ["David Graham", "Chris Johnson"]
22
- s.email = %w[david@negativecode.com chris@negativecode.com]
25
+ s.authors = ["David Graham"]
26
+ s.email = %w[david@negativecode.com]
23
27
  s.homepage = "http://www.getvines.com"
24
28
 
25
- s.files = FileList['[A-Z]*', '{bin,lib,conf,web}/**/*']
26
29
  s.test_files = FileList["test/**/*"]
27
30
  s.executables = %w[vines]
28
31
  s.require_path = "lib"
29
32
 
30
33
  s.add_dependency "activerecord", "~> 3.1.0"
31
- s.add_dependency "bcrypt-ruby", "~> 3.0.0"
34
+ s.add_dependency "bcrypt-ruby", "~> 3.0.1"
32
35
  s.add_dependency "em-http-request", "~> 0.3.0"
33
36
  s.add_dependency "em-redis", "~> 0.3.0"
34
37
  s.add_dependency "eventmachine", "~> 0.12.10"
35
- s.add_dependency "http_parser.rb", "~> 0.5.2"
38
+ s.add_dependency "http_parser.rb", "~> 0.5.3"
36
39
  s.add_dependency "net-ldap", "~> 0.2.2"
37
40
  s.add_dependency "nokogiri", "~> 1.4.7"
38
41
 
@@ -43,8 +46,12 @@ all client and server connections."
43
46
  s.required_ruby_version = '>= 1.9.2'
44
47
  end
45
48
 
46
- Gem::PackageTask.new(spec) do |pkg|
47
- pkg.need_tar = true
49
+ # Set gem file list after CoffeeScripts have been compiled, so web/lib/javascripts/
50
+ # is included in the gem.
51
+ task :gemprep do
52
+ spec.files = FileList['[A-Z]*', '{bin,lib,conf,web}/**/*']
53
+ Gem::PackageTask.new(spec).define
54
+ Rake::Task['gem'].invoke
48
55
  end
49
56
 
50
57
  module Rake
@@ -117,4 +124,4 @@ task :cleanup do
117
124
  File.delete('/tmp/index.html')
118
125
  end
119
126
 
120
- task :default => [:clobber, :test, :compile, :gem, :cleanup]
127
+ task :default => [:clobber, :test, :compile, :gemprep, :cleanup]
@@ -1,10 +1,8 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Vines
4
-
5
4
  # A module for utility methods with no better home.
6
5
  module Kit
7
-
8
6
  # Create a hex-encoded, SHA-512 HMAC of the data, using the secret key.
9
7
  def self.hmac(key, data)
10
8
  digest = OpenSSL::Digest::Digest.new("sha512")
@@ -19,8 +17,9 @@ module Vines
19
17
  hex[16] = %w[8 9 a b][rand(4)]
20
18
  hex.scan(/(\w{8})(\w{4})(\w{4})(\w{4})(\w{12})/).first.join('-')
21
19
  end
22
-
23
- def self.generate_password
20
+
21
+ # Generates a random 128 character authentication token.
22
+ def self.auth_token
24
23
  hash = Digest::SHA512.new
25
24
  1024.times { hash << rand.to_s }
26
25
  hash.hexdigest
@@ -105,11 +105,9 @@ module Vines
105
105
  def send_status(status, message, *headers)
106
106
  header = [
107
107
  "HTTP/1.1 #{status} #{message}",
108
- "Connection: close",
109
108
  *headers
110
109
  ].join("\r\n")
111
110
  @stream.stream_write("#{header}\r\n\r\n")
112
- @stream.close_connection_after_writing
113
111
  end
114
112
 
115
113
  # Stream the contents of the file to the client in a 200 OK response.
@@ -118,7 +116,6 @@ module Vines
118
116
  def send_file(path, status=200, message='OK')
119
117
  header = [
120
118
  "HTTP/1.1 #{status} #{message}",
121
- "Connection: close",
122
119
  "Content-Type: #{content_type(path)}",
123
120
  "Content-Length: #{File.size(path)}",
124
121
  "Last-Modified: #{mtime(path)}"
@@ -130,7 +127,6 @@ module Vines
130
127
  @stream.stream_write(buf)
131
128
  end
132
129
  end
133
- @stream.close_connection_after_writing
134
130
  end
135
131
 
136
132
  def content_type(path)
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Vines
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
@@ -18,4 +18,9 @@ class KitTest < MiniTest::Unit::TestCase
18
18
  assert ids.all? {|id| id.match(/\w{8}-\w{4}-[4]\w{3}-[89ab]\w{3}-\w{12}/) }
19
19
  assert_equal ids.length, ids.uniq.length
20
20
  end
21
+
22
+ def test_auth_token
23
+ refute_equal Vines::Kit.auth_token, Vines::Kit.auth_token
24
+ assert_equal 128, Vines::Kit.auth_token.length
25
+ end
21
26
  end
@@ -40,9 +40,8 @@ class RequestTest < MiniTest::Unit::TestCase
40
40
  def test_reply_with_file_404
41
41
  request = Vines::Stream::Http::Request.new(@stream, @parser, '<html></html>')
42
42
 
43
- expected = "HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n"
43
+ expected = "HTTP/1.1 404 Not Found\r\n\r\n"
44
44
  @stream.expect(:stream_write, nil, [expected])
45
- @stream.expect(:close_connection_after_writing, nil)
46
45
 
47
46
  request.reply_with_file(Dir.pwd)
48
47
  assert @stream.verify
@@ -53,9 +52,8 @@ class RequestTest < MiniTest::Unit::TestCase
53
52
  @parser.expect(:request_path, '../passwords')
54
53
  request = Vines::Stream::Http::Request.new(@stream, @parser, '<html></html>')
55
54
 
56
- expected = "HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n"
55
+ expected = "HTTP/1.1 404 Not Found\r\n\r\n"
57
56
  @stream.expect(:stream_write, nil, [expected])
58
- @stream.expect(:close_connection_after_writing, nil)
59
57
 
60
58
  request.reply_with_file(Dir.pwd)
61
59
  assert @stream.verify
@@ -70,7 +68,6 @@ class RequestTest < MiniTest::Unit::TestCase
70
68
  mtime = File.mtime(INDEX).utc.strftime('%a, %d %b %Y %H:%M:%S GMT')
71
69
  headers = [
72
70
  "HTTP/1.1 200 OK",
73
- "Connection: close",
74
71
  'Content-Type: text/html; charset="utf-8"',
75
72
  "Content-Length: 20",
76
73
  "Last-Modified: #{mtime}"
@@ -78,7 +75,6 @@ class RequestTest < MiniTest::Unit::TestCase
78
75
 
79
76
  @stream.expect(:stream_write, nil, ["#{headers}\r\n\r\n"])
80
77
  @stream.expect(:stream_write, nil, ["index.html contents\n"])
81
- @stream.expect(:close_connection_after_writing, nil)
82
78
 
83
79
  request.reply_with_file(Dir.pwd)
84
80
  assert @stream.verify
@@ -92,12 +88,10 @@ class RequestTest < MiniTest::Unit::TestCase
92
88
 
93
89
  headers = [
94
90
  "HTTP/1.1 301 Moved Permanently",
95
- "Connection: close",
96
91
  "Location: http://wonderland.lit/http/?ok=true"
97
92
  ].join("\r\n")
98
93
 
99
94
  @stream.expect(:stream_write, nil, ["#{headers}\r\n\r\n"])
100
- @stream.expect(:close_connection_after_writing, nil)
101
95
  # so the /http url above will work
102
96
  request.reply_with_file(File.expand_path('../../', __FILE__))
103
97
  assert @stream.verify
@@ -179,8 +179,8 @@ class ChatPage
179
179
 
180
180
  atBottom: ->
181
181
  msgs = $('#messages')
182
- bottom = msgs.prop('scrollHeight') - msgs.height()
183
- msgs.scrollTop() == bottom
182
+ bottom = msgs.prop('scrollHeight') - msgs.outerHeight()
183
+ msgs.scrollTop() >= bottom
184
184
 
185
185
  send: ->
186
186
  return false unless @currentContact
@@ -1 +1 @@
1
- var ChatPage,__bind=function(a,b){return function(){return a.apply(b,arguments)}};ChatPage=function(){function a(a){this.session=a,this.session.onRoster(__bind(function(){return this.roster()},this)),this.session.onCard(__bind(function(a){return this.card(a)},this)),this.session.onMessage(__bind(function(a){return this.message(a)},this)),this.session.onPresence(__bind(function(a){return this.presence(a)},this)),this.chats={},this.currentContact=null}return a.prototype.datef=function(a){var b,c,d,e;return b=new Date(a),d=b.getHours()<12?" am":" pm",c=b.getHours()>12?b.getHours()-12:b.getHours(),c===0&&(c=12),e=b.getMinutes()+"",e.length===1&&(e="0"+e),c+":"+e+d},a.prototype.card=function(a){return this.eachContact(a.jid,__bind(function(b){return $(".vcard-img",b).attr("src",this.session.avatar(a.jid))},this))},a.prototype.roster=function(){var a,b,c,d,e,f,g,h;e=$("#roster"),$("li",e).each(__bind(function(a,b){var c;c=$(b).attr("data-jid");if(!this.session.roster[c])return $(b).remove()},this)),f=function(a,b){return $(".text",a).text(b.name||b.jid),a.attr("data-name",b.name||"")},g=this.session.roster,h=[];for(c in g)a=g[c],b=$("#roster li[data-jid='"+c+"']"),f(b,a),h.push(b.length===0?(d=$('<li data-jid="'+c+'" data-name="" class="offline">\n <span class="text"></span>\n <span class="status-msg">Offline</span>\n <span class="unread" style="display:none;"></span>\n <img class="vcard-img" alt="'+c+'" src="'+this.session.avatar(c)+'"/>\n</li>').appendTo(e),f(d,a),d.click(__bind(function(a){return this.selectContact(a)},this))):void 0);return h},a.prototype.message=function(a){var b,c,d,e;this.queueMessage(a),e=a.from===this.session.jid(),d=a.from.split("/")[0];if(!e&&d!==this.currentContact)return c=this.chat(a.from),c.unread++,this.eachContact(d,function(a){return $(".unread",a).text(c.unread).show()});b=this.atBottom(),this.appendMessage(a);if(b)return this.scroll()},a.prototype.eachContact=function(a,b){var c,d,e,f,g;f=$("#roster li[data-jid='"+a+"']").get(),g=[];for(d=0,e=f.length;d<e;d++)c=f[d],g.push(b($(c)));return g},a.prototype.appendMessage=function(a){var b,c,d,e;return c=a.from.split("/")[0],b=this.session.roster[c],d=b?b.name||c:c,a.from===this.session.jid()&&(d="Me"),e=$('<li data-jid="'+c+'" style="display:none;">\n <p></p>\n <img alt="'+c+'" src="'+this.session.avatar(c)+'"/>\n <footer>\n <span class="author"></span>\n <span class="time">'+this.datef(a.received)+"</span>\n </footer>\n</li>").appendTo("#messages"),$("p",e).text(a.text),$(".author",e).text(d),e.fadeIn(200)},a.prototype.queueMessage=function(a){var b,c,d;return d=a.from===this.session.jid(),c=a[d?"to":"from"],b=this.chat(c),b.jid=c,b.messages.push(a)},a.prototype.chat=function(a){var b,c;return b=a.split("/")[0],c=this.chats[b],c||(c={jid:a,messages:[],unread:0},this.chats[b]=c),c},a.prototype.presence=function(a){var b,c,d;c=a.from.split("/")[0];if(c===this.session.bareJid())return;if(!a.type||a.offline)b=this.session.roster[c],this.eachContact(c,function(a){return $(".status-msg",a).text(b.status()),b.offline()?a.addClass("offline"):a.removeClass("offline")});a.offline&&(this.chat(c).jid=c);if(a.type==="subscribe")return d=$('<li data-jid="'+a.from+'" style="display:none;">\n <form class="inset">\n <h2>Buddy Approval</h2>\n <p>'+a.from+' wants to add you as a buddy.</p>\n <fieldset class="buttons">\n <input type="button" value="Decline"/>\n <input type="submit" value="Accept"/>\n </fieldset>\n </form>\n</li>').appendTo("#notifications"),d.fadeIn(200),$("form",d).submit(__bind(function(){return this.acceptContact(d,a.from)},this)),$('input[type="button"]',d).click(__bind(function(){return this.rejectContact(d,a.from)},this))},a.prototype.acceptContact=function(a,b){return a.fadeOut(200,function(){return a.remove()}),this.session.sendSubscribed(b),this.session.sendSubscribe(b),!1},a.prototype.rejectContact=function(a,b){return a.fadeOut(200,function(){return a.remove()}),this.session.sendUnsubscribed(b)},a.prototype.selectContact=function(a){var b,c,d,e,f,g,h;d=$(a.currentTarget).attr("data-jid"),c=this.session.roster[d];if(this.currentContact===d)return;this.currentContact=d,$("#roster li").removeClass("selected"),$(a.currentTarget).addClass("selected"),$("#chat-title").text("Chat with "+(c.name||c.jid)),$("#messages").empty(),b=this.chats[d],e=[],b&&(e=b.messages,b.unread=0,this.eachContact(d,function(a){return $(".unread",a).text("").hide()}));for(g=0,h=e.length;g<h;g++)f=e[g],this.appendMessage(f);return this.scroll(),$("#remove-contact-msg").html("Are you sure you want to remove "+("<strong>"+this.currentContact+"</strong> from your buddy list?")),$("#remove-contact-form .buttons").fadeIn(200),$("#edit-contact-jid").text(this.currentContact),$("#edit-contact-name").val(this.session.roster[this.currentContact].name),$("#edit-contact-form input").fadeIn(200),$("#edit-contact-form .buttons").fadeIn(200)},a.prototype.scroll=function(){var a;return a=$("#messages"),a.animate({scrollTop:a.prop("scrollHeight")},400)},a.prototype.atBottom=function(){var a,b;return b=$("#messages"),a=b.prop("scrollHeight")-b.height(),b.scrollTop()===a},a.prototype.send=function(){var a,b,c,d;return this.currentContact?(b=$("#message"),d=b.val().trim(),d&&(a=this.chats[this.currentContact],c=a?a.jid:this.currentContact,this.message({from:this.session.jid(),text:d,to:c,received:new Date}),this.session.sendMessage(c,d)),b.val(""),!1):!1},a.prototype.addContact=function(){var a;return this.toggleForm("#add-contact-form"),a={jid:$("#add-contact-jid").val(),name:$("#add-contact-name").val(),groups:["Buddies"]},a.jid&&this.session.updateContact(a,!0),!1},a.prototype.removeContact=function(){return this.toggleForm("#remove-contact-form"),this.session.removeContact(this.currentContact),this.currentContact=null,$("#chat-title").text("Select a buddy to chat"),$("#messages").empty(),$("#remove-contact-msg").html("Select a buddy in the list above to remove."),$("#remove-contact-form .buttons").hide(),$("#edit-contact-jid").text("Select a buddy in the list above to update."),$("#edit-contact-name").val(""),$("#edit-contact-form input").hide(),$("#edit-contact-form .buttons").hide(),!1},a.prototype.updateContact=function(){var a;return this.toggleForm("#edit-contact-form"),a={jid:this.currentContact,name:$("#edit-contact-name").val(),groups:this.session.roster[this.currentContact].groups},this.session.updateContact(a),!1},a.prototype.toggleForm=function(a,b){return a=$(a),$("form.overlay").each(function(){if(this.id!==a.attr("id"))return $(this).hide()}),a.is(":hidden")?(b&&b(),a.fadeIn(100)):a.fadeOut(100,function(){a[0].reset();if(b)return b()})},a.prototype.draw=function(){var a,b;if(!this.session.connected()){window.location.hash="";return}return $("body").attr("id","chat-page"),$("#container").hide().empty(),$('<div id="alpha" class="sidebar column y-fill">\n <h2>Buddies <div id="search-roster-icon"></div></h2>\n <div id="search-roster-form"></div>\n <ul id="roster" class="selectable scroll y-fill"></ul>\n <div id="alpha-controls" class="controls">\n <div id="add-contact"></div>\n <div id="remove-contact"></div>\n <div id="edit-contact"></div>\n </div>\n <form id="add-contact-form" class="overlay" style="display:none;">\n <h2>Add Buddy</h2>\n <input id="add-contact-jid" type="email" maxlength="1024" placeholder="Account name"/>\n <input id="add-contact-name" type="text" maxlength="1024" placeholder="Real name"/>\n <fieldset class="buttons">\n <input id="add-contact-cancel" type="button" value="Cancel"/>\n <input id="add-contact-ok" type="submit" value="Add"/>\n </fieldset>\n </form>\n <form id="remove-contact-form" class="overlay" style="display:none;">\n <h2>Remove Buddy</h2>\n <p id="remove-contact-msg">Select a buddy in the list above to remove.</p>\n <fieldset class="buttons" style="display:none;">\n <input id="remove-contact-cancel" type="button" value="Cancel"/>\n <input id="remove-contact-ok" type="submit" value="Remove"/>\n </fieldset>\n </form>\n <form id="edit-contact-form" class="overlay" style="display:none;">\n <h2>Update Profile</h2>\n <p id="edit-contact-jid">Select a buddy in the list above to update.</p>\n <input id="edit-contact-name" type="text" maxlength="1024" placeholder="Real name" style="display:none;"/>\n <fieldset class="buttons" style="display:none;">\n <input id="edit-contact-cancel" type="button" value="Cancel"/>\n <input id="edit-contact-ok" type="submit" value="Save"/>\n </fieldset>\n </form>\n</div>\n<div id="beta" class="primary column x-fill y-fill">\n <h2 id="chat-title">Select a buddy to chat</h2>\n <ul id="messages" class="scroll y-fill"></ul>\n <form id="message-form">\n <input id="message" name="message" type="text" maxlength="1024" placeholder="Type a message and press enter to send"/>\n </form>\n</div>\n<div id="charlie" class="sidebar column y-fill">\n <h2>Notifications</h2>\n <ul id="notifications" class="scroll y-fill"></ul>\n <div id="charlie-controls" class="controls">\n <div id="clear-notices"></div>\n </div>\n</div>').appendTo("#container"),this.roster(),new Button("#clear-notices",ICONS.no),new Button("#add-contact",ICONS.plus),new Button("#remove-contact",ICONS.minus),new Button("#edit-contact",ICONS.user),$("#message").focus(function(){return $("form.overlay").fadeOut()}),$("#message-form").submit(__bind(function(){return this.send()},this)),$("#clear-notices").click(function(){return $("#notifications li").fadeOut(200)}),$("#add-contact").click(__bind(function(){return this.toggleForm("#add-contact-form")},this)),$("#remove-contact").click(__bind(function(){return this.toggleForm("#remove-contact-form")},this)),$("#edit-contact").click(__bind(function(){return this.toggleForm("#edit-contact-form",__bind(function(){if(this.currentContact)return $("#edit-contact-jid").text(this.currentContact),$("#edit-contact-name").val(this.session.roster[this.currentContact].name)},this))},this)),$("#add-contact-cancel").click(__bind(function(){return this.toggleForm("#add-contact-form")},this)),$("#remove-contact-cancel").click(__bind(function(){return this.toggleForm("#remove-contact-form")},this)),$("#edit-contact-cancel").click(__bind(function(){return this.toggleForm("#edit-contact-form")},this)),$("#add-contact-form").submit(__bind(function(){return this.addContact()},this)),$("#remove-contact-form").submit(__bind(function(){return this.removeContact()},this)),$("#edit-contact-form").submit(__bind(function(){return this.updateContact()},this)),$("#container").fadeIn(200),b=this.resize(),a=function(){return b.resize(),b.resize()},new Filter({list:"#roster",icon:"#search-roster-icon",form:"#search-roster-form",attrs:["data-jid","data-name"],open:a,close:a})},a.prototype.resize=function(){var a,b,c,d,e;return a=$("#alpha"),b=$("#beta"),c=$("#charlie"),e=$("#message"),d=$("#message-form"),new Layout(function(){return c.css("left",a.width()+b.width()),e.width(d.width()-32)})},a}(),$(function(){var a,b,c,d,e,f;f=new Session,d=new NavBar(f),d.draw(),a={Messages:ICONS.chat,Logout:ICONS.power};for(c in a)b=a[c],d.addButton(c,b);return e={"/messages":new ChatPage(f),"/logout":new LogoutPage(f),"default":new LoginPage(f,"/messages/")},(new Router(e)).draw(),d.select($("#nav-link-messages").parent())})
1
+ var ChatPage,__bind=function(a,b){return function(){return a.apply(b,arguments)}};ChatPage=function(){function a(a){this.session=a,this.session.onRoster(__bind(function(){return this.roster()},this)),this.session.onCard(__bind(function(a){return this.card(a)},this)),this.session.onMessage(__bind(function(a){return this.message(a)},this)),this.session.onPresence(__bind(function(a){return this.presence(a)},this)),this.chats={},this.currentContact=null}return a.prototype.datef=function(a){var b,c,d,e;return b=new Date(a),d=b.getHours()<12?" am":" pm",c=b.getHours()>12?b.getHours()-12:b.getHours(),c===0&&(c=12),e=b.getMinutes()+"",e.length===1&&(e="0"+e),c+":"+e+d},a.prototype.card=function(a){return this.eachContact(a.jid,__bind(function(b){return $(".vcard-img",b).attr("src",this.session.avatar(a.jid))},this))},a.prototype.roster=function(){var a,b,c,d,e,f,g,h;e=$("#roster"),$("li",e).each(__bind(function(a,b){var c;c=$(b).attr("data-jid");if(!this.session.roster[c])return $(b).remove()},this)),f=function(a,b){return $(".text",a).text(b.name||b.jid),a.attr("data-name",b.name||"")},g=this.session.roster,h=[];for(c in g)a=g[c],b=$("#roster li[data-jid='"+c+"']"),f(b,a),h.push(b.length===0?(d=$('<li data-jid="'+c+'" data-name="" class="offline">\n <span class="text"></span>\n <span class="status-msg">Offline</span>\n <span class="unread" style="display:none;"></span>\n <img class="vcard-img" alt="'+c+'" src="'+this.session.avatar(c)+'"/>\n</li>').appendTo(e),f(d,a),d.click(__bind(function(a){return this.selectContact(a)},this))):void 0);return h},a.prototype.message=function(a){var b,c,d,e;this.queueMessage(a),e=a.from===this.session.jid(),d=a.from.split("/")[0];if(!e&&d!==this.currentContact)return c=this.chat(a.from),c.unread++,this.eachContact(d,function(a){return $(".unread",a).text(c.unread).show()});b=this.atBottom(),this.appendMessage(a);if(b)return this.scroll()},a.prototype.eachContact=function(a,b){var c,d,e,f,g;f=$("#roster li[data-jid='"+a+"']").get(),g=[];for(d=0,e=f.length;d<e;d++)c=f[d],g.push(b($(c)));return g},a.prototype.appendMessage=function(a){var b,c,d,e;return c=a.from.split("/")[0],b=this.session.roster[c],d=b?b.name||c:c,a.from===this.session.jid()&&(d="Me"),e=$('<li data-jid="'+c+'" style="display:none;">\n <p></p>\n <img alt="'+c+'" src="'+this.session.avatar(c)+'"/>\n <footer>\n <span class="author"></span>\n <span class="time">'+this.datef(a.received)+"</span>\n </footer>\n</li>").appendTo("#messages"),$("p",e).text(a.text),$(".author",e).text(d),e.fadeIn(200)},a.prototype.queueMessage=function(a){var b,c,d;return d=a.from===this.session.jid(),c=a[d?"to":"from"],b=this.chat(c),b.jid=c,b.messages.push(a)},a.prototype.chat=function(a){var b,c;return b=a.split("/")[0],c=this.chats[b],c||(c={jid:a,messages:[],unread:0},this.chats[b]=c),c},a.prototype.presence=function(a){var b,c,d;c=a.from.split("/")[0];if(c===this.session.bareJid())return;if(!a.type||a.offline)b=this.session.roster[c],this.eachContact(c,function(a){return $(".status-msg",a).text(b.status()),b.offline()?a.addClass("offline"):a.removeClass("offline")});a.offline&&(this.chat(c).jid=c);if(a.type==="subscribe")return d=$('<li data-jid="'+a.from+'" style="display:none;">\n <form class="inset">\n <h2>Buddy Approval</h2>\n <p>'+a.from+' wants to add you as a buddy.</p>\n <fieldset class="buttons">\n <input type="button" value="Decline"/>\n <input type="submit" value="Accept"/>\n </fieldset>\n </form>\n</li>').appendTo("#notifications"),d.fadeIn(200),$("form",d).submit(__bind(function(){return this.acceptContact(d,a.from)},this)),$('input[type="button"]',d).click(__bind(function(){return this.rejectContact(d,a.from)},this))},a.prototype.acceptContact=function(a,b){return a.fadeOut(200,function(){return a.remove()}),this.session.sendSubscribed(b),this.session.sendSubscribe(b),!1},a.prototype.rejectContact=function(a,b){return a.fadeOut(200,function(){return a.remove()}),this.session.sendUnsubscribed(b)},a.prototype.selectContact=function(a){var b,c,d,e,f,g,h;d=$(a.currentTarget).attr("data-jid"),c=this.session.roster[d];if(this.currentContact===d)return;this.currentContact=d,$("#roster li").removeClass("selected"),$(a.currentTarget).addClass("selected"),$("#chat-title").text("Chat with "+(c.name||c.jid)),$("#messages").empty(),b=this.chats[d],e=[],b&&(e=b.messages,b.unread=0,this.eachContact(d,function(a){return $(".unread",a).text("").hide()}));for(g=0,h=e.length;g<h;g++)f=e[g],this.appendMessage(f);return this.scroll(),$("#remove-contact-msg").html("Are you sure you want to remove "+("<strong>"+this.currentContact+"</strong> from your buddy list?")),$("#remove-contact-form .buttons").fadeIn(200),$("#edit-contact-jid").text(this.currentContact),$("#edit-contact-name").val(this.session.roster[this.currentContact].name),$("#edit-contact-form input").fadeIn(200),$("#edit-contact-form .buttons").fadeIn(200)},a.prototype.scroll=function(){var a;return a=$("#messages"),a.animate({scrollTop:a.prop("scrollHeight")},400)},a.prototype.atBottom=function(){var a,b;return b=$("#messages"),a=b.prop("scrollHeight")-b.outerHeight(),b.scrollTop()>=a},a.prototype.send=function(){var a,b,c,d;return this.currentContact?(b=$("#message"),d=b.val().trim(),d&&(a=this.chats[this.currentContact],c=a?a.jid:this.currentContact,this.message({from:this.session.jid(),text:d,to:c,received:new Date}),this.session.sendMessage(c,d)),b.val(""),!1):!1},a.prototype.addContact=function(){var a;return this.toggleForm("#add-contact-form"),a={jid:$("#add-contact-jid").val(),name:$("#add-contact-name").val(),groups:["Buddies"]},a.jid&&this.session.updateContact(a,!0),!1},a.prototype.removeContact=function(){return this.toggleForm("#remove-contact-form"),this.session.removeContact(this.currentContact),this.currentContact=null,$("#chat-title").text("Select a buddy to chat"),$("#messages").empty(),$("#remove-contact-msg").html("Select a buddy in the list above to remove."),$("#remove-contact-form .buttons").hide(),$("#edit-contact-jid").text("Select a buddy in the list above to update."),$("#edit-contact-name").val(""),$("#edit-contact-form input").hide(),$("#edit-contact-form .buttons").hide(),!1},a.prototype.updateContact=function(){var a;return this.toggleForm("#edit-contact-form"),a={jid:this.currentContact,name:$("#edit-contact-name").val(),groups:this.session.roster[this.currentContact].groups},this.session.updateContact(a),!1},a.prototype.toggleForm=function(a,b){return a=$(a),$("form.overlay").each(function(){if(this.id!==a.attr("id"))return $(this).hide()}),a.is(":hidden")?(b&&b(),a.fadeIn(100)):a.fadeOut(100,function(){a[0].reset();if(b)return b()})},a.prototype.draw=function(){var a,b;if(!this.session.connected()){window.location.hash="";return}return $("body").attr("id","chat-page"),$("#container").hide().empty(),$('<div id="alpha" class="sidebar column y-fill">\n <h2>Buddies <div id="search-roster-icon"></div></h2>\n <div id="search-roster-form"></div>\n <ul id="roster" class="selectable scroll y-fill"></ul>\n <div id="alpha-controls" class="controls">\n <div id="add-contact"></div>\n <div id="remove-contact"></div>\n <div id="edit-contact"></div>\n </div>\n <form id="add-contact-form" class="overlay" style="display:none;">\n <h2>Add Buddy</h2>\n <input id="add-contact-jid" type="email" maxlength="1024" placeholder="Account name"/>\n <input id="add-contact-name" type="text" maxlength="1024" placeholder="Real name"/>\n <fieldset class="buttons">\n <input id="add-contact-cancel" type="button" value="Cancel"/>\n <input id="add-contact-ok" type="submit" value="Add"/>\n </fieldset>\n </form>\n <form id="remove-contact-form" class="overlay" style="display:none;">\n <h2>Remove Buddy</h2>\n <p id="remove-contact-msg">Select a buddy in the list above to remove.</p>\n <fieldset class="buttons" style="display:none;">\n <input id="remove-contact-cancel" type="button" value="Cancel"/>\n <input id="remove-contact-ok" type="submit" value="Remove"/>\n </fieldset>\n </form>\n <form id="edit-contact-form" class="overlay" style="display:none;">\n <h2>Update Profile</h2>\n <p id="edit-contact-jid">Select a buddy in the list above to update.</p>\n <input id="edit-contact-name" type="text" maxlength="1024" placeholder="Real name" style="display:none;"/>\n <fieldset class="buttons" style="display:none;">\n <input id="edit-contact-cancel" type="button" value="Cancel"/>\n <input id="edit-contact-ok" type="submit" value="Save"/>\n </fieldset>\n </form>\n</div>\n<div id="beta" class="primary column x-fill y-fill">\n <h2 id="chat-title">Select a buddy to chat</h2>\n <ul id="messages" class="scroll y-fill"></ul>\n <form id="message-form">\n <input id="message" name="message" type="text" maxlength="1024" placeholder="Type a message and press enter to send"/>\n </form>\n</div>\n<div id="charlie" class="sidebar column y-fill">\n <h2>Notifications</h2>\n <ul id="notifications" class="scroll y-fill"></ul>\n <div id="charlie-controls" class="controls">\n <div id="clear-notices"></div>\n </div>\n</div>').appendTo("#container"),this.roster(),new Button("#clear-notices",ICONS.no),new Button("#add-contact",ICONS.plus),new Button("#remove-contact",ICONS.minus),new Button("#edit-contact",ICONS.user),$("#message").focus(function(){return $("form.overlay").fadeOut()}),$("#message-form").submit(__bind(function(){return this.send()},this)),$("#clear-notices").click(function(){return $("#notifications li").fadeOut(200)}),$("#add-contact").click(__bind(function(){return this.toggleForm("#add-contact-form")},this)),$("#remove-contact").click(__bind(function(){return this.toggleForm("#remove-contact-form")},this)),$("#edit-contact").click(__bind(function(){return this.toggleForm("#edit-contact-form",__bind(function(){if(this.currentContact)return $("#edit-contact-jid").text(this.currentContact),$("#edit-contact-name").val(this.session.roster[this.currentContact].name)},this))},this)),$("#add-contact-cancel").click(__bind(function(){return this.toggleForm("#add-contact-form")},this)),$("#remove-contact-cancel").click(__bind(function(){return this.toggleForm("#remove-contact-form")},this)),$("#edit-contact-cancel").click(__bind(function(){return this.toggleForm("#edit-contact-form")},this)),$("#add-contact-form").submit(__bind(function(){return this.addContact()},this)),$("#remove-contact-form").submit(__bind(function(){return this.removeContact()},this)),$("#edit-contact-form").submit(__bind(function(){return this.updateContact()},this)),$("#container").fadeIn(200),b=this.resize(),a=function(){return b.resize(),b.resize()},new Filter({list:"#roster",icon:"#search-roster-icon",form:"#search-roster-form",attrs:["data-jid","data-name"],open:a,close:a})},a.prototype.resize=function(){var a,b,c,d,e;return a=$("#alpha"),b=$("#beta"),c=$("#charlie"),e=$("#message"),d=$("#message-form"),new Layout(function(){return c.css("left",a.width()+b.width()),e.width(d.width()-32)})},a}(),$(function(){var a,b,c,d,e,f;f=new Session,d=new NavBar(f),d.draw(),a={Messages:ICONS.chat,Logout:ICONS.power};for(c in a)b=a[c],d.addButton(c,b);return e={"/messages":new ChatPage(f),"/logout":new LogoutPage(f),"default":new LoginPage(f,"/messages/")},(new Router(e)).draw(),d.select($("#nav-link-messages").parent())})
@@ -215,8 +215,8 @@ ChatPage = (function() {
215
215
  ChatPage.prototype.atBottom = function() {
216
216
  var bottom, msgs;
217
217
  msgs = $('#messages');
218
- bottom = msgs.prop('scrollHeight') - msgs.height();
219
- return msgs.scrollTop() === bottom;
218
+ bottom = msgs.prop('scrollHeight') - msgs.outerHeight();
219
+ return msgs.scrollTop() >= bottom;
220
220
  };
221
221
  ChatPage.prototype.send = function() {
222
222
  var chat, input, jid, text;
@@ -22,7 +22,6 @@
22
22
  }
23
23
  #chat-page #messages li img {
24
24
  border: 3px solid #fff;
25
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
26
25
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
27
26
  position: absolute;
28
27
  top: 7px;
@@ -108,8 +107,9 @@
108
107
  #chat-page #roster .unread {
109
108
  background: #319be7;
110
109
  background: -moz-linear-gradient(#319be7, #1b78d9);
110
+ background: -ms-linear-gradient(#319be7, #1b78d9);
111
111
  background: -o-linear-gradient(#319be7, #1b78d9);
112
- background: -webkit-gradient(linear, left top, left bottom, from(#319be7), to(#1b78d9));
112
+ background: -webkit-linear-gradient(#319be7, #1b78d9);
113
113
  border-radius: 30px;
114
114
  color: #fff;
115
115
  display: inline-block;
@@ -125,7 +125,6 @@
125
125
  #chat-page #roster .vcard-img {
126
126
  background: #fff;
127
127
  border: 1px solid #fff;
128
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
129
128
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 40px rgba(0, 0, 0, 0.06) inset;
130
129
  height: 32px;
131
130
  width: 32px;
@@ -13,9 +13,10 @@ class Filter
13
13
  form = $('<form class="filter-form" style="display:none;"></form>').appendTo @form
14
14
  text = $('<input class="filter-text" type="search" placeholder="Filter" results="5"/>').appendTo form
15
15
 
16
- new Button @icon, ICONS.search,
17
- scale: 0.5
18
- translation: '-8 -8'
16
+ if @icon
17
+ new Button @icon, ICONS.search,
18
+ scale: 0.5
19
+ translation: '-8 -8'
19
20
 
20
21
  form.submit -> false
21
22
  text.keyup => this.filter(text)
@@ -42,7 +43,7 @@ class Filter
42
43
  val = (node.attr(attr) || '').toLowerCase()
43
44
  val.indexOf(text) != -1
44
45
 
45
- $('li', @list).each (ix, node) =>
46
+ $('> li', @list).each (ix, node) =>
46
47
  node = $ node
47
48
  matches = (true for attr in @attrs when test node, attr)
48
49
  if matches.length > 0 then node.show() else node.hide()
@@ -201,6 +201,7 @@ class Session
201
201
  text: body.text()
202
202
  html: html.text()
203
203
  received: new Date()
204
+ node: node
204
205
  true # keep handler alive
205
206
 
206
207
  handlePresence: (node) ->
@@ -219,6 +220,7 @@ class Session
219
220
  offline: type == 'unavailable' || type == 'error'
220
221
  away: show.text() == 'away' || show.text() == 'xa'
221
222
  dnd: show.text() == 'dnd'
223
+ node: node
222
224
  contact = @roster[from.split('/')[0]]
223
225
  contact.update presence if contact
224
226
  this.notify 'presence', presence
@@ -6,5 +6,5 @@ cC&&(a=a[a.length-1]),a.Group.nextSibling?a.Group.parentNode.insertBefore(this.G
6
6
  ,globeAlt:"M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM27.436,17.39c0.001,0.002,0.004,0.002,0.005,0.004c-0.022,0.187-0.054,0.37-0.085,0.554c-0.015-0.012-0.034-0.025-0.047-0.036c-0.103-0.09-0.254-0.128-0.318-0.115c-0.157,0.032,0.229,0.305,0.267,0.342c0.009,0.009,0.031,0.03,0.062,0.058c-1.029,5.312-5.709,9.338-11.319,9.338c-4.123,0-7.736-2.18-9.776-5.441c0.123-0.016,0.24-0.016,0.28-0.076c0.051-0.077,0.102-0.241,0.178-0.331c0.077-0.089,0.165-0.229,0.127-0.292c-0.039-0.064,0.101-0.344,0.088-0.419c-0.013-0.076-0.127-0.256,0.064-0.407s0.394-0.382,0.407-0.444c0.012-0.063,0.166-0.331,0.152-0.458c-0.012-0.127-0.152-0.28-0.24-0.318c-0.09-0.037-0.28-0.05-0.356-0.151c-0.077-0.103-0.292-0.203-0.368-0.178c-0.076,0.025-0.204,0.05-0.305-0.015c-0.102-0.062-0.267-0.139-0.33-0.189c-0.065-0.05-0.229-0.088-0.305-0.088c-0.077,0-0.065-0.052-0.178,0.101c-0.114,0.153,0,0.204-0.204,0.177c-0.204-0.023,0.025-0.036,0.141-0.189c0.113-0.152-0.013-0.242-0.141-0.203c-0.126,0.038-0.038,0.115-0.241,0.153c-0.203,0.036-0.203-0.09-0.076-0.115s0.355-0.139,0.355-0.19c0-0.051-0.025-0.191-0.127-0.191s-0.077-0.126-0.229-0.291c-0.092-0.101-0.196-0.164-0.299-0.204c-0.09-0.579-0.15-1.167-0.15-1.771c0-2.844,1.039-5.446,2.751-7.458c0.024-0.02,0.048-0.034,0.069-0.036c0.084-0.009,0.31-0.025,0.51-0.059c0.202-0.034,0.418-0.161,0.489-0.153c0.069,0.008,0.241,0.008,0.186-0.042C8.417,8.2,8.339,8.082,8.223,8.082S8.215,7.896,8.246,7.896c0.03,0,0.186,0.025,0.178,0.11C8.417,8.091,8.471,8.2,8.625,8.167c0.156-0.034,0.132-0.162,0.102-0.195C8.695,7.938,8.672,7.853,8.642,7.794c-0.031-0.06-0.023-0.136,0.14-0.153C8.944,7.625,9.168,7.708,9.16,7.573s0-0.28,0.046-0.356C9.253,7.142,9.354,7.09,9.299,7.065C9.246,7.04,9.176,7.099,9.121,6.972c-0.054-0.127,0.047-0.22,0.108-0.271c0.02-0.015,0.067-0.06,0.124-0.112C11.234,5.257,13.524,4.466,16,4.466c3.213,0,6.122,1.323,8.214,3.45c-0.008,0.022-0.01,0.052-0.031,0.056c-0.077,0.013-0.166,0.063-0.179-0.051c-0.013-0.114-0.013-0.331-0.102-0.203c-0.089,0.127-0.127,0.127-0.127,0.191c0,0.063,0.076,0.127,0.051,0.241C23.8,8.264,23.8,8.341,23.84,8.341c0.036,0,0.126-0.115,0.239-0.141c0.116-0.025,0.319-0.088,0.332,0.026c0.013,0.115,0.139,0.152,0.013,0.203c-0.128,0.051-0.267,0.026-0.293-0.051c-0.025-0.077-0.114-0.077-0.203-0.013c-0.088,0.063-0.279,0.292-0.279,0.292s-0.306,0.139-0.343,0.114c-0.04-0.025,0.101-0.165,0.203-0.228c0.102-0.064,0.178-0.204,0.14-0.242c-0.038-0.038-0.088-0.279-0.063-0.343c0.025-0.063,0.139-0.152,0.013-0.216c-0.127-0.063-0.217-0.14-0.318-0.178s-0.216,0.152-0.305,0.204c-0.089,0.051-0.076,0.114-0.191,0.127c-0.114,0.013-0.189,0.165,0,0.254c0.191,0.089,0.255,0.152,0.204,0.204c-0.051,0.051-0.267-0.025-0.267-0.025s-0.165-0.076-0.268-0.076c-0.101,0-0.229-0.063-0.33-0.076c-0.102-0.013-0.306-0.013-0.355,0.038c-0.051,0.051-0.179,0.203-0.28,0.152c-0.101-0.051-0.101-0.102-0.241-0.051c-0.14,0.051-0.279-0.038-0.355,0.038c-0.077,0.076-0.013,0.076-0.255,0c-0.241-0.076-0.189,0.051-0.419,0.089s-0.368-0.038-0.432,0.038c-0.064,0.077-0.153,0.217-0.19,0.127c-0.038-0.088,0.126-0.241,0.062-0.292c-0.062-0.051-0.33-0.025-0.367,0.013c-0.039,0.038-0.014,0.178,0.011,0.229c0.026,0.05,0.064,0.254-0.011,0.216c-0.077-0.038-0.064-0.166-0.141-0.152c-0.076,0.013-0.165,0.051-0.203,0.077c-0.038,0.025-0.191,0.025-0.229,0.076c-0.037,0.051,0.014,0.191-0.051,0.203c-0.063,0.013-0.114,0.064-0.254-0.025c-0.14-0.089-0.14-0.038-0.178-0.012c-0.038,0.025-0.216,0.127-0.229,0.012c-0.013-0.114,0.025-0.152-0.089-0.229c-0.115-0.076-0.026-0.076,0.127-0.025c0.152,0.05,0.343,0.075,0.622-0.013c0.28-0.089,0.395-0.127,0.28-0.178c-0.115-0.05-0.229-0.101-0.406-0.127c-0.179-0.025-0.42-0.025-0.7-0.127c-0.279-0.102-0.343-0.14-0.457-0.165c-0.115-0.026-0.813-0.14-1.132-0.089c-0.317,0.051-1.193,0.28-1.245,0.318s-0.128,0.19-0.292,0.318c-0.165,0.127-0.47,0.419-0.712,0.47c-0.241,0.051-0.521,0.254-0.521,0.305c0,0.051,0.101,0.242,0.076,0.28c-0.025,0.038,0.05,0.229,0.191,0.28c0.139,0.05,0.381,0.038,0.393-0.039c0.014-0.076,0.204-0.241,0.217-0.127c0.013,0.115,0.14,0.292,0.114,0.368c-0.025,0.077,0,0.153,0.09,0.14c0.088-0.012,0.559-0.114,0.559-0.114s0.153-0.064,0.127-0.166c-0.026-0.101,0.166-0.241,0.203-0.279c0.038-0.038,0.178-0.191,0.014-0.241c-0.167-0.051-0.293-0.064-0.115-0.216s0.292,0,0.521-0.229c0.229-0.229-0.051-0.292,0.191-0.305c0.241-0.013,0.496-0.025,0.444,0.051c-0.05,0.076-0.342,0.242-0.508,0.318c-0.166,0.077-0.14,0.216-0.076,0.292c0.063,0.076,0.09,0.254,0.204,0.229c0.113-0.025,0.254-0.114,0.38-0.101c0.128,0.012,0.383-0.013,0.42-0.013c0.039,0,0.216,0.178,0.114,0.203c-0.101,0.025-0.229,0.013-0.445,0.025c-0.215,0.013-0.456,0.013-0.456,0.051c0,0.039,0.292,0.127,0.19,0.191c-0.102,0.063-0.203-0.013-0.331-0.026c-0.127-0.012-0.203,0.166-0.241,0.267c-0.039,0.102,0.063,0.28-0.127,0.216c-0.191-0.063-0.331-0.063-0.381-0.038c-0.051,0.025-0.203,0.076-0.331,0.114c-0.126,0.038-0.076-0.063-0.242-0.063c-0.164,0-0.164,0-0.164,0l-0.103,0.013c0,0-0.101-0.063-0.114-0.165c-0.013-0.102,0.05-0.216-0.013-0.241c-0.064-0.026-0.292,0.012-0.33,0.088c-0.038,0.076-0.077,0.216-0.026,0.28c0.052,0.063,0.204,0.19,0.064,0.152c-0.14-0.038-0.317-0.051-0.419,0.026c-0.101,0.076-0.279,0.241-0.279,0.241s-0.318,0.025-0.318,0.102c0,0.077,0,0.178-0.114,0.191c-0.115,0.013-0.268,0.05-0.42,0.076c-0.153,0.025-0.139,0.088-0.317,0.102s-0.204,0.089-0.038,0.114c0.165,0.025,0.418,0.127,0.431,0.241c0.014,0.114-0.013,0.242-0.076,0.356c-0.043,0.079-0.305,0.026-0.458,0.026c-0.152,0-0.456-0.051-0.584,0c-0.127,0.051-0.102,0.305-0.064,0.419c0.039,0.114-0.012,0.178-0.063,0.216c-0.051,0.038-0.065,0.152,0,0.204c0.063,0.051,0.114,0.165,0.166,0.178c0.051,0.013,0.215-0.038,0.279,0.025c0.064,0.064,0.127,0.216,0.165,0.178c0.039-0.038,0.089-0.203,0.153-0.166c0.064,0.039,0.216-0.012,0.331-0.025s0.177-0.14,0.292-0.204c0.114-0.063,0.05-0.063,0.013-0.14c-0.038-0.076,0.114-0.165,0.204-0.254c0.088-0.089,0.253-0.013,0.292-0.115c0.038-0.102,0.051-0.279,0.151-0.267c0.103,0.013,0.243,0.076,0.331,0.076c0.089,0,0.279-0.14,0.332-0.165c0.05-0.025,0.241-0.013,0.267,0.102c0.025,0.114,0.241,0.254,0.292,0.279c0.051,0.025,0.381,0.127,0.433,0.165c0.05,0.038,0.126,0.153,0.152,0.254c0.025,0.102,0.114,0.102,0.128,0.013c0.012-0.089-0.065-0.254,0.025-0.242c0.088,0.013,0.191-0.026,0.191-0.026s-0.243-0.165-0.331-0.203c-0.088-0.038-0.255-0.114-0.331-0.241c-0.076-0.127-0.267-0.153-0.254-0.279c0.013-0.127,0.191-0.051,0.292,0.051c0.102,0.102,0.356,0.241,0.445,0.33c0.088,0.089,0.229,0.127,0.267,0.242c0.039,0.114,0.152,0.241,0.19,0.292c0.038,0.051,0.165,0.331,0.204,0.394c0.038,0.063,0.165-0.012,0.229-0.063c0.063-0.051,0.179-0.076,0.191-0.178c0.013-0.102-0.153-0.178-0.203-0.216c-0.051-0.038,0.127-0.076,0.191-0.127c0.063-0.05,0.177-0.14,0.228-0.063c0.051,0.077,0.026,0.381,0.051,0.432c0.025,0.051,0.279,0.127,0.331,0.191c0.05,0.063,0.267,0.089,0.304,0.051c0.039-0.038,0.242,0.026,0.294,0.038c0.049,0.013,0.202-0.025,0.304-0.05c0.103-0.025,0.204-0.102,0.191,0.063c-0.013,0.165-0.051,0.419-0.179,0.546c-0.127,0.127-0.076,0.191-0.202,0.191c-0.06,0-0.113,0-0.156,0.021c-0.041-0.065-0.098-0.117-0.175-0.097c-0.152,0.038-0.344,0.038-0.47,0.19c-0.128,0.153-0.178,0.165-0.204,0.114c-0.025-0.051,0.369-0.267,0.317-0.331c-0.05-0.063-0.355-0.038-0.521-0.038c-0.166,0-0.305-0.102-0.433-0.127c-0.126-0.025-0.292,0.127-0.418,0.254c-0.128,0.127-0.216,0.038-0.331,0.038c-0.115,0-0.331-0.165-0.331-0.165s-0.216-0.089-0.305-0.089c-0.088,0-0.267-0.165-0.318-0.165c-0.05,0-0.19-0.115-0.088-0.166c0.101-0.05,0.202,0.051,0.101-0.229c-0.101-0.279-0.33-0.216-0.419-0.178c-0.088,0.039-0.724,0.025-0.775,0.025c-0.051,0-0.419,0.127-0.533,0.178c-0.116,0.051-0.318,0.115-0.369,0.14c-0.051,0.025-0.318-0.051-0.433,0.013c-0.151,0.084-0.291,0.216-0.33,0.216c-0.038,0-0.153,0.089-0.229,0.28c-0.077,0.19,0.013,0.355-0.128,0.419c-0.139,0.063-0.394,0.204-0.495,0.305c-0.102,0.101-0.229,0.458-0.355,0.623c-0.127,0.165,0,0.317,0.025,0.419c0.025,0.101,0.114,0.292-0.025,0.471c-0.14,0.178-0.127,0.266-0.191,0.279c-0.063,0.013,0.063,0.063,0.088,0.19c0.025,0.128-0.114,0.255,0.128,0.369c0.241,0.113,0.355,0.217,0.418,0.367c0.064,0.153,0.382,0.407,0.382,0.407s0.229,0.205,0.344,0.293c0.114,0.089,0.152,0.038,0.177-0.05c0.025-0.09,0.178-0.104,0.355-0.104c0.178,0,0.305,0.04,0.483,0.014c0.178-0.025,0.356-0.141,0.42-0.166c0.063-0.025,0.279-0.164,0.443-0.063c0.166,0.103,0.141,0.241,0.23,0.332c0.088,0.088,0.24,0.037,0.355-0.051c0.114-0.09,0.064-0.052,0.203,0.025c0.14,0.075,0.204,0.151,0.077,0.267c-0.128,0.113-0.051,0.293-0.128,0.47c-0.076,0.178-0.063,0.203,0.077,0.278c0.14,0.076,0.394,0.548,0.47,0.638c0.077,0.088-0.025,0.342,0.064,0.495c0.089,0.151,0.178,0.254,0.077,0.331c-0.103,0.075-0.28,0.216-0.292,0.47s0.051,0.431,0.102,0.521s0.177,0.331,0.241,0.419c0.064,0.089,0.14,0.305,0.152,0.445c0.013,0.14-0.024,0.306,0.039,0.381c0.064,0.076,0.102,0.191,0.216,0.292c0.115,0.103,0.152,0.318,0.152,0.318s0.039,0.089,0.051,0.229c0.012,0.14,0.025,0.228,0.152,0.292c0.126,0.063,0.215,0.076,0.28,0.013c0.063-0.063,0.381-0.077,0.546-0.063c0.165,0.013,0.355-0.075,0.521-0.19s0.407-0.419,0.496-0.508c0.089-0.09,0.292-0.255,0.268-0.356c-0.025-0.101-0.077-0.203,0.024-0.254c0.102-0.052,0.344-0.152,0.356-0.229c0.013-0.077-0.09-0.395-0.115-0.457c-0.024-0.064,0.064-0.18,0.165-0.306c0.103-0.128,0.421-0.216,0.471-0.267c0.051-0.053,0.191-0.267,0.217-0.433c0.024-0.167-0.051-0.369,0-0.457c0.05-0.09,0.013-0.165-0.103-0.268c-0.114-0.102-0.089-0.407-0.127-0.457c-0.037-0.051-0.013-0.319,0.063-0.345c0.076-0.023,0.242-0.279,0.344-0.393c0.102-0.114,0.394-0.47,0.534-0.496c0.139-0.025,0.355-0.229,0.368-0.343c0.013-0.115,0.38-0.547,0.394-0.635c0.013-0.09,0.166-0.42,0.102-0.497c-0.062-0.076-0.559,0.115-0.622,0.141c-0.064,0.025-0.241,0.127-0.446,0.113c-0.202-0.013-0.114-0.177-0.127-0.254c-0.012-0.076-0.228-0.368-0.279-0.381c-0.051-0.012-0.203-0.166-0.267-0.317c-0.063-0.153-0.152-0.343-0.254-0.458c-0.102-0.114-0.165-0.38-0.268-0.559c-0.101-0.178-0.189-0.407-0.279-0.572c-0.021-0.041-0.045-0.079-0.067-0.117c0.118-0.029,0.289-0.082,0.31-0.009c0.024,0.088,0.165,0.279,0.19,0.419s0.165,0.089,0.178,0.216c0.014,0.128,0.14,0.433,0.19,0.47c0.052,0.038,0.28,0.242,0.318,0.318c0.038,0.076,0.089,0.178,0.127,0.369c0.038,0.19,0.076,0.444,0.179,0.482c0.102,0.038,0.444-0.064,0.508-0.102s0.482-0.242,0.635-0.255c0.153-0.012,0.179-0.115,0.368-0.152c0.191-0.038,0.331-0.177,0.458-0.28c0.127-0.101,0.28-0.355,0.33-0.444c0.052-0.088,0.179-0.152,0.115-0.253c-0.063-0.103-0.331-0.254-0.433-0.268c-0.102-0.012-0.089-0.178-0.152-0.178s-0.051,0.088-0.178,0.153c-0.127,0.063-0.255,0.19-0.344,0.165s0.026-0.089-0.113-0.203s-0.192-0.14-0.192-0.228c0-0.089-0.278-0.255-0.304-0.382c-0.026-0.127,0.19-0.305,0.254-0.19c0.063,0.114,0.115,0.292,0.279,0.368c0.165,0.076,0.318,0.204,0.395,0.229c0.076,0.025,0.267-0.14,0.33-0.114c0.063,0.024,0.191,0.253,0.306,0.292c0.113,0.038,0.495,0.051,0.559,0.051s0.33,0.013,0.381-0.063c0.051-0.076,0.089-0.076,0.153-0.076c0.062,0,0.177,0.229,0.267,0.254c0.089,0.025,0.254,0.013,0.241,0.179c-0.012,0.164,0.076,0.305,0.165,0.317c0.09,0.012,0.293-0.191,0.293-0.191s0,0.318-0.012,0.433c-0.014,0.113,0.139,0.534,0.139,0.534s0.19,0.393,0.241,0.482s0.267,0.355,0.267,0.47c0,0.115,0.025,0.293,0.103,0.293c0.076,0,0.152-0.203,0.24-0.331c0.091-0.126,0.116-0.305,0.153-0.432c0.038-0.127,0.038-0.356,0.038-0.444c0-0.09,0.075-0.166,0.255-0.242c0.178-0.076,0.304-0.292,0.456-0.407c0.153-0.115,0.141-0.305,0.446-0.305c0.305,0,0.278,0,0.355-0.077c0.076-0.076,0.151-0.127,0.19,0.013c0.038,0.14,0.254,0.343,0.292,0.394c0.038,0.052,0.114,0.191,0.103,0.344c-0.013,0.152,0.012,0.33,0.075,0.33s0.191-0.216,0.191-0.216s0.279-0.189,0.267,0.013c-0.014,0.203,0.025,0.419,0.025,0.545c0,0.053,0.042,0.135,0.088,0.21c-0.005,0.059-0.004,0.119-0.009,0.178C27.388,17.153,27.387,17.327,27.436,17.39zM20.382,12.064c0.076,0.05,0.102,0.127,0.152,0.203c0.052,0.076,0.14,0.05,0.203,0.114c0.063,0.064-0.178,0.14-0.075,0.216c0.101,0.077,0.151,0.381,0.165,0.458c0.013,0.076-0.279,0.114-0.369,0.102c-0.089-0.013-0.354-0.102-0.445-0.127c-0.089-0.026-0.139-0.343-0.025-0.331c0.116,0.013,0.141-0.025,0.267-0.139c0.128-0.115-0.189-0.166-0.278-0.191c-0.089-0.025-0.268-0.305-0.331-0.394c-0.062-0.089-0.014-0.228,0.141-0.331c0.076-0.051,0.279,0.063,0.381,0c0.101-0.063,0.203-0.14,0.241-0.165c0.039-0.025,0.293,0.038,0.33,0.114c0.039,0.076,0.191,0.191,0.141,0.229c-0.052,0.038-0.281,0.076-0.356,0c-0.075-0.077-0.255,0.012-0.268,0.152C20.242,12.115,20.307,12.013,20.382,12.064zM16.875,12.28c-0.077-0.025,0.025-0.178,0.102-0.229c0.075-0.051,0.164-0.178,0.241-0.305c0.076-0.127,0.178-0.14,0.241-0.127c0.063,0.013,0.203,0.241,0.241,0.318c0.038,0.076,0.165-0.026,0.217-0.051c0.05-0.025,0.127-0.102,0.14-0.165s0.127-0.102,0.254-0.102s0.013,0.102-0.076,0.127c-0.09,0.025-0.038,0.077,0.113,0.127c0.153,0.051,0.293,0.191,0.459,0.279c0.165,0.089,0.19,0.267,0.088,0.292c-0.101,0.025-0.406,0.051-0.521,0.038c-0.114-0.013-0.254-0.127-0.419-0.153c-0.165-0.025-0.369-0.013-0.433,0.077s-0.292,0.05-0.395,0.05c-0.102,0-0.228,0.127-0.253,0.077C16.875,12.534,16.951,12.306,16.875,12.28zM17.307,9.458c0.063-0.178,0.419,0.038,0.355,0.127C17.599,9.675,17.264,9.579,17.307,9.458zM17.802,18.584c0.063,0.102-0.14,0.431-0.254,0.407c-0.113-0.027-0.076-0.318-0.038-0.382C17.548,18.545,17.769,18.529,17.802,18.584zM13.189,12.674c0.025-0.051-0.039-0.153-0.127-0.013C13.032,12.71,13.164,12.725,13.189,12.674zM20.813,8.035c0.141,0.076,0.339,0.107,0.433,0.013c0.076-0.076,0.013-0.204-0.05-0.216c-0.064-0.013-0.104-0.115,0.062-0.203c0.165-0.089,0.343-0.204,0.534-0.229c0.19-0.025,0.622-0.038,0.774,0c0.152,0.039,0.382-0.166,0.445-0.254s-0.203-0.152-0.279-0.051c-0.077,0.102-0.444,0.076-0.521,0.051c-0.076-0.025-0.686,0.102-0.812,0.102c-0.128,0-0.179,0.152-0.356,0.229c-0.179,0.076-0.42,0.191-0.509,0.229c-0.088,0.038-0.177,0.19-0.101,0.216C20.509,7.947,20.674,7.959,20.813,8.035zM14.142,12.674c0.064-0.089-0.051-0.217-0.114-0.217c-0.12,0-0.178,0.191-0.103,0.254C14.002,12.776,14.078,12.763,14.142,12.674zM14.714,13.017c0.064,0.025,0.114,0.102,0.165,0.114c0.052,0.013,0.217,0,0.167-0.127s-0.167-0.127-0.204-0.127c-0.038,0-0.203-0.038-0.267,0C14.528,12.905,14.65,12.992,14.714,13.017zM11.308,10.958c0.101,0.013,0.217-0.063,0.305-0.101c0.088-0.038,0.216-0.114,0.216-0.229c0-0.114-0.025-0.216-0.077-0.267c-0.051-0.051-0.14-0.064-0.216-0.051c-0.115,0.02-0.127,0.14-0.203,0.14c-0.076,0-0.165,0.025-0.14,0.114s0.077,0.152,0,0.19C11.117,10.793,11.205,10.946,11.308,10.958zM11.931,10.412c0.127,0.051,0.394,0.102,0.292,0.153c-0.102,0.051-0.28,0.19-0.305,0.267s0.216,0.153,0.216,0.153s-0.077,0.089-0.013,0.114c0.063,0.025,0.102-0.089,0.203-0.089c0.101,0,0.304,0.063,0.406,0.063c0.103,0,0.267-0.14,0.254-0.229c-0.013-0.089-0.14-0.229-0.254-0.28c-0.113-0.051-0.241-0.28-0.317-0.331c-0.076-0.051,0.076-0.178-0.013-0.267c-0.09-0.089-0.153-0.076-0.255-0.14c-0.102-0.063-0.191,0.013-0.254,0.089c-0.063,0.076-0.14-0.013-0.217,0.012c-0.102,0.035-0.063,0.166-0.012,0.229C11.714,10.221,11.804,10.361,11.931,10.412zM24.729,17.198c-0.083,0.037-0.153,0.47,0,0.521c0.152,0.052,0.241-0.202,0.191-0.267C24.868,17.39,24.843,17.147,24.729,17.198zM20.114,20.464c-0.159-0.045-0.177,0.166-0.304,0.306c-0.128,0.141-0.267,0.254-0.317,0.241c-0.052-0.013-0.331,0.089-0.242,0.279c0.089,0.191,0.076,0.382-0.013,0.472c-0.089,0.088,0.076,0.342,0.052,0.482c-0.026,0.139,0.037,0.229,0.215,0.229s0.242-0.064,0.318-0.229c0.076-0.166,0.088-0.331,0.164-0.47c0.077-0.141,0.141-0.434,0.179-0.51c0.038-0.075,0.114-0.316,0.102-0.457C20.254,20.669,20.204,20.489,20.114,20.464zM10.391,8.802c-0.069-0.06-0.229-0.102-0.306-0.11c-0.076-0.008-0.152,0.06-0.321,0.06c-0.168,0-0.279,0.067-0.347,0C9.349,8.684,9.068,8.65,9.042,8.692C9.008,8.749,8.941,8.751,9.008,8.87c0.069,0.118,0.12,0.186,0.179,0.178s0.262-0.017,0.288,0.051C9.5,9.167,9.569,9.226,9.712,9.184c0.145-0.042,0.263-0.068,0.296-0.119c0.033-0.051,0.263-0.059,0.263-0.059S10.458,8.861,10.391,8.802z",globe:"M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM19.158,23.269c-0.079,0.064-0.183,0.13-0.105,0.207c0.078,0.078-0.09,0.131-0.09,0.17s0.104,0.246,0.052,0.336c-0.052,0.092-0.091,0.223-0.13,0.301c-0.039,0.077-0.131,0.155-0.104,0.272c0.025,0.116-0.104,0.077-0.104,0.194c0,0.116,0.116,0.065,0.09,0.208c-0.025,0.144-0.09,0.183-0.09,0.285c0,0.104,0.064,0.247,0.064,0.286s-0.064,0.17-0.155,0.272c-0.092,0.104-0.155,0.17-0.144,0.233c0.014,0.065,0.104,0.144,0.091,0.184c-0.013,0.037-0.129,0.168-0.116,0.259c0.014,0.09,0.129,0.053,0.155,0.116c0.026,0.065-0.155,0.118-0.078,0.183c0.078,0.064,0.183,0.051,0.156,0.208c-0.019,0.112,0.064,0.163,0.126,0.198c-0.891,0.221-1.818,0.352-2.777,0.352C9.639,27.533,4.466,22.36,4.466,16c0-2.073,0.557-4.015,1.518-5.697c0.079-0.042,0.137-0.069,0.171-0.062c0.065,0.013,0.079,0.104,0.183,0.13c0.104,0.026,0.195-0.078,0.26-0.117c0.064-0.039,0.116-0.195,0.051-0.182c-0.065,0.013-0.234,0-0.234,0s0.183-0.104,0.183-0.169s0.025-0.169,0.129-0.208C6.83,9.655,6.83,9.681,6.765,9.837C6.7,9.993,6.896,9.928,6.973,9.863s0.13-0.013,0.272-0.104c0.143-0.091,0.143-0.143,0.221-0.143c0.078,0,0.221,0.143,0.299,0.091c0.077-0.052,0.299,0.065,0.429,0.065c0.129,0,0.545,0.169,0.624,0.169c0.078,0,0.312,0.09,0.325,0.259c0.013,0.169,0.09,0.156,0.168,0.156s0.26,0.065,0.26,0.13c0,0.065-0.052,0.325,0.078,0.39c0.129,0.064,0.247,0.169,0.299,0.143c0.052-0.026,0-0.233-0.064-0.26c-0.065-0.026-0.027-0.117-0.052-0.169c-0.026-0.051,0.078-0.051,0.117,0.039c0.039,0.091,0.143,0.26,0.208,0.26c0.064,0,0.208,0.156,0.168,0.247c-0.039,0.091,0.039,0.221,0.156,0.221c0.116,0,0.26,0.182,0.312,0.195c0.052,0.013,0.117,0.078,0.117,0.117c0,0.04,0.065,0.26,0.065,0.351c0,0.09-0.04,0.454-0.053,0.597s0.104,0.39,0.234,0.52c0.129,0.13,0.246,0.377,0.324,0.429c0.079,0.052,0.13,0.195,0.247,0.182c0.117-0.013,0.195,0.078,0.299,0.26c0.104,0.182,0.208,0.48,0.286,0.506c0.078,0.026,0.208,0.117,0.142,0.182c-0.064,0.064-0.168,0.208-0.051,0.208c0.117,0,0.156-0.065,0.247,0.053c0.09,0.116,0.208,0.181,0.194,0.26c-0.013,0.077,0.104,0.103,0.156,0.116c0.052,0.013,0.169,0.247,0.286,0.143c0.117-0.104-0.155-0.259-0.234-0.326c-0.078-0.064,0-0.207-0.182-0.35c-0.182-0.143-0.156-0.247-0.286-0.351c-0.13-0.104-0.233-0.195-0.104-0.286c0.13-0.091,0.143,0.091,0.195,0.208c0.052,0.116,0.324,0.351,0.441,0.454c0.117,0.104,0.326,0.468,0.39,0.468s0.247,0.208,0.247,0.208s0.103,0.168,0.064,0.22c-0.039,0.052,0.053,0.247,0.144,0.299c0.09,0.052,0.455,0.22,0.507,0.247c0.052,0.027,0.155,0.221,0.299,0.221c0.142,0,0.247,0.014,0.286,0.053c0.039,0.038,0.155,0.194,0.234,0.104c0.078-0.092,0.09-0.131,0.208-0.131c0.117,0,0.168,0.091,0.233,0.156c0.065,0.065,0.247,0.235,0.338,0.222c0.091-0.013,0.208,0.104,0.273,0.064s0.169,0.025,0.22,0.052c0.054,0.026,0.234,0.118,0.222,0.272c-0.013,0.157,0.103,0.195,0.182,0.234c0.078,0.039,0.182,0.13,0.248,0.195c0.064,0.063,0.206,0.077,0.246,0.116c0.039,0.039,0.065,0.117,0.182,0.052c0.116-0.064,0.092-0.181,0.092-0.181s0.129-0.026,0.194,0.026c0.064,0.05,0.104,0.22,0.144,0.246c0.038,0.026,0.115,0.221,0.063,0.362c-0.051,0.145-0.038,0.286-0.091,0.286c-0.052,0-0.116,0.17-0.195,0.209c-0.076,0.039-0.285,0.221-0.272,0.286c0.013,0.063,0.131,0.258,0.104,0.35c-0.025,0.091-0.194,0.195-0.154,0.338c0.038,0.144,0.312,0.183,0.323,0.312c0.014,0.131,0.209,0.417,0.235,0.546c0.025,0.13,0.246,0.272,0.246,0.453c0,0.184,0.312,0.3,0.377,0.312c0.063,0.013,0.182,0.131,0.272,0.17s0.169,0.116,0.233,0.221s0.053,0.261,0.053,0.299c0,0.039-0.039,0.44-0.078,0.674C19.145,23.021,19.235,23.203,19.158,23.269zM10.766,11.188c0.039,0.013,0.117,0.091,0.156,0.091c0.04,0,0.234,0.156,0.286,0.208c0.053,0.052,0.053,0.195-0.013,0.208s-0.104-0.143-0.117-0.208c-0.013-0.065-0.143-0.065-0.208-0.104C10.805,11.344,10.66,11.152,10.766,11.188zM27.51,16.41c-0.144,0.182-0.13,0.272-0.195,0.286c-0.064,0.013,0.065,0.065,0.09,0.194c0.022,0.112-0.065,0.224,0.063,0.327c-0.486,4.619-3.71,8.434-8.016,9.787c-0.007-0.011-0.019-0.025-0.021-0.034c-0.027-0.078-0.027-0.233,0.064-0.285c0.091-0.053,0.312-0.233,0.363-0.272c0.052-0.04,0.13-0.221,0.091-0.247c-0.038-0.026-0.232,0-0.26-0.039c-0.026-0.039-0.026-0.092,0.104-0.182c0.13-0.091,0.195-0.222,0.247-0.26c0.052-0.039,0.155-0.117,0.195-0.209c0.038-0.09-0.041-0.039-0.118-0.039s-0.117-0.142-0.117-0.207s0.195,0.026,0.339,0.052c0.143,0.024,0.077-0.065,0.064-0.142c-0.013-0.078,0.026-0.209,0.105-0.17c0.076,0.039,0.479-0.013,0.531-0.026c0.052-0.013,0.194-0.246,0.246-0.312c0.053-0.065,0.064-0.129,0-0.168c-0.065-0.04-0.143-0.184-0.168-0.221c-0.026-0.041-0.039-0.274-0.013-0.34c0.025-0.063,0,0.377,0.181,0.43c0.183,0.052,0.286,0.078,0.455-0.078c0.169-0.155,0.298-0.26,0.312-0.363c0.013-0.104,0.052-0.209,0.117-0.246c0.065-0.039,0.104,0.103,0.182-0.065c0.078-0.17,0.156-0.157,0.234-0.299c0.077-0.144-0.13-0.325,0.024-0.43c0.157-0.103,0.43-0.233,0.43-0.233s0.078-0.039,0.234-0.078c0.155-0.038,0.324-0.014,0.376-0.09c0.052-0.079,0.104-0.247,0.182-0.338c0.079-0.092,0.169-0.234,0.13-0.299c-0.039-0.065,0.104-0.352,0.091-0.429c-0.013-0.078-0.13-0.261,0.065-0.416s0.402-0.391,0.416-0.454c0.012-0.065,0.169-0.338,0.154-0.469c-0.012-0.129-0.154-0.285-0.245-0.325c-0.092-0.037-0.286-0.05-0.364-0.154s-0.299-0.208-0.377-0.182c-0.077,0.026-0.208,0.051-0.312-0.015c-0.104-0.063-0.272-0.143-0.337-0.194c-0.066-0.051-0.234-0.09-0.312-0.09s-0.065-0.053-0.182,0.103c-0.117,0.157,0,0.209-0.208,0.182c-0.209-0.024,0.025-0.038,0.144-0.194c0.115-0.155-0.014-0.247-0.144-0.207c-0.13,0.039-0.039,0.117-0.247,0.156c-0.207,0.038-0.207-0.092-0.077-0.117c0.13-0.026,0.363-0.143,0.363-0.194c0-0.053-0.026-0.196-0.13-0.196s-0.078-0.129-0.233-0.297c-0.156-0.17-0.351-0.274-0.508-0.249c-0.154,0.026-0.272,0.065-0.35-0.076c-0.078-0.144-0.169-0.17-0.222-0.247c-0.051-0.078-0.182,0-0.221-0.039s-0.039-0.039-0.039-0.039s-0.169,0.039-0.077-0.078c0.09-0.117,0.129-0.338,0.09-0.325c-0.038,0.013-0.104,0.196-0.168,0.183c-0.064-0.013-0.014-0.04-0.144-0.117c-0.13-0.078-0.337-0.013-0.337,0.052c0,0.065-0.065,0.117-0.065,0.117s-0.039-0.038-0.078-0.117c-0.039-0.078-0.221-0.091-0.312-0.013c-0.09,0.078-0.142-0.196-0.207-0.196s-0.194,0.065-0.26,0.184c-0.064,0.116-0.038,0.285-0.092,0.272c-0.05-0.013-0.063-0.233-0.05-0.312c0.012-0.079,0.155-0.208,0.05-0.234c-0.103-0.026-0.259,0.13-0.323,0.143c-0.065,0.013-0.195,0.104-0.273,0.209c-0.077,0.103-0.116,0.168-0.195,0.207c-0.077,0.039-0.193,0-0.167-0.039c0.025-0.039-0.222-0.181-0.261-0.13c-0.04,0.052-0.155,0.091-0.272,0.144c-0.117,0.052-0.222-0.065-0.247-0.117s-0.079-0.064-0.091-0.234c-0.013-0.168,0.027-0.351,0.065-0.454c0.038-0.104-0.195-0.312-0.286-0.3c-0.091,0.015-0.182,0.105-0.272,0.091c-0.092-0.012-0.052-0.038-0.195-0.038c-0.143,0-0.026-0.025,0-0.143c0.025-0.116-0.052-0.273,0.092-0.377c0.142-0.104,0.091-0.351,0-0.363c-0.092-0.014-0.261,0.039-0.377,0.026c-0.116-0.014-0.208,0.091-0.169,0.207c0.039,0.117-0.065,0.195-0.104,0.183c-0.039-0.013-0.09-0.078-0.234,0.026c-0.142,0.103-0.194,0.064-0.337-0.052c-0.143-0.118-0.299-0.234-0.325-0.416c-0.026-0.182-0.04-0.364,0.013-0.468c0.051-0.104,0.051-0.285-0.026-0.312c-0.078-0.025,0.09-0.155,0.181-0.181c0.092-0.026,0.234-0.143,0.26-0.195c0.026-0.052,0.156-0.04,0.298-0.04c0.143,0,0.169,0,0.312,0.078c0.143,0.078,0.169-0.039,0.169-0.078c0-0.039,0.052-0.117,0.208-0.104c0.156,0.013,0.376-0.052,0.416-0.013s0.116,0.195,0.194,0.143c0.079-0.051,0.104-0.143,0.131,0.014c0.025,0.155,0.09,0.39,0.208,0.429c0.116,0.039,0.052,0.194,0.168,0.207c0.115,0.013,0.17-0.246,0.131-0.337c-0.04-0.09-0.118-0.363-0.183-0.428c-0.064-0.065-0.064-0.234,0.064-0.286c0.13-0.052,0.442-0.312,0.532-0.389c0.092-0.079,0.338-0.144,0.261-0.248c-0.078-0.104-0.104-0.168-0.104-0.247s0.078-0.052,0.117,0s0.194-0.078,0.155-0.143c-0.038-0.064-0.026-0.155,0.065-0.143c0.091,0.013,0.116-0.065,0.078-0.117c-0.039-0.052,0.091-0.117,0.182-0.091c0.092,0.026,0.325-0.013,0.364-0.065c0.038-0.052-0.078-0.104-0.078-0.208c0-0.104,0.155-0.195,0.247-0.208c0.091-0.013,0.207,0,0.221-0.039c0.012-0.039,0.143-0.143,0.155-0.052c0.014,0.091,0,0.247,0.104,0.247c0.104,0,0.232-0.117,0.272-0.129c0.038-0.013,0.286-0.065,0.338-0.078c0.052-0.013,0.363-0.039,0.325-0.13c-0.039-0.09-0.078-0.181-0.118-0.22c-0.039-0.039-0.077,0.013-0.13,0.078c-0.051,0.065-0.143,0.065-0.168,0.013c-0.026-0.051,0.012-0.207-0.078-0.156c-0.092,0.052-0.104,0.104-0.157,0.078c-0.052-0.026-0.103-0.117-0.103-0.117s0.129-0.064,0.038-0.182c-0.09-0.117-0.221-0.091-0.35-0.025c-0.13,0.064-0.118,0.051-0.273,0.09s-0.234,0.078-0.234,0.078s0.209-0.129,0.299-0.208c0.091-0.078,0.209-0.117,0.286-0.195c0.078-0.078,0.285,0.039,0.285,0.039s0.105-0.104,0.105-0.039s-0.027,0.234,0.051,0.234c0.079,0,0.299-0.104,0.21-0.131c-0.093-0.026,0.129,0,0.219-0.065c0.092-0.065,0.194-0.065,0.247-0.09c0.052-0.026,0.092-0.143,0.182-0.143c0.092,0,0.13,0.117,0,0.195s-0.143,0.273-0.208,0.325c-0.064,0.052-0.026,0.117,0.078,0.104c0.104-0.013,0.194,0.013,0.286-0.013s0.143,0.026,0.168,0.065c0.026,0.039,0.104-0.039,0.104-0.039s0.169-0.039,0.221,0.026c0.053,0.064,0.092-0.039,0.053-0.104c-0.039-0.064-0.092-0.129-0.13-0.208c-0.039-0.078-0.091-0.104-0.194-0.078c-0.104,0.026-0.13-0.026-0.195-0.064c-0.065-0.04-0.118,0.052-0.065-0.04c0.053-0.09,0.078-0.117,0.117-0.195c0.039-0.078,0.209-0.221,0.039-0.259c-0.169-0.04-0.222-0.065-0.247-0.143c-0.026-0.078-0.221-0.221-0.272-0.221c-0.053,0-0.233,0-0.247-0.065c-0.013-0.065-0.143-0.208-0.208-0.273c-0.064-0.065-0.312-0.351-0.351-0.377c-0.039-0.026-0.091-0.013-0.208,0.143c-0.116,0.157-0.22,0.183-0.312,0.144c-0.091-0.039-0.104-0.026-0.193-0.13c-0.093-0.104,0.09-0.117,0.051-0.182c-0.04-0.064-0.247-0.091-0.377-0.104c-0.13-0.013-0.221-0.156-0.416-0.169c-0.194-0.013-0.428,0.026-0.493,0.026c-0.064,0-0.064,0.091-0.09,0.234c-0.027,0.143,0.09,0.182-0.027,0.208c-0.116,0.026-0.169,0.039-0.052,0.091c0.117,0.052,0.273,0.26,0.273,0.26s0,0.117-0.092,0.182c-0.09,0.065-0.182,0.13-0.233,0.053c-0.053-0.079-0.195-0.065-0.155,0.013c0.038,0.078,0.116,0.117,0.116,0.195c0,0.077,0.117,0.272,0.039,0.337c-0.078,0.065-0.168,0.014-0.233,0.026s-0.131-0.104-0.078-0.13c0.051-0.026-0.014-0.221-0.014-0.221s-0.155,0.221-0.143,0.104c0.014-0.117-0.064-0.13-0.064-0.221c0-0.091-0.079-0.13-0.194-0.104c-0.118,0.026-0.26-0.04-0.482-0.079c-0.22-0.039-0.311-0.064-0.493-0.156c-0.182-0.091-0.247-0.026-0.338-0.013c-0.091,0.013-0.052-0.182-0.169-0.207c-0.116-0.027-0.181,0.025-0.207-0.144c-0.026-0.168,0.039-0.208,0.324-0.39c0.286-0.182,0.247-0.26,0.468-0.286c0.22-0.026,0.325,0.026,0.325-0.039s0.052-0.325,0.052-0.195S16.95,9.109,16.832,9.2c-0.116,0.091-0.052,0.104,0.04,0.104c0.091,0,0.259-0.091,0.259-0.091s0.208-0.091,0.26-0.013c0.053,0.078,0.053,0.156,0.144,0.156s0.285-0.104,0.116-0.195c-0.168-0.091-0.272-0.078-0.376-0.182s-0.078-0.065-0.195-0.039c-0.116,0.026-0.116-0.039-0.156-0.039s-0.104,0.026-0.13-0.026c-0.025-0.052,0.014-0.065,0.145-0.065c0.129,0,0.285,0.039,0.285,0.039s0.155-0.052,0.194-0.065c0.039-0.013,0.247-0.039,0.208-0.155c-0.04-0.117-0.169-0.117-0.208-0.156s0.078-0.09,0.143-0.117c0.065-0.026,0.247,0,0.247,0s0.117,0.013,0.117-0.039S17.897,8.2,17.976,8.239s0,0.156,0.117,0.13c0.116-0.026,0.143,0,0.207,0.039c0.065,0.039-0.013,0.195-0.077,0.221c-0.065,0.025-0.169,0.077-0.026,0.09c0.144,0.014,0.246,0.014,0.246,0.014s0.092-0.091,0.131-0.169c0.038-0.078,0.104-0.026,0.155,0c0.052,0.025,0.247,0.065,0.065,0.117c-0.183,0.052-0.221,0.117-0.26,0.182c-0.038,0.065-0.053,0.104-0.221,0.065c-0.17-0.039-0.26-0.026-0.299,0.039c-0.039,0.064-0.013,0.273,0.053,0.247c0.063-0.026,0.129-0.026,0.207-0.052c0.078-0.026,0.39,0.026,0.467,0.013c0.078-0.013,0.209,0.13,0.248,0.104c0.039-0.026,0.117,0.052,0.194,0.104c0.078,0.052,0.052-0.117,0.194-0.013c0.144,0.104,0.065,0.104,0.144,0.104c0.076,0,0.246,0.013,0.246,0.013s0.014-0.129,0.144-0.104c0.13,0.026,0.245,0.169,0.232,0.064c-0.012-0.103,0.013-0.181-0.09-0.259c-0.104-0.078-0.272-0.13-0.299-0.169c-0.026-0.039-0.052-0.091-0.013-0.117c0.039-0.025,0.221,0.013,0.324,0.079c0.104,0.065,0.195,0.13,0.273,0.078c0.077-0.052,0.17-0.078,0.208-0.117c0.038-0.04,0.13-0.156,0.13-0.156s-0.391-0.051-0.441-0.117c-0.053-0.065-0.235-0.156-0.287-0.156s-0.194,0.091-0.246-0.039s-0.052-0.286-0.105-0.299c-0.05-0.013-0.597-0.091-0.674-0.13c-0.078-0.039-0.39-0.13-0.507-0.195s-0.286-0.156-0.389-0.156c-0.104,0-0.533,0.052-0.611,0.039c-0.078-0.013-0.312,0.026-0.403,0.039c-0.091,0.013,0.117,0.182-0.077,0.221c-0.195,0.039-0.169,0.065-0.13-0.13c0.038-0.195-0.131-0.247-0.299-0.169c-0.169,0.078-0.442,0.13-0.377,0.221c0.065,0.091-0.012,0.157,0.117,0.247c0.13,0.091,0.183,0.117,0.35,0.104c0.17-0.013,0.339,0.025,0.339,0.025s0,0.157-0.064,0.182c-0.065,0.026-0.169,0.026-0.196,0.104c-0.025,0.078-0.155,0.117-0.155,0.078s0.065-0.169-0.026-0.234c-0.09-0.065-0.117-0.078-0.221-0.013c-0.104,0.065-0.116,0.091-0.169-0.013C16.053,8.291,15.897,8.2,15.897,8.2s-0.104-0.129-0.182-0.194c-0.077-0.065-0.22-0.052-0.234,0.013c-0.013,0.064,0.026,0.129,0.078,0.247c0.052,0.117,0.104,0.337,0.013,0.351c-0.091,0.013-0.104,0.026-0.195,0.052c-0.091,0.026-0.13-0.039-0.13-0.143s-0.04-0.195-0.013-0.234c0.026-0.039-0.104,0.027-0.234,0c-0.13-0.025-0.233,0.052-0.104,0.092c0.13,0.039,0.157,0.194,0.039,0.233c-0.117,0.039-0.559,0-0.702,0s-0.35,0.039-0.39-0.039c-0.039-0.078,0.118-0.129,0.208-0.129c0.091,0,0.363,0.012,0.467-0.13c0.104-0.143-0.13-0.169-0.233-0.169c-0.104,0-0.183-0.039-0.299-0.155c-0.118-0.117,0.078-0.195,0.052-0.247c-0.026-0.052-0.156-0.014-0.272-0.014c-0.117,0-0.299-0.09-0.299,0.014c0,0.104,0.143,0.402,0.052,0.337c-0.091-0.064-0.078-0.156-0.143-0.234c-0.065-0.078-0.168-0.065-0.299-0.052c-0.129,0.013-0.35,0.052-0.415,0.039c-0.064-0.013-0.013-0.013-0.156-0.078c-0.142-0.065-0.208-0.052-0.312-0.117C12.091,7.576,12.182,7.551,12,7.538c-0.181-0.013-0.168,0.09-0.35,0.065c-0.182-0.026-0.234,0.013-0.416,0c-0.182-0.013-0.272-0.026-0.299,0.065c-0.025,0.091-0.078,0.247-0.156,0.247c-0.077,0-0.169,0.091,0.078,0.104c0.247,0.013,0.105,0.129,0.325,0.117c0.221-0.013,0.416-0.013,0.468-0.117c0.052-0.104,0.091-0.104,0.117-0.065c0.025,0.039,0.22,0.272,0.22,0.272s0.131,0.104,0.183,0.13c0.051,0.026-0.052,0.143-0.156,0.078c-0.104-0.065-0.299-0.051-0.377-0.116c-0.078-0.065-0.429-0.065-0.52-0.052c-0.09,0.013-0.247-0.039-0.299-0.039c-0.051,0-0.221,0.13-0.221,0.13S10.532,8.252,10.494,8.2c-0.039-0.052-0.104,0.052-0.156,0.065c-0.052,0.013-0.208-0.104-0.364-0.052C9.818,8.265,9.87,8.317,9.649,8.304s-0.272-0.052-0.35-0.039C9.22,8.278,9.22,8.278,9.22,8.278S9.233,8.33,9.143,8.382C9.052,8.434,8.986,8.499,8.921,8.421C8.857,8.343,8.818,8.343,8.779,8.33c-0.04-0.013-0.118-0.078-0.286-0.04C8.324,8.33,8.064,8.239,8.013,8.239c-0.04,0-0.313-0.015-0.491-0.033c2.109-2.292,5.124-3.74,8.478-3.74c2.128,0,4.117,0.589,5.83,1.598c-0.117,0.072-0.319,0.06-0.388,0.023c-0.078-0.043-0.158-0.078-0.475-0.061c-0.317,0.018-0.665,0.122-0.595,0.226c0.072,0.104-0.142,0.165-0.197,0.113c-0.055-0.052-0.309,0.06-0.293,0.165c0.016,0.104-0.039,0.225-0.175,0.199c-0.134-0.027-0.229,0.06-0.237,0.146c-0.007,0.087-0.309,0.147-0.332,0.147c-0.024,0-0.412-0.008-0.27,0.095c0.097,0.069,0.15,0.027,0.27,0.052c0.119,0.026,0.214,0.217,0.277,0.243c0.062,0.026,0.15,0,0.189-0.052c0.04-0.052,0.095-0.234,0.095-0.234s0,0.173,0.097,0.208c0.095,0.035,0.331-0.026,0.395-0.017c0.064,0.008,0.437,0.061,0.538,0.112c0.104,0.052,0.356,0.087,0.428,0.199c0.071,0.113,0.08,0.503,0.119,0.546c0.04,0.043,0.174-0.139,0.205-0.182c0.031-0.044,0.198-0.018,0.254,0.042c0.056,0.061,0.182,0.208,0.175,0.269C21.9,8.365,21.877,8.459,21.83,8.425c-0.048-0.034-0.127-0.025-0.096-0.095c0.032-0.069,0.048-0.217-0.015-0.217c-0.064,0-0.119,0-0.119,0s-0.12-0.035-0.199,0.095s-0.015,0.26,0.04,0.26s0.184,0,0.184,0.034c0,0.035-0.136,0.139-0.128,0.2c0.009,0.061,0.11,0.268,0.144,0.312c0.031,0.043,0.197,0.086,0.244,0.096c0.049,0.008-0.111,0.017-0.07,0.077c0.04,0.061,0.102,0.208,0.189,0.243c0.087,0.035,0.333,0.19,0.363,0.26c0.032,0.069,0.222-0.052,0.262-0.061c0.04-0.008,0.032,0.182,0.143,0.191c0.11,0.008,0.15-0.018,0.245-0.096s0.072-0.182,0.079-0.26c0.009-0.078,0-0.138,0.104-0.113c0.104,0.026,0.158-0.018,0.15-0.104c-0.008-0.087-0.095-0.191,0.07-0.217c0.167-0.026,0.254-0.138,0.357-0.138c0.103,0,0.389,0.043,0.419,0c0.032-0.043,0.167-0.243,0.254-0.251c0.067-0.007,0.224-0.021,0.385-0.042c1.582,1.885,2.561,4.284,2.673,6.905c-0.118,0.159-0.012,0.305,0.021,0.408c0.001,0.03,0.005,0.058,0.005,0.088c0,0.136-0.016,0.269-0.021,0.404C27.512,16.406,27.512,16.408,27.51,16.41zM17.794,12.084c-0.064,0.013-0.169-0.052-0.169-0.143s-0.091,0.169-0.04,0.247c0.053,0.078-0.104,0.169-0.155,0.169s-0.091-0.116-0.078-0.233c0.014-0.117-0.077-0.221-0.221-0.208c-0.143,0.014-0.208,0.13-0.259,0.169c-0.053,0.039-0.053,0.259-0.04,0.312s0.013,0.235-0.116,0.221c-0.118-0.013-0.092-0.233-0.079-0.312c0.014-0.078-0.039-0.273,0.014-0.376c0.053-0.104,0.207-0.143,0.312-0.156s0.324,0.065,0.363,0.052c0.04-0.014,0.222-0.014,0.312,0C17.729,11.837,17.858,12.071,17.794,12.084zM18.027,12.123c0.04,0.026,0.311-0.039,0.364,0.026c0.051,0.065-0.054,0.078-0.183,0.13c-0.129,0.052-0.169,0.039-0.221,0.104s-0.221,0.09-0.299,0.168c-0.078,0.079-0.217,0.125-0.246,0.065c-0.04-0.078,0.013-0.039,0.025-0.078c0.013-0.039,0.245-0.129,0.245-0.129S17.988,12.097,18.027,12.123zM16.988,11.668c-0.038,0.013-0.182-0.026-0.3-0.026c-0.116,0-0.091-0.078-0.143-0.064c-0.051,0.013-0.168,0.039-0.247,0.078c-0.078,0.039-0.208,0.03-0.208-0.04c0-0.104,0.052-0.078,0.221-0.143c0.169-0.065,0.352-0.247,0.429-0.169c0.078,0.078,0.221,0.169,0.312,0.182C17.144,11.5,17.026,11.655,16.988,11.668zM15.659,7.637c-0.079,0.026-0.347,0.139-0.321,0.199c0.01,0.023,0.078,0.069,0.19,0.052c0.113-0.018,0.276-0.035,0.355-0.043c0.078-0.009,0.095-0.139,0.009-0.147C15.805,7.689,15.736,7.611,15.659,7.637zM14.698,7.741c-0.061,0.026-0.243-0.043-0.338,0.018c-0.061,0.038-0.026,0.164,0.07,0.172c0.095,0.009,0.259-0.06,0.276-0.008c0.018,0.052,0.078,0.286,0.234,0.208c0.156-0.078,0.147-0.147,0.19-0.156c0.043-0.009-0.008-0.199-0.078-0.243C14.983,7.689,14.758,7.715,14.698,7.741zM14.385,7.005c0.017,0.044-0.008,0.078,0.113,0.095c0.121,0.018,0.173,0.035,0.243,0.035c0.069,0,0.042-0.113-0.018-0.19c-0.061-0.078-0.043-0.069-0.199-0.113c-0.156-0.043-0.312-0.043-0.416-0.035c-0.104,0.009-0.217-0.017-0.243,0.104c-0.013,0.062,0.07,0.112,0.174,0.112S14.368,6.962,14.385,7.005zM14.611,7.481c0.043,0.095,0.043,0.051,0.165,0.061C14.896,7.551,14.991,7.421,15,7.378c0.009-0.044-0.061-0.13-0.225-0.113c-0.165,0.017-0.667-0.026-0.736,0.034c-0.066,0.058,0,0.233-0.026,0.251c-0.026,0.017,0.009,0.095,0.077,0.078c0.069-0.017,0.104-0.182,0.157-0.182C14.299,7.447,14.568,7.386,14.611,7.481zM12.982,7.126c0.052,0.043,0.183,0.008,0.173-0.035c-0.008-0.043,0.053-0.217-0.051-0.225C13,6.858,12.854,6.962,12.697,7.014c-0.101,0.033-0.078,0.13-0.009,0.13S12.931,7.083,12.982,7.126zM13.72,7.282c-0.087,0.043-0.114,0.069-0.191,0.052c-0.078-0.017-0.078-0.156-0.217-0.13c-0.138,0.026-0.164,0.104-0.207,0.139s-0.139,0.061-0.173,0.043c-0.034-0.017-0.234-0.129-0.234-0.129s-0.416-0.018-0.433-0.07c-0.017-0.052-0.086-0.138-0.277-0.121s-0.52,0.13-0.572,0.13c-0.052,0,0.062,0.104-0.009,0.104c-0.069,0-0.155-0.008-0.181,0.069c-0.018,0.053,0.078,0.052,0.189,0.052c0.112,0,0.295,0,0.347-0.026c0.052-0.026,0.312-0.087,0.303-0.009c-0.009,0.079,0.104,0.199,0.164,0.182c0.061-0.017,0.183-0.13,0.243-0.086c0.061,0.043,0.07,0.146,0.13,0.173c0.061,0.025,0.226,0.025,0.304,0c0.077-0.027,0.294-0.027,0.389-0.009c0.095,0.018,0.373,0.069,0.399,0.018c0.026-0.053,0.104-0.061,0.112-0.113s0.051-0.216,0.051-0.216S13.806,7.239,13.72,7.282zM18.105,16.239c-0.119,0.021-0.091,0.252,0.052,0.21C18.3,16.407,18.223,16.217,18.105,16.239zM19.235,15.929c-0.104-0.026-0.221,0-0.299,0.013c-0.078,0.013-0.299,0.208-0.299,0.208s0.143,0.026,0.233,0.026c0.092,0,0.144,0.051,0.221,0.09c0.078,0.04,0.221-0.052,0.272-0.052c0.053,0,0.118,0.156,0.131-0.013C19.508,16.032,19.339,15.955,19.235,15.929zM15.616,7.507c-0.043-0.104-0.259-0.139-0.304-0.035C15.274,7.563,15.659,7.611,15.616,7.507zM18.093,15.292c0.143-0.026,0.064-0.144-0.053-0.13C17.922,15.175,17.949,15.318,18.093,15.292zM19.82,16.095c-0.119,0.022-0.092,0.253,0.051,0.211C20.015,16.264,19.937,16.074,19.82,16.095zM18.247,15.708c-0.09,0.013-0.285-0.09-0.389-0.182c-0.104-0.091-0.299-0.091-0.377-0.091c-0.077,0-0.39,0.091-0.39,0.091c-0.013,0.13,0.117,0.091,0.273,0.091s0.429-0.026,0.479,0.039c0.053,0.064,0.286,0.168,0.352,0.221c0.064,0.052,0.272,0.065,0.285,0.013S18.338,15.695,18.247,15.708zM16.698,7.412c-0.13-0.009-0.295-0.009-0.399,0c-0.104,0.008-0.182-0.069-0.26-0.113c-0.077-0.043-0.251-0.182-0.354-0.199c-0.104-0.017-0.086-0.017-0.303-0.069c-0.11-0.027-0.294-0.061-0.294-0.086c0-0.026-0.052,0.121,0.043,0.165c0.095,0.043,0.251,0.121,0.363,0.164c0.114,0.043,0.329,0.052,0.399,0.139c0.069,0.086,0.303,0.156,0.303,0.156l0.277,0.026c0,0,0.191-0.043,0.39-0.026c0.199,0.017,0.493,0.043,0.659,0.035c0.163-0.008,0.189-0.061,0.208-0.095c0.016-0.035-0.304-0.104-0.383-0.095C17.271,7.42,16.827,7.42,16.698,7.412zM17.182,9.404c-0.034,0.039,0.157,0.095,0.191,0.043C17.407,9.396,17.271,9.309,17.182,9.404zM17.764,9.585c0.086-0.035,0.043-0.139-0.079-0.104C17.547,9.521,17.676,9.62,17.764,9.585z"
7
7
  ,warning:"M29.225,23.567l-3.778-6.542c-1.139-1.972-3.002-5.2-4.141-7.172l-3.778-6.542c-1.14-1.973-3.003-1.973-4.142,0L9.609,9.853c-1.139,1.972-3.003,5.201-4.142,7.172L1.69,23.567c-1.139,1.974-0.207,3.587,2.071,3.587h23.391C29.432,27.154,30.363,25.541,29.225,23.567zM16.536,24.58h-2.241v-2.151h2.241V24.58zM16.428,20.844h-2.023l-0.201-9.204h2.407L16.428,20.844z",arrowleftalt:"M16,30.534c8.027,0,14.534-6.507,14.534-14.534c0-8.027-6.507-14.534-14.534-14.534C7.973,1.466,1.466,7.973,1.466,16C1.466,24.027,7.973,30.534,16,30.534zM18.335,6.276l3.536,3.538l-6.187,6.187l6.187,6.187l-3.536,3.537l-9.723-9.724L18.335,6.276z",arrowalt:"M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM13.665,25.725l-3.536-3.539l6.187-6.187l-6.187-6.187l3.536-3.536l9.724,9.723L13.665,25.725z",code:"M8.982,7.107L0.322,15.77l8.661,8.662l3.15-3.15L6.621,15.77l5.511-5.511L8.982,7.107zM21.657,7.107l-3.148,3.151l5.511,5.511l-5.511,5.511l3.148,3.15l8.662-8.662L21.657,7.107z",arrowleft:"M21.871,9.814 15.684,16.001 21.871,22.188 18.335,25.725 8.612,16.001 18.335,6.276z",arrow:"M10.129,22.186 16.316,15.999 10.129,9.812 13.665,6.276 23.389,15.999 13.665,25.725z",pensil:"M25.31,2.872l-3.384-2.127c-0.854-0.536-1.979-0.278-2.517,0.576l-1.334,2.123l6.474,4.066l1.335-2.122C26.42,4.533,26.164,3.407,25.31,2.872zM6.555,21.786l6.474,4.066L23.581,9.054l-6.477-4.067L6.555,21.786zM5.566,26.952l-0.143,3.819l3.379-1.787l3.14-1.658l-6.246-3.925L5.566,26.952z",pen:"M13.587,12.074c-0.049-0.074-0.11-0.147-0.188-0.202c-0.333-0.243-0.803-0.169-1.047,0.166c-0.244,0.336-0.167,0.805,0.167,1.048c0.303,0.22,0.708,0.167,0.966-0.091l-7.086,9.768l-2.203,7.997l6.917-4.577L26.865,4.468l-4.716-3.42l-1.52,2.096c-0.087-0.349-0.281-0.676-0.596-0.907c-0.73-0.529-1.751-0.369-2.28,0.363C14.721,6.782,16.402,7.896,13.587,12.074zM10.118,25.148L6.56,27.503l1.133-4.117L10.118,25.148zM14.309,11.861c2.183-3.225,1.975-4.099,3.843-6.962c0.309,0.212,0.664,0.287,1.012,0.269L14.309,11.861z",plus:"M25.979,12.896 19.312,12.896 19.312,6.229 12.647,6.229 12.647,12.896 5.979,12.896 5.979,19.562 12.647,19.562 12.647,26.229 19.312,26.229 19.312,19.562 25.979,19.562z",minus:"M25.979,12.896,19.312,12.896,5.979,12.896,5.979,19.562,25.979,19.562z",tshirt:"M20.1,4.039c-0.681,1.677-2.32,2.862-4.24,2.862c-1.921,0-3.56-1.185-4.24-2.862L1.238,8.442l2.921,6.884l3.208-1.361V28h17.099V14.015l3.093,1.312l2.922-6.884L20.1,4.039z",page:"M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",page2:"M23.024,5.673c-1.744-1.694-3.625-3.051-5.168-3.236c-0.084-0.012-0.171-0.019-0.263-0.021H7.438c-0.162,0-0.322,0.063-0.436,0.18C6.889,2.71,6.822,2.87,6.822,3.033v25.75c0,0.162,0.063,0.317,0.18,0.435c0.117,0.116,0.271,0.179,0.436,0.179h18.364c0.162,0,0.317-0.062,0.434-0.179c0.117-0.117,0.182-0.272,0.182-0.435V11.648C26.382,9.659,24.824,7.49,23.024,5.673zM22.157,6.545c0.805,0.786,1.529,1.676,2.069,2.534c-0.468-0.185-0.959-0.322-1.42-0.431c-1.015-0.228-2.008-0.32-2.625-0.357c0.003-0.133,0.004-0.283,0.004-0.446c0-0.869-0.055-2.108-0.356-3.2c-0.003-0.01-0.005-0.02-0.009-0.03C20.584,5.119,21.416,5.788,22.157,6.545zM25.184,28.164H8.052V3.646h9.542v0.002c0.416-0.025,0.775,0.386,1.05,1.326c0.25,0.895,0.313,2.062,0.312,2.871c0.002,0.593-0.027,0.991-0.027,0.991l-0.049,0.652l0.656,0.007c0.003,0,1.516,0.018,3,0.355c1.426,0.308,2.541,0.922,2.645,1.617c0.004,0.062,0.005,0.124,0.004,0.182V28.164z",plugin:"M26.33,15.836l-3.893-1.545l3.136-7.9c0.28-0.705-0.064-1.505-0.771-1.785c-0.707-0.28-1.506,0.065-1.785,0.771l-3.136,7.9l-4.88-1.937l3.135-7.9c0.281-0.706-0.064-1.506-0.77-1.786c-0.706-0.279-1.506,0.065-1.785,0.771l-3.136,7.9L8.554,8.781l-1.614,4.066l2.15,0.854l-2.537,6.391c-0.61,1.54,0.143,3.283,1.683,3.895l1.626,0.646L8.985,26.84c-0.407,1.025,0.095,2.188,1.122,2.596l0.93,0.369c1.026,0.408,2.188-0.095,2.596-1.121l0.877-2.207l1.858,0.737c1.54,0.611,3.284-0.142,3.896-1.682l2.535-6.391l1.918,0.761L26.33,15.836z",bookmark:"M17.396,1.841L6.076,25.986l7.341-4.566l1.186,8.564l11.32-24.146L17.396,1.841zM19.131,9.234c-0.562-0.264-0.805-0.933-0.541-1.495c0.265-0.562,0.934-0.805,1.496-0.541s0.805,0.934,0.541,1.496S19.694,9.498,19.131,9.234z",hammer:"M7.831,29.354c0.685,0.353,1.62,1.178,2.344,0.876c0.475-0.195,0.753-1.301,1.048-1.883c2.221-4.376,4.635-9.353,6.392-13.611c0-0.19,0.101-0.337-0.049-0.595c0.983-1.6,1.65-3.358,2.724-5.138c0.34-0.566,0.686-1.351,1.163-1.577l0.881-0.368c1.12-0.288,1.938-0.278,2.719,0.473c0.396,0.383,0.578,1.015,0.961,1.395c0.259,0.26,1.246,0.899,1.613,0.8c0.285-0.077,0.52-0.364,0.72-0.728l0.696-1.286c0.195-0.366,0.306-0.718,0.215-0.999c-0.117-0.362-1.192-0.84-1.552-0.915c-0.528-0.113-1.154,0.081-1.692-0.041c-1.057-0.243-1.513-0.922-1.883-2.02c-2.608-1.533-6.119-2.53-10.207-1.244c-1.109,0.349-2.172,0.614-2.901,1.323c-0.146,0.412,0.143,0.494,0.446,0.489c-0.237,0.216-0.62,0.341-0.399,0.848c2.495-1.146,7.34-1.542,7.669,0.804c0.072,0.522-0.395,1.241-0.682,1.835c-0.905,1.874-2.011,3.394-2.813,5.091c-0.298,0.017-0.366,0.18-0.525,0.287c-2.604,3.8-5.451,8.541-7.9,12.794c-0.326,0.566-1.098,1.402-1.002,1.906C5.961,28.641,7.146,29,7.831,29.354z",users:"M21.053,20.8c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68h-0.34c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888C28.469,23.686,22.185,21.252,21.053,20.8zM8.583,20.628c-0.099-0.18-0.148-0.31-0.148-0.31s-0.432,0.239-0.432-0.432s0.432,0.432,0.864-2.159c0,0,1.199-0.336,0.959-3.119H9.538c0,0,0.143-0.591,0.237-1.334c-0.004-0.308,0.006-0.636,0.037-0.996l0.038-0.426c-0.021-0.492-0.107-0.939-0.312-1.226C8.818,9.619,8.53,8.947,6.947,8.467c-1.583-0.48-1.008-0.385-2.159-0.336C3.636,8.179,2.676,8.802,2.676,9.139c0,0-0.72,0.048-1.008,0.336c-0.271,0.271-0.705,1.462-0.757,1.885v0.281c0.047,0.653,0.258,2.449,0.469,2.872l-0.286,0.096c-0.239,2.783,0.959,3.119,0.959,3.119c0.432,2.591,0.864,1.488,0.864,2.159s-0.432,0.432-0.432,0.432s-0.383,1.057-1.343,1.439c-0.061,0.024-0.139,0.056-0.232,0.092v5.234h0.575c-0.029-1.278,0.077-2.927,0.746-3.594C2.587,23.135,3.754,22.551,8.583,20.628zM30.913,11.572c-0.04-0.378-0.127-0.715-0.292-0.946c-0.719-1.008-1.008-1.679-2.59-2.159c-1.584-0.48-1.008-0.385-2.16-0.336C24.72,8.179,23.76,8.802,23.76,9.139c0,0-0.719,0.048-1.008,0.336c-0.271,0.272-0.709,1.472-0.758,1.891h0.033l0.08,0.913c0.02,0.231,0.022,0.436,0.027,0.645c0.09,0.666,0.21,1.35,0.33,1.589l-0.286,0.096c-0.239,2.783,0.96,3.119,0.96,3.119c0.432,2.591,0.863,1.488,0.863,2.159s-0.432,0.432-0.432,0.432s-0.053,0.142-0.163,0.338c4.77,1.9,5.927,2.48,6.279,2.834c0.67,0.667,0.775,2.315,0.746,3.594h0.48v-5.306c-0.016-0.006-0.038-0.015-0.052-0.021c-0.959-0.383-1.343-1.439-1.343-1.439s-0.433,0.239-0.433-0.432s0.433,0.432,0.864-2.159c0,0,0.804-0.229,0.963-1.841v-1.227c-0.001-0.018-0.001-0.033-0.003-0.051h-0.289c0,0,0.215-0.89,0.292-1.861V11.572z",user:"M20.771,12.364c0,0,0.849-3.51,0-4.699c-0.85-1.189-1.189-1.981-3.058-2.548s-1.188-0.454-2.547-0.396c-1.359,0.057-2.492,0.792-2.492,1.188c0,0-0.849,0.057-1.188,0.397c-0.34,0.34-0.906,1.924-0.906,2.321s0.283,3.058,0.566,3.624l-0.337,0.113c-0.283,3.283,1.132,3.68,1.132,3.68c0.509,3.058,1.019,1.756,1.019,2.548s-0.51,0.51-0.51,0.51s-0.452,1.245-1.584,1.698c-1.132,0.452-7.416,2.886-7.927,3.396c-0.511,0.511-0.453,2.888-0.453,2.888h26.947c0,0,0.059-2.377-0.452-2.888c-0.512-0.511-6.796-2.944-7.928-3.396c-1.132-0.453-1.584-1.698-1.584-1.698s-0.51,0.282-0.51-0.51s0.51,0.51,1.02-2.548c0,0,1.414-0.397,1.132-3.68H20.771z",mail:"M28.516,7.167H3.482l12.517,7.108L28.516,7.167zM16.74,17.303C16.51,17.434,16.255,17.5,16,17.5s-0.51-0.066-0.741-0.197L2.5,10.06v14.773h27V10.06L16.74,17.303z",bubble:"M16,5.333c-7.732,0-14,4.701-14,10.5c0,1.982,0.741,3.833,2.016,5.414L2,25.667l5.613-1.441c2.339,1.317,5.237,2.107,8.387,2.107c7.732,0,14-4.701,14-10.5C30,10.034,23.732,5.333,16,5.333z",codetalk:"M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM13.704,19.47l-2.338,2.336l-6.43-6.431l6.429-6.432l2.339,2.341l-4.091,4.091L13.704,19.47zM20.775,21.803l-2.337-2.339l4.092-4.09l-4.092-4.092l2.337-2.339l6.43,6.426L20.775,21.803z",talkq:"M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.868,21.375h-1.969v-1.889h1.969V21.375zM16.772,18.094h-1.777l-0.176-8.083h2.113L16.772,18.094z",talke:"M16,4.938c-7.732,0-14,4.701-14,10.5c0,1.981,0.741,3.833,2.016,5.414L2,25.272l5.613-1.44c2.339,1.316,5.237,2.106,8.387,2.106c7.732,0,14-4.701,14-10.5S23.732,4.938,16,4.938zM16.982,21.375h-1.969v-1.889h1.969V21.375zM16.982,17.469v0.625h-1.969v-0.769c0-2.321,2.641-2.689,2.641-4.337c0-0.752-0.672-1.329-1.553-1.329c-0.912,0-1.713,0.672-1.713,0.672l-1.12-1.393c0,0,1.104-1.153,3.009-1.153c1.81,0,3.49,1.121,3.49,3.009C19.768,15.437,16.982,15.741,16.982,17.469z",home:"M27.812,16l-3.062-3.062V5.625h-2.625v4.688L16,4.188L4.188,16L7,15.933v11.942h17.875V16H27.812zM16,26.167h-5.833v-7H16V26.167zM21.667,23.167h-3.833v-4.042h3.833V23.167z",lock:"M22.335,12.833V9.999h-0.001C22.333,6.501,19.498,3.666,16,3.666S9.666,6.502,9.666,10h0v2.833H7.375V25h17.25V12.833H22.335zM11.667,10C11.667,10,11.667,10,11.667,10c0-2.39,1.944-4.334,4.333-4.334c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h-8.668V10z",clip:"M23.898,6.135c-1.571-1.125-3.758-0.764-4.884,0.808l-8.832,12.331c-0.804,1.122-0.546,2.684,0.577,3.488c1.123,0.803,2.684,0.545,3.488-0.578l6.236-8.706l-0.813-0.583l-6.235,8.707h0c-0.483,0.672-1.42,0.828-2.092,0.347c-0.673-0.481-0.827-1.419-0.345-2.093h0l8.831-12.33l0.001-0.001l-0.002-0.001c0.803-1.119,2.369-1.378,3.489-0.576c1.12,0.803,1.379,2.369,0.577,3.489v-0.001l-9.68,13.516l0.001,0.001c-1.124,1.569-3.316,1.931-4.885,0.808c-1.569-1.125-1.93-3.315-0.807-4.885l7.035-9.822l-0.813-0.582l-7.035,9.822c-1.447,2.02-0.982,4.83,1.039,6.277c2.021,1.448,4.831,0.982,6.278-1.037l9.68-13.516C25.83,9.447,25.47,7.261,23.898,6.135z",star:"M15.999,22.77l-8.884,6.454l3.396-10.44l-8.882-6.454l10.979,0.002l2.918-8.977l0.476-1.458l3.39,10.433h10.982l-8.886,6.454l3.397,10.443L15.999,22.77L15.999,22.77z",star2:"M30.373,12.329H19.391l-3.39-10.433l-0.476,1.458l-2.918,8.977L1.628,12.329l8.882,6.454l-3.396,10.44l8.884-6.454l8.886,6.457l-3.397-10.443L30.373,12.329z M17.175,21.151L16,20.298l-1.175,0.854l-3.902,2.834l1.49-4.584l0.45-1.382l-1.177-0.855l-3.9-2.834h6.275l0.45-1.381L16,8.366l1.489,4.581l0.449,1.381h6.281l-3.906,2.836l-1.178,0.854l0.449,1.384l1.493,4.584L17.175,21.151z",chat:"M15.985,5.972c-7.563,0-13.695,4.077-13.695,9.106c0,2.877,2.013,5.44,5.147,7.108c-0.446,1.479-1.336,3.117-3.056,4.566c0,0,4.015-0.266,6.851-3.143c0.163,0.04,0.332,0.07,0.497,0.107c-0.155-0.462-0.246-0.943-0.246-1.443c0-3.393,3.776-6.05,8.599-6.05c3.464,0,6.379,1.376,7.751,3.406c1.168-1.34,1.847-2.892,1.847-4.552C29.68,10.049,23.548,5.972,15.985,5.972zM27.68,22.274c0-2.79-3.401-5.053-7.599-5.053c-4.196,0-7.599,2.263-7.599,5.053c0,2.791,3.403,5.053,7.599,5.053c0.929,0,1.814-0.116,2.637-0.319c1.573,1.597,3.801,1.744,3.801,1.744c-0.954-0.804-1.447-1.713-1.695-2.534C26.562,25.293,27.68,23.871,27.68,22.274z",quote:"M14.505,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.128,0,2.07,0.411,2.826,1.229c0.756,0.82,1.134,1.832,1.134,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.259,0.443-4.327,1.332-6.203c0.888-1.875,2.243-3.57,4.067-5.085c1.824-1.514,2.988-2.272,3.492-2.272c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L14.505,5.873zM27.465,5.873c-3.937,2.52-5.904,5.556-5.904,9.108c0,1.104,0.192,1.656,0.576,1.656l0.396-0.107c0.312-0.12,0.563-0.18,0.756-0.18c1.104,0,2.04,0.411,2.808,1.229c0.769,0.82,1.152,1.832,1.152,3.037c0,1.157-0.408,2.14-1.224,2.947c-0.816,0.807-1.801,1.211-2.952,1.211c-1.608,0-2.935-0.661-3.979-1.984c-1.044-1.321-1.565-2.98-1.565-4.977c0-2.284,0.449-4.369,1.35-6.256c0.9-1.887,2.256-3.577,4.068-5.067c1.812-1.49,2.97-2.236,3.474-2.236c0.336,0,0.612,0.162,0.828,0.486c0.216,0.324,0.324,0.606,0.324,0.846L27.465,5.873z",gear2:"M17.047,27.945c-0.34,0.032-0.688,0.054-1.046,0.054l0,0c-0.32,0-0.631-0.017-0.934-0.043l0,0l-2.626,3.375l-0.646-0.183c-0.758-0.213-1.494-0.48-2.202-0.8l0,0L8.979,30.07l0.158-4.24c-0.558-0.39-1.079-0.825-1.561-1.302l0,0L3.424,25.42l-0.379-0.557c-0.445-0.654-0.824-1.339-1.16-2.032l0,0l-0.292-0.605l2.819-3.12c-0.176-0.661-0.293-1.343-0.353-2.038l0,0l-3.736-1.975l0.068-0.669c0.08-0.801,0.235-1.567,0.42-2.303l0,0l0.165-0.653l4.167-0.577c0.297-0.627,0.647-1.221,1.041-1.78l0,0l-1.59-3.914l0.48-0.47c0.564-0.55,1.168-1.048,1.798-1.503l0,0l0.546-0.394l3.597,2.259c0.606-0.279,1.24-0.509,1.897-0.685l0,0l1.304-4.046l0.672-0.051c0.362-0.027,0.751-0.058,1.174-0.058l0,0c0.422,0,0.81,0.031,1.172,0.058l0,0l0.672,0.051l1.318,4.088c0.632,0.176,1.244,0.401,1.831,0.674l0,0l3.647-2.291l0.548,0.394c0.63,0.455,1.235,0.954,1.798,1.501l0,0l0.482,0.47l-1.639,4.031c0.357,0.519,0.679,1.068,0.954,1.646l0,0l4.297,0.595l0.167,0.653c0.188,0.735,0.342,1.501,0.42,2.303l0,0l0.068,0.669l-3.866,2.044c-0.058,0.634-0.161,1.258-0.315,1.866l0,0l2.913,3.218l-0.293,0.608c-0.335,0.695-0.712,1.382-1.159,2.034l0,0l-0.379,0.555l-4.255-0.912c-0.451,0.451-0.939,0.866-1.461,1.241l0,0l0.162,4.323l-0.615,0.278c-0.709,0.319-1.444,0.587-2.202,0.8l0,0l-0.648,0.183L17.047,27.945L17.047,27.945zM20.424,29.028c0.227-0.076,0.45-0.157,0.671-0.244l0,0l-0.152-4.083l0.479-0.307c0.717-0.466,1.37-1.024,1.95-1.658l0,0l0.386-0.423l4.026,0.862c0.121-0.202,0.238-0.409,0.351-0.62l0,0l-2.754-3.045l0.171-0.544c0.243-0.783,0.381-1.623,0.422-2.5l0,0l0.025-0.571l3.658-1.933c-0.038-0.234-0.082-0.467-0.132-0.7l0,0l-4.07-0.563l-0.219-0.527c-0.327-0.787-0.76-1.524-1.277-2.204l0,0l-0.342-0.453l1.548-3.808c-0.179-0.157-0.363-0.31-0.552-0.458l0,0l-3.455,2.169L20.649,7.15c-0.754-0.397-1.569-0.698-2.429-0.894l0,0l-0.556-0.127l-1.248-3.87c-0.121-0.006-0.239-0.009-0.354-0.009l0,0c-0.117,0-0.235,0.003-0.357,0.009l0,0l-1.239,3.845l-0.564,0.12c-0.875,0.188-1.709,0.494-2.486,0.896l0,0l-0.508,0.264L7.509,5.249c-0.188,0.148-0.372,0.301-0.55,0.458l0,0l1.507,3.708L8.112,9.869c-0.552,0.709-1.011,1.485-1.355,2.319l0,0l-0.218,0.529l-3.939,0.545c-0.05,0.233-0.094,0.466-0.131,0.7l0,0l3.531,1.867l0.022,0.575c0.037,0.929,0.192,1.82,0.459,2.653l0,0l0.175,0.548l-2.667,2.95c0.112,0.212,0.229,0.419,0.351,0.621l0,0l3.916-0.843l0.39,0.423c0.601,0.657,1.287,1.229,2.043,1.703l0,0l0.488,0.305l-0.149,4.02c0.221,0.087,0.445,0.168,0.672,0.244l0,0l2.479-3.188l0.566,0.07c0.427,0.054,0.843,0.089,1.257,0.089l0,0c0.445,0,0.894-0.039,1.353-0.104l0,0l0.571-0.08L20.424,29.028L20.424,29.028zM21.554,20.75l0.546,0.839l-3.463,2.253l-1.229-1.891l0,0c-0.447,0.109-0.917,0.173-1.406,0.173l0,0c-3.384,0-6.126-2.743-6.126-6.123l0,0c0-3.384,2.742-6.126,6.126-6.126l0,0c3.38,0,6.123,2.742,6.123,6.126l0,0c0,1.389-0.467,2.676-1.25,3.704l0,0L21.554,20.75M19.224,21.073l0.108-0.069l-0.987-1.519l0.572-0.572c0.748-0.75,1.207-1.773,1.207-2.912l0,0c-0.004-2.278-1.848-4.122-4.123-4.126l0,0c-2.28,0.004-4.122,1.846-4.126,4.126l0,0c0.004,2.275,1.848,4.119,4.126,4.123l0,0c0.509,0,0.999-0.104,1.473-0.286l0,0l0.756-0.29L19.224,21.073L19.224,21.073z",gear:"M26.974,16.514l3.765-1.991c-0.074-0.738-0.217-1.454-0.396-2.157l-4.182-0.579c-0.362-0.872-0.84-1.681-1.402-2.423l1.594-3.921c-0.524-0.511-1.09-0.977-1.686-1.406l-3.551,2.229c-0.833-0.438-1.73-0.77-2.672-0.984l-1.283-3.976c-0.364-0.027-0.728-0.056-1.099-0.056s-0.734,0.028-1.099,0.056l-1.271,3.941c-0.967,0.207-1.884,0.543-2.738,0.986L7.458,4.037C6.863,4.466,6.297,4.932,5.773,5.443l1.55,3.812c-0.604,0.775-1.11,1.629-1.49,2.55l-4.05,0.56c-0.178,0.703-0.322,1.418-0.395,2.157l3.635,1.923c0.041,1.013,0.209,1.994,0.506,2.918l-2.742,3.032c0.319,0.661,0.674,1.303,1.085,1.905l4.037-0.867c0.662,0.72,1.416,1.351,2.248,1.873l-0.153,4.131c0.663,0.299,1.352,0.549,2.062,0.749l2.554-3.283C15.073,26.961,15.532,27,16,27c0.507,0,1.003-0.046,1.491-0.113l2.567,3.301c0.711-0.2,1.399-0.45,2.062-0.749l-0.156-4.205c0.793-0.513,1.512-1.127,2.146-1.821l4.142,0.889c0.411-0.602,0.766-1.243,1.085-1.905l-2.831-3.131C26.778,18.391,26.93,17.467,26.974,16.514zM20.717,21.297l-1.785,1.162l-1.098-1.687c-0.571,0.22-1.186,0.353-1.834,0.353c-2.831,0-5.125-2.295-5.125-5.125c0-2.831,2.294-5.125,5.125-5.125c2.83,0,5.125,2.294,5.125,5.125c0,1.414-0.573,2.693-1.499,3.621L20.717,21.297z",wrench:"M26.834,14.693c1.816-2.088,2.181-4.938,1.193-7.334l-3.646,4.252l-3.594-0.699L19.596,7.45l3.637-4.242c-2.502-0.63-5.258,0.13-7.066,2.21c-1.907,2.193-2.219,5.229-1.039,7.693L5.624,24.04c-1.011,1.162-0.888,2.924,0.274,3.935c1.162,1.01,2.924,0.888,3.935-0.274l9.493-10.918C21.939,17.625,24.918,16.896,26.834,14.693z",magic:"M23.043,4.649l-0.404-2.312l-1.59,1.727l-2.323-0.33l1.151,2.045l-1.032,2.108l2.302-0.463l1.686,1.633l0.271-2.332l2.074-1.099L23.043,4.649zM26.217,18.198l-0.182-1.25l-0.882,0.905l-1.245-0.214l0.588,1.118l-0.588,1.118l1.245-0.214l0.882,0.905l0.182-1.25l1.133-0.56L26.217,18.198zM4.92,7.672L5.868,7.3l0.844,0.569L6.65,6.853l0.802-0.627L6.467,5.97L6.118,5.013L5.571,5.872L4.553,5.908l0.647,0.786L4.92,7.672zM10.439,10.505l1.021-1.096l1.481,0.219l-0.727-1.31l0.667-1.341l-1.47,0.287l-1.069-1.048L10.16,7.703L8.832,8.396l1.358,0.632L10.439,10.505zM17.234,12.721c-0.588-0.368-1.172-0.618-1.692-0.729c-0.492-0.089-1.039-0.149-1.425,0.374L2.562,30.788h6.68l9.669-15.416c0.303-0.576,0.012-1.041-0.283-1.447C18.303,13.508,17.822,13.09,17.234,12.721zM13.613,21.936c-0.254-0.396-0.74-0.857-1.373-1.254c-0.632-0.396-1.258-0.634-1.726-0.69l4.421-7.052c0.064-0.013,0.262-0.021,0.543,0.066c0.346,0.092,0.785,0.285,1.225,0.562c0.504,0.313,0.908,0.677,1.133,0.97c0.113,0.145,0.178,0.271,0.195,0.335c0.002,0.006,0.004,0.011,0.004,0.015L13.613,21.936z",download:"M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM16,28.792c-1.549,0-2.806-1.256-2.806-2.806s1.256-2.806,2.806-2.806c1.55,0,2.806,1.256,2.806,2.806S17.55,28.792,16,28.792zM16,21.087l-7.858-6.562h3.469V5.747h8.779v8.778h3.468L16,21.087z",view:"M16,8.286C8.454,8.286,2.5,16,2.5,16s5.954,7.715,13.5,7.715c5.771,0,13.5-7.715,13.5-7.715S21.771,8.286,16,8.286zM16,20.807c-2.649,0-4.807-2.157-4.807-4.807s2.158-4.807,4.807-4.807s4.807,2.158,4.807,4.807S18.649,20.807,16,20.807zM16,13.194c-1.549,0-2.806,1.256-2.806,2.806c0,1.55,1.256,2.806,2.806,2.806c1.55,0,2.806-1.256,2.806-2.806C18.806,14.451,17.55,13.194,16,13.194z",noview:"M11.478,17.568c-0.172-0.494-0.285-1.017-0.285-1.568c0-2.65,2.158-4.807,4.807-4.807c0.552,0,1.074,0.113,1.568,0.285l2.283-2.283C18.541,8.647,17.227,8.286,16,8.286C8.454,8.286,2.5,16,2.5,16s2.167,2.791,5.53,5.017L11.478,17.568zM23.518,11.185l-3.056,3.056c0.217,0.546,0.345,1.138,0.345,1.76c0,2.648-2.158,4.807-4.807,4.807c-0.622,0-1.213-0.128-1.76-0.345l-2.469,2.47c1.327,0.479,2.745,0.783,4.229,0.783c5.771,0,13.5-7.715,13.5-7.715S26.859,13.374,23.518,11.185zM25.542,4.917L4.855,25.604L6.27,27.02L26.956,6.332L25.542,4.917z",cloud:"M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h15.875c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z",cloud2:"M7.562,24.812c-3.313,0-6-2.687-6-6l0,0c0.002-2.659,1.734-4.899,4.127-5.684l0,0c0.083-2.26,1.937-4.064,4.216-4.066l0,0c0.73,0,1.415,0.19,2.01,0.517l0,0c1.266-2.105,3.57-3.516,6.208-3.517l0,0c3.947,0.002,7.157,3.155,7.248,7.079l0,0c2.362,0.804,4.062,3.034,4.064,5.671l0,0c0,3.313-2.687,6-6,6l0,0H7.562L7.562,24.812zM24.163,14.887c-0.511-0.095-0.864-0.562-0.815-1.079l0,0c0.017-0.171,0.027-0.336,0.027-0.497l0,0c-0.007-2.899-2.352-5.245-5.251-5.249l0,0c-2.249-0.002-4.162,1.418-4.911,3.41l0,0c-0.122,0.323-0.406,0.564-0.748,0.63l0,0c-0.34,0.066-0.694-0.052-0.927-0.309l0,0c-0.416-0.453-0.986-0.731-1.633-0.731l0,0c-1.225,0.002-2.216,0.993-2.22,2.218l0,0c0,0.136,0.017,0.276,0.045,0.424l0,0c0.049,0.266-0.008,0.54-0.163,0.762l0,0c-0.155,0.223-0.392,0.371-0.657,0.414l0,0c-1.9,0.313-3.352,1.949-3.35,3.931l0,0c0.004,2.209,1.792,3.995,4.001,4.001l0,0h15.874c2.209-0.006,3.994-1.792,3.999-4.001l0,0C27.438,16.854,26.024,15.231,24.163,14.887L24.163,14.887",cloudDown:"M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h3.404l-0.707-0.707c-0.377-0.377-0.585-0.879-0.585-1.413c0-0.533,0.208-1.035,0.585-1.412l0.556-0.557c0.4-0.399,0.937-0.628,1.471-0.628c0.027,0,0.054,0,0.08,0.002v-0.472c0-1.104,0.898-2.002,2-2.002h3.266c1.103,0,2,0.898,2,2.002v0.472c0.027-0.002,0.054-0.002,0.081-0.002c0.533,0,1.07,0.229,1.47,0.63l0.557,0.552c0.78,0.781,0.78,2.05,0,2.828l-0.706,0.707h2.403c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M21.033,20.986l-0.556-0.555c-0.39-0.389-0.964-0.45-1.276-0.137c-0.312,0.312-0.568,0.118-0.568-0.432v-1.238c0-0.55-0.451-1-1-1h-3.265c-0.55,0-1,0.45-1,1v1.238c0,0.55-0.256,0.744-0.569,0.432c-0.312-0.313-0.887-0.252-1.276,0.137l-0.556,0.555c-0.39,0.389-0.39,1.024-0.001,1.413l4.328,4.331c0.194,0.194,0.451,0.291,0.707,0.291s0.512-0.097,0.707-0.291l4.327-4.331C21.424,22.011,21.423,21.375,21.033,20.986z",cloudUp:"M24.345,13.904c0.019-0.195,0.03-0.392,0.03-0.591c0-3.452-2.798-6.25-6.25-6.25c-2.679,0-4.958,1.689-5.847,4.059c-0.589-0.646-1.429-1.059-2.372-1.059c-1.778,0-3.219,1.441-3.219,3.219c0,0.21,0.023,0.415,0.062,0.613c-2.372,0.391-4.187,2.436-4.187,4.918c0,2.762,2.239,5,5,5h2.312c-0.126-0.266-0.2-0.556-0.2-0.859c0-0.535,0.208-1.04,0.587-1.415l4.325-4.329c0.375-0.377,0.877-0.585,1.413-0.585c0.54,0,1.042,0.21,1.417,0.587l4.323,4.329c0.377,0.373,0.585,0.878,0.585,1.413c0,0.304-0.073,0.594-0.2,0.859h1.312c2.762,0,5-2.238,5-5C28.438,16.362,26.672,14.332,24.345,13.904z M16.706,17.916c-0.193-0.195-0.45-0.291-0.706-0.291s-0.512,0.096-0.707,0.291l-4.327,4.33c-0.39,0.389-0.389,1.025,0.001,1.414l0.556,0.555c0.39,0.389,0.964,0.449,1.276,0.137s0.568-0.119,0.568,0.432v1.238c0,0.549,0.451,1,1,1h3.265c0.551,0,1-0.451,1-1v-1.238c0-0.551,0.256-0.744,0.569-0.432c0.312,0.312,0.887,0.252,1.276-0.137l0.556-0.555c0.39-0.389,0.39-1.025,0.001-1.414L16.706,17.916z",location:"M16,3.5c-4.142,0-7.5,3.358-7.5,7.5c0,4.143,7.5,18.121,7.5,18.121S23.5,15.143,23.5,11C23.5,6.858,20.143,3.5,16,3.5z M16,14.584c-1.979,0-3.584-1.604-3.584-3.584S14.021,7.416,16,7.416S19.584,9.021,19.584,11S17.979,14.584,16,14.584z",key:"M18.386,16.009l0.009-0.006l-0.58-0.912c1.654-2.226,1.876-5.319,0.3-7.8c-2.043-3.213-6.303-4.161-9.516-2.118c-3.212,2.042-4.163,6.302-2.12,9.517c1.528,2.402,4.3,3.537,6.944,3.102l0.424,0.669l0.206,0.045l0.779-0.447l-0.305,1.377l2.483,0.552l-0.296,1.325l1.903,0.424l-0.68,3.06l1.406,0.313l-0.424,1.906l4.135,0.918l0.758-3.392L18.386,16.009z M10.996,8.944c-0.685,0.436-1.593,0.233-2.029-0.452C8.532,7.807,8.733,6.898,9.418,6.463s1.594-0.233,2.028,0.452C11.883,7.6,11.68,8.509,10.996,8.944z",ruler:"M6.63,21.796l-5.122,5.121h25.743V1.175L6.63,21.796zM18.702,10.48c0.186-0.183,0.48-0.183,0.664,0l1.16,1.159c0.184,0.183,0.186,0.48,0.002,0.663c-0.092,0.091-0.213,0.137-0.332,0.137c-0.121,0-0.24-0.046-0.33-0.137l-1.164-1.159C18.519,10.96,18.519,10.664,18.702,10.48zM17.101,12.084c0.184-0.183,0.48-0.183,0.662,0l2.156,2.154c0.184,0.183,0.184,0.48,0.002,0.661c-0.092,0.092-0.213,0.139-0.334,0.139s-0.24-0.046-0.33-0.137l-2.156-2.154C16.917,12.564,16.917,12.267,17.101,12.084zM15.497,13.685c0.184-0.183,0.48-0.183,0.664,0l1.16,1.161c0.184,0.183,0.182,0.48-0.002,0.663c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.24-0.046-0.332-0.138l-1.16-1.16C15.314,14.166,15.314,13.868,15.497,13.685zM13.896,15.288c0.184-0.183,0.48-0.181,0.664,0.002l1.158,1.159c0.183,0.184,0.183,0.48,0,0.663c-0.092,0.092-0.212,0.138-0.332,0.138c-0.119,0-0.24-0.046-0.332-0.138l-1.158-1.161C13.713,15.767,13.713,15.471,13.896,15.288zM12.293,16.892c0.183-0.184,0.479-0.184,0.663,0l2.154,2.153c0.184,0.184,0.184,0.481,0,0.665c-0.092,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-2.153-2.155C12.11,17.371,12.11,17.075,12.293,16.892zM10.302,24.515c-0.091,0.093-0.212,0.139-0.332,0.139c-0.119,0-0.238-0.045-0.33-0.137l-2.154-2.153c-0.184-0.183-0.184-0.479,0-0.663s0.479-0.184,0.662,0l2.154,2.153C10.485,24.036,10.485,24.332,10.302,24.515zM10.912,21.918c-0.093,0.093-0.214,0.139-0.333,0.139c-0.12,0-0.24-0.045-0.33-0.137l-1.162-1.161c-0.184-0.183-0.184-0.479,0-0.66c0.184-0.185,0.48-0.187,0.664-0.003l1.161,1.162C11.095,21.438,11.095,21.735,10.912,21.918zM12.513,20.316c-0.092,0.092-0.211,0.138-0.332,0.138c-0.119,0-0.239-0.046-0.331-0.138l-1.159-1.16c-0.184-0.184-0.184-0.48,0-0.664s0.48-0.182,0.663,0.002l1.159,1.161C12.696,19.838,12.696,20.135,12.513,20.316zM22.25,21.917h-8.67l8.67-8.67V21.917zM22.13,10.7c-0.09,0.092-0.211,0.138-0.33,0.138c-0.121,0-0.242-0.046-0.334-0.138l-1.16-1.159c-0.184-0.183-0.184-0.479,0-0.663c0.182-0.183,0.479-0.183,0.662,0l1.16,1.159C22.312,10.221,22.313,10.517,22.13,10.7zM24.726,10.092c-0.092,0.092-0.213,0.137-0.332,0.137s-0.24-0.045-0.33-0.137l-2.154-2.154c-0.184-0.183-0.184-0.481,0-0.664s0.482-0.181,0.664,0.002l2.154,2.154C24.911,9.613,24.909,9.91,24.726,10.092z",power:"M21.816,3.999c-0.993-0.481-2.189-0.068-2.673,0.927c-0.482,0.995-0.066,2.191,0.927,2.673c3.115,1.516,5.265,4.705,5.263,8.401c-0.01,5.154-4.18,9.324-9.333,9.333c-5.154-0.01-9.324-4.18-9.334-9.333c-0.002-3.698,2.149-6.89,5.267-8.403c0.995-0.482,1.408-1.678,0.927-2.673c-0.482-0.993-1.676-1.409-2.671-0.927C5.737,6.152,2.667,10.72,2.665,16C2.667,23.364,8.634,29.332,16,29.334c7.365-0.002,13.333-5.97,13.334-13.334C29.332,10.722,26.266,6.157,21.816,3.999z M16,13.833c1.104,0,1.999-0.894,1.999-2V2.499C17.999,1.394,17.104,0.5,16,0.5c-1.106,0-2,0.895-2,1.999v9.333C14,12.938,14.894,13.833,16,13.833z",unlock:"M20.375,12.833h-2.209V10c0,0,0,0,0-0.001c0-2.389,1.945-4.333,4.334-4.333c2.391,0,4.335,1.944,4.335,4.333c0,0,0,0,0,0v2.834h2V9.999h-0.001c-0.001-3.498-2.836-6.333-6.334-6.333S16.166,6.502,16.166,10v2.833H3.125V25h17.25V12.833z",flag:"M26.04,9.508c0.138-0.533,0.15-1.407,0.028-1.943l-0.404-1.771c-0.122-0.536-0.665-1.052-1.207-1.146l-3.723-0.643c-0.542-0.094-1.429-0.091-1.97,0.007l-4.033,0.726c-0.542,0.098-1.429,0.108-1.973,0.023L8.812,4.146C8.817,4.165,8.826,4.182,8.83,4.201l2.701,12.831l1.236,0.214c0.542,0.094,1.428,0.09,1.97-0.007l4.032-0.727c0.541-0.097,1.429-0.107,1.973-0.022l4.329,0.675c0.544,0.085,0.906-0.288,0.807-0.829l-0.485-2.625c-0.1-0.541-0.069-1.419,0.068-1.952L26.04,9.508zM6.667,3.636C6.126,3.75,5.78,4.279,5.894,4.819l5.763,27.378H13.7L7.852,4.409C7.736,3.867,7.207,3.521,6.667,3.636z",tag:"M14.263,2.826H7.904L2.702,8.028v6.359L18.405,30.09l11.561-11.562L14.263,2.826zM6.495,8.859c-0.619-0.619-0.619-1.622,0-2.24C7.114,6,8.117,6,8.736,6.619c0.62,0.62,0.619,1.621,0,2.241C8.117,9.479,7.114,9.479,6.495,8.859z",search:"M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",zoomout:"M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM8.854,11.884v4.001l9.665-0.001v-3.999L8.854,11.884z",zoomin:"M22.646,19.307c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127l3.535-3.537L22.646,19.307zM13.688,20.369c-3.582-0.008-6.478-2.904-6.484-6.484c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486C20.165,17.465,17.267,20.361,13.688,20.369zM15.687,9.051h-4v2.833H8.854v4.001h2.833v2.833h4v-2.834h2.832v-3.999h-2.833V9.051z",cross:"M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z",check:"M2.379,14.729 5.208,11.899 12.958,19.648 25.877,6.733 28.707,9.561 12.958,25.308z",settings:"M16.015,12.03c-2.156,0-3.903,1.747-3.903,3.903c0,2.155,1.747,3.903,3.903,3.903c0.494,0,0.962-0.102,1.397-0.27l0.836,1.285l1.359-0.885l-0.831-1.276c0.705-0.706,1.142-1.681,1.142-2.757C19.918,13.777,18.171,12.03,16.015,12.03zM16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM26.174,20.809c-0.241,0.504-0.513,0.99-0.826,1.45L22.19,21.58c-0.481,0.526-1.029,0.994-1.634,1.385l0.119,3.202c-0.507,0.23-1.028,0.421-1.569,0.57l-1.955-2.514c-0.372,0.051-0.75,0.086-1.136,0.086c-0.356,0-0.706-0.029-1.051-0.074l-1.945,2.5c-0.541-0.151-1.065-0.342-1.57-0.569l0.117-3.146c-0.634-0.398-1.208-0.88-1.712-1.427L6.78,22.251c-0.313-0.456-0.583-0.944-0.826-1.448l2.088-2.309c-0.226-0.703-0.354-1.451-0.385-2.223l-2.768-1.464c0.055-0.563,0.165-1.107,0.301-1.643l3.084-0.427c0.29-0.702,0.675-1.352,1.135-1.942L8.227,7.894c0.399-0.389,0.83-0.744,1.283-1.07l2.663,1.672c0.65-0.337,1.349-0.593,2.085-0.75l0.968-3.001c0.278-0.021,0.555-0.042,0.837-0.042c0.282,0,0.56,0.022,0.837,0.042l0.976,3.028c0.72,0.163,1.401,0.416,2.036,0.75l2.704-1.697c0.455,0.326,0.887,0.681,1.285,1.07l-1.216,2.986c0.428,0.564,0.793,1.181,1.068,1.845l3.185,0.441c0.135,0.535,0.247,1.081,0.302,1.643l-2.867,1.516c-0.034,0.726-0.15,1.43-0.355,2.1L26.174,20.809z",settingsalt:"M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466zM24.386,14.968c-1.451,1.669-3.706,2.221-5.685,1.586l-7.188,8.266c-0.766,0.88-2.099,0.97-2.979,0.205s-0.973-2.099-0.208-2.979l7.198-8.275c-0.893-1.865-0.657-4.164,0.787-5.824c1.367-1.575,3.453-2.151,5.348-1.674l-2.754,3.212l0.901,2.621l2.722,0.529l2.761-3.22C26.037,11.229,25.762,13.387,24.386,14.968z",feed:"M4.135,16.762c3.078,0,5.972,1.205,8.146,3.391c2.179,2.187,3.377,5.101,3.377,8.202h4.745c0-9.008-7.299-16.335-16.269-16.335V16.762zM4.141,8.354c10.973,0,19.898,8.975,19.898,20.006h4.743c0-13.646-11.054-24.749-24.642-24.749V8.354zM10.701,25.045c0,1.815-1.471,3.287-3.285,3.287s-3.285-1.472-3.285-3.287c0-1.813,1.471-3.285,3.285-3.285S10.701,23.231,10.701,25.045z",bug:"M28.589,10.903l-5.828,1.612c-0.534-1.419-1.338-2.649-2.311-3.628l3.082-5.44c0.271-0.48,0.104-1.092-0.38-1.365c-0.479-0.271-1.09-0.102-1.36,0.377l-2.924,5.162c-0.604-0.383-1.24-0.689-1.9-0.896c-0.416-1.437-1.652-2.411-3.058-2.562c-0.001-0.004-0.002-0.008-0.003-0.012c-0.061-0.242-0.093-0.46-0.098-0.65c-0.005-0.189,0.012-0.351,0.046-0.479c0.037-0.13,0.079-0.235,0.125-0.317c0.146-0.26,0.34-0.43,0.577-0.509c0.023,0.281,0.142,0.482,0.352,0.601c0.155,0.088,0.336,0.115,0.546,0.086c0.211-0.031,0.376-0.152,0.496-0.363c0.105-0.186,0.127-0.389,0.064-0.607c-0.064-0.219-0.203-0.388-0.414-0.507c-0.154-0.087-0.314-0.131-0.482-0.129c-0.167,0.001-0.327,0.034-0.481,0.097c-0.153,0.063-0.296,0.16-0.429,0.289c-0.132,0.129-0.241,0.271-0.33,0.426c-0.132,0.234-0.216,0.496-0.25,0.783c-0.033,0.286-0.037,0.565-0.009,0.84c0.017,0.16,0.061,0.301,0.094,0.449c-0.375-0.021-0.758,0.002-1.14,0.108c-0.482,0.133-0.913,0.36-1.28,0.653c-0.052-0.172-0.098-0.344-0.18-0.518c-0.116-0.249-0.263-0.486-0.438-0.716c-0.178-0.229-0.384-0.41-0.618-0.543C9.904,3.059,9.737,2.994,9.557,2.951c-0.18-0.043-0.352-0.052-0.516-0.027s-0.318,0.08-0.463,0.164C8.432,3.172,8.318,3.293,8.23,3.445C8.111,3.656,8.08,3.873,8.136,4.092c0.058,0.221,0.181,0.384,0.367,0.49c0.21,0.119,0.415,0.138,0.611,0.056C9.31,4.556,9.451,4.439,9.539,4.283c0.119-0.21,0.118-0.443-0.007-0.695c0.244-0.055,0.497-0.008,0.757,0.141c0.081,0.045,0.171,0.115,0.27,0.208c0.097,0.092,0.193,0.222,0.286,0.388c0.094,0.166,0.179,0.368,0.251,0.608c0.013,0.044,0.023,0.098,0.035,0.146c-0.911,0.828-1.357,2.088-1.098,3.357c-0.582,0.584-1.072,1.27-1.457,2.035l-5.16-2.926c-0.48-0.271-1.092-0.102-1.364,0.377C1.781,8.404,1.95,9.016,2.43,9.289l5.441,3.082c-0.331,1.34-0.387,2.807-0.117,4.297l-5.828,1.613c-0.534,0.147-0.846,0.699-0.698,1.231c0.147,0.53,0.697,0.843,1.231,0.694l5.879-1.627c0.503,1.057,1.363,2.28,2.371,3.443l-3.194,5.639c-0.272,0.481-0.104,1.092,0.378,1.363c0.239,0.137,0.512,0.162,0.758,0.094c0.248-0.068,0.469-0.229,0.604-0.471l2.895-5.109c2.7,2.594,5.684,4.123,5.778,1.053c1.598,2.56,3.451-0.338,4.502-3.976l5.203,2.947c0.24,0.138,0.514,0.162,0.762,0.094c0.246-0.067,0.467-0.229,0.603-0.471c0.272-0.479,0.104-1.091-0.377-1.362l-5.701-3.229c0.291-1.505,0.422-2.983,0.319-4.138l5.886-1.627c0.53-0.147,0.847-0.697,0.696-1.229C29.673,11.068,29.121,10.756,28.589,10.903z"
8
8
  ,link:"M15.667,4.601c-1.684,1.685-2.34,3.985-2.025,6.173l3.122-3.122c0.004-0.005,0.014-0.008,0.016-0.012c0.21-0.403,0.464-0.789,0.802-1.126c1.774-1.776,4.651-1.775,6.428,0c1.775,1.773,1.777,4.652,0.002,6.429c-0.34,0.34-0.727,0.593-1.131,0.804c-0.004,0.002-0.006,0.006-0.01,0.01l-3.123,3.123c2.188,0.316,4.492-0.34,6.176-2.023c2.832-2.832,2.83-7.423,0-10.255C23.09,1.77,18.499,1.77,15.667,4.601zM14.557,22.067c-0.209,0.405-0.462,0.791-0.801,1.131c-1.775,1.774-4.656,1.774-6.431,0c-1.775-1.774-1.775-4.653,0-6.43c0.339-0.338,0.725-0.591,1.128-0.8c0.004-0.006,0.005-0.012,0.011-0.016l3.121-3.123c-2.187-0.316-4.489,0.342-6.172,2.024c-2.831,2.831-2.83,7.423,0,10.255c2.833,2.831,7.424,2.831,10.257,0c1.684-1.684,2.342-3.986,2.023-6.175l-3.125,3.123C14.565,22.063,14.561,22.065,14.557,22.067zM9.441,18.885l2.197,2.197c0.537,0.537,1.417,0.537,1.953,0l8.302-8.302c0.539-0.536,0.539-1.417,0.002-1.952l-2.199-2.197c-0.536-0.539-1.416-0.539-1.952-0.002l-8.302,8.303C8.904,17.469,8.904,18.349,9.441,18.885z",calendar:"M11.758,15.318c0.312-0.3,0.408-0.492,0.408-0.492h0.024c0,0-0.012,0.264-0.012,0.528v5.469h-1.871v1.031h4.87v-1.031H13.33v-7.436h-1.055l-2.027,1.967l0.719,0.744L11.758,15.318zM16.163,21.207c0,0.205,0.024,0.42,0.06,0.647h5.457v-1.031h-4.197c0.023-1.931,4.065-2.362,4.065-5.146c0-1.463-1.114-2.436-2.674-2.436c-1.907,0-2.675,1.607-2.675,1.607l0.875,0.587c0,0,0.6-1.08,1.716-1.08c0.887,0,1.522,0.563,1.522,1.403C20.312,17.754,16.163,18.186,16.163,21.207zM12,3.604h-2v3.335h2V3.604zM23,4.77v3.17h-4V4.77h-6v3.168H9.002V4.77H6.583v21.669h18.833V4.77H23zM24.417,25.438H7.584V10.522h16.833V25.438zM22,3.604h-2v3.335h2V3.604z",picker:"M22.221,10.853c-0.111-0.414-0.261-0.412,0.221-1.539l1.66-3.519c0.021-0.051,0.2-0.412,0.192-0.946c0.015-0.529-0.313-1.289-1.119-1.642c-1.172-0.555-1.17-0.557-2.344-1.107c-0.784-0.396-1.581-0.171-1.979,0.179c-0.42,0.333-0.584,0.7-0.609,0.75L16.58,6.545c-0.564,1.084-0.655,0.97-1.048,1.147c-0.469,0.129-1.244,0.558-1.785,1.815c-1.108,2.346-1.108,2.346-1.108,2.346l-0.276,0.586l1.17,0.553l-3.599,7.623c-0.38,0.828-0.166,1.436-0.166,2.032c0.01,0.627-0.077,1.509-0.876,3.21l-0.276,0.586l3.517,1.661l0.276-0.585c0.808-1.699,1.431-2.326,1.922-2.717c0.46-0.381,1.066-0.6,1.465-1.42l3.599-7.618l1.172,0.554l0.279-0.589c0,0,0,0,1.105-2.345C22.578,12.166,22.419,11.301,22.221,10.853zM14.623,22.83c-0.156,0.353-0.413,0.439-1.091,0.955c-0.577,0.448-1.264,1.172-2.009,2.6l-1.191-0.562c0.628-1.48,0.75-2.474,0.73-3.203c-0.031-0.851-0.128-1.104,0.045-1.449l3.599-7.621l3.517,1.662L14.623,22.83z",no:"M16,2.939C9.006,2.942,3.338,8.61,3.335,15.605C3.335,22.6,9.005,28.268,16,28.27c6.994-0.002,12.662-5.67,12.664-12.664C28.663,8.61,22.995,2.939,16,2.939zM25.663,15.605c-0.003,1.943-0.583,3.748-1.569,5.264L10.736,7.513c1.515-0.988,3.32-1.569,5.265-1.573C21.337,5.951,25.654,10.269,25.663,15.605zM6.335,15.605c0.004-1.943,0.584-3.75,1.573-5.266l13.355,13.357c-1.516,0.986-3.32,1.566-5.264,1.569C10.664,25.26,6.346,20.941,6.335,15.605z",commandline:"M2.021,9.748L2.021,9.748V9.746V9.748zM2.022,9.746l5.771,5.773l-5.772,5.771l2.122,2.123l7.894-7.895L4.143,7.623L2.022,9.746zM12.248,23.269h14.419V20.27H12.248V23.269zM16.583,17.019h10.084V14.02H16.583V17.019zM12.248,7.769v3.001h14.419V7.769H12.248z",photo:"M24.25,10.25H20.5v-1.5h-9.375v1.5h-3.75c-1.104,0-2,0.896-2,2v10.375c0,1.104,0.896,2,2,2H24.25c1.104,0,2-0.896,2-2V12.25C26.25,11.146,25.354,10.25,24.25,10.25zM15.812,23.499c-3.342,0-6.06-2.719-6.06-6.061c0-3.342,2.718-6.062,6.06-6.062s6.062,2.72,6.062,6.062C21.874,20.78,19.153,23.499,15.812,23.499zM15.812,13.375c-2.244,0-4.062,1.819-4.062,4.062c0,2.244,1.819,4.062,4.062,4.062c2.244,0,4.062-1.818,4.062-4.062C19.875,15.194,18.057,13.375,15.812,13.375z","export":"M24.086,20.904c-1.805,3.113-5.163,5.212-9.023,5.219c-5.766-0.01-10.427-4.672-10.438-10.435C4.636,9.922,9.297,5.261,15.063,5.25c3.859,0.007,7.216,2.105,9.022,5.218l3.962,2.284l0.143,0.082C26.879,6.784,21.504,2.25,15.063,2.248C7.64,2.25,1.625,8.265,1.624,15.688c0.002,7.42,6.017,13.435,13.439,13.437c6.442-0.002,11.819-4.538,13.127-10.589l-0.141,0.081L24.086,20.904zM28.4,15.688l-7.15-4.129v2.297H10.275v3.661H21.25v2.297L28.4,15.688z","import":"M15.067,2.25c-5.979,0-11.035,3.91-12.778,9.309h3.213c1.602-3.705,5.271-6.301,9.565-6.309c5.764,0.01,10.428,4.674,10.437,10.437c-0.009,5.764-4.673,10.428-10.437,10.438c-4.294-0.007-7.964-2.605-9.566-6.311H2.289c1.744,5.399,6.799,9.31,12.779,9.312c7.419-0.002,13.437-6.016,13.438-13.438C28.504,8.265,22.486,2.252,15.067,2.25zM10.918,19.813l7.15-4.126l-7.15-4.129v2.297H-0.057v3.661h10.975V19.813z",run:"M17.41,20.395l-0.778-2.723c0.228-0.2,0.442-0.414,0.644-0.643l2.721,0.778c0.287-0.418,0.534-0.862,0.755-1.323l-2.025-1.96c0.097-0.288,0.181-0.581,0.241-0.883l2.729-0.684c0.02-0.252,0.039-0.505,0.039-0.763s-0.02-0.51-0.039-0.762l-2.729-0.684c-0.061-0.302-0.145-0.595-0.241-0.883l2.026-1.96c-0.222-0.46-0.469-0.905-0.756-1.323l-2.721,0.777c-0.201-0.228-0.416-0.442-0.644-0.643l0.778-2.722c-0.418-0.286-0.863-0.534-1.324-0.755l-1.96,2.026c-0.287-0.097-0.581-0.18-0.883-0.241l-0.683-2.73c-0.253-0.019-0.505-0.039-0.763-0.039s-0.51,0.02-0.762,0.039l-0.684,2.73c-0.302,0.061-0.595,0.144-0.883,0.241l-1.96-2.026C7.048,3.463,6.604,3.71,6.186,3.997l0.778,2.722C6.736,6.919,6.521,7.134,6.321,7.361L3.599,6.583C3.312,7.001,3.065,7.446,2.844,7.907l2.026,1.96c-0.096,0.288-0.18,0.581-0.241,0.883l-2.73,0.684c-0.019,0.252-0.039,0.505-0.039,0.762s0.02,0.51,0.039,0.763l2.73,0.684c0.061,0.302,0.145,0.595,0.241,0.883l-2.026,1.96c0.221,0.46,0.468,0.905,0.755,1.323l2.722-0.778c0.2,0.229,0.415,0.442,0.643,0.643l-0.778,2.723c0.418,0.286,0.863,0.533,1.323,0.755l1.96-2.026c0.288,0.097,0.581,0.181,0.883,0.241l0.684,2.729c0.252,0.02,0.505,0.039,0.763,0.039s0.51-0.02,0.763-0.039l0.683-2.729c0.302-0.061,0.596-0.145,0.883-0.241l1.96,2.026C16.547,20.928,16.992,20.681,17.41,20.395zM11.798,15.594c-1.877,0-3.399-1.522-3.399-3.399s1.522-3.398,3.399-3.398s3.398,1.521,3.398,3.398S13.675,15.594,11.798,15.594zM27.29,22.699c0.019-0.547-0.06-1.104-0.23-1.654l1.244-1.773c-0.188-0.35-0.4-0.682-0.641-0.984l-2.122,0.445c-0.428-0.364-0.915-0.648-1.436-0.851l-0.611-2.079c-0.386-0.068-0.777-0.105-1.173-0.106l-0.974,1.936c-0.279,0.054-0.558,0.128-0.832,0.233c-0.257,0.098-0.497,0.22-0.727,0.353L17.782,17.4c-0.297,0.262-0.568,0.545-0.813,0.852l0.907,1.968c-0.259,0.495-0.437,1.028-0.519,1.585l-1.891,1.06c0.019,0.388,0.076,0.776,0.164,1.165l2.104,0.519c0.231,0.524,0.541,0.993,0.916,1.393l-0.352,2.138c0.32,0.23,0.66,0.428,1.013,0.6l1.715-1.32c0.536,0.141,1.097,0.195,1.662,0.15l1.452,1.607c0.2-0.057,0.399-0.118,0.596-0.193c0.175-0.066,0.34-0.144,0.505-0.223l0.037-2.165c0.455-0.339,0.843-0.747,1.152-1.206l2.161-0.134c0.152-0.359,0.279-0.732,0.368-1.115L27.29,22.699zM23.127,24.706c-1.201,0.458-2.545-0.144-3.004-1.345s0.143-2.546,1.344-3.005c1.201-0.458,2.547,0.144,3.006,1.345C24.931,22.902,24.328,24.247,23.127,24.706z",magnet:"M20.812,19.5h5.002v-6.867c-0.028-1.706-0.61-3.807-2.172-5.841c-1.539-2.014-4.315-3.72-7.939-3.687C12.076,3.073,9.3,4.779,7.762,6.792C6.2,8.826,5.617,10.928,5.588,12.634V19.5h5v-6.866c-0.027-0.377,0.303-1.789,1.099-2.748c0.819-0.979,1.848-1.747,4.014-1.778c2.165,0.032,3.195,0.799,4.013,1.778c0.798,0.959,1.126,2.372,1.099,2.748V19.5L20.812,19.5zM25.814,25.579c0,0,0-2.354,0-5.079h-5.002c0,2.727,0,5.08,0,5.08l5.004-0.001H25.814zM5.588,25.58h5c0,0,0-2.354,0-5.08h-5C5.588,23.227,5.588,25.58,5.588,25.58z",nomagnet:"M10.59,17.857v-5.225c-0.027-0.376,0.303-1.789,1.099-2.748c0.819-0.979,1.849-1.748,4.014-1.778c1.704,0.026,2.699,0.508,3.447,1.189l3.539-3.539c-1.616-1.526-4.01-2.679-6.986-2.652C12.077,3.073,9.3,4.779,7.762,6.793C6.2,8.826,5.617,10.928,5.59,12.634V19.5h3.357L10.59,17.857zM5.59,20.5v2.357L7.947,20.5H5.59zM20.812,13.29v6.21h5.002v-6.866c-0.021-1.064-0.252-2.283-0.803-3.542L20.812,13.29zM25.339,4.522L4.652,25.209l1.415,1.416L26.753,5.937L25.339,4.522zM20.812,25.58h5.002c0,0,0-2.354,0-5.08h-5.002C20.812,23.227,20.812,25.58,20.812,25.58zM10.59,25.58c0,0,0-0.827,0-2.064L8.525,25.58H10.59z",flip:"M15.5,21.082h1.001v-2.001H15.5V21.082zM15.5,25.082h1.001v-2H15.5V25.082zM15.5,29.082h1.001v-2H15.5V29.082zM15.5,32.127h1.001v-1.045H15.5V32.127zM15.5,17.083h1.001v-2H15.5V17.083zM15.5,1.083h1.001v-2H15.5V1.083zM15.5,5.083h1.001v-2H15.5V5.083zM15.5,9.083h1.001v-2H15.5V9.083zM15.5,13.083h1.001v-2H15.5V13.083zM18.832,1.203v25.962h14.093L18.832,1.203zM19.832,5.136l11.41,21.03h-11.41V5.136zM13.113,27.165V1.203L-0.979,27.165H13.113z",flipv:"M21.45,16.078v-1.001h-2.001v1.001H21.45zM25.45,16.078v-1.001h-2v1.001H25.45zM29.45,16.078v-1.001h-2v1.001H29.45zM32.495,16.078v-1.001H31.45v1.001H32.495zM17.451,16.078v-1.001h-2v1.001H17.451zM1.451,16.078v-1.001h-2v1.001H1.451zM5.451,16.078v-1.001h-2v1.001H5.451zM9.452,16.078v-1.001h-2v1.001H9.452zM13.452,16.078v-1.001h-2v1.001H13.452zM1.571,12.745h25.962V-1.348L1.571,12.745zM5.504,11.745l21.03-11.41v11.41H5.504zM27.533,18.464H1.571l25.962,14.093V18.464z",connect:"M25.06,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h4.69v-3.999H25.06zM20.375,15.719c0-3.435-2.784-6.219-6.219-6.219c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h6.834c0.833,2.452,3.15,4.219,5.884,4.219C17.591,21.938,20.375,19.153,20.375,15.719z",disconnect:"M9.219,9.5c-2.733,0-5.05,1.766-5.884,4.218H1.438v4.001h1.897c0.833,2.452,3.15,4.219,5.884,4.219c3.435,0,6.219-2.784,6.219-6.219S12.653,9.5,9.219,9.5zM27.685,13.719c-0.944-5.172-5.461-9.094-10.903-9.094v4c3.917,0.006,7.085,3.176,7.094,7.094c-0.009,3.917-3.177,7.085-7.094,7.093v4.002c5.442-0.004,9.959-3.926,10.903-9.096h2.065v-3.999H27.685z",man:"M21.021,16.349c-0.611-1.104-1.359-1.998-2.109-2.623c-0.875,0.641-1.941,1.031-3.103,1.031c-1.164,0-2.231-0.391-3.105-1.031c-0.75,0.625-1.498,1.519-2.111,2.623c-1.422,2.563-1.578,5.192-0.35,5.874c0.55,0.307,1.127,0.078,1.723-0.496c-0.105,0.582-0.166,1.213-0.166,1.873c0,2.932,1.139,5.307,2.543,5.307c0.846,0,1.265-0.865,1.466-2.189c0.201,1.324,0.62,2.189,1.463,2.189c1.406,0,2.545-2.375,2.545-5.307c0-0.66-0.061-1.291-0.168-1.873c0.598,0.574,1.174,0.803,1.725,0.496C22.602,21.541,22.443,18.912,21.021,16.349zM15.808,13.757c2.362,0,4.278-1.916,4.278-4.279s-1.916-4.279-4.278-4.279c-2.363,0-4.28,1.916-4.28,4.279S13.445,13.757,15.808,13.757z",woman:"M21.022,16.349c-0.611-1.104-1.359-1.998-2.109-2.623c-0.875,0.641-1.941,1.031-3.104,1.031c-1.164,0-2.231-0.391-3.105-1.031c-0.75,0.625-1.498,1.519-2.111,2.623c-1.422,2.563-1.579,5.192-0.351,5.874c0.55,0.307,1.127,0.078,1.723-0.496c-0.105,0.582-0.167,1.213-0.167,1.873c0,2.932,1.139,5.307,2.543,5.307c0.846,0,1.265-0.865,1.466-2.189c0.201,1.324,0.62,2.189,1.464,2.189c1.406,0,2.545-2.375,2.545-5.307c0-0.66-0.061-1.291-0.168-1.873c0.598,0.574,1.174,0.803,1.725,0.496C22.603,21.541,22.444,18.912,21.022,16.349zM15.808,13.757c2.363,0,4.279-1.916,4.279-4.279s-1.916-4.279-4.279-4.279c-2.363,0-4.28,1.916-4.28,4.279S13.445,13.757,15.808,13.757zM18.731,4.974c1.235,0.455,0.492-0.725,0.492-1.531s0.762-1.792-0.492-1.391c-1.316,0.422-2.383,0.654-2.383,1.461S17.415,4.489,18.731,4.974zM15.816,4.4c0.782,0,0.345-0.396,0.345-0.884c0-0.488,0.438-0.883-0.345-0.883s-0.374,0.396-0.374,0.883C15.442,4.005,15.034,4.4,15.816,4.4zM12.884,4.974c1.316-0.484,2.383-0.654,2.383-1.461S14.2,2.474,12.884,2.052c-1.254-0.402-0.492,0.584-0.492,1.391S11.648,5.428,12.884,4.974z",notebook:"M24.875,1.375H8c-1.033,0-1.874,0.787-1.979,1.792h1.604c1.102,0,2,0.898,2,2c0,1.102-0.898,2-2,2H6v0.999h1.625c1.104,0,2.002,0.898,2.002,2.002c0,1.104-0.898,2.001-2.002,2.001H6v0.997h1.625c1.102,0,2,0.898,2,2c0,1.104-0.898,2.004-2,2.004H6v0.994h1.625c1.102,0,2,0.898,2,2.002s-0.898,2.002-2,2.002H6v0.997h1.624c1.104,0,2.002,0.897,2.002,2.001c0,1.104-0.898,2.002-2.002,2.002H6.004C6.027,28.252,6.91,29.125,8,29.125h16.875c1.104,0,2-0.896,2-2V3.375C26.875,2.271,25.979,1.375,24.875,1.375zM25.25,8.375c0,0.552-0.447,1-1,1H14c-0.553,0-1-0.448-1-1V4c0-0.552,0.447-1,1-1h10.25c0.553,0,1,0.448,1,1V8.375zM8.625,25.166c0-0.554-0.449-1.001-1-1.001h-3.25c-0.552,0-1,0.447-1,1.001c0,0.552,0.449,1,1,1h3.25C8.176,26.166,8.625,25.718,8.625,25.166zM4.375,6.166h3.251c0.551,0,0.999-0.448,0.999-0.999c0-0.555-0.448-1-0.999-1H4.375c-0.553,0-1,0.445-1,1C3.374,5.718,3.822,6.166,4.375,6.166zM4.375,11.167h3.25c0.553,0,1-0.448,1-1s-0.448-1-1-1h-3.25c-0.553,0-1,0.448-1,1S3.822,11.167,4.375,11.167zM4.375,16.167h3.25c0.551,0,1-0.448,1-1.001s-0.448-0.999-1-0.999h-3.25c-0.553,0-1.001,0.446-1.001,0.999S3.822,16.167,4.375,16.167zM3.375,20.165c0,0.553,0.446,1.002,1,1.002h3.25c0.551,0,1-0.449,1-1.002c0-0.552-0.448-1-1-1h-3.25C3.821,19.165,3.375,19.613,3.375,20.165z",diagram:"M6.812,17.202l7.396-3.665v-2.164h-0.834c-0.414,0-0.808-0.084-1.167-0.237v1.159l-7.396,3.667v2.912h2V17.202zM26.561,18.875v-2.913l-7.396-3.666v-1.158c-0.358,0.152-0.753,0.236-1.166,0.236h-0.832l-0.001,2.164l7.396,3.666v1.672H26.561zM16.688,18.875v-7.501h-2v7.501H16.688zM27.875,19.875H23.25c-1.104,0-2,0.896-2,2V26.5c0,1.104,0.896,2,2,2h4.625c1.104,0,2-0.896,2-2v-4.625C29.875,20.771,28.979,19.875,27.875,19.875zM8.125,19.875H3.5c-1.104,0-2,0.896-2,2V26.5c0,1.104,0.896,2,2,2h4.625c1.104,0,2-0.896,2-2v-4.625C10.125,20.771,9.229,19.875,8.125,19.875zM13.375,10.375H18c1.104,0,2-0.896,2-2V3.75c0-1.104-0.896-2-2-2h-4.625c-1.104,0-2,0.896-2,2v4.625C11.375,9.479,12.271,10.375,13.375,10.375zM18,19.875h-4.625c-1.104,0-2,0.896-2,2V26.5c0,1.104,0.896,2,2,2H18c1.104,0,2-0.896,2-2v-4.625C20,20.771,19.104,19.875,18,19.875z",barchart:"M21.25,8.375V28h6.5V8.375H21.25zM12.25,28h6.5V4.125h-6.5V28zM3.25,28h6.5V12.625h-6.5V28z",piechart:"M15.583,15.917l1.648-10.779C16.692,5.056,16.145,5,15.583,5C9.554,5,4.666,9.888,4.666,15.917c0,6.029,4.888,10.917,10.917,10.917S26.5,21.946,26.5,15.917c0-0.256-0.021-0.507-0.038-0.759L15.583,15.917zM19.437,3.127l-1.648,10.779l10.879-0.759C28.313,8.026,24.436,3.886,19.437,3.127z",linechart:"M3.625,25.062c-0.539-0.115-0.885-0.646-0.77-1.187l0,0L6.51,6.584l2.267,9.259l1.923-5.188l3.581,3.741l3.883-13.103l2.934,11.734l1.96-1.509l5.271,11.74c0.226,0.504,0,1.095-0.505,1.321l0,0c-0.505,0.227-1.096,0-1.322-0.504l0,0l-4.23-9.428l-2.374,1.826l-1.896-7.596l-2.783,9.393l-3.754-3.924L8.386,22.66l-1.731-7.083l-1.843,8.711c-0.101,0.472-0.515,0.794-0.979,0.794l0,0C3.765,25.083,3.695,25.076,3.625,25.062L3.625,25.062z",windows:"M20.023,17.484c-1.732-0.205-3.022-0.908-4.212-1.701l0,0l-0.559,0.279l-2.578,8.924l0,0c1.217,0.805,2.905,1.707,4.682,1.914c2.686,0.312,5.56-0.744,6.391-1.195l2.617-9.061l-0.559-0.279C25.805,16.365,23.193,17.857,20.023,17.484zM14.424,14.825c-1.267-0.87-2.578-1.652-4.375-1.816c-0.318-0.029-0.627-0.042-0.925-0.042c-3.011,0-4.948,1.347-4.948,1.347l-2.565,8.877l0,0l0.526,0.281c0.981-0.476,2.78-1.145,5.09-0.984c1.665,0.113,2.92,0.781,4.117,1.531l0.507-0.26l0,0L14.424,14.825zM10.201,12.094c1.664,0.114,2.921,0.78,4.117,1.533l0.509-0.26l0,0L17.4,4.431c-1.27-0.87-2.579-1.653-4.377-1.816c-0.318-0.029-0.626-0.042-0.924-0.042C9.088,2.573,7.15,3.92,7.15,3.92l-2.566,8.878L5.11,13.08C6.092,12.604,7.891,11.936,10.201,12.094zM28.779,5.971L28.779,5.971c0,0.001-2.609,1.492-5.779,1.119c-1.734-0.204-3.023-0.907-4.213-1.701L18.227,5.67l-2.576,8.923l0,0c1.215,0.803,2.906,1.709,4.68,1.915c2.687,0.312,5.558-0.745,6.392-1.197l2.615-9.059L28.779,5.971z",apple:"M24.32,10.85c-1.743,1.233-2.615,2.719-2.615,4.455c0,2.079,1.078,3.673,3.232,4.786c-0.578,1.677-1.416,3.134-2.514,4.375c-1.097,1.241-2.098,1.862-3.004,1.862c-0.427,0-1.009-0.143-1.748-0.423l-0.354-0.138c-0.725-0.281-1.363-0.423-1.92-0.423c-0.525,0-1.1,0.11-1.725,0.331l-0.445,0.16l-0.56,0.229c-0.441,0.176-0.888,0.264-1.337,0.264c-1.059,0-2.228-0.872-3.507-2.616c-1.843-2.498-2.764-5.221-2.764-8.167c0-2.095,0.574-3.781,1.725-5.061c1.149-1.279,2.673-1.92,4.568-1.92c0.709,0,1.371,0.13,1.988,0.389l0.423,0.172l0.445,0.183c0.396,0.167,0.716,0.251,0.959,0.251c0.312,0,0.659-0.072,1.04-0.217l0.582-0.229l0.435-0.16c0.693-0.251,1.459-0.377,2.297-0.377C21.512,8.576,23.109,9.334,24.32,10.85zM19.615,3.287c0.021,0.267,0.033,0.473,0.033,0.617c0,1.317-0.479,2.473-1.438,3.467s-2.075,1.49-3.347,1.49c-0.038-0.297-0.058-0.51-0.058-0.639c0-1.12,0.445-2.171,1.337-3.153c0.891-0.982,1.922-1.558,3.096-1.725C19.32,3.329,19.447,3.311,19.615,3.287z",linux:"M11.791,25.229c1.027-0.104,1.162-1.191,0.68-1.666c-0.398-0.392-2.598-2.022-3.171-2.664C9.033,20.6,8.673,20.454,8.52,20.12c-0.352-0.771-0.598-1.869-0.151-2.658c0.081-0.144,0.133-0.078,0.071,0.22c-0.351,1.684,0.746,3.059,0.986,2.354c0.167-0.487,0.013-1.358,0.102-2.051c0.158-1.226,1.273-3.577,1.763-3.712c-0.755-1.398,0.886-2.494,0.866-3.723c-0.014-0.798,0.701,0.982,1.419,1.359c0.802,0.422,1.684-0.794,2.936-1.41c0.354-0.176,0.809-0.376,0.776-0.524c-0.146-0.718-1.644,0.886-2.979,0.939c-0.61,0.024-0.837-0.12-1.072-0.347c-0.712-0.689,0.073-0.115,1.132-0.307c0.471-0.085,0.629-0.163,1.128-0.365c0.5-0.201,1.069-0.5,1.636-0.654c0.395-0.106,0.361-0.402,0.208-0.491c-0.088-0.051-0.219-0.046-0.321,0.133c-0.244,0.419-1.383,0.661-1.74,0.771c-0.457,0.14-0.962,0.271-1.634,0.243c-1.021-0.042-0.782-0.509-1.513-0.928c-0.213-0.122-0.156-0.444,0.129-0.729c0.148-0.148,0.557-0.232,0.76-0.572c0.028-0.047,0.289-0.32,0.494-0.461c0.07-0.049,0.076-1.295-0.562-1.32c-0.543-0.021-0.697,0.398-0.675,0.818c0.022,0.419,0.245,0.765,0.393,0.764c0.285-0.004,0.019,0.311-0.138,0.361c-0.237,0.078-0.562-0.934-0.525-1.418c0.039-0.506,0.303-1.4,0.942-1.383c0.576,0.016,0.993,0.737,0.973,1.983c-0.003,0.211,0.935-0.101,1.247,0.229c0.224,0.236-0.767-2.207,1.438-2.375c0.582,0.111,1.14,0.305,1.371,1.641c-0.086,0.139,0.146,1.07-0.215,1.182c-0.438,0.135-0.707-0.02-0.453-0.438c0.172-0.418,0.004-1.483-0.882-1.42c-0.887,0.064-0.769,1.637-0.526,1.668c0.243,0.031,0.854,0.465,1.282,0.549c1.401,0.271,0.371,1.075,0.555,2.048c0.205,1.099,0.929,0.809,1.578,3.717c0.137,0.177,0.676,0.345,1.199,2.579c0.473,2.011-0.195,3.473,0.938,3.353c0.256-0.026,0.629-0.1,0.792-0.668c0.425-1.489-0.213-3.263-0.855-4.46c-0.375-0.698-0.729-1.174-0.916-1.337c0.738,0.436,1.683,1.829,1.898,2.862c0.286,1.358,0.49,1.934,0.059,3.37c0.25,0.125,0.871,0.39,0.871,0.685c-0.647-0.53-2.629-0.625-2.68,0.646c-0.338,0.008-0.594,0.034-0.811,0.293c-0.797,0.944-0.059,2.842-0.139,3.859c-0.07,0.896-0.318,1.783-0.46,2.683c-0.474-0.019-0.428-0.364-0.274-0.852c0.135-0.431,0.351-0.968,0.365-1.484c0.012-0.467-0.039-0.759-0.156-0.831c-0.118-0.072-0.303,0.074-0.559,0.485c-0.543,0.875-1.722,1.261-2.821,1.397c-1.099,0.138-2.123,0.028-2.664-0.578c-0.186-0.207-0.492,0.058-0.529,0.111c-0.049,0.074,0.18,0.219,0.352,0.533c0.251,0.461,0.49,1.159-0.105,1.479C12.83,26.314,12.316,26.221,11.791,25.229L11.791,25.229zM11.398,25.188c0.395,0.621,1.783,3.232-0.652,3.571c-0.814,0.114-2.125-0.474-3.396-0.784c-1.142-0.279-2.301-0.444-2.949-0.627c-0.391-0.108-0.554-0.25-0.588-0.414c-0.091-0.434,0.474-1.041,0.503-1.555c0.028-0.514-0.188-0.779-0.364-1.199c-0.177-0.42-0.224-0.734-0.081-0.914c0.109-0.141,0.334-0.199,0.698-0.164c0.462,0.047,1.02-0.049,1.319-0.23c0.505-0.309,0.742-0.939,0.516-1.699c0,0.744-0.244,1.025-0.855,1.366c-0.577,0.319-1.467,0.062-1.875,0.416c-0.492,0.427,0.175,1.528,0.12,2.338c-0.042,0.622-0.69,1.322-0.401,1.946c0.291,0.627,1.648,0.695,3.064,0.99c2.012,0.422,3.184,1.153,4.113,1.188c1.356,0.05,1.564-1.342,3.693-1.36c0.621-0.033,1.229-0.052,1.835-0.06c0.688-0.009,1.375-0.003,2.079,0.014c1.417,0.034,0.931,0.773,1.851,1.246c0.774,0.397,2.17,0.241,2.504-0.077c0.451-0.431,1.662-1.467,2.592-1.935c1.156-0.583,3.876-1.588,1.902-2.812c-0.461-0.285-1.547-0.588-1.639-2.676c-0.412,0.366-0.365,2.312,0.784,2.697c1.283,0.431,2.085,1.152-0.301,1.969c-1.58,0.54-1.849,0.706-3.099,1.747c-1.267,1.054-3.145,0.636-2.815-1.582c0.171-1.155,0.269-2.11-0.019-3.114c-0.142-0.49-0.211-1.119-0.114-1.562c0.187-0.858,0.651-1.117,1.106-0.293c0.285,0.519,0.385,1.122,1.408,1.171c1.607,0.077,1.926-1.553,2.439-1.627c0.343-0.05,0.686-1.02,0.425-2.589c-0.28-1.681-1.269-4.332-2.536-5.677c-1.053-1.118-1.717-2.098-2.135-3.497c-0.352-1.175-0.547-2.318-0.475-3.412c0.094-1.417-0.691-3.389-1.943-4.316c-0.782-0.581-2.011-0.893-3.122-0.88c-0.623,0.007-1.21,0.099-1.661,0.343c-1.855,1.008-2.113,2.445-2.086,4.088c0.025,1.543,0.078,3.303,0.254,4.977c-0.208,0.77-1.288,2.227-1.979,3.114C8.59,14.233,8.121,16.01,7.52,17.561c-0.321,0.828-0.862,1.2-0.908,2.265C6.6,20.122,6.61,20.891,6.894,20.672C7.98,19.829,9.343,21.95,11.398,25.188L11.398,25.188zM17.044,2.953c-0.06,0.176-0.3,0.321-0.146,0.443c0.152,0.123,0.24-0.171,0.549-0.281c0.08-0.028,0.449,0.012,0.519-0.164c0.03-0.077-0.19-0.164-0.321-0.291c-0.133-0.125-0.262-0.236-0.386-0.229C16.938,2.451,17.096,2.798,17.044,2.953L17.044,2.953zM18.934,9.35c0.115-0.121,0.174,0.207,0.483,0.402c0.244,0.154,0.481,0.04,0.545,0.354c0.044,0.225-0.097,0.467-0.284,0.436C19.35,10.486,18.596,9.705,18.934,9.35L18.934,9.35zM13.832,7.375c-0.508-0.037-0.543,0.33-0.375,0.324C13.629,7.693,13.523,7.408,13.832,7.375L13.832,7.375zM12.96,6.436c0.06-0.013,0.146,0.09,0.119,0.233c-0.037,0.199-0.021,0.324,0.117,0.325c0.022,0,0.048-0.005,0.056-0.057c0.066-0.396-0.14-0.688-0.225-0.711C12.834,6.178,12.857,6.458,12.96,6.436L12.96,6.436zM16.663,6.268c0.129,0.039,0.253,0.262,0.28,0.504c0.002,0.021,0.168-0.035,0.17-0.088c0.011-0.389-0.321-0.571-0.408-0.562C16.506,6.139,16.562,6.238,16.663,6.268L16.663,6.268zM14.765,7.423c0.463-0.214,0.625,0.118,0.465,0.171C15.066,7.648,15.065,7.345,14.765,7.423L14.765,7.423zM9.178,15.304c-0.219-0.026,0.063-0.19,0.184-0.397c0.131-0.227,0.105-0.511,0.244-0.469s0.061,0.2-0.033,0.461C9.491,15.121,9.258,15.313,9.178,15.304L9.178,15.304z",locked:"M15.505,0.975c-8.02,0-14.521,6.501-14.521,14.521s6.501,14.521,14.521,14.521c8.02,0,14.521-6.501,14.521-14.521S23.525,0.975,15.505,0.975zM25.016,14.302c0.747,0,1.387,0.619,1.65,1.271l-3.317,0.045C23.601,14.942,24.252,14.302,25.016,14.302zM6.042,14.302c0.747,0,1.386,0.619,1.649,1.271l-3.317,0.045C4.626,14.942,5.278,14.302,6.042,14.302zM6.042,17.81c-0.818,0-1.508-0.343-1.715-1.096l3.446-0.063C7.588,17.435,6.883,17.81,6.042,17.81zM16.641,15.288c-0.178,0.068,1.135,5.804,1.135,5.804l-4.531,0.031c0,0,1.452-5.679,1.111-5.795c-1.326-0.452-2.279-1.708-2.279-3.187c0-1.859,1.507-3.366,3.366-3.366s3.366,1.507,3.366,3.366C18.808,13.578,17.908,14.805,16.641,15.288zM25.016,17.81c-0.817,0-1.507-0.343-1.714-1.096l3.445-0.063C26.562,17.435,25.857,17.81,25.016,17.81z",ppt:"M16.604,1.914c0-0.575-0.466-1.041-1.041-1.041s-1.041,0.466-1.041,1.041v1.04h2.082V1.914zM16.604,22.717h-2.082v3.207c0,0.574-4.225,4.031-4.225,4.031l2.468-0.003l2.807-2.673l3.013,2.693l2.272-0.039l-4.254-4.011V22.717L16.604,22.717zM28.566,7.113c0.86,0,1.56-0.698,1.56-1.56c0-0.861-0.698-1.56-1.56-1.56H2.561c-0.861,0-1.56,0.699-1.56,1.56c0,0.862,0.699,1.56,1.56,1.56h1.583v12.505l-0.932-0.022c-0.861,0-1.213,0.467-1.213,1.04c0,0.576,0.352,1.041,1.213,1.041h24.597c0.86,0,1.299-0.465,1.299-1.041c0-1.094-1.299-1.04-1.299-1.04l-0.804,0.109V7.113H28.566zM11.435,17.516c-3.771,0-4.194-4.191-4.194-4.191c0-4.096,4.162-4.161,4.162-4.161v4.161h4.193C15.596,17.516,11.435,17.516,11.435,17.516zM18.716,13.388h-1.071v-1.073h1.071V13.388zM18.716,10.267h-1.071V9.194h1.071V10.267zM23.314,13.388H20.26c-0.296,0-0.535-0.24-0.535-0.536c0-0.297,0.239-0.537,0.535-0.537h3.057c0.297,0,0.535,0.24,0.535,0.537C23.852,13.147,23.611,13.388,23.314,13.388zM23.314,10.267H20.26c-0.296,0-0.535-0.239-0.535-0.535c0-0.297,0.239-0.537,0.535-0.537h3.057c0.297,0,0.535,0.24,0.535,0.537C23.852,10.027,23.611,10.267,23.314,10.267z",lab:"M22.562,25.85l-4.729-6.564v-5.647h0.88c0,0,1.017,0.333,1.017-0.918v-1.016c0,0-0.06-0.879-1.076-0.879l-5.411,0.039c0,0-1.016,0.333-1.016,0.879v0.977c0,0-0.079,0.899,0.938,0.899h0.978v5.725l-4.787,6.584c0,0-4.015,4.553,0.146,4.611h13.002C22.504,30.538,26.725,30.898,22.562,25.85zM15.535,8.948c0.277,0,0.502-0.225,0.502-0.503c0-0.278-0.225-0.503-0.502-0.503c-0.278,0-0.503,0.225-0.503,0.503C15.032,8.723,15.256,8.948,15.535,8.948zM12.706,7.111c0.793,0,1.437-0.643,1.437-1.436c0-0.792-0.644-1.436-1.437-1.436S11.27,4.882,11.27,5.675C11.27,6.469,11.913,7.111,12.706,7.111zM18.342,6.096c1.297,0,2.346-1.05,2.346-2.344c0-1.295-1.049-2.345-2.346-2.345c-1.294,0-2.344,1.049-2.344,2.345C15.998,5.046,17.048,6.096,18.342,6.096z",umbrella:"M17.081,4.065V3.137c0,0,0.104-0.872-0.881-0.872c-0.928,0-0.891,0.9-0.891,0.9v0.9C4.572,3.925,2.672,15.783,2.672,15.783c1.237-2.98,4.462-2.755,4.462-2.755c4.05,0,4.481,2.681,4.481,2.681c0.984-2.953,4.547-2.662,4.547-2.662c3.769,0,4.509,2.719,4.509,2.719s0.787-2.812,4.557-2.756c3.262,0,4.443,2.7,4.443,2.7v-0.058C29.672,4.348,17.081,4.065,17.081,4.065zM15.328,24.793c0,1.744-1.8,1.801-1.8,1.801c-1.885,0-1.8-1.801-1.8-1.801s0.028-0.928-0.872-0.928c-0.9,0-0.957,0.9-0.957,0.9c0,3.628,3.6,3.572,3.6,3.572c3.6,0,3.572-3.545,3.572-3.545V13.966h-1.744V24.793z"},Layout,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Layout=function(){function a(a){this.fn=a,this.resize(),this.listen(),setTimeout(__bind(function(){return this.resize()},this),250)}return a.prototype.resize=function(){return this.fill(".x-fill","outerWidth","width"),this.fill(".y-fill","outerHeight","height"),this.fn()},a.prototype.fill=function(a,b,c){return $(a).each(__bind(function(d,e){var f,g,h;return e=$(e),g=e[b],h=g.call(e.parent(),!0),f=this.fixed(e,a,function(a){return g.call(a,!0)}),e[c].call(e,h-f)},this))},a.prototype.fixed=function(a,b,c){return a.siblings().not(b).not(".float").filter(":visible").map(function(){return c($(this))}).get().reduce(function(a,b){return a+b},0)},a.prototype.listen=function(){var a;return a=null,$(window).resize(__bind(function(){return clearTimeout(a),a=setTimeout(__bind(function(){return this.resize()},this),10),this.resize()},this))},a}();var Base64=function(){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",b={encode:function(b){var c="",d,e,f,g,h,i,j,k=0;do d=b.charCodeAt(k++),e=b.charCodeAt(k++),f=b.charCodeAt(k++),g=d>>2,h=(d&3)<<4|e>>4,i=(e&15)<<2|f>>6,j=f&63,isNaN(e)?i=j=64:isNaN(f)&&(j=64),c=c+a.charAt(g)+a.charAt(h)+a.charAt(i)+a.charAt(j);while(k<b.length);return c},decode:function(b){var c="",d,e,f,g,h,i,j,k=0;b=b.replace(/[^A-Za-z0-9\+\/\=]/g,"");do g=a.indexOf(b.charAt(k++)),h=a.indexOf(b.charAt(k++)),i=a.indexOf(b.charAt(k++)),j=a.indexOf(b.charAt(k++)),d=g<<2|h>>4,e=(h&15)<<4|i>>2,f=(i&3)<<6|j,c+=String.fromCharCode(d),i!=64&&(c+=String.fromCharCode(e)),j!=64&&(c+=String.fromCharCode(f));while(k<b.length);return c}};return b}(),MD5=function(){var a=0,b="",c=8,d=function(a,b){var c=(a&65535)+(b&65535),d=(a>>16)+(b>>16)+(c>>16);return d<<16|c&65535},e=function(a,b){return a<<b|a>>>32-b},f=function(a){var b=[],d=(1<<c)-1;for(var e=0;e<a.length*c;e+=c)b[e>>5]|=(a.charCodeAt(e/c)&d)<<e%32;return b},g=function(a){var b="",d=(1<<c)-1;for(var e=0;e<a.length*32;e+=c)b+=String.fromCharCode(a[e>>5]>>>e%32&d);return b},h=function(b){var c=a?"0123456789ABCDEF":"0123456789abcdef",d="";for(var e=0;e<b.length*4;e++)d+=c.charAt(b[e>>2]>>e%4*8+4&15)+c.charAt(b[e>>2]>>e%4*8&15);return d},i=function(a){var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d="",e,f;for(var g=0;g<a.length*4;g+=3){e=(a[g>>2]>>8*(g%4)&255)<<16|(a[g+1>>2]>>8*((g+1)%4)&255)<<8|a[g+2>>2]>>8*((g+2)%4)&255;for(f=0;f<4;f++)g*8+f*6>a.length*32?d+=b:d+=c.charAt(e>>6*(3-f)&63)}return d},j=function(a,b,c,f,g,h){return d(e(d(d(b,a),d(f,h)),g),c)},k=function(a,b,c,d,e,f,g){return j(b&c|~b&d,a,b,e,f,g)},l=function(a,b,c,d,e,f,g){return j(b&d|c&~d,a,b,e,f,g)},m=function(a,b,c,d,e,f,g){return j(b^c^d,a,b,e,f,g)},n=function(a,b,c,d,e,f,g){return j(c^(b|~d),a,b,e,f,g)},o=function(a,b){a[b>>5]|=128<<b%32,a[(b+64>>>9<<4)+14]=b;var c=1732584193,e=-271733879,f=-1732584194,g=271733878,h,i,j,o;for(var p=0;p<a.length;p+=16)h=c,i=e,j=f,o=g,c=k(c,e,f,g,a[p+0],7,-680876936),g=k(g,c,e,f,a[p+1],12,-389564586),f=k(f,g,c,e,a[p+2],17,606105819),e=k(e,f,g,c,a[p+3],22,-1044525330),c=k(c,e,f,g,a[p+4],7,-176418897),g=k(g,c,e,f,a[p+5],12,1200080426),f=k(f,g,c,e,a[p+6],17,-1473231341),e=k(e,f,g,c,a[p+7],22,-45705983),c=k(c,e,f,g,a[p+8],7,1770035416),g=k(g,c,e,f,a[p+9],12,-1958414417),f=k(f,g,c,e,a[p+10],17,-42063),e=k(e,f,g,c,a[p+11],22,-1990404162),c=k(c,e,f,g,a[p+12],7,1804603682),g=k(g,c,e,f,a[p+13],12,-40341101),f=k(f,g,c,e,a[p+14],17,-1502002290),e=k(e,f,g,c,a[p+15],22,1236535329),c=l(c,e,f,g,a[p+1],5,-165796510),g=l(g,c,e,f,a[p+6],9,-1069501632),f=l(f,g,c,e,a[p+11],14,643717713),e=l(e,f,g,c,a[p+0],20,-373897302),c=l(c,e,f,g,a[p+5],5,-701558691),g=l(g,c,e,f,a[p+10],9,38016083),f=l(f,g,c,e,a[p+15],14,-660478335),e=l(e,f,g,c,a[p+4],20,-405537848),c=l(c,e,f,g,a[p+9],5,568446438),g=l(g,c,e,f,a[p+14],9,-1019803690),f=l(f,g,c,e,a[p+3],14,-187363961),e=l(e,f,g,c,a[p+8],20,1163531501),c=l(c,e,f,g,a[p+13],5,-1444681467),g=l(g,c,e,f,a[p+2],9,-51403784),f=l(f,g,c,e,a[p+7],14,1735328473),e=l(e,f,g,c,a[p+12],20,-1926607734),c=m(c,e,f,g,a[p+5],4,-378558),g=m(g,c,e,f,a[p+8],11,-2022574463),f=m(f,g,c,e,a[p+11],16,1839030562),e=m(e,f,g,c,a[p+14],23,-35309556),c=m(c,e,f,g,a[p+1],4,-1530992060),g=m(g,c,e,f,a[p+4],11,1272893353),f=m(f,g,c,e,a[p+7],16,-155497632),e=m(e,f,g,c,a[p+10],23,-1094730640),c=m(c,e,f,g,a[p+13],4,681279174),g=m(g,c,e,f,a[p+0],11,-358537222),f=m(f,g,c,e,a[p+3],16,-722521979),e=m(e,f,g,c,a[p+6],23,76029189),c=m(c,e,f,g,a[p+9],4,-640364487),g=m(g,c,e,f,a[p+12],11,-421815835),f=m(f,g,c,e,a[p+15],16,530742520),e=m(e,f,g,c,a[p+2],23,-995338651),c=n(c,e,f,g,a[p+0],6,-198630844),g=n(g,c,e,f,a[p+7],10,1126891415),f=n(f,g,c,e,a[p+14],15,-1416354905),e=n(e,f,g,c,a[p+5],21,-57434055),c=n(c,e,f,g,a[p+12],6,1700485571),g=n(g,c,e,f,a[p+3],10,-1894986606),f=n(f,g,c,e,a[p+10],15,-1051523),e=n(e,f,g,c,a[p+1],21,-2054922799),c=n(c,e,f,g,a[p+8],6,1873313359),g=n(g,c,e,f,a[p+15],10,-30611744),f=n(f,g,c,e,a[p+6],15,-1560198380),e=n(e,f,g,c,a[p+13],21,1309151649),c=n(c,e,f,g,a[p+4],6,-145523070),g=n(g,c,e,f,a[p+11],10,-1120210379),f=n(f,g,c,e,a[p+2],15,718787259),e=n(e,f,g,c,a[p+9],21,-343485551),c=d(c,h),e=d(e,i),f=d(f,j),g=d(g,o);return[c,e,f,g]},p=function(a,b){var d=f(a);d.length>16&&(d=o(d,a.length*c));var e=new Array(16),g=new Array(16);for(var h=0;h<16;h++)e[h]=d[h]^909522486,g[h]=d[h]^1549556828;var i=o(e.concat(f(b)),512+b.length*c);return o(g.concat(i),640)},q={hexdigest:function(a){return h(o(f(a),a.length*c))},b64digest:function(a){return i(o(f(a),a.length*c))},hash:function(a){return g(o(f(a),a.length*c))},hmac_hexdigest:function(a,b){return h(p(a,b))},hmac_b64digest:function(a,b){return i(p(a,b))},hmac_hash:function(a,b){return g(p(a,b))},test:function(){return MD5.hexdigest("abc")==="900150983cd24fb0d6963f7d28e17f72"}};return q}();Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,c=Array.prototype.slice,d=Array.prototype.concat,e=c.call(arguments,1);return function(){return b.apply(a?a:this,d.call(e,c.call(arguments,0)))}}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=Number(arguments[1])||0;c=c<0?Math.ceil(c):Math.floor(c),c<0&&(c+=b);for(;c<b;c++)if(c in this&&this[c]===a)return c;return-1}),function(a){function c(a,c){return new b.Builder(a,c)}function d(a){return new b.Builder("message",a)}function e(a){return new b.Builder("iq",a)}function f(a){return new b.Builder("presence",a)}var b;b={VERSION:"1.0.2",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas"},addNamespace:function(a,c){b.NS[a]=c},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,forEachChild:function(a,c,d){var e,f;for(e=0;e<a.childNodes.length;e++)f=a.childNodes[e],f.nodeType==b.ElementType.NORMAL&&(!c||this.isTagEqual(f,c))&&d(f)},isTagEqual:function(a,b){return a.tagName.toLowerCase()==b.toLowerCase()},_xmlGenerator:null,_makeGenerator:function(){var a;return document.implementation.createDocument===undefined?(a=this._getIEXmlDom(),a.appendChild(a.createElement("strophe"))):a=document.implementation.createDocument("jabber:client","strophe",null),a},xmlGenerator:function(){return b._xmlGenerator||(b._xmlGenerator=b._makeGenerator()),b._xmlGenerator},_getIEXmlDom:function(){var a=null,b=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(var c=0;c<b.length;c++){if(a!==null)break;try{a=new ActiveXObject(b[c])}catch(d){a=null}}return a},xmlElement:function(a){if(!a)return null;var c=b.xmlGenerator().createElement(a),d,e,f;for(d=1;d<arguments.length;d++){if(!arguments[d])continue;if(typeof arguments[d]=="string"||typeof arguments
9
- [d]=="number")c.appendChild(b.xmlTextNode(arguments[d]));else if(typeof arguments[d]=="object"&&typeof arguments[d].sort=="function")for(e=0;e<arguments[d].length;e++)typeof arguments[d][e]=="object"&&typeof arguments[d][e].sort=="function"&&c.setAttribute(arguments[d][e][0],arguments[d][e][1]);else if(typeof arguments[d]=="object")for(f in arguments[d])arguments[d].hasOwnProperty(f)&&c.setAttribute(f,arguments[d][f])}return c},xmlescape:function(a){return a=a.replace(/\&/g,"&amp;"),a=a.replace(/</g,"&lt;"),a=a.replace(/>/g,"&gt;"),a=a.replace(/'/g,"&apos;"),a=a.replace(/"/g,"&quot;"),a},xmlTextNode:function(a){return a=b.xmlescape(a),b.xmlGenerator().createTextNode(a)},getText:function(a){if(!a)return null;var c="";a.childNodes.length===0&&a.nodeType==b.ElementType.TEXT&&(c+=a.nodeValue);for(var d=0;d<a.childNodes.length;d++)a.childNodes[d].nodeType==b.ElementType.TEXT&&(c+=a.childNodes[d].nodeValue);return c},copyElement:function(a){var c,d;if(a.nodeType==b.ElementType.NORMAL){d=b.xmlElement(a.tagName);for(c=0;c<a.attributes.length;c++)d.setAttribute(a.attributes[c].nodeName.toLowerCase(),a.attributes[c].value);for(c=0;c<a.childNodes.length;c++)d.appendChild(b.copyElement(a.childNodes[c]))}else a.nodeType==b.ElementType.TEXT&&(d=b.xmlGenerator().createTextNode(a.nodeValue));return d},escapeNode:function(a){return a.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40")},unescapeNode:function(a){return a.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\")},getNodeFromJid:function(a){return a.indexOf("@")<0?null:a.split("@")[0]},getDomainFromJid:function(a){var c=b.getBareJidFromJid(a);if(c.indexOf("@")<0)return c;var d=c.split("@");return d.splice(0,1),d.join("@")},getResourceFromJid:function(a){var b=a.split("/");return b.length<2?null:(b.splice(0,1),b.join("/"))},getBareJidFromJid:function(a){return a?a.split("/")[0]:null},log:function(a,b){return},debug:function(a){this.log(this.LogLevel.DEBUG,a)},info:function(a){this.log(this.LogLevel.INFO,a)},warn:function(a){this.log(this.LogLevel.WARN,a)},error:function(a){this.log(this.LogLevel.ERROR,a)},fatal:function(a){this.log(this.LogLevel.FATAL,a)},serialize:function(a){var c;if(!a)return null;typeof a.tree=="function"&&(a=a.tree());var d=a.nodeName,e,f;a.getAttribute("_realname")&&(d=a.getAttribute("_realname")),c="<"+d;for(e=0;e<a.attributes.length;e++)a.attributes[e].nodeName!="_realname"&&(c+=" "+a.attributes[e].nodeName.toLowerCase()+"='"+a.attributes[e].value.replace(/&/g,"&amp;").replace(/\'/g,"&apos;").replace(/</g,"&lt;")+"'");if(a.childNodes.length>0){c+=">";for(e=0;e<a.childNodes.length;e++){f=a.childNodes[e];switch(f.nodeType){case b.ElementType.NORMAL:c+=b.serialize(f);break;case b.ElementType.TEXT:c+=b.xmlescape(f.nodeValue);break;case b.ElementType.CDATA:c+="<![CDATA["+f.nodeValue+"]]>"}}c+="</"+d+">"}else c+="/>";return c},_requestId:0,_connectionPlugins:{},addConnectionPlugin:function(a,c){b._connectionPlugins[a]=c}},b.Builder=function(a,c){if(a=="presence"||a=="message"||a=="iq")c&&!c.xmlns?c.xmlns=b.NS.CLIENT:c||(c={xmlns:b.NS.CLIENT});this.nodeTree=b.xmlElement(a,c),this.node=this.nodeTree},b.Builder.prototype={tree:function(){return this.nodeTree},toString:function(){return b.serialize(this.nodeTree)},up:function(){return this.node=this.node.parentNode,this},attrs:function(a){for(var b in a)a.hasOwnProperty(b)&&this.node.setAttribute(b,a[b]);return this},c:function(a,c,d){var e=b.xmlElement(a,c,d);return this.node.appendChild(e),d||(this.node=e),this},cnode:function(a){var c=b.xmlGenerator();try{var d=c.importNode!==undefined}catch(e){var d=!1}var f=d?c.importNode(a,!0):b.copyElement(a);return this.node.appendChild(f),this.node=f,this},t:function(a){var c=b.xmlTextNode(a);return this.node.appendChild(c),this}},b.Handler=function(a,c,d,e,f,g,h){this.handler=a,this.ns=c,this.name=d,this.type=e,this.id=f,this.options=h||{matchbare:!1},this.options.matchBare||(this.options.matchBare=!1),this.options.matchBare?this.from=g?b.getBareJidFromJid(g):null:this.from=g,this.user=!0},b.Handler.prototype={isMatch:function(a){var c,d=null;this.options.matchBare?d=b.getBareJidFromJid(a.getAttribute("from")):d=a.getAttribute("from"),c=!1;if(!this.ns)c=!0;else{var e=this;b.forEachChild(a,null,function(a){a.getAttribute("xmlns")==e.ns&&(c=!0)}),c=c||a.getAttribute("xmlns")==this.ns}return!c||!!this.name&&!b.isTagEqual(a,this.name)||!!this.type&&a.getAttribute("type")!=this.type||!!this.id&&a.getAttribute("id")!=this.id||!!this.from&&d!=this.from?!1:!0},run:function(a){var c=null;try{c=this.handler(a)}catch(d){throw d.sourceURL?b.fatal("error: "+this.handler+" "+d.sourceURL+":"+d.line+" - "+d.name+": "+d.message):d.fileName?(typeof console!="undefined"&&(console.trace(),console.error(this.handler," - error - ",d,d.message)),b.fatal("error: "+this.handler+" "+d.fileName+":"+d.lineNumber+" - "+d.name+": "+d.message)):b.fatal("error: "+this.handler),d}return c},toString:function(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},b.TimedHandler=function(a,b){this.period=a,this.handler=b,this.lastCalled=(new Date).getTime(),this.user=!0},b.TimedHandler.prototype={run:function(){return this.lastCalled=(new Date).getTime(),this.handler()},reset:function(){this.lastCalled=(new Date).getTime()},toString:function(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},b.Request=function(a,c,d,e){this.id=++b._requestId,this.xmlData=a,this.data=b.serialize(a),this.origFunc=c,this.func=c,this.rid=d,this.date=NaN,this.sends=e||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;var a=new Date;return(a-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;var a=new Date;return(a-this.dead)/1e3},this.xhr=this._newXHR()},b.Request.prototype={getResponse:function(){var a=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){a=this.xhr.responseXML.documentElement;if(a.tagName=="parsererror")throw b.error("invalid response received"),b.error("responseText: "+this.xhr.responseText),b.error("responseXML: "+b.serialize(this.xhr.responseXML)),"parsererror"}else this.xhr.responseText&&(b.error("invalid response received"),b.error("responseText: "+this.xhr.responseText),b.error("responseXML: "+b.serialize(this.xhr.responseXML)));return a},_newXHR:function(){var a=null;return window.XMLHttpRequest?(a=new XMLHttpRequest,a.overrideMimeType&&a.overrideMimeType("text/xml")):window.ActiveXObject&&(a=new ActiveXObject("Microsoft.XMLHTTP")),a.onreadystatechange=this.func.bind(null,this),a}},b.Connection=function(a){this.service=a,this.jid="",this.rid=Math.floor(Math.random()*4294967295),this.sid=null,this.streamId=null,this.features=null,this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.disconnecting=!1,this.connected=!1,this.errors=0,this.paused=!1,this.hold=1,this.wait=60,this.window=5,this._data=[],this._requests=[],this._uniqueId=Math.round(Math.random()*1e4),this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this._idleTimeout=setTimeout(this._onIdle.bind(this),100);for(var c in b._connectionPlugins)if(b._connectionPlugins.hasOwnProperty(c)){var d=b._connectionPlugins[c],e=function(){};e.prototype=d,this[c]=new e,this[c].init(this)}},b.Connection.prototype={reset:function(){this.rid=Math.floor(Math.random()*4294967295),this.sid=null,this.streamId=null,this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.disconnecting=!1,this.connected=!1,this.errors=0,this._requests=[],this._uniqueId=Math.round(Math.random()*1e4)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},getUniqueId:function(a){return typeof a=="string"||typeof a=="number"?++this._uniqueId+":"+a:++this._uniqueId+""},connect:function(a,c,d,e,f){this.jid=a,this.pass=c,this.connect_callback=d,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.errors=0,this.wait=e||this.wait,this.hold=f||this.hold,this.domain=b.getDomainFromJid(this.jid);var g=this._buildBody().attrs({to:this.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":b.NS.BOSH});this._changeConnectStatus(b.Status.CONNECTING,null),this._requests.push(new b.Request(g.tree(),this._onRequestStateChange.bind(this,this._connect_cb.bind(this)),g.tree().getAttribute("rid"))),this._throttledRequestHandler()},attach:function(a,c,d,e,f,g,h){this.jid=a,this.sid=c,this.rid=d,this.connect_callback=e,this.domain=b.getDomainFromJid(this.jid),this.authenticated=!0,this.connected=!0,this.wait=f||this.wait,this.hold=g||this.hold,this.window=h||this.window,this._changeConnectStatus(b.Status.ATTACHED,null)},xmlInput:function(a){return},xmlOutput:function(a){return},rawInput:function(a){return},rawOutput:function(a){return},send:function(a){if(a===null)return;if(typeof a.sort=="function")for(var b=0;b<a.length;b++)this._queueData(a[b]);else typeof a.tree=="function"?this._queueData(a.tree()):this._queueData(a);this._throttledRequestHandler(),clearTimeout(this._idleTimeout),this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},flush:function(){clearTimeout(this._idleTimeout),this._onIdle()},sendIQ:function(a,b,c,d){var e=null,f=this;typeof a.tree=="function"&&(a=a.tree());var g=a.getAttribute("id");g||(g=this.getUniqueId("sendIQ"),a.setAttribute("id",g));var h=this.addHandler(function(a){e&&f.deleteTimedHandler(e);var d=a.getAttribute("type");if(d=="result")b&&b(a);else if(d=="error")c&&c(a);else throw{name:"StropheError",message:"Got bad IQ type of "+d}},null,"iq",null,g);return d&&(e=this.addTimedHandler(d,function(){return f.deleteHandler(h),c&&c(null),!1})),this.send(a),g},_queueData:function(a){if(a===null||!a.tagName||!a.childNodes)throw{name:"StropheError",message:"Cannot queue non-DOMElement."};this._data.push(a)},_sendRestart:function(){this._data.push("restart"),this._throttledRequestHandler(),clearTimeout(this._idleTimeout),this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},addTimedHandler:function(a,c){var d=new b.TimedHandler(a,c);return this.addTimeds.push(d),d},deleteTimedHandler:function(a){this.removeTimeds.push(a)},addHandler:function(a,c,d,e,f,g,h){var i=new b.Handler(a,c,d,e,f,g,h);return this.addHandlers.push(i),i},deleteHandler:function(a){this.removeHandlers.push(a)},disconnect:function(a){this._changeConnectStatus(b.Status.DISCONNECTING,a),b.info("Disconnect was called because: "+a),this.connected&&(this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._sendTerminate())},_changeConnectStatus:function(a,c){for(var d in b._connectionPlugins)if(b._connectionPlugins.hasOwnProperty(d)){var e=this[d];if(e.statusChanged)try{e.statusChanged(a,c)}catch(f){b.error(""+d+" plugin caused an exception changing status: "+f)}}if(this.connect_callback)try{this.connect_callback(a,c)}catch(g){b.error("User connection callback caused an exception: "+g)}},_buildBody:function(){var a=c("body",{rid:this.rid++,xmlns:b.NS.HTTPBIND});return this.sid!==null&&a.attrs({sid:this.sid}),a},_removeRequest:function(a){b.debug("removing request");var c;for(c=this._requests.length-1;c>=0;c--)a==this._requests[c]&&this._requests.splice(c,1);a.xhr.onreadystatechange=function(){},this._throttledRequestHandler()},_restartRequest:function(a){var b=this._requests[a];b.dead===null&&(b.dead=new Date),this._processRequest(a)},_processRequest:function(a){var c=this._requests[a],d=-1;try{c.xhr.readyState==4&&(d=c.xhr.status)}catch(e){b.error("caught an error in _requests["+a+"], reqStatus: "+d)}typeof d=="undefined"&&(d=-1);if(c.sends>5){this._onDisconnectTimeout();return}var f=c.age(),g=!isNaN(f)&&f>Math.floor(b.TIMEOUT*this.wait),h=c.dead!==null&&c.timeDead()>Math.floor(b.SECONDARY_TIMEOUT*this.wait),i=c.xhr.readyState==4&&(d<1||d>=500);if(g||h||i)h&&b.error("Request "+this._requests[a].id+" timed out (secondary), restarting"),c.abort=!0,c.xhr.abort(),c.xhr.onreadystatechange=function(){},this._requests[a]=new b.Request(c.xmlData,c.origFunc,c.rid,c.sends),c=this._requests[a];if(c.xhr.readyState===0){b.debug("request id "+c.id+"."+c.sends+" posting");try{c.xhr.open("POST",this.service,!0)}catch(j){b.error("XHR open failed."),this.connected||this._changeConnectStatus(b.Status.CONNFAIL,"bad-service"),this.disconnect();return}var k=function(){c.date=new Date,c.xhr.send(c.data)};if(c.sends>1){var l=Math.min(Math.floor(b.TIMEOUT*this.wait),Math.pow(c.sends,3))*1e3;setTimeout(k,l)}else k();c.sends++,this.xmlOutput!==b.Connection.prototype.xmlOutput&&this.xmlOutput(c.xmlData),this.rawOutput!==b.Connection.prototype.rawOutput&&this.rawOutput(c.data)}else b.debug("_processRequest: "+(a===0?"first":"second")+" request has readyState of "+c.xhr.readyState)},_throttledRequestHandler:function(){this._requests?b.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):b.debug("_throttledRequestHandler called with undefined requests");if(!this._requests||this._requests.length===0)return;this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1)},_onRequestStateChange:function(a,c){b.debug("request id "+c.id+"."+c.sends+" state changed to "+c.xhr.readyState);if(c.abort){c.abort=!1;return}var d;if(c.xhr.readyState==4){d=0;try{d=c.xhr.status}catch(e){}typeof d=="undefined"&&(d=0);if(this.disconnecting&&d>=400){this._hitError(d);return}var f=this._requests[0]==c,g=this._requests[1]==c;if(d>0&&d<500||c.sends>5)this._removeRequest(c),b.debug("request id "+c.id+" should now be removed");if(d==200)(g||f&&this._requests.length>0&&this._requests[0].age()>Math.floor(b.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),b.debug("request id "+c.id+"."+c.sends+" got 200"),a(c),this.errors=0;else{b.error("request id "+c.id+"."+c.sends+" error "+d+" happened");if(d===0||d>=400&&d<600||d>=12e3)this._hitError(d),d>=400&&d<500&&(this._changeConnectStatus(b.Status.DISCONNECTING,null),this._doDisconnect())}d>0&&d<500||c.sends>5||this._throttledRequestHandler()}},_hitError:function(a){this.errors++,b.warn("request errored, status: "+a+", number of errors: "+this.errors),this.errors>4&&this._onDisconnectTimeout()},_doDisconnect:function(){b.info("_doDisconnect was called"),this.authenticated=!1,this.disconnecting=!1,this.sid=null,this.streamId=null,this.rid=Math.floor(Math.random()*4294967295),this.connected&&(this._changeConnectStatus(b.Status.DISCONNECTED,null),this.connected=!1),this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[]},_dataRecv:function(a){try{var c=a.getResponse()}catch(d){if(d!="parsererror")throw d;this.disconnect("strophe-parsererror")}if(c===null)return;this.xmlInput!==b.Connection.prototype.xmlInput&&this.xmlInput(c),this.rawInput!==b.Connection.prototype.rawInput&&this.rawInput(b.serialize(c));var e,f;while(this.removeHandlers.length>0)f=this.removeHandlers.pop(),e=this.handlers.indexOf(f),e>=0&&this.handlers.splice(e,1);while(this.addHandlers.length>0)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._requests.length===0){this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null,this._doDisconnect();return}var g=c.getAttribute("type"),h,i;if(g!==null&&g=="terminate"){if(this.disconnecting)return;h=c.getAttribute("condition"),i=c.getElementsByTagName("conflict"),h!==null?(h=="remote-stream-error"&&i.length>0&&(h="conflict"),this._changeConnectStatus(b.Status.CONNFAIL,h)):this._changeConnectStatus(b.Status.CONNFAIL,"unknown"),this.disconnect();return}var j=this;b.forEachChild(c,null,function(a){var b,c;c=j.handlers,j.handlers=[];for(b=0;b<c.length;b++){var d=c[b];try{d.isMatch(a)&&(j.authenticated||!d.user)?d.run(a)&&j.handlers.push(d):j.handlers.push(d)}catch(e){}}})},_sendTerminate:function(){b.info("_sendTerminate was called");var a=this._buildBody().attrs({type:"terminate"});this.authenticated&&a.c("presence",{xmlns:b.NS.CLIENT,type:"unavailable"}),this.disconnecting=!0;var c=new b.Request(a.tree(),this._onRequestStateChange.bind(this,this._dataRecv.bind(this)),a.tree().getAttribute("rid"));this._requests.push(c),this._throttledRequestHandler()},_connect_cb:function(a){b.info("_connect_cb was called"),this.connected=!0;var d=a.getResponse();if(!d)return;this.xmlInput!==b.Connection.prototype.xmlInput&&this.xmlInput(d),this.rawInput!==b.Connection.prototype.rawInput&&this.rawInput(b.serialize(d));var f=d.getAttribute("type"),g,h;if(f!==null&&f=="terminate"){g=d.getAttribute("condition"),h=d.getElementsByTagName("conflict"),g!==null?(g=="remote-stream-error"&&h.length>0&&(g="conflict"),this._changeConnectStatus(b.Status.CONNFAIL,g)):this._changeConnectStatus(b.Status.CONNFAIL,"unknown");return}this.sid||(this.sid=d.getAttribute("sid")),this.stream_id||(this.stream_id=d.getAttribute("authid"));var i=d.getAttribute("requests");i&&(this.window=parseInt(i,10));var j=d.getAttribute("hold");j&&(this.hold=parseInt(j,10));var k=d.getAttribute("wait");k&&(this.wait=parseInt(k,10));var l=!1,m=!1,n=!1,o=d.getElementsByTagName("mechanism"),p,q,r,s;if(o.length<=0){var t=this._buildBody();this._requests.push(new b.Request(t.tree(),this._onRequestStateChange.bind(this,this._connect_cb.bind(this)),t.tree().getAttribute("rid"))),this._throttledRequestHandler();return}for(p=0;p<o.length;p++)q=b.getText(o[p]),q=="DIGEST-MD5"?m=!0:q=="PLAIN"?l=!0:q=="ANONYMOUS"&&(n=!0);b.getNodeFromJid(this.jid)===null&&n?(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"ANONYMOUS"}).tree())):b.getNodeFromJid(this.jid)===null?(this._changeConnectStatus(b.Status.CONNFAIL,"x-strophe-bad-non-anon-jid"),this.disconnect()):m?(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge1_cb.bind(this),null,"challenge",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"DIGEST-MD5"}).tree())):l?(r=b.getBareJidFromJid(this.jid),r+="\0",r+=b.getNodeFromJid(this.jid),r+="\0",r+=this.pass,this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),s=Base64.encode(r),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"PLAIN"}).t(s).tree())):(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._addSysHandler(this._auth1_cb.bind(this),null,null,null,"_auth_1"),this.send(e({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:b.NS.AUTH}).c("username",{}).t(b.getNodeFromJid(this.jid)).tree()))},_sasl_challenge1_cb:function(a){var d=/([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/,e=Base64.decode(b.getText(a)),f=MD5.hexdigest(""+Math.random()*1234567890),g="",h=null,i="",j="",k;this.deleteHandler(this._sasl_failure_handler);while(e.match(d)){k=e.match(d),e=e.replace(k[0],""),k[2]=k[2].replace(/^"(.+)"$/,"$1");switch(k[1]){case"realm":g=k[2];break;case"nonce":i=k[2];break;case"qop":j=k[2];break;case"host":h=k[2]}}var l="xmpp/"+this.domain;h!==null&&(l=l+"/"+h);var m=MD5.hash(b.getNodeFromJid(this.jid)+":"+g+":"+this.pass)+":"+i+":"+f,n="AUTHENTICATE:"+l,o="";return o+="username="+this._quote(b.getNodeFromJid(this.jid))+",",o+="realm="+this._quote(g)+",",o+="nonce="+this._quote(i)+",",o+="cnonce="+this._quote(f)+",",o+='nc="00000001",',o+='qop="auth",',o+="digest-uri="+this._quote(l)+",",o+="response="+this._quote(MD5.hexdigest(MD5.hexdigest(m)+":"+i+":00000001:"+f+":auth:"+MD5.hexdigest(n)))+",",o+='charset="utf-8"',this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge2_cb.bind(this),null,"challenge",null,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("response",{xmlns:b.NS.SASL}).t(Base64.encode(o)).tree()),!1},_quote:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'},_sasl_challenge2_cb:function(a){return this.deleteHandler(this._sasl_success_handler),this.deleteHandler(this._sasl_failure_handler),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("response",{xmlns:b.NS.SASL}).tree()),!1},_auth1_cb:function(a){var c=e({type:"set",id:"_auth_2"}).c("query",{xmlns:b.NS.AUTH}).c("username",{}).t(b.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return b.getResourceFromJid(this.jid)||(this.jid=b.getBareJidFromJid(this.jid)+"/strophe"),c.up().c("resource",{}).t(b.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(c.tree()),!1},_sasl_success_cb:function(a){return b.info("SASL authentication succeeded."),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._addSysHandler(this._sasl_auth1_cb.bind(this),null,"stream:features",null,null),this._sendRestart(),!1},_sasl_auth1_cb:function(a){this.features=a;var c,d;for(c=0;c<a.childNodes.length;c++)d=a.childNodes[c],d.nodeName=="bind"&&(this.do_bind=!0),d.nodeName=="session"&&(this.do_session=!0);if(!this.do_bind)return this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;this._addSysHandler(this._sasl_bind_cb.bind(this),null,null,null,"_bind_auth_2");var f=b.getResourceFromJid(this.jid);return f?this.send(e({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:b.NS.BIND}).c("resource",{}).t(f).tree()):this.send(e({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:b.NS.BIND}).tree()),!1},_sasl_bind_cb:function(a){if(a.getAttribute("type")=="error")return b.info("SASL binding failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;var c=a.getElementsByTagName("bind"),d;if(c.length>0)d=c[0].getElementsByTagName("jid"),d.length>0&&(this.jid=b.getText(d[0]),this.do_session?(this._addSysHandler(this._sasl_session_cb.bind(this),null,null,null,"_session_auth_2"),this.send(e({type:"set",id:"_session_auth_2"}).c("session",{xmlns:b.NS.SESSION}).tree())):(this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null)));else return b.info("SASL binding failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1},_sasl_session_cb:function(a){if(a.getAttribute("type")=="result")this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null);else if(a.getAttribute("type")=="error")return b.info("Session creation failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;return!1},_sasl_failure_cb:function(a){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1},_auth2_cb:function(a){return a.getAttribute("type")=="result"?(this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null)):a.getAttribute("type")=="error"&&(this._changeConnectStatus(b.Status.AUTHFAIL,null),this.disconnect()),!1},_addSysTimedHandler:function(a,c){var d=new b.TimedHandler(a,c);return d.user=!1,this.addTimeds.push(d),d},_addSysHandler:function(a,c,d,e,f){var g=new b.Handler(a,c,d,e,f);return g.user=!1,this.addHandlers.push(g),g},_onDisconnectTimeout:function(){b.info("_onDisconnectTimeout was called");var a;while(this._requests.length>0)a=this._requests.pop(),a.abort=!0,a.xhr.abort(),a.xhr.onreadystatechange=function(){};return this._doDisconnect(),!1},_onIdle:function(){var a,c,d,e;while(this.addTimeds.length>0)this.timedHandlers.push(this.addTimeds.pop());while(this.removeTimeds.length>0)c=this.removeTimeds.pop(),a=this.timedHandlers.indexOf(c),a>=0&&this.timedHandlers.splice(a,1);var f=(new Date).getTime();e=[];for(a=0;a<this.timedHandlers.length;a++){c=this.timedHandlers[a];if(this.authenticated||!c.user)d=c.lastCalled+c.period,d-f>0?e.push(c):c.run()&&e.push(c)}this.timedHandlers=e;var g,h;this.authenticated&&this._requests.length===0&&this._data.length===0&&!this.disconnecting&&(b.info("no requests during idle cycle, sending blank request"),this._data.push(null));if(this._requests.length<2&&this._data.length>0&&!this.paused){g=this._buildBody();for(a=0;a<this._data.length;a++)this._data[a]!==null&&(this._data[a]==="restart"?g.attrs({to:this.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":b.NS.BOSH}):g.cnode(this._data[a]).up());delete this._data,this._data=[],this._requests.push(new b.Request(g.tree(),this._onRequestStateChange.bind(this,this._dataRecv.bind(this)),g.tree().getAttribute("rid"))),this._processRequest(this._requests.length-1)}this._requests.length>0&&(h=this._requests[0].age(),this._requests[0].dead!==null&&this._requests[0].timeDead()>Math.floor(b.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),h>Math.floor(b.TIMEOUT*this.wait)&&(b.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(b.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())),clearTimeout(this._idleTimeout),this.connected&&(this._idleTimeout=setTimeout(this._onIdle.bind(this),100))}},a&&a(b,c,d,e,f)}(function(){window.Strophe=arguments[0],window.$build=arguments[1],window.$msg=arguments[2],window.$iq=arguments[3],window.$pres=arguments[4]});var Button;Button=function(){function a(a,b,c){this.node=$(a),this.path=b,this.options=c||{},this.draw()}return a.prototype.draw=function(){var a,b;return b=Raphael(this.node.get(0)),a=b.path(this.path).attr({fill:this.options.fill||"#000",stroke:this.options.stroke||"#fff","stroke-width":this.options["stroke-width"]||.3,opacity:this.options.opacity||.6,scale:this.options.scale||.85,translation:this.options.translation||""}),this.node.hover(function(){return a.animate({opacity:1},200)},function(){return a.animate({opacity:.6},200)})},a}();var Contact;Contact=function(){function a(a){a=$(a),this.jid=a.attr("jid"),this.name=a.attr("name"),this.ask=a.attr("ask"),this.subscription=a.attr("subscription"),this.groups=$("group",a).map(function(){return $(this).text()}).get(),this.presence=[]}return a.prototype.online=function(){return this.presence.length>0},a.prototype.offline=function(){return this.presence.length===0},a.prototype.available=function(){var a;return this.online()&&function(){var b,c,d,e;d=this.presence,e=[];for(b=0,c=d.length;b<c;b++)a=d[b],a.away||e.push(a);return e}.call(this).length>0},a.prototype.away=function(){return!this.available()},a.prototype.status=function(){var a,b,c;return a=function(){var a,b,d,e;d=this.presence,e=[];for(a=0,b=d.length;a<b;a++)c=d[a],c.status&&!c.away&&e.push(c.status);return e}.call(this)[0]||"Available",b=function(){var a,b,d,e;d=this.presence,e=[];for(a=0,b=d.length;a<b;a++)c=d[a],c.status&&c.away&&e.push(c.status);return e}.call(this)[0]||"Away",this.offline()?"Offline":this.away()?b:a},a.prototype.update=function(a){var b;this.presence=function(){var c,d,e,f;e=this.presence,f=[];for(c=0,d=e.length;c<d;c++)b=e[c],b.from!==a.from&&f.push(b);return f}.call(this),a.type||this.presence.push(a);if(a.type==="unsubscribed")return this.presence=[]},a}();var Filter,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Filter=function(){function a(a){this.list=a.list,this.icon=a.icon,this.form=a.form,this.attrs=a.attrs,this.open=a.open,this.close=a.close,this.draw()}return a.prototype.draw=function(){var a,b;return $(this.icon).addClass("filter-button"),a=$('<form class="filter-form" style="display:none;"></form>').appendTo(this.form),b=$('<input class="filter-text" type="search" placeholder="Filter" results="5"/>').appendTo(a),new Button(this.icon,ICONS.search,{scale:.5,translation:"-8 -8"}),a.submit(function(){return!1}),b.keyup(__bind(function(){return this.filter(b)},this)),b.change(__bind(function(){return this.filter(b)},this)),b.click(__bind(function(){return this.filter(b)},this)),$(this.icon).click(__bind(function(){if(a.is(":hidden")){this.filter(b),a.show();if(this.open)return this.open()}else{a.hide(),a[0].reset(),this.filter(b);if(this.close)return this.close()}},this))},a.prototype.filter=function(a){var b,c;c=a.val().toLowerCase();if(c===""){$("li",this.list).show();return}return b=function(a,b){var d;return d=(a.attr(b)||"").toLowerCase(),d.indexOf(c)!==-1},$("li",this.list).each(__bind(function(a,c){var d,e;return c=$(c),e=function(){var a,e,f,g;f=this.attrs,g=[];for(a=0,e=f.length;a<e;a++)d=f[a],b(c,d)&&g.push(!0);return g}.call(this),e.length>0?c.show():c.hide()},this))},a}();var Session,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Session=function(){function a(){this.xmpp=new Strophe.Connection("/xmpp"),this.roster={},this.listeners={card:[],message:[],presence:[],roster:[]}}return a.prototype.connect=function(a,b,c){return this.xmpp.connect(a,b,__bind(function(a){switch(a){case Strophe.Status.AUTHFAIL||Strophe.Status.CONNFAIL:return c(!1);case Strophe.Status.CONNECTED:return this.xmpp.addHandler(__bind(function(a){return this.handleIq(a)},this),null,"iq"),this.xmpp.addHandler(__bind(function(a){return this.handleMessage(a)},this),null,"message"),this.xmpp.addHandler(__bind(function(a){return this.handlePresence(a)},this),null,"presence"),c(!0),this.findRoster(__bind(function(){return this.notify("roster"),this.xmpp.send(this.xml("<presence/>")),this.findCards()},this))}},this))},a.prototype.disconnect=function(){return this.xmpp.disconnect()},a.prototype.onCard=function(a){return this.listeners.card.push(a)},a.prototype.onRoster=function(a){return this.listeners.roster.push(a)},a.prototype.onMessage=function(a){return this.listeners.message.push(a)},a.prototype.onPresence=function(a){return this.listeners.presence.push(a)},a.prototype.connected=function(){return this.xmpp.jid&&this.xmpp.jid.length>0},a.prototype.jid=function(){return this.xmpp.jid},a.prototype.bareJid=function(){return this.xmpp.jid.split("/")[0]},a.prototype.uniqueId=function(){return this.xmpp.getUniqueId()},a.prototype.avatar=function(a){var b;return b=this.loadCard(a),b&&b.photo?"data:"+b.photo.type+";base64,"+b.photo.binval:"/lib/images/default-user.png"},a.prototype.loadCard=function(a){var b;a=a.split("/")[0],b=localStorage["vcard:"+a];if(b)return JSON.parse(b)},a.prototype.storeCard=function(a){return localStorage["vcard:"+a.jid]=JSON.stringify(a)},a.prototype.findCards=function(){var a,b,c,d;return c=function(){var c,d;c=this.roster,d=[];for(b in c)a=c[b],this.loadCard(b)||d.push(b);return d}.call(this),this.loadCard(this.bareJid())||c.push(this.bareJid()),d=__bind(function(a){this.findCard(c.shift(),d);if(a)return this.storeCard(a),this.notify("card",a)},this),this.findCard(c.shift(),d)},a.prototype.findCard=function(a,b){var c;if(!a)return;return c=this.xml('<iq id="'+this.uniqueId()+'" to="'+a+'" type="get">\n <vCard xmlns="vcard-temp"/>\n</iq>'),this.sendIQ(c,function(c){var d,e,f,g,h;return e=$("vCard",c),f=$("PHOTO",e),g=$("TYPE",f).text(),d=$("BINVAL",f).text(),f=g&&d?{type:g,binval:d.replace(/\n/g,"")}:null,h={jid:a,photo:f,retrieved:new Date},b(e.size()>0?h:null)})},a.prototype.parseRoster=function(a){return $("item",a).map(function(){return new Contact(this)}).get()},a.prototype.findRoster=function(a){var b;return b=this.xml("<iq id='"+this.uniqueId()+'\' type="get">\n <query xmlns="jabber:iq:roster"/>\n</iq>'),this.sendIQ(b,__bind(function(b){var c,d,e,f;d=this.parseRoster(b);for(e=0,f=d.length;e<f;e++)c=d[e],this.roster[c.jid]=c;return a()},this))},a.prototype.sendMessage=function(a,b){var c;return c=this.xml('<message id="'+this.uniqueId()+'" to="'+a+'" type="chat">\n <body></body>\n</message>'
10
- ),$("body",c).text(b),this.xmpp.send(c)},a.prototype.sendPresence=function(a,b){var c;return c=$(this.xml("<presence/>")),a?(c.append($(this.xml("<show>xa</show>"))),b!=="Away"&&c.append($(this.xml("<status/>")).text(b))):b!=="Available"&&c.append($(this.xml("<status/>")).text(b)),this.xmpp.send(c)},a.prototype.sendIQ=function(a,b){return this.xmpp.sendIQ(a,b,b,5e3)},a.prototype.updateContact=function(a,b){var c,d,e,f,g;d=this.xml('<iq id="'+this.uniqueId()+'" type="set">\n <query xmlns="jabber:iq:roster">\n <item name="" jid="'+a.jid+'"/>\n </query>\n</iq>'),$("item",d).attr("name",a.name),g=a.groups;for(e=0,f=g.length;e<f;e++)c=g[e],$("item",d).append($(this.xml("<group></group>")).text(c));this.xmpp.send(d);if(b)return this.sendSubscribe(a.jid)},a.prototype.removeContact=function(a){var b;return b=this.xml('<iq id="'+this.uniqueId()+'" type="set">\n <query xmlns="jabber:iq:roster">\n <item jid="'+a+'" subscription="remove"/>\n </query>\n</iq>'),this.xmpp.send(b)},a.prototype.sendSubscribe=function(a){return this.xmpp.send(this.presence(a,"subscribe"))},a.prototype.sendSubscribed=function(a){return this.xmpp.send(this.presence(a,"subscribed"))},a.prototype.sendUnsubscribed=function(a){return this.xmpp.send(this.presence(a,"unsubscribed"))},a.prototype.presence=function(a,b){return this.xml('<presence\n id="'+this.uniqueId()+'"\n to="'+a+'"\n type="'+b+'"/>')},a.prototype.handleIq=function(a){var b,c,d,e,f,g,h;a=$(a),f=a.attr("type"),d=a.find("query").attr("xmlns");if(f==="set"&&d==="jabber:iq:roster"){c=this.parseRoster(a);for(g=0,h=c.length;g<h;g++)b=c[g],b.subscription==="remove"?delete this.roster[b.jid]:(e=this.roster[b.jid],e&&(b.presence=e.presence),this.roster[b.jid]=b);this.notify("roster")}return!0},a.prototype.handleMessage=function(a){var b,c,d,e,f,g;return a=$(a),f=a.attr("to"),c=a.attr("from"),g=a.attr("type"),e=a.find("thread").first(),b=a.find("body").first(),d=a.find("span").first(),g==="chat"&&b.size()>0&&this.notify("message",{to:f,from:c,type:g,thread:e.text(),text:b.text(),html:d.text(),received:new Date}),!0},a.prototype.handlePresence=function(a){var b,c,d,e,f,g,h;return a=$(a),g=a.attr("to"),c=a.attr("from"),h=a.attr("type"),e=a.find("show").first(),f=a.find("status").first(),d={to:g,from:c,status:f.text(),show:e.text(),type:h,offline:h==="unavailable"||h==="error",away:e.text()==="away"||e.text()==="xa",dnd:e.text()==="dnd"},b=this.roster[c.split("/")[0]],b&&b.update(d),this.notify("presence",d),!0},a.prototype.notify=function(a,b){var c,d,e,f,g;f=this.listeners[a]||[],g=[];for(d=0,e=f.length;d<e;d++)c=f[d],g.push(c(b));return g},a.prototype.xml=function(a){return $.parseXML(a).documentElement},a}();var Transfer,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Transfer=function(){function b(b){this.session=b.session,this.file=b.file,this.to=b.to,this.progress=b.progress,this.complete=b.complete,this.chunks=new a(this.file),this.opened=!1,this.closed=!1,this.sid=this.session.uniqueId(),this.seq=0,this.sent=0}var a;return b.prototype.start=function(){var a;return a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <si xmlns="http://jabber.org/protocol/si" id="'+this.session.uniqueId()+'" profile="http://jabber.org/protocol/si/profile/file-transfer">\n <file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="" size="'+this.file.size+'"/>\n <feature xmlns="http://jabber.org/protocol/feature-neg">\n <x xmlns="jabber:x:data" type="form">\n <field var="stream-method" type="list-single">\n <option><value>http://jabber.org/protocol/ibb</value></option>\n </field>\n </x>\n </feature>\n </si>\n</iq>'),$("file",a).attr("name",this.file.name),this.session.sendIQ(a.get(0),__bind(function(a){var b,c,d;c=$('si feature x field[var="stream-method"] value',a),d=function(){var a,d,e;e=[];for(a=0,d=c.length;a<d;a++)b=c[a],$(b).text()==="http://jabber.org/protocol/ibb"&&e.push(!0);return e}().length>0;if(d)return this.open()},this))},b.prototype.open=function(){var a;return a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <open xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'" block-size="4096"/>\n</iq>'),this.session.sendIQ(a.get(0),__bind(function(a){if(this.ok(a))return this.opened=!0,this.sendChunk()},this))},b.prototype.sendChunk=function(){if(this.closed)return;return this.chunks.chunk(__bind(function(a){var b;if(!a){this.close();return}return b=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <data xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'" seq="'+this.seq++ +'">'+a+"</data>\n</iq>"),this.seq>65535&&(this.seq=0),this.session.sendIQ(b.get(0),__bind(function(a){var b;if(!this.ok(a))return;return b=Math.ceil(++this.sent/this.chunks.total*100),this.progress(b),this.sendChunk()},this))},this))},b.prototype.close=function(){var a;if(this.closed)return;return this.closed=!0,a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <close xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'"/>\n</iq>'),this.session.sendIQ(a.get(0),function(){}),this.complete()},b.prototype.stop=function(){return this.opened?this.close():this.complete()},b.prototype.ok=function(a){return $(a).attr("type")==="result"},a=function(){function b(b){this.file=b,this.total=Math.ceil(this.file.size/a),this.slice=this.file.slice||this.file.webkitSlice||this.file.mozSlice,this.pos=0}var a;return a=3072,b.prototype.chunk=function(b){var c,d,e,f;return f=this.pos,d=this.pos+a,this.pos=d,f>this.file.size?b(null):(c=this.slice.call(this.file,f,d),e=new FileReader,e.onload=function(a){return b(btoa(a.target.result))},e.readAsBinaryString(c))},b}(),b}();var Router,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Router=function(){function a(a){this.pages=a,this.routes=this.build(),$(window).bind("hashchange",__bind(function(){return this.draw()},this))}return a.prototype.build=function(){var a,b,c,d,e,f,g,h;g=[],h=this.pages;for(e in h){d=h[e],g.push(f={args:[],page:d,re:null});if(e==="default"){f.re=e;continue}b=function(){var b,c,d,f;d=e.split("/"),f=[];for(b=0,c=d.length;b<c;b++)a=d[b],a.length>0&&f.push(a);return f}(),c=function(a){return a[0]===":"?(f.args.push(a.replace(":","")),"(/[^/]+)?"):"/"+a},f.re=new RegExp("#"+function(){var d,e,f;f=[];for(d=0,e=b.length;d<e;d++)a=b[d],f.push(c(a));return f}().join(""))}return g},a.prototype.draw=function(){var a,b,c,d,e,f,g,h,i,j;h=this.match(),e=h[0],a=h[1],e||(e=this.defaultRoute());if(!e)return;i=[{},0],d=i[0],b=i[1],j=e.args;for(f=0,g=j.length;f<g;f++)c=j[f],d[c]=a[b++];return e.page.draw(d)},a.prototype.match=function(){var a,b,c,d,e,f,g;g=this.routes;for(e=0,f=g.length;e<f;e++){d=g[e];if(c=window.location.hash.match(d.re))return b=function(){var b,d,e,f;e=c.slice(1),f=[];for(b=0,d=e.length;b<d;b++)a=e[b],f.push(a.replace("/",""));return f}(),[d,b]}return[]},a.prototype.defaultRoute=function(){var a,b,c,d;d=this.routes;for(b=0,c=d.length;b<c;b++){a=d[b];if(a.re==="default")return a}},a}();var NavBar,__bind=function(a,b){return function(){return a.apply(b,arguments)}};NavBar=function(){function a(a){this.session=a,this.session.onCard(__bind(function(a){if(a.jid===this.session.bareJid())return $("#current-user-avatar").attr("src",this.session.avatar(a.jid))},this))}return a.prototype.draw=function(){return $('<header id="navbar" class="x-fill">\n <h1 id="logo">vines&gt;</h1>\n <div id="current-user">\n <img id="current-user-avatar" alt="'+this.session.bareJid()+'" src="'+this.session.avatar(this.session.jid())+'"/>\n <div id="current-user-info">\n <h1 id="current-user-name">'+this.session.bareJid()+'</h1>\n <form id="current-user-presence-form">\n <span class="select">\n <span class="text">Available</span>\n <select id="current-user-presence">\n <optgroup label="Available">\n <option>Available</option>\n <option>Surfing the web</option>\n <option>Reading email</option>\n </optgroup>\n <optgroup label="Away">\n <option value="xa">Away</option>\n <option value="xa">Out to lunch</option>\n <option value="xa">On the phone</option>\n <option value="xa">In a meeting</option>\n </optgroup>\n </select>\n </span>\n </form>\n </div>\n </div>\n <nav id="app-nav" class="x-fill">\n <ul id="nav-links"></ul>\n </nav>\n</header>').appendTo("body"),$('<div id="container" class="x-fill y-fill"></div>').appendTo("body"),$("#current-user-presence").change(__bind(function(a){var b;return b=$("option:selected",a.currentTarget),$("#current-user-presence-form .text").text(b.text()),this.session.sendPresence(b.val()==="xa",b.text())},this))},a.prototype.addButton=function(a,b){var c,d;return c="nav-link-"+a.toLowerCase(),d=$('<li>\n <a id="'+c+'" href="#/'+a.toLowerCase()+'">\n <span>'+a+"</span>\n </a>\n</li>").appendTo("#nav-links"),this.button(c,b),d.click(__bind(function(a){return this.select(a.currentTarget)},this))},a.prototype.select=function(a){var b,c;return a=$(a),$("#nav-links li").removeClass("selected"),$("#nav-links li a").removeClass("selected"),a.addClass("selected"),$("a",a).addClass("selected"),b=$("#nav-links svg path"),b.attr("opacity","0.6"),b.css("opacity","0.6"),c=$("svg path",a),c.attr("opacity","1.0"),c.css("opacity","1.0")},a.prototype.button=function(a,b){var c,d,e;return e=Raphael(a),c=e.path(b).attr({fill:"#fff",stroke:"#000","stroke-width":.3,opacity:.6}),d=$("#"+a),d.hover(function(){return c.animate({opacity:1},200)},function(){if(!d.hasClass("selected"))return c.animate({opacity:.6},200)}),d.get(0)},a}();var Notification;Notification=function(){function a(a){this.text=a,this.draw()}return a.prototype.draw=function(){var a,b,c,d;return c=$('<div class="notification float" style="display:none;"></div>').appendTo("body"),c.text(this.text),d=c.outerHeight()/2,b=c.outerWidth()/2,c.css({marginTop:"-"+d+"px",marginLeft:"-"+b+"px"}),c.fadeIn(200),a=function(){return c.fadeOut(200,function(){return c.remove()})},setTimeout(a,1500)},a}();var LoginPage,__bind=function(a,b){return function(){return a.apply(b,arguments)}};LoginPage=function(){function a(a,b){this.session=a,this.startPage=b}return a.prototype.start=function(){var a;return $("#error").hide(),a=__bind(function(a){if(!a){this.session.disconnect(),$("#error").show(),$("#password").val("").focus();return}return localStorage.jid=$("#jid").val(),$("#current-user-name").text(this.session.bareJid()),$("#current-user-avatar").attr("src",this.session.avatar(this.session.jid())),$("#current-user-avatar").attr("alt",this.session.bareJid()),$("#container").fadeOut(200,__bind(function(){return $("#navbar").show(),window.location.hash=this.startPage},this))},this),this.session.connect($("#jid").val(),$("#password").val(),a),!1},a.prototype.draw=function(){var a;return this.session.disconnect(),a=localStorage.jid||"",$("#navbar").hide(),$("body").attr("id","login-page"),$("#container").hide().empty(),$('<form id="login-form">\n <h1>vines&gt;</h1>\n <fieldset id="login-form-controls">\n <input id="jid" name="jid" type="email" maxlength="1024" value="'+a+'" placeholder="Your user name"/>\n <input id="password" name="password" type="password" maxlength="1024" placeholder="Your password"/>\n <input id="start" type="submit" value="Sign in"/>\n </fieldset>\n <p id="error" style="display:none;">User name and password not found.</p>\n</form>').appendTo("#container"),$("#login-form").submit(__bind(function(){return this.start()},this)),$("#container").fadeIn(1e3),$("#jid").keydown(function(){return $("#error").fadeOut()}),$("#password").keydown(function(){return $("#error").fadeOut()}),this.resize()},a.prototype.resize=function(){var a,b,c;return c=$(window),a=$("#login-form"),b=function(){return a.css("top",c.height()/2-a.height()/2)},c.resize(b),b()},a}();var LogoutPage;LogoutPage=function(){function a(a){this.session=a}return a.prototype.draw=function(){return window.location.hash="",window.location.reload()},a}()
9
+ [d]=="number")c.appendChild(b.xmlTextNode(arguments[d]));else if(typeof arguments[d]=="object"&&typeof arguments[d].sort=="function")for(e=0;e<arguments[d].length;e++)typeof arguments[d][e]=="object"&&typeof arguments[d][e].sort=="function"&&c.setAttribute(arguments[d][e][0],arguments[d][e][1]);else if(typeof arguments[d]=="object")for(f in arguments[d])arguments[d].hasOwnProperty(f)&&c.setAttribute(f,arguments[d][f])}return c},xmlescape:function(a){return a=a.replace(/\&/g,"&amp;"),a=a.replace(/</g,"&lt;"),a=a.replace(/>/g,"&gt;"),a=a.replace(/'/g,"&apos;"),a=a.replace(/"/g,"&quot;"),a},xmlTextNode:function(a){return a=b.xmlescape(a),b.xmlGenerator().createTextNode(a)},getText:function(a){if(!a)return null;var c="";a.childNodes.length===0&&a.nodeType==b.ElementType.TEXT&&(c+=a.nodeValue);for(var d=0;d<a.childNodes.length;d++)a.childNodes[d].nodeType==b.ElementType.TEXT&&(c+=a.childNodes[d].nodeValue);return c},copyElement:function(a){var c,d;if(a.nodeType==b.ElementType.NORMAL){d=b.xmlElement(a.tagName);for(c=0;c<a.attributes.length;c++)d.setAttribute(a.attributes[c].nodeName.toLowerCase(),a.attributes[c].value);for(c=0;c<a.childNodes.length;c++)d.appendChild(b.copyElement(a.childNodes[c]))}else a.nodeType==b.ElementType.TEXT&&(d=b.xmlGenerator().createTextNode(a.nodeValue));return d},escapeNode:function(a){return a.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40")},unescapeNode:function(a){return a.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\")},getNodeFromJid:function(a){return a.indexOf("@")<0?null:a.split("@")[0]},getDomainFromJid:function(a){var c=b.getBareJidFromJid(a);if(c.indexOf("@")<0)return c;var d=c.split("@");return d.splice(0,1),d.join("@")},getResourceFromJid:function(a){var b=a.split("/");return b.length<2?null:(b.splice(0,1),b.join("/"))},getBareJidFromJid:function(a){return a?a.split("/")[0]:null},log:function(a,b){return},debug:function(a){this.log(this.LogLevel.DEBUG,a)},info:function(a){this.log(this.LogLevel.INFO,a)},warn:function(a){this.log(this.LogLevel.WARN,a)},error:function(a){this.log(this.LogLevel.ERROR,a)},fatal:function(a){this.log(this.LogLevel.FATAL,a)},serialize:function(a){var c;if(!a)return null;typeof a.tree=="function"&&(a=a.tree());var d=a.nodeName,e,f;a.getAttribute("_realname")&&(d=a.getAttribute("_realname")),c="<"+d;for(e=0;e<a.attributes.length;e++)a.attributes[e].nodeName!="_realname"&&(c+=" "+a.attributes[e].nodeName.toLowerCase()+"='"+a.attributes[e].value.replace(/&/g,"&amp;").replace(/\'/g,"&apos;").replace(/</g,"&lt;")+"'");if(a.childNodes.length>0){c+=">";for(e=0;e<a.childNodes.length;e++){f=a.childNodes[e];switch(f.nodeType){case b.ElementType.NORMAL:c+=b.serialize(f);break;case b.ElementType.TEXT:c+=b.xmlescape(f.nodeValue);break;case b.ElementType.CDATA:c+="<![CDATA["+f.nodeValue+"]]>"}}c+="</"+d+">"}else c+="/>";return c},_requestId:0,_connectionPlugins:{},addConnectionPlugin:function(a,c){b._connectionPlugins[a]=c}},b.Builder=function(a,c){if(a=="presence"||a=="message"||a=="iq")c&&!c.xmlns?c.xmlns=b.NS.CLIENT:c||(c={xmlns:b.NS.CLIENT});this.nodeTree=b.xmlElement(a,c),this.node=this.nodeTree},b.Builder.prototype={tree:function(){return this.nodeTree},toString:function(){return b.serialize(this.nodeTree)},up:function(){return this.node=this.node.parentNode,this},attrs:function(a){for(var b in a)a.hasOwnProperty(b)&&this.node.setAttribute(b,a[b]);return this},c:function(a,c,d){var e=b.xmlElement(a,c,d);return this.node.appendChild(e),d||(this.node=e),this},cnode:function(a){var c=b.xmlGenerator();try{var d=c.importNode!==undefined}catch(e){var d=!1}var f=d?c.importNode(a,!0):b.copyElement(a);return this.node.appendChild(f),this.node=f,this},t:function(a){var c=b.xmlTextNode(a);return this.node.appendChild(c),this}},b.Handler=function(a,c,d,e,f,g,h){this.handler=a,this.ns=c,this.name=d,this.type=e,this.id=f,this.options=h||{matchbare:!1},this.options.matchBare||(this.options.matchBare=!1),this.options.matchBare?this.from=g?b.getBareJidFromJid(g):null:this.from=g,this.user=!0},b.Handler.prototype={isMatch:function(a){var c,d=null;this.options.matchBare?d=b.getBareJidFromJid(a.getAttribute("from")):d=a.getAttribute("from"),c=!1;if(!this.ns)c=!0;else{var e=this;b.forEachChild(a,null,function(a){a.getAttribute("xmlns")==e.ns&&(c=!0)}),c=c||a.getAttribute("xmlns")==this.ns}return!c||!!this.name&&!b.isTagEqual(a,this.name)||!!this.type&&a.getAttribute("type")!=this.type||!!this.id&&a.getAttribute("id")!=this.id||!!this.from&&d!=this.from?!1:!0},run:function(a){var c=null;try{c=this.handler(a)}catch(d){throw d.sourceURL?b.fatal("error: "+this.handler+" "+d.sourceURL+":"+d.line+" - "+d.name+": "+d.message):d.fileName?(typeof console!="undefined"&&(console.trace(),console.error(this.handler," - error - ",d,d.message)),b.fatal("error: "+this.handler+" "+d.fileName+":"+d.lineNumber+" - "+d.name+": "+d.message)):b.fatal("error: "+this.handler),d}return c},toString:function(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},b.TimedHandler=function(a,b){this.period=a,this.handler=b,this.lastCalled=(new Date).getTime(),this.user=!0},b.TimedHandler.prototype={run:function(){return this.lastCalled=(new Date).getTime(),this.handler()},reset:function(){this.lastCalled=(new Date).getTime()},toString:function(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},b.Request=function(a,c,d,e){this.id=++b._requestId,this.xmlData=a,this.data=b.serialize(a),this.origFunc=c,this.func=c,this.rid=d,this.date=NaN,this.sends=e||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;var a=new Date;return(a-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;var a=new Date;return(a-this.dead)/1e3},this.xhr=this._newXHR()},b.Request.prototype={getResponse:function(){var a=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){a=this.xhr.responseXML.documentElement;if(a.tagName=="parsererror")throw b.error("invalid response received"),b.error("responseText: "+this.xhr.responseText),b.error("responseXML: "+b.serialize(this.xhr.responseXML)),"parsererror"}else this.xhr.responseText&&(b.error("invalid response received"),b.error("responseText: "+this.xhr.responseText),b.error("responseXML: "+b.serialize(this.xhr.responseXML)));return a},_newXHR:function(){var a=null;return window.XMLHttpRequest?(a=new XMLHttpRequest,a.overrideMimeType&&a.overrideMimeType("text/xml")):window.ActiveXObject&&(a=new ActiveXObject("Microsoft.XMLHTTP")),a.onreadystatechange=this.func.bind(null,this),a}},b.Connection=function(a){this.service=a,this.jid="",this.rid=Math.floor(Math.random()*4294967295),this.sid=null,this.streamId=null,this.features=null,this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.disconnecting=!1,this.connected=!1,this.errors=0,this.paused=!1,this.hold=1,this.wait=60,this.window=5,this._data=[],this._requests=[],this._uniqueId=Math.round(Math.random()*1e4),this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this._idleTimeout=setTimeout(this._onIdle.bind(this),100);for(var c in b._connectionPlugins)if(b._connectionPlugins.hasOwnProperty(c)){var d=b._connectionPlugins[c],e=function(){};e.prototype=d,this[c]=new e,this[c].init(this)}},b.Connection.prototype={reset:function(){this.rid=Math.floor(Math.random()*4294967295),this.sid=null,this.streamId=null,this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.disconnecting=!1,this.connected=!1,this.errors=0,this._requests=[],this._uniqueId=Math.round(Math.random()*1e4)},pause:function(){this.paused=!0},resume:function(){this.paused=!1},getUniqueId:function(a){return typeof a=="string"||typeof a=="number"?++this._uniqueId+":"+a:++this._uniqueId+""},connect:function(a,c,d,e,f){this.jid=a,this.pass=c,this.connect_callback=d,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.errors=0,this.wait=e||this.wait,this.hold=f||this.hold,this.domain=b.getDomainFromJid(this.jid);var g=this._buildBody().attrs({to:this.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":b.NS.BOSH});this._changeConnectStatus(b.Status.CONNECTING,null),this._requests.push(new b.Request(g.tree(),this._onRequestStateChange.bind(this,this._connect_cb.bind(this)),g.tree().getAttribute("rid"))),this._throttledRequestHandler()},attach:function(a,c,d,e,f,g,h){this.jid=a,this.sid=c,this.rid=d,this.connect_callback=e,this.domain=b.getDomainFromJid(this.jid),this.authenticated=!0,this.connected=!0,this.wait=f||this.wait,this.hold=g||this.hold,this.window=h||this.window,this._changeConnectStatus(b.Status.ATTACHED,null)},xmlInput:function(a){return},xmlOutput:function(a){return},rawInput:function(a){return},rawOutput:function(a){return},send:function(a){if(a===null)return;if(typeof a.sort=="function")for(var b=0;b<a.length;b++)this._queueData(a[b]);else typeof a.tree=="function"?this._queueData(a.tree()):this._queueData(a);this._throttledRequestHandler(),clearTimeout(this._idleTimeout),this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},flush:function(){clearTimeout(this._idleTimeout),this._onIdle()},sendIQ:function(a,b,c,d){var e=null,f=this;typeof a.tree=="function"&&(a=a.tree());var g=a.getAttribute("id");g||(g=this.getUniqueId("sendIQ"),a.setAttribute("id",g));var h=this.addHandler(function(a){e&&f.deleteTimedHandler(e);var d=a.getAttribute("type");if(d=="result")b&&b(a);else if(d=="error")c&&c(a);else throw{name:"StropheError",message:"Got bad IQ type of "+d}},null,"iq",null,g);return d&&(e=this.addTimedHandler(d,function(){return f.deleteHandler(h),c&&c(null),!1})),this.send(a),g},_queueData:function(a){if(a===null||!a.tagName||!a.childNodes)throw{name:"StropheError",message:"Cannot queue non-DOMElement."};this._data.push(a)},_sendRestart:function(){this._data.push("restart"),this._throttledRequestHandler(),clearTimeout(this._idleTimeout),this._idleTimeout=setTimeout(this._onIdle.bind(this),100)},addTimedHandler:function(a,c){var d=new b.TimedHandler(a,c);return this.addTimeds.push(d),d},deleteTimedHandler:function(a){this.removeTimeds.push(a)},addHandler:function(a,c,d,e,f,g,h){var i=new b.Handler(a,c,d,e,f,g,h);return this.addHandlers.push(i),i},deleteHandler:function(a){this.removeHandlers.push(a)},disconnect:function(a){this._changeConnectStatus(b.Status.DISCONNECTING,a),b.info("Disconnect was called because: "+a),this.connected&&(this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._sendTerminate())},_changeConnectStatus:function(a,c){for(var d in b._connectionPlugins)if(b._connectionPlugins.hasOwnProperty(d)){var e=this[d];if(e.statusChanged)try{e.statusChanged(a,c)}catch(f){b.error(""+d+" plugin caused an exception changing status: "+f)}}if(this.connect_callback)try{this.connect_callback(a,c)}catch(g){b.error("User connection callback caused an exception: "+g)}},_buildBody:function(){var a=c("body",{rid:this.rid++,xmlns:b.NS.HTTPBIND});return this.sid!==null&&a.attrs({sid:this.sid}),a},_removeRequest:function(a){b.debug("removing request");var c;for(c=this._requests.length-1;c>=0;c--)a==this._requests[c]&&this._requests.splice(c,1);a.xhr.onreadystatechange=function(){},this._throttledRequestHandler()},_restartRequest:function(a){var b=this._requests[a];b.dead===null&&(b.dead=new Date),this._processRequest(a)},_processRequest:function(a){var c=this._requests[a],d=-1;try{c.xhr.readyState==4&&(d=c.xhr.status)}catch(e){b.error("caught an error in _requests["+a+"], reqStatus: "+d)}typeof d=="undefined"&&(d=-1);if(c.sends>5){this._onDisconnectTimeout();return}var f=c.age(),g=!isNaN(f)&&f>Math.floor(b.TIMEOUT*this.wait),h=c.dead!==null&&c.timeDead()>Math.floor(b.SECONDARY_TIMEOUT*this.wait),i=c.xhr.readyState==4&&(d<1||d>=500);if(g||h||i)h&&b.error("Request "+this._requests[a].id+" timed out (secondary), restarting"),c.abort=!0,c.xhr.abort(),c.xhr.onreadystatechange=function(){},this._requests[a]=new b.Request(c.xmlData,c.origFunc,c.rid,c.sends),c=this._requests[a];if(c.xhr.readyState===0){b.debug("request id "+c.id+"."+c.sends+" posting");try{c.xhr.open("POST",this.service,!0)}catch(j){b.error("XHR open failed."),this.connected||this._changeConnectStatus(b.Status.CONNFAIL,"bad-service"),this.disconnect();return}var k=function(){c.date=new Date,c.xhr.send(c.data)};if(c.sends>1){var l=Math.min(Math.floor(b.TIMEOUT*this.wait),Math.pow(c.sends,3))*1e3;setTimeout(k,l)}else k();c.sends++,this.xmlOutput!==b.Connection.prototype.xmlOutput&&this.xmlOutput(c.xmlData),this.rawOutput!==b.Connection.prototype.rawOutput&&this.rawOutput(c.data)}else b.debug("_processRequest: "+(a===0?"first":"second")+" request has readyState of "+c.xhr.readyState)},_throttledRequestHandler:function(){this._requests?b.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):b.debug("_throttledRequestHandler called with undefined requests");if(!this._requests||this._requests.length===0)return;this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1)},_onRequestStateChange:function(a,c){b.debug("request id "+c.id+"."+c.sends+" state changed to "+c.xhr.readyState);if(c.abort){c.abort=!1;return}var d;if(c.xhr.readyState==4){d=0;try{d=c.xhr.status}catch(e){}typeof d=="undefined"&&(d=0);if(this.disconnecting&&d>=400){this._hitError(d);return}var f=this._requests[0]==c,g=this._requests[1]==c;if(d>0&&d<500||c.sends>5)this._removeRequest(c),b.debug("request id "+c.id+" should now be removed");if(d==200)(g||f&&this._requests.length>0&&this._requests[0].age()>Math.floor(b.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),b.debug("request id "+c.id+"."+c.sends+" got 200"),a(c),this.errors=0;else{b.error("request id "+c.id+"."+c.sends+" error "+d+" happened");if(d===0||d>=400&&d<600||d>=12e3)this._hitError(d),d>=400&&d<500&&(this._changeConnectStatus(b.Status.DISCONNECTING,null),this._doDisconnect())}d>0&&d<500||c.sends>5||this._throttledRequestHandler()}},_hitError:function(a){this.errors++,b.warn("request errored, status: "+a+", number of errors: "+this.errors),this.errors>4&&this._onDisconnectTimeout()},_doDisconnect:function(){b.info("_doDisconnect was called"),this.authenticated=!1,this.disconnecting=!1,this.sid=null,this.streamId=null,this.rid=Math.floor(Math.random()*4294967295),this.connected&&(this._changeConnectStatus(b.Status.DISCONNECTED,null),this.connected=!1),this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[]},_dataRecv:function(a){try{var c=a.getResponse()}catch(d){if(d!="parsererror")throw d;this.disconnect("strophe-parsererror")}if(c===null)return;this.xmlInput!==b.Connection.prototype.xmlInput&&this.xmlInput(c),this.rawInput!==b.Connection.prototype.rawInput&&this.rawInput(b.serialize(c));var e,f;while(this.removeHandlers.length>0)f=this.removeHandlers.pop(),e=this.handlers.indexOf(f),e>=0&&this.handlers.splice(e,1);while(this.addHandlers.length>0)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._requests.length===0){this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null,this._doDisconnect();return}var g=c.getAttribute("type"),h,i;if(g!==null&&g=="terminate"){if(this.disconnecting)return;h=c.getAttribute("condition"),i=c.getElementsByTagName("conflict"),h!==null?(h=="remote-stream-error"&&i.length>0&&(h="conflict"),this._changeConnectStatus(b.Status.CONNFAIL,h)):this._changeConnectStatus(b.Status.CONNFAIL,"unknown"),this.disconnect();return}var j=this;b.forEachChild(c,null,function(a){var b,c;c=j.handlers,j.handlers=[];for(b=0;b<c.length;b++){var d=c[b];try{d.isMatch(a)&&(j.authenticated||!d.user)?d.run(a)&&j.handlers.push(d):j.handlers.push(d)}catch(e){}}})},_sendTerminate:function(){b.info("_sendTerminate was called");var a=this._buildBody().attrs({type:"terminate"});this.authenticated&&a.c("presence",{xmlns:b.NS.CLIENT,type:"unavailable"}),this.disconnecting=!0;var c=new b.Request(a.tree(),this._onRequestStateChange.bind(this,this._dataRecv.bind(this)),a.tree().getAttribute("rid"));this._requests.push(c),this._throttledRequestHandler()},_connect_cb:function(a){b.info("_connect_cb was called"),this.connected=!0;var d=a.getResponse();if(!d)return;this.xmlInput!==b.Connection.prototype.xmlInput&&this.xmlInput(d),this.rawInput!==b.Connection.prototype.rawInput&&this.rawInput(b.serialize(d));var f=d.getAttribute("type"),g,h;if(f!==null&&f=="terminate"){g=d.getAttribute("condition"),h=d.getElementsByTagName("conflict"),g!==null?(g=="remote-stream-error"&&h.length>0&&(g="conflict"),this._changeConnectStatus(b.Status.CONNFAIL,g)):this._changeConnectStatus(b.Status.CONNFAIL,"unknown");return}this.sid||(this.sid=d.getAttribute("sid")),this.stream_id||(this.stream_id=d.getAttribute("authid"));var i=d.getAttribute("requests");i&&(this.window=parseInt(i,10));var j=d.getAttribute("hold");j&&(this.hold=parseInt(j,10));var k=d.getAttribute("wait");k&&(this.wait=parseInt(k,10));var l=!1,m=!1,n=!1,o=d.getElementsByTagName("mechanism"),p,q,r,s;if(o.length<=0){var t=this._buildBody();this._requests.push(new b.Request(t.tree(),this._onRequestStateChange.bind(this,this._connect_cb.bind(this)),t.tree().getAttribute("rid"))),this._throttledRequestHandler();return}for(p=0;p<o.length;p++)q=b.getText(o[p]),q=="DIGEST-MD5"?m=!0:q=="PLAIN"?l=!0:q=="ANONYMOUS"&&(n=!0);b.getNodeFromJid(this.jid)===null&&n?(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"ANONYMOUS"}).tree())):b.getNodeFromJid(this.jid)===null?(this._changeConnectStatus(b.Status.CONNFAIL,"x-strophe-bad-non-anon-jid"),this.disconnect()):m?(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge1_cb.bind(this),null,"challenge",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"DIGEST-MD5"}).tree())):l?(r=b.getBareJidFromJid(this.jid),r+="\0",r+=b.getNodeFromJid(this.jid),r+="\0",r+=this.pass,this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),s=Base64.encode(r),this.send(c("auth",{xmlns:b.NS.SASL,mechanism:"PLAIN"}).t(s).tree())):(this._changeConnectStatus(b.Status.AUTHENTICATING,null),this._addSysHandler(this._auth1_cb.bind(this),null,null,null,"_auth_1"),this.send(e({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:b.NS.AUTH}).c("username",{}).t(b.getNodeFromJid(this.jid)).tree()))},_sasl_challenge1_cb:function(a){var d=/([a-z]+)=("[^"]+"|[^,"]+)(?:,|$)/,e=Base64.decode(b.getText(a)),f=MD5.hexdigest(""+Math.random()*1234567890),g="",h=null,i="",j="",k;this.deleteHandler(this._sasl_failure_handler);while(e.match(d)){k=e.match(d),e=e.replace(k[0],""),k[2]=k[2].replace(/^"(.+)"$/,"$1");switch(k[1]){case"realm":g=k[2];break;case"nonce":i=k[2];break;case"qop":j=k[2];break;case"host":h=k[2]}}var l="xmpp/"+this.domain;h!==null&&(l=l+"/"+h);var m=MD5.hash(b.getNodeFromJid(this.jid)+":"+g+":"+this.pass)+":"+i+":"+f,n="AUTHENTICATE:"+l,o="";return o+="username="+this._quote(b.getNodeFromJid(this.jid))+",",o+="realm="+this._quote(g)+",",o+="nonce="+this._quote(i)+",",o+="cnonce="+this._quote(f)+",",o+='nc="00000001",',o+='qop="auth",',o+="digest-uri="+this._quote(l)+",",o+="response="+this._quote(MD5.hexdigest(MD5.hexdigest(m)+":"+i+":00000001:"+f+":auth:"+MD5.hexdigest(n)))+",",o+='charset="utf-8"',this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge2_cb.bind(this),null,"challenge",null,null),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("response",{xmlns:b.NS.SASL}).t(Base64.encode(o)).tree()),!1},_quote:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'},_sasl_challenge2_cb:function(a){return this.deleteHandler(this._sasl_success_handler),this.deleteHandler(this._sasl_failure_handler),this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this.send(c("response",{xmlns:b.NS.SASL}).tree()),!1},_auth1_cb:function(a){var c=e({type:"set",id:"_auth_2"}).c("query",{xmlns:b.NS.AUTH}).c("username",{}).t(b.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return b.getResourceFromJid(this.jid)||(this.jid=b.getBareJidFromJid(this.jid)+"/strophe"),c.up().c("resource",{}).t(b.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(c.tree()),!1},_sasl_success_cb:function(a){return b.info("SASL authentication succeeded."),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._addSysHandler(this._sasl_auth1_cb.bind(this),null,"stream:features",null,null),this._sendRestart(),!1},_sasl_auth1_cb:function(a){this.features=a;var c,d;for(c=0;c<a.childNodes.length;c++)d=a.childNodes[c],d.nodeName=="bind"&&(this.do_bind=!0),d.nodeName=="session"&&(this.do_session=!0);if(!this.do_bind)return this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;this._addSysHandler(this._sasl_bind_cb.bind(this),null,null,null,"_bind_auth_2");var f=b.getResourceFromJid(this.jid);return f?this.send(e({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:b.NS.BIND}).c("resource",{}).t(f).tree()):this.send(e({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:b.NS.BIND}).tree()),!1},_sasl_bind_cb:function(a){if(a.getAttribute("type")=="error")return b.info("SASL binding failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;var c=a.getElementsByTagName("bind"),d;if(c.length>0)d=c[0].getElementsByTagName("jid"),d.length>0&&(this.jid=b.getText(d[0]),this.do_session?(this._addSysHandler(this._sasl_session_cb.bind(this),null,null,null,"_session_auth_2"),this.send(e({type:"set",id:"_session_auth_2"}).c("session",{xmlns:b.NS.SESSION}).tree())):(this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null)));else return b.info("SASL binding failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1},_sasl_session_cb:function(a){if(a.getAttribute("type")=="result")this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null);else if(a.getAttribute("type")=="error")return b.info("Session creation failed."),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1;return!1},_sasl_failure_cb:function(a){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._changeConnectStatus(b.Status.AUTHFAIL,null),!1},_auth2_cb:function(a){return a.getAttribute("type")=="result"?(this.authenticated=!0,this._changeConnectStatus(b.Status.CONNECTED,null)):a.getAttribute("type")=="error"&&(this._changeConnectStatus(b.Status.AUTHFAIL,null),this.disconnect()),!1},_addSysTimedHandler:function(a,c){var d=new b.TimedHandler(a,c);return d.user=!1,this.addTimeds.push(d),d},_addSysHandler:function(a,c,d,e,f){var g=new b.Handler(a,c,d,e,f);return g.user=!1,this.addHandlers.push(g),g},_onDisconnectTimeout:function(){b.info("_onDisconnectTimeout was called");var a;while(this._requests.length>0)a=this._requests.pop(),a.abort=!0,a.xhr.abort(),a.xhr.onreadystatechange=function(){};return this._doDisconnect(),!1},_onIdle:function(){var a,c,d,e;while(this.addTimeds.length>0)this.timedHandlers.push(this.addTimeds.pop());while(this.removeTimeds.length>0)c=this.removeTimeds.pop(),a=this.timedHandlers.indexOf(c),a>=0&&this.timedHandlers.splice(a,1);var f=(new Date).getTime();e=[];for(a=0;a<this.timedHandlers.length;a++){c=this.timedHandlers[a];if(this.authenticated||!c.user)d=c.lastCalled+c.period,d-f>0?e.push(c):c.run()&&e.push(c)}this.timedHandlers=e;var g,h;this.authenticated&&this._requests.length===0&&this._data.length===0&&!this.disconnecting&&(b.info("no requests during idle cycle, sending blank request"),this._data.push(null));if(this._requests.length<2&&this._data.length>0&&!this.paused){g=this._buildBody();for(a=0;a<this._data.length;a++)this._data[a]!==null&&(this._data[a]==="restart"?g.attrs({to:this.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":b.NS.BOSH}):g.cnode(this._data[a]).up());delete this._data,this._data=[],this._requests.push(new b.Request(g.tree(),this._onRequestStateChange.bind(this,this._dataRecv.bind(this)),g.tree().getAttribute("rid"))),this._processRequest(this._requests.length-1)}this._requests.length>0&&(h=this._requests[0].age(),this._requests[0].dead!==null&&this._requests[0].timeDead()>Math.floor(b.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),h>Math.floor(b.TIMEOUT*this.wait)&&(b.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(b.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())),clearTimeout(this._idleTimeout),this.connected&&(this._idleTimeout=setTimeout(this._onIdle.bind(this),100))}},a&&a(b,c,d,e,f)}(function(){window.Strophe=arguments[0],window.$build=arguments[1],window.$msg=arguments[2],window.$iq=arguments[3],window.$pres=arguments[4]});var Button;Button=function(){function a(a,b,c){this.node=$(a),this.path=b,this.options=c||{},this.draw()}return a.prototype.draw=function(){var a,b;return b=Raphael(this.node.get(0)),a=b.path(this.path).attr({fill:this.options.fill||"#000",stroke:this.options.stroke||"#fff","stroke-width":this.options["stroke-width"]||.3,opacity:this.options.opacity||.6,scale:this.options.scale||.85,translation:this.options.translation||""}),this.node.hover(function(){return a.animate({opacity:1},200)},function(){return a.animate({opacity:.6},200)})},a}();var Contact;Contact=function(){function a(a){a=$(a),this.jid=a.attr("jid"),this.name=a.attr("name"),this.ask=a.attr("ask"),this.subscription=a.attr("subscription"),this.groups=$("group",a).map(function(){return $(this).text()}).get(),this.presence=[]}return a.prototype.online=function(){return this.presence.length>0},a.prototype.offline=function(){return this.presence.length===0},a.prototype.available=function(){var a;return this.online()&&function(){var b,c,d,e;d=this.presence,e=[];for(b=0,c=d.length;b<c;b++)a=d[b],a.away||e.push(a);return e}.call(this).length>0},a.prototype.away=function(){return!this.available()},a.prototype.status=function(){var a,b,c;return a=function(){var a,b,d,e;d=this.presence,e=[];for(a=0,b=d.length;a<b;a++)c=d[a],c.status&&!c.away&&e.push(c.status);return e}.call(this)[0]||"Available",b=function(){var a,b,d,e;d=this.presence,e=[];for(a=0,b=d.length;a<b;a++)c=d[a],c.status&&c.away&&e.push(c.status);return e}.call(this)[0]||"Away",this.offline()?"Offline":this.away()?b:a},a.prototype.update=function(a){var b;this.presence=function(){var c,d,e,f;e=this.presence,f=[];for(c=0,d=e.length;c<d;c++)b=e[c],b.from!==a.from&&f.push(b);return f}.call(this),a.type||this.presence.push(a);if(a.type==="unsubscribed")return this.presence=[]},a}();var Filter,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Filter=function(){function a(a){this.list=a.list,this.icon=a.icon,this.form=a.form,this.attrs=a.attrs,this.open=a.open,this.close=a.close,this.draw()}return a.prototype.draw=function(){var a,b;return $(this.icon).addClass("filter-button"),a=$('<form class="filter-form" style="display:none;"></form>').appendTo(this.form),b=$('<input class="filter-text" type="search" placeholder="Filter" results="5"/>').appendTo(a),this.icon&&new Button(this.icon,ICONS.search,{scale:.5,translation:"-8 -8"}),a.submit(function(){return!1}),b.keyup(__bind(function(){return this.filter(b)},this)),b.change(__bind(function(){return this.filter(b)},this)),b.click(__bind(function(){return this.filter(b)},this)),$(this.icon).click(__bind(function(){if(a.is(":hidden")){this.filter(b),a.show();if(this.open)return this.open()}else{a.hide(),a[0].reset(),this.filter(b);if(this.close)return this.close()}},this))},a.prototype.filter=function(a){var b,c;c=a.val().toLowerCase();if(c===""){$("li",this.list).show();return}return b=function(a,b){var d;return d=(a.attr(b)||"").toLowerCase(),d.indexOf(c)!==-1},$("> li",this.list).each(__bind(function(a,c){var d,e;return c=$(c),e=function(){var a,e,f,g;f=this.attrs,g=[];for(a=0,e=f.length;a<e;a++)d=f[a],b(c,d)&&g.push(!0);return g}.call(this),e.length>0?c.show():c.hide()},this))},a}();var Session,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Session=function(){function a(){this.xmpp=new Strophe.Connection("/xmpp"),this.roster={},this.listeners={card:[],message:[],presence:[],roster:[]}}return a.prototype.connect=function(a,b,c){return this.xmpp.connect(a,b,__bind(function(a){switch(a){case Strophe.Status.AUTHFAIL||Strophe.Status.CONNFAIL:return c(!1);case Strophe.Status.CONNECTED:return this.xmpp.addHandler(__bind(function(a){return this.handleIq(a)},this),null,"iq"),this.xmpp.addHandler(__bind(function(a){return this.handleMessage(a)},this),null,"message"),this.xmpp.addHandler(__bind(function(a){return this.handlePresence(a)},this),null,"presence"),c(!0),this.findRoster(__bind(function(){return this.notify("roster"),this.xmpp.send(this.xml("<presence/>")),this.findCards()},this))}},this))},a.prototype.disconnect=function(){return this.xmpp.disconnect()},a.prototype.onCard=function(a){return this.listeners.card.push(a)},a.prototype.onRoster=function(a){return this.listeners.roster.push(a)},a.prototype.onMessage=function(a){return this.listeners.message.push(a)},a.prototype.onPresence=function(a){return this.listeners.presence.push(a)},a.prototype.connected=function(){return this.xmpp.jid&&this.xmpp.jid.length>0},a.prototype.jid=function(){return this.xmpp.jid},a.prototype.bareJid=function(){return this.xmpp.jid.split("/")[0]},a.prototype.uniqueId=function(){return this.xmpp.getUniqueId()},a.prototype.avatar=function(a){var b;return b=this.loadCard(a),b&&b.photo?"data:"+b.photo.type+";base64,"+b.photo.binval:"/lib/images/default-user.png"},a.prototype.loadCard=function(a){var b;a=a.split("/")[0],b=localStorage["vcard:"+a];if(b)return JSON.parse(b)},a.prototype.storeCard=function(a){return localStorage["vcard:"+a.jid]=JSON.stringify(a)},a.prototype.findCards=function(){var a,b,c,d;return c=function(){var c,d;c=this.roster,d=[];for(b in c)a=c[b],this.loadCard(b)||d.push(b);return d}.call(this),this.loadCard(this.bareJid())||c.push(this.bareJid()),d=__bind(function(a){this.findCard(c.shift(),d);if(a)return this.storeCard(a),this.notify("card",a)},this),this.findCard(c.shift(),d)},a.prototype.findCard=function(a,b){var c;if(!a)return;return c=this.xml('<iq id="'+this.uniqueId()+'" to="'+a+'" type="get">\n <vCard xmlns="vcard-temp"/>\n</iq>'),this.sendIQ(c,function(c){var d,e,f,g,h;return e=$("vCard",c),f=$("PHOTO",e),g=$("TYPE",f).text(),d=$("BINVAL",f).text(),f=g&&d?{type:g,binval:d.replace(/\n/g,"")}:null,h={jid:a,photo:f,retrieved:new Date},b(e.size()>0?h:null)})},a.prototype.parseRoster=function(a){return $("item",a).map(function(){return new Contact(this)}).get()},a.prototype.findRoster=function(a){var b;return b=this.xml("<iq id='"+this.uniqueId()+'\' type="get">\n <query xmlns="jabber:iq:roster"/>\n</iq>'),this.sendIQ(b,__bind(function(b){var c,d,e,f;d=this.parseRoster(b);for(e=0,f=d.length;e<f;e++)c=d[e],this.roster[c.jid]=c;return a()},this))},a.prototype.sendMessage=function(a,b){var c;return c=this.xml('<message id="'+this.uniqueId()+'" to="'+a+'" type="chat">\n <body></body>\n</message>'
10
+ ),$("body",c).text(b),this.xmpp.send(c)},a.prototype.sendPresence=function(a,b){var c;return c=$(this.xml("<presence/>")),a?(c.append($(this.xml("<show>xa</show>"))),b!=="Away"&&c.append($(this.xml("<status/>")).text(b))):b!=="Available"&&c.append($(this.xml("<status/>")).text(b)),this.xmpp.send(c)},a.prototype.sendIQ=function(a,b){return this.xmpp.sendIQ(a,b,b,5e3)},a.prototype.updateContact=function(a,b){var c,d,e,f,g;d=this.xml('<iq id="'+this.uniqueId()+'" type="set">\n <query xmlns="jabber:iq:roster">\n <item name="" jid="'+a.jid+'"/>\n </query>\n</iq>'),$("item",d).attr("name",a.name),g=a.groups;for(e=0,f=g.length;e<f;e++)c=g[e],$("item",d).append($(this.xml("<group></group>")).text(c));this.xmpp.send(d);if(b)return this.sendSubscribe(a.jid)},a.prototype.removeContact=function(a){var b;return b=this.xml('<iq id="'+this.uniqueId()+'" type="set">\n <query xmlns="jabber:iq:roster">\n <item jid="'+a+'" subscription="remove"/>\n </query>\n</iq>'),this.xmpp.send(b)},a.prototype.sendSubscribe=function(a){return this.xmpp.send(this.presence(a,"subscribe"))},a.prototype.sendSubscribed=function(a){return this.xmpp.send(this.presence(a,"subscribed"))},a.prototype.sendUnsubscribed=function(a){return this.xmpp.send(this.presence(a,"unsubscribed"))},a.prototype.presence=function(a,b){return this.xml('<presence\n id="'+this.uniqueId()+'"\n to="'+a+'"\n type="'+b+'"/>')},a.prototype.handleIq=function(a){var b,c,d,e,f,g,h;a=$(a),f=a.attr("type"),d=a.find("query").attr("xmlns");if(f==="set"&&d==="jabber:iq:roster"){c=this.parseRoster(a);for(g=0,h=c.length;g<h;g++)b=c[g],b.subscription==="remove"?delete this.roster[b.jid]:(e=this.roster[b.jid],e&&(b.presence=e.presence),this.roster[b.jid]=b);this.notify("roster")}return!0},a.prototype.handleMessage=function(a){var b,c,d,e,f,g;return a=$(a),f=a.attr("to"),c=a.attr("from"),g=a.attr("type"),e=a.find("thread").first(),b=a.find("body").first(),d=a.find("span").first(),g==="chat"&&b.size()>0&&this.notify("message",{to:f,from:c,type:g,thread:e.text(),text:b.text(),html:d.text(),received:new Date,node:a}),!0},a.prototype.handlePresence=function(a){var b,c,d,e,f,g,h;return a=$(a),g=a.attr("to"),c=a.attr("from"),h=a.attr("type"),e=a.find("show").first(),f=a.find("status").first(),d={to:g,from:c,status:f.text(),show:e.text(),type:h,offline:h==="unavailable"||h==="error",away:e.text()==="away"||e.text()==="xa",dnd:e.text()==="dnd",node:a},b=this.roster[c.split("/")[0]],b&&b.update(d),this.notify("presence",d),!0},a.prototype.notify=function(a,b){var c,d,e,f,g;f=this.listeners[a]||[],g=[];for(d=0,e=f.length;d<e;d++)c=f[d],g.push(c(b));return g},a.prototype.xml=function(a){return $.parseXML(a).documentElement},a}();var Transfer,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Transfer=function(){function b(b){this.session=b.session,this.file=b.file,this.to=b.to,this.progress=b.progress,this.complete=b.complete,this.chunks=new a(this.file),this.opened=!1,this.closed=!1,this.sid=this.session.uniqueId(),this.seq=0,this.sent=0}var a;return b.prototype.start=function(){var a;return a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <si xmlns="http://jabber.org/protocol/si" id="'+this.session.uniqueId()+'" profile="http://jabber.org/protocol/si/profile/file-transfer">\n <file xmlns="http://jabber.org/protocol/si/profile/file-transfer" name="" size="'+this.file.size+'"/>\n <feature xmlns="http://jabber.org/protocol/feature-neg">\n <x xmlns="jabber:x:data" type="form">\n <field var="stream-method" type="list-single">\n <option><value>http://jabber.org/protocol/ibb</value></option>\n </field>\n </x>\n </feature>\n </si>\n</iq>'),$("file",a).attr("name",this.file.name),this.session.sendIQ(a.get(0),__bind(function(a){var b,c,d;c=$('si feature x field[var="stream-method"] value',a),d=function(){var a,d,e;e=[];for(a=0,d=c.length;a<d;a++)b=c[a],$(b).text()==="http://jabber.org/protocol/ibb"&&e.push(!0);return e}().length>0;if(d)return this.open()},this))},b.prototype.open=function(){var a;return a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <open xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'" block-size="4096"/>\n</iq>'),this.session.sendIQ(a.get(0),__bind(function(a){if(this.ok(a))return this.opened=!0,this.sendChunk()},this))},b.prototype.sendChunk=function(){if(this.closed)return;return this.chunks.chunk(__bind(function(a){var b;if(!a){this.close();return}return b=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <data xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'" seq="'+this.seq++ +'">'+a+"</data>\n</iq>"),this.seq>65535&&(this.seq=0),this.session.sendIQ(b.get(0),__bind(function(a){var b;if(!this.ok(a))return;return b=Math.ceil(++this.sent/this.chunks.total*100),this.progress(b),this.sendChunk()},this))},this))},b.prototype.close=function(){var a;if(this.closed)return;return this.closed=!0,a=$('<iq id="'+this.session.uniqueId()+'" to="'+this.to+'" type="set">\n <close xmlns="http://jabber.org/protocol/ibb" sid="'+this.sid+'"/>\n</iq>'),this.session.sendIQ(a.get(0),function(){}),this.complete()},b.prototype.stop=function(){return this.opened?this.close():this.complete()},b.prototype.ok=function(a){return $(a).attr("type")==="result"},a=function(){function b(b){this.file=b,this.total=Math.ceil(this.file.size/a),this.slice=this.file.slice||this.file.webkitSlice||this.file.mozSlice,this.pos=0}var a;return a=3072,b.prototype.chunk=function(b){var c,d,e,f;return f=this.pos,d=this.pos+a,this.pos=d,f>this.file.size?b(null):(c=this.slice.call(this.file,f,d),e=new FileReader,e.onload=function(a){return b(btoa(a.target.result))},e.readAsBinaryString(c))},b}(),b}();var Router,__bind=function(a,b){return function(){return a.apply(b,arguments)}};Router=function(){function a(a){this.pages=a,this.routes=this.build(),$(window).bind("hashchange",__bind(function(){return this.draw()},this))}return a.prototype.build=function(){var a,b,c,d,e,f,g,h;g=[],h=this.pages;for(e in h){d=h[e],g.push(f={args:[],page:d,re:null});if(e==="default"){f.re=e;continue}b=function(){var b,c,d,f;d=e.split("/"),f=[];for(b=0,c=d.length;b<c;b++)a=d[b],a.length>0&&f.push(a);return f}(),c=function(a){return a[0]===":"?(f.args.push(a.replace(":","")),"(/[^/]+)?"):"/"+a},f.re=new RegExp("#"+function(){var d,e,f;f=[];for(d=0,e=b.length;d<e;d++)a=b[d],f.push(c(a));return f}().join(""))}return g},a.prototype.draw=function(){var a,b,c,d,e,f,g,h,i,j;h=this.match(),e=h[0],a=h[1],e||(e=this.defaultRoute());if(!e)return;i=[{},0],d=i[0],b=i[1],j=e.args;for(f=0,g=j.length;f<g;f++)c=j[f],d[c]=a[b++];return e.page.draw(d)},a.prototype.match=function(){var a,b,c,d,e,f,g;g=this.routes;for(e=0,f=g.length;e<f;e++){d=g[e];if(c=window.location.hash.match(d.re))return b=function(){var b,d,e,f;e=c.slice(1),f=[];for(b=0,d=e.length;b<d;b++)a=e[b],f.push(a.replace("/",""));return f}(),[d,b]}return[]},a.prototype.defaultRoute=function(){var a,b,c,d;d=this.routes;for(b=0,c=d.length;b<c;b++){a=d[b];if(a.re==="default")return a}},a}();var NavBar,__bind=function(a,b){return function(){return a.apply(b,arguments)}};NavBar=function(){function a(a){this.session=a,this.session.onCard(__bind(function(a){if(a.jid===this.session.bareJid())return $("#current-user-avatar").attr("src",this.session.avatar(a.jid))},this))}return a.prototype.draw=function(){return $('<header id="navbar" class="x-fill">\n <h1 id="logo">vines&gt;</h1>\n <div id="current-user">\n <img id="current-user-avatar" alt="'+this.session.bareJid()+'" src="'+this.session.avatar(this.session.jid())+'"/>\n <div id="current-user-info">\n <h1 id="current-user-name">'+this.session.bareJid()+'</h1>\n <form id="current-user-presence-form">\n <span class="select">\n <span class="text">Available</span>\n <select id="current-user-presence">\n <optgroup label="Available">\n <option>Available</option>\n <option>Surfing the web</option>\n <option>Reading email</option>\n </optgroup>\n <optgroup label="Away">\n <option value="xa">Away</option>\n <option value="xa">Out to lunch</option>\n <option value="xa">On the phone</option>\n <option value="xa">In a meeting</option>\n </optgroup>\n </select>\n </span>\n </form>\n </div>\n </div>\n <nav id="app-nav" class="x-fill">\n <ul id="nav-links"></ul>\n </nav>\n</header>').appendTo("body"),$('<div id="container" class="x-fill y-fill"></div>').appendTo("body"),$("#current-user-presence").change(__bind(function(a){var b;return b=$("option:selected",a.currentTarget),$("#current-user-presence-form .text").text(b.text()),this.session.sendPresence(b.val()==="xa",b.text())},this))},a.prototype.addButton=function(a,b){var c,d;return c="nav-link-"+a.toLowerCase(),d=$('<li>\n <a id="'+c+'" href="#/'+a.toLowerCase()+'">\n <span>'+a+"</span>\n </a>\n</li>").appendTo("#nav-links"),this.button(c,b),d.click(__bind(function(a){return this.select(a.currentTarget)},this))},a.prototype.select=function(a){var b,c;return a=$(a),$("#nav-links li").removeClass("selected"),$("#nav-links li a").removeClass("selected"),a.addClass("selected"),$("a",a).addClass("selected"),b=$("#nav-links svg path"),b.attr("opacity","0.6"),b.css("opacity","0.6"),c=$("svg path",a),c.attr("opacity","1.0"),c.css("opacity","1.0")},a.prototype.button=function(a,b){var c,d,e;return e=Raphael(a),c=e.path(b).attr({fill:"#fff",stroke:"#000","stroke-width":.3,opacity:.6}),d=$("#"+a),d.hover(function(){return c.animate({opacity:1},200)},function(){if(!d.hasClass("selected"))return c.animate({opacity:.6},200)}),d.get(0)},a}();var Notification;Notification=function(){function a(a){this.text=a,this.draw()}return a.prototype.draw=function(){var a,b,c,d;return c=$('<div class="notification float" style="display:none;"></div>').appendTo("body"),c.text(this.text),d=c.outerHeight()/2,b=c.outerWidth()/2,c.css({marginTop:"-"+d+"px",marginLeft:"-"+b+"px"}),c.fadeIn(200),a=function(){return c.fadeOut(200,function(){return c.remove()})},setTimeout(a,1500)},a}();var LoginPage,__bind=function(a,b){return function(){return a.apply(b,arguments)}};LoginPage=function(){function a(a,b){this.session=a,this.startPage=b}return a.prototype.start=function(){var a;return $("#error").hide(),a=__bind(function(a){if(!a){this.session.disconnect(),$("#error").show(),$("#password").val("").focus();return}return localStorage.jid=$("#jid").val(),$("#current-user-name").text(this.session.bareJid()),$("#current-user-avatar").attr("src",this.session.avatar(this.session.jid())),$("#current-user-avatar").attr("alt",this.session.bareJid()),$("#container").fadeOut(200,__bind(function(){return $("#navbar").show(),window.location.hash=this.startPage},this))},this),this.session.connect($("#jid").val(),$("#password").val(),a),!1},a.prototype.draw=function(){var a;return this.session.disconnect(),a=localStorage.jid||"",$("#navbar").hide(),$("body").attr("id","login-page"),$("#container").hide().empty(),$('<form id="login-form">\n <h1>vines&gt;</h1>\n <fieldset id="login-form-controls">\n <input id="jid" name="jid" type="email" maxlength="1024" value="'+a+'" placeholder="Your user name"/>\n <input id="password" name="password" type="password" maxlength="1024" placeholder="Your password"/>\n <input id="start" type="submit" value="Sign in"/>\n </fieldset>\n <p id="error" style="display:none;">User name and password not found.</p>\n</form>').appendTo("#container"),$("#login-form").submit(__bind(function(){return this.start()},this)),$("#container").fadeIn(1e3),$("#jid").keydown(function(){return $("#error").fadeOut()}),$("#password").keydown(function(){return $("#error").fadeOut()}),this.resize()},a.prototype.resize=function(){var a,b,c;return c=$(window),a=$("#login-form"),b=function(){return a.css("top",c.height()/2-a.height()/2)},c.resize(b),b()},a}();var LogoutPage;LogoutPage=function(){function a(a){this.session=a}return a.prototype.draw=function(){return window.location.hash="",window.location.reload()},a}()
@@ -15,10 +15,12 @@ Filter = (function() {
15
15
  $(this.icon).addClass('filter-button');
16
16
  form = $('<form class="filter-form" style="display:none;"></form>').appendTo(this.form);
17
17
  text = $('<input class="filter-text" type="search" placeholder="Filter" results="5"/>').appendTo(form);
18
- new Button(this.icon, ICONS.search, {
19
- scale: 0.5,
20
- translation: '-8 -8'
21
- });
18
+ if (this.icon) {
19
+ new Button(this.icon, ICONS.search, {
20
+ scale: 0.5,
21
+ translation: '-8 -8'
22
+ });
23
+ }
22
24
  form.submit(function() {
23
25
  return false;
24
26
  });
@@ -60,7 +62,7 @@ Filter = (function() {
60
62
  val = (node.attr(attr) || '').toLowerCase();
61
63
  return val.indexOf(text) !== -1;
62
64
  };
63
- return $('li', this.list).each(__bind(function(ix, node) {
65
+ return $('> li', this.list).each(__bind(function(ix, node) {
64
66
  var attr, matches;
65
67
  node = $(node);
66
68
  matches = (function() {
@@ -245,7 +245,8 @@ Session = (function() {
245
245
  thread: thread.text(),
246
246
  text: body.text(),
247
247
  html: html.text(),
248
- received: new Date()
248
+ received: new Date(),
249
+ node: node
249
250
  });
250
251
  }
251
252
  return true;
@@ -266,7 +267,8 @@ Session = (function() {
266
267
  type: type,
267
268
  offline: type === 'unavailable' || type === 'error',
268
269
  away: show.text() === 'away' || show.text() === 'xa',
269
- dnd: show.text() === 'dnd'
270
+ dnd: show.text() === 'dnd',
271
+ node: node
270
272
  };
271
273
  contact = this.roster[from.split('/')[0]];
272
274
  if (contact) {
@@ -22,28 +22,35 @@ input[type="password"],
22
22
  textarea {
23
23
  border-radius: 2px;
24
24
  border: none;
25
- -webkit-box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.2);
26
25
  box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.2);
27
26
  font-family: "Helvetica Neue", Helvetica, sans-serif;
28
27
  font-size: 10pt;
29
28
  outline: none;
30
29
  padding: 6px;
31
30
  }
31
+ /* ipad */
32
+ @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {
33
+ input[type="text"],
34
+ input[type="email"],
35
+ input[type="password"],
36
+ textarea {
37
+ border: 1px solid #eee;
38
+ }
39
+ }
32
40
  input[type="text"]:focus,
33
41
  input[type="email"]:focus,
34
42
  input[type="password"]:focus,
35
43
  textarea:focus {
36
- -webkit-box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.6);
37
44
  box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.6);
38
45
  }
39
46
  input[type="button"],
40
47
  input[type="submit"] {
41
48
  background: -moz-linear-gradient(#ececec, #dcdcdc);
49
+ background: -ms-linear-gradient(#ececec, #dcdcdc);
42
50
  background: -o-linear-gradient(#ececec, #dcdcdc);
43
- background: -webkit-gradient(linear, left top, left bottom, from(#ececec), to(#dcdcdc));
51
+ background: -webkit-linear-gradient(#ececec, #dcdcdc);
44
52
  border: 1px solid #ccc;
45
53
  border-radius: 3px;
46
- -webkit-box-shadow: 0 1px 1px #fff, inset 0 1px 1px rgba(255, 255, 255, 0.5);
47
54
  box-shadow: 0 1px 1px #fff, inset 0 1px 1px rgba(255, 255, 255, 0.5);
48
55
  color: #222;
49
56
  cursor: pointer;
@@ -60,8 +67,9 @@ input[type="submit"] {
60
67
  input[type="submit"] {
61
68
  background: #8dd2f7;
62
69
  background: -moz-linear-gradient(#8dd2f7, #58b8f4);
70
+ background: -ms-linear-gradient(#8dd2f7, #58b8f4);
63
71
  background: -o-linear-gradient(#8dd2f7, #58b8f4);
64
- background: -webkit-gradient(linear, left top, left bottom, from(#8dd2f7), to(#58b8f4));
72
+ background: -webkit-linear-gradient(#8dd2f7, #58b8f4);
65
73
  border: 1px solid #448ccd;
66
74
  border-top: 1px solid #5da8db;
67
75
  color: #0d4078;
@@ -69,7 +77,6 @@ input[type="submit"] {
69
77
  }
70
78
  input[type="button"]:active,
71
79
  input[type="submit"]:active {
72
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.8);
73
80
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.8);
74
81
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
75
82
  }
@@ -77,8 +84,9 @@ input[type="button"].cancel,
77
84
  input[type="submit"].cancel {
78
85
  background: #ff3137;
79
86
  background: -moz-linear-gradient(#ff3137, #dd2828);
87
+ background: -ms-linear-gradient(#ff3137, #dd2828);
80
88
  background: -o-linear-gradient(#ff3137, #dd2828);
81
- background: -webkit-gradient(linear, left top, left bottom, from(#ff3137), to(#dd2828));
89
+ background: -webkit-linear-gradient(#ff3137, #dd2828);
82
90
  border: 1px solid #981a1a;
83
91
  border-top: 1px solid #ac1f23;
84
92
  color: #4a0f11;
@@ -98,10 +106,10 @@ optgroup option {
98
106
  #navbar {
99
107
  background: #0c1a2d;
100
108
  background: -moz-linear-gradient(#1e4171, #0c1a2d);
109
+ background: -ms-linear-gradient(#1e4171, #0c1a2d);
101
110
  background: -o-linear-gradient(#1e4171, #0c1a2d);
102
- background: -webkit-gradient(linear, left top, left bottom, from(#1e4171), to(#0c1a2d));
111
+ background: -webkit-linear-gradient(#1e4171, #0c1a2d);
103
112
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
104
- -webkit-box-shadow: 0 0 3px 1px #222;
105
113
  box-shadow: 0 0 3px 1px #222;
106
114
  color: #bdd5ff;
107
115
  height: 60px;
@@ -129,7 +137,6 @@ optgroup option {
129
137
  }
130
138
  #navbar #current-user-avatar {
131
139
  border: 1px solid rgba(255, 255, 255, 0.1);
132
- -webkit-box-shadow: 0 0 1px 0px #bdd5ff;
133
140
  box-shadow: 0 0 1px 0px #bdd5ff;
134
141
  height: 48px;
135
142
  width: 48px;
@@ -265,8 +272,9 @@ optgroup option {
265
272
  ul.selectable li.selected {
266
273
  background: #319be7;
267
274
  background: -moz-linear-gradient(#319be7, #1b78d9);
275
+ background: -ms-linear-gradient(#319be7, #1b78d9);
268
276
  background: -o-linear-gradient(#319be7, #1b78d9);
269
- background: -webkit-gradient(linear, left top, left bottom, from(#319be7), to(#1b78d9));
277
+ background: -webkit-linear-gradient(#319be7, #1b78d9);
270
278
  border-top: 1px solid #148ddf;
271
279
  border-bottom: 1px solid #095bba;
272
280
  color: #fff;
@@ -275,8 +283,9 @@ ul.selectable li.selected {
275
283
  ul.selectable li.selected.secondary {
276
284
  background: hsl(220, 29%, 80%);
277
285
  background: -moz-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
286
+ background: -ms-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
278
287
  background: -o-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
279
- background: -webkit-gradient(linear, left top, left bottom, from(hsl(220, 29%, 80%)), to(hsl(217, 25%, 69%)));
288
+ background: -webkit-linear-gradient(hsl(220, 29%, 80%), hsl(217, 25%, 69%));
280
289
  border-top: 1px solid hsl(218, 23%, 79%);
281
290
  border-bottom: 1px solid hsl(218, 20%, 65%);
282
291
  color: #fff;
@@ -315,7 +324,6 @@ ul.selectable li.selected.secondary {
315
324
  width: 27px;
316
325
  }
317
326
  .primary {
318
- -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.5), 0 0 40px rgba(0, 0, 0, 0.1) inset;
319
327
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.5), 0 0 40px rgba(0, 0, 0, 0.1) inset;
320
328
  width: 460px;
321
329
  left: 260px;
@@ -323,7 +331,6 @@ ul.selectable li.selected.secondary {
323
331
  }
324
332
  .sidebar {
325
333
  background: #f8f8f8;
326
- -webkit-box-shadow: 0 0 40px rgba(0, 0, 0, 0.1) inset;
327
334
  box-shadow: 0 0 40px rgba(0, 0, 0, 0.1) inset;
328
335
  width: 260px;
329
336
  }
@@ -331,7 +338,6 @@ form.overlay {
331
338
  background: inherit;
332
339
  border-bottom: 1px solid #ddd;
333
340
  border-top: 1px solid #fff;
334
- -webkit-box-shadow: 0px -3px 5px rgba(0, 0, 0, 0.1);
335
341
  box-shadow: 0px -3px 5px rgba(0, 0, 0, 0.1);
336
342
  padding-top: 10px;
337
343
  position: absolute;