iruby 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +70 -0
- data/Rakefile +13 -0
- data/Ruby Notebook.ipynb +180 -0
- data/attic/output/html.rb +217 -0
- data/bin/iruby +6 -0
- data/iruby.gemspec +26 -0
- data/lib/iruby.rb +11 -0
- data/lib/iruby/command.rb +103 -0
- data/lib/iruby/completer.rb +19 -0
- data/lib/iruby/display_hook.rb +29 -0
- data/lib/iruby/kernel.rb +193 -0
- data/lib/iruby/out_stream.rb +93 -0
- data/lib/iruby/session.rb +300 -0
- data/lib/iruby/version.rb +3 -0
- data/static/base/images/favicon.ico +0 -0
- data/static/base/images/ipynblogo.png +0 -0
- data/static/base/images/src/ipynblogo.svg +768 -0
- data/static/base/images/src/ruby.svg +948 -0
- data/static/custom/custom.css +40 -0
- data/static/custom/custom.js +2 -0
- data/test/helper.rb +5 -0
- data/test/html_test.rb +17 -0
- data/test/output_maps_test.rb +110 -0
- metadata +134 -0
@@ -0,0 +1,300 @@
|
|
1
|
+
module IRuby
|
2
|
+
class Session
|
3
|
+
DELIM = '<IDS|MSG>'
|
4
|
+
|
5
|
+
def initialize(username, key, sign_scheme)
|
6
|
+
@username = username
|
7
|
+
@session = SecureRandom.uuid
|
8
|
+
@msg_id = 0
|
9
|
+
|
10
|
+
raise 'Unknown signature scheme' unless sign_scheme =~ /\Ahmac-(.*)\Z/
|
11
|
+
@digest = OpenSSL::Digest::Digest.new($1)
|
12
|
+
@key = key
|
13
|
+
end
|
14
|
+
|
15
|
+
# Sign a message with HMAC digest. If no auth, return b''.
|
16
|
+
|
17
|
+
# Parameters
|
18
|
+
# ----------
|
19
|
+
# msg_list : list
|
20
|
+
# The [p_header,p_parent,p_content] part of the message list.
|
21
|
+
def sign(msg_list)
|
22
|
+
return '' unless @key
|
23
|
+
hmac = OpenSSL::HMAC.new(@key, @digest)
|
24
|
+
msg_list.each do |m|
|
25
|
+
hmac.update(m)
|
26
|
+
end
|
27
|
+
hmac.hexdigest
|
28
|
+
end
|
29
|
+
|
30
|
+
def msg_header
|
31
|
+
h = {
|
32
|
+
msg_id: @msg_id,
|
33
|
+
username: @username,
|
34
|
+
session: @session
|
35
|
+
}
|
36
|
+
@msg_id += 1
|
37
|
+
h
|
38
|
+
end
|
39
|
+
|
40
|
+
def msg(msg_type, content=nil, parent=nil)
|
41
|
+
msg = {}
|
42
|
+
msg['header'] = msg_header
|
43
|
+
msg['parent_header'] = parent ? parent['header'] : {}
|
44
|
+
msg['metadata'] = {}
|
45
|
+
msg['header']['msg_type'] = msg_type
|
46
|
+
msg['content'] = content || {}
|
47
|
+
return msg
|
48
|
+
end
|
49
|
+
|
50
|
+
# Build and send a message via stream or socket.
|
51
|
+
#
|
52
|
+
# The message format used by this function internally is as follows:
|
53
|
+
#
|
54
|
+
# [ident1,ident2,...,DELIM,HMAC,p_header,p_parent,p_content,
|
55
|
+
# buffer1,buffer2,...]
|
56
|
+
#
|
57
|
+
# The serialize/unserialize methods convert the nested message dict into this
|
58
|
+
# format.
|
59
|
+
#
|
60
|
+
# Parameters
|
61
|
+
# ----------
|
62
|
+
#
|
63
|
+
# stream : zmq.Socket or ZMQStream
|
64
|
+
# The socket-like object used to send the data.
|
65
|
+
# msg_or_type : str or Message/dict
|
66
|
+
# Normally, msg_or_type will be a msg_type unless a message is being
|
67
|
+
# sent more than once. If a header is supplied, this can be set to
|
68
|
+
# None and the msg_type will be pulled from the header.
|
69
|
+
#
|
70
|
+
# content : dict or None
|
71
|
+
# The content of the message (ignored if msg_or_type is a message).
|
72
|
+
# header : dict or None
|
73
|
+
# The header dict for the message (ignores if msg_to_type is a message).
|
74
|
+
# parent : Message or dict or None
|
75
|
+
# The parent or parent header describing the parent of this message
|
76
|
+
# (ignored if msg_or_type is a message).
|
77
|
+
# ident : bytes or list of bytes
|
78
|
+
# The zmq.IDENTITY routing path.
|
79
|
+
# subheader : dict or None
|
80
|
+
# Extra header keys for this message's header (ignored if msg_or_type
|
81
|
+
# is a message).
|
82
|
+
# buffers : list or None
|
83
|
+
# The already-serialized buffers to be appended to the message.
|
84
|
+
# track : bool
|
85
|
+
# Whether to track. Only for use with Sockets, because ZMQStream
|
86
|
+
# objects cannot track messages.
|
87
|
+
#
|
88
|
+
# Returns
|
89
|
+
# -------
|
90
|
+
# msg : dict
|
91
|
+
# The constructed message.
|
92
|
+
# (msg,tracker) : (dict, MessageTracker)
|
93
|
+
# if track=True, then a 2-tuple will be returned,
|
94
|
+
# the first element being the constructed
|
95
|
+
# message, and the second being the MessageTracker
|
96
|
+
def send(stream, msg_or_type, content=nil, parent=nil, ident=nil, buffers=nil, subheader=nil, track=false, header=nil)
|
97
|
+
if !stream.is_a?(ZMQ::Socket)
|
98
|
+
raise "stream must be Socket or ZMQSocket, not %r"%stream.class
|
99
|
+
end
|
100
|
+
|
101
|
+
if msg_or_type.is_a?(Hash)
|
102
|
+
msg = msg_or_type
|
103
|
+
else
|
104
|
+
msg = self.msg(msg_or_type, content, parent)
|
105
|
+
end
|
106
|
+
|
107
|
+
buffers ||= []
|
108
|
+
to_send = self.serialize(msg, ident)
|
109
|
+
flag = 0
|
110
|
+
if buffers.any?
|
111
|
+
flag = ZMQ::SNDMORE
|
112
|
+
_track = false
|
113
|
+
else
|
114
|
+
_track=track
|
115
|
+
end
|
116
|
+
if track
|
117
|
+
to_send.each_with_index do |part, i|
|
118
|
+
if i == to_send.length - 1
|
119
|
+
flag = 0
|
120
|
+
else
|
121
|
+
flag = ZMQ::SNDMORE
|
122
|
+
end
|
123
|
+
stream.send_string(part, flag)
|
124
|
+
end
|
125
|
+
else
|
126
|
+
to_send.each_with_index do |part, i|
|
127
|
+
if i == to_send.length - 1
|
128
|
+
flag = 0
|
129
|
+
else
|
130
|
+
flag = ZMQ::SNDMORE
|
131
|
+
end
|
132
|
+
stream.send_string(part, flag)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
# STDOUT.puts '-'*30
|
136
|
+
# STDOUT.puts "SENDING"
|
137
|
+
# STDOUT.puts to_send
|
138
|
+
# STDOUT.puts to_send.length
|
139
|
+
# STDOUT.puts '-'*30
|
140
|
+
|
141
|
+
#buffers.each do |b|
|
142
|
+
#stream.send(b, flag, copy=False)
|
143
|
+
#end
|
144
|
+
#if buffers:
|
145
|
+
#if track:
|
146
|
+
#tracker = stream.send(buffers[-1], copy=False, track=track)
|
147
|
+
#else:
|
148
|
+
#tracker = stream.send(buffers[-1], copy=False)
|
149
|
+
|
150
|
+
# omsg = Message(msg)
|
151
|
+
#if self.debug:
|
152
|
+
#pprint.pprint(msg)
|
153
|
+
#pprint.pprint(to_send)
|
154
|
+
#pprint.pprint(buffers)
|
155
|
+
|
156
|
+
#msg['tracker'] = tracker
|
157
|
+
|
158
|
+
return msg
|
159
|
+
end
|
160
|
+
|
161
|
+
def recv(socket, mode=ZMQ::NOBLOCK)
|
162
|
+
begin
|
163
|
+
msg = []
|
164
|
+
frame = ""
|
165
|
+
rc = socket.recv_string(frame, mode)
|
166
|
+
ZMQ::Util.error_check("zmq_msg_send", rc)
|
167
|
+
|
168
|
+
msg << frame
|
169
|
+
while socket.more_parts?
|
170
|
+
begin
|
171
|
+
frame = ""
|
172
|
+
rc = socket.recv_string(frame, mode)
|
173
|
+
ZMQ::Util.error_check("zmq_msg_send", rc)
|
174
|
+
msg << frame
|
175
|
+
rescue
|
176
|
+
end
|
177
|
+
end
|
178
|
+
# Skip everything before DELIM, then munge the three json objects into the
|
179
|
+
# one the rest of my code expects
|
180
|
+
i = msg.index(DELIM)
|
181
|
+
idents = msg[0..i-1]
|
182
|
+
msg_list = msg[i+1..-1]
|
183
|
+
end
|
184
|
+
return idents, unserialize(msg_list)
|
185
|
+
end
|
186
|
+
|
187
|
+
# Serialize the message components to bytes.
|
188
|
+
#
|
189
|
+
# This is roughly the inverse of unserialize. The serialize/unserialize
|
190
|
+
# methods work with full message lists, whereas pack/unpack work with
|
191
|
+
# the individual message parts in the message list.
|
192
|
+
#
|
193
|
+
# Parameters
|
194
|
+
# ----------
|
195
|
+
# msg : dict or Message
|
196
|
+
# The nexted message dict as returned by the self.msg method.
|
197
|
+
#
|
198
|
+
# Returns
|
199
|
+
# -------
|
200
|
+
# msg_list : list
|
201
|
+
# The list of bytes objects to be sent with the format:
|
202
|
+
# [ident1,ident2,...,DELIM,HMAC,p_header,p_parent,p_content,
|
203
|
+
# buffer1,buffer2,...]. In this list, the p_* entities are
|
204
|
+
# the packed or serialized versions, so if JSON is used, these
|
205
|
+
# are utf8 encoded JSON strings.
|
206
|
+
def serialize(msg, ident=nil)
|
207
|
+
content = msg.fetch('content', {})
|
208
|
+
if content.nil?
|
209
|
+
content = {}.to_json
|
210
|
+
elsif content.is_a?(Hash)
|
211
|
+
content = content.to_json
|
212
|
+
#elsif isinstance(content, bytes):
|
213
|
+
# content is already packed, as in a relayed message
|
214
|
+
#pass
|
215
|
+
#elsif isinstance(content, unicode):
|
216
|
+
# should be bytes, but JSON often spits out unicode
|
217
|
+
#content = content.encode('utf8')
|
218
|
+
else
|
219
|
+
raise "Content incorrect type: %s"%type(content)
|
220
|
+
end
|
221
|
+
|
222
|
+
real_message = [MultiJson.dump(msg['header']),
|
223
|
+
MultiJson.dump(msg['parent_header']),
|
224
|
+
MultiJson.dump(msg['metadata']),
|
225
|
+
MultiJson.dump(msg['content']),
|
226
|
+
]
|
227
|
+
|
228
|
+
to_send = []
|
229
|
+
|
230
|
+
if ident.is_a?(Array)
|
231
|
+
# accept list of idents
|
232
|
+
to_send += ident
|
233
|
+
elsif !ident.nil?
|
234
|
+
to_send << ident
|
235
|
+
end
|
236
|
+
to_send << DELIM
|
237
|
+
|
238
|
+
signature = self.sign(real_message)
|
239
|
+
to_send << signature
|
240
|
+
|
241
|
+
to_send += real_message
|
242
|
+
# STDOUT.puts to_send
|
243
|
+
# STDOUT.puts to_send.length
|
244
|
+
|
245
|
+
return to_send
|
246
|
+
end
|
247
|
+
|
248
|
+
# Unserialize a msg_list to a nested message dict.
|
249
|
+
# This is roughly the inverse of serialize. The serialize/unserialize
|
250
|
+
# methods work with full message lists, whereas pack/unpack work with
|
251
|
+
# the individual message parts in the message list.
|
252
|
+
|
253
|
+
# Parameters:
|
254
|
+
# -----------
|
255
|
+
# msg_list : list of bytes or Message objects
|
256
|
+
# The list of message parts of the form [HMAC,p_header,p_parent,
|
257
|
+
# p_content,buffer1,buffer2,...].
|
258
|
+
# content : bool (True)
|
259
|
+
# Whether to unpack the content dict (True), or leave it packed
|
260
|
+
# (False).
|
261
|
+
# copy : bool (True)
|
262
|
+
# Whether to return the bytes (True), or the non-copying Message
|
263
|
+
# object in each place (False).
|
264
|
+
|
265
|
+
# Returns
|
266
|
+
# -------
|
267
|
+
# msg : dict
|
268
|
+
# The nested message dict with top-level keys [header, parent_header,
|
269
|
+
# content, buffers].
|
270
|
+
def unserialize(msg_list, content=true, copy=true)
|
271
|
+
minlen = 5
|
272
|
+
message = {}
|
273
|
+
unless copy
|
274
|
+
minlen.times do |i|
|
275
|
+
msg_list[i] = msg_list[i].bytes
|
276
|
+
end
|
277
|
+
end
|
278
|
+
unless msg_list.length >= minlen
|
279
|
+
raise "malformed message, must have at least %i elements"%minlen
|
280
|
+
end
|
281
|
+
|
282
|
+
raise "Invalid signature" unless self.sign(msg_list[1..-1]) == msg_list[0]
|
283
|
+
|
284
|
+
header = msg_list[1]
|
285
|
+
message['header'] = MultiJson.load(header)
|
286
|
+
message['msg_id'] = header['msg_id']
|
287
|
+
message['msg_type'] = header['msg_type']
|
288
|
+
message['parent_header'] = MultiJson.load(msg_list[2])
|
289
|
+
message['metadata'] = MultiJson.load(msg_list[3])
|
290
|
+
if content
|
291
|
+
message['content'] = MultiJson.load(msg_list[4])
|
292
|
+
else
|
293
|
+
message['content'] = msg_list[4]
|
294
|
+
end
|
295
|
+
|
296
|
+
message['buffers'] = msg_list[4..-1]
|
297
|
+
return message
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,768 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
8
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
9
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
10
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
11
|
+
xml:space="preserve"
|
12
|
+
width="1408.3538"
|
13
|
+
height="148.04994"
|
14
|
+
style="fill-rule:evenodd"
|
15
|
+
viewBox="0 0 1408.3538 148.04846"
|
16
|
+
id="svg2"
|
17
|
+
version="1.1"
|
18
|
+
inkscape:version="0.48.4 r9939"
|
19
|
+
sodipodi:docname="ipynblogo.svg"
|
20
|
+
inkscape:export-filename="ipynblogo.png"
|
21
|
+
inkscape:export-xdpi="39.83239"
|
22
|
+
inkscape:export-ydpi="39.83239"><metadata
|
23
|
+
id="metadata121"><rdf:RDF><cc:Work
|
24
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
25
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
26
|
+
pagecolor="#ffffff"
|
27
|
+
bordercolor="#666666"
|
28
|
+
borderopacity="1"
|
29
|
+
objecttolerance="10"
|
30
|
+
gridtolerance="10"
|
31
|
+
guidetolerance="10"
|
32
|
+
inkscape:pageopacity="0"
|
33
|
+
inkscape:pageshadow="2"
|
34
|
+
inkscape:window-width="1276"
|
35
|
+
inkscape:window-height="992"
|
36
|
+
id="namedview119"
|
37
|
+
showgrid="false"
|
38
|
+
showguides="true"
|
39
|
+
inkscape:guide-bbox="true"
|
40
|
+
inkscape:zoom="0.26229415"
|
41
|
+
inkscape:cx="822.946"
|
42
|
+
inkscape:cy="63.610685"
|
43
|
+
inkscape:window-x="0"
|
44
|
+
inkscape:window-y="14"
|
45
|
+
inkscape:window-maximized="0"
|
46
|
+
inkscape:current-layer="svg2"
|
47
|
+
showborder="true"
|
48
|
+
fit-margin-top="0"
|
49
|
+
fit-margin-left="0"
|
50
|
+
fit-margin-right="0"
|
51
|
+
fit-margin-bottom="0" /><defs
|
52
|
+
id="defs4"><font
|
53
|
+
id="FontID0"
|
54
|
+
font-variant="normal"
|
55
|
+
font-weight="400"
|
56
|
+
horiz-origin-x="0"
|
57
|
+
horiz-origin-y="0"
|
58
|
+
horiz-adv-x="90"
|
59
|
+
vert-origin-x="45"
|
60
|
+
vert-origin-y="90"
|
61
|
+
vert-adv-y="90"
|
62
|
+
style="font-variant:normal;font-weight:400"><font-face
|
63
|
+
font-family="Droid Sans Mono"
|
64
|
+
id="font-face7" /><missing-glyph
|
65
|
+
id="missing-glyph9"><path
|
66
|
+
d="M0 0z"
|
67
|
+
id="path11" /></missing-glyph><glyph
|
68
|
+
unicode=" "
|
69
|
+
horiz-adv-x="600"
|
70
|
+
id="glyph13" /><glyph
|
71
|
+
unicode=":"
|
72
|
+
horiz-adv-x="600"
|
73
|
+
id="glyph15"><path
|
74
|
+
d="M299.831 549.838c41.3387,0 62.0033,-22.6678 62.0033,-67.8333 0,-45.3356 -20.6646,-68.0034 -62.0033,-68.0034 -41.3293,0 -61.9939,22.6678 -61.9939,68.0034 0,45.1655 20.6646,67.8333 61.9939,67.8333zm0 -427.834c41.3387,0 62.0033,-22.5072 62.0033,-67.8333 0,-45.5057 -20.6646,-68.3341 -62.0033,-68.3341 -41.3293,0 -61.9939,22.8284 -61.9939,68.3341 0,45.3261 20.6646,67.8333 61.9939,67.8333z"
|
75
|
+
id="path17" /></glyph><glyph
|
76
|
+
unicode="C"
|
77
|
+
horiz-adv-x="600"
|
78
|
+
id="glyph19"><path
|
79
|
+
d="M548.841 98.1632l0 -79.1712c-47.5084,-19.1621 -105.845,-28.8282 -174.84,-28.8282 -100.488,0 -177.504,32.0029 -230.994,95.8388 -53.3477,63.6657 -79.9932,154.317 -79.9932,271.841 0,112.648 29.14,201.826 87.3065,267.646 58.3366,65.6783 138.018,98.6734 238.846,98.6734 71.6594,0 133.993,-14.0031 187,-42.0092l-38.0124 -76.1664c-50.1446,25.3416 -99.8072,38.0124 -148.988,38.0124 -69.987,0 -125.829,-25.8235 -167.498,-77.3286 -41.669,-51.6753 -62.5035,-121.492 -62.5035,-209.677 0,-93.486 19.5022,-164.664 58.6768,-213.646 39.0045,-49.0107 96.1506,-73.5019 171.325,-73.5019 42.321,0 95.4986,9.496 159.675,28.3179z"
|
80
|
+
id="path21" /></glyph><glyph
|
81
|
+
unicode="I"
|
82
|
+
horiz-adv-x="600"
|
83
|
+
id="glyph23"><path
|
84
|
+
d="M488.838 0l-379.013 0 0 60.0064 144.001 9.83275 0 574.162 -144.001 9.83275 0 60.0064 379.013 0 0 -60.0064 -143.665 -9.83275 0 -574.162 143.665 -9.83275 0 -60.0064z"
|
85
|
+
id="path25" /></glyph><glyph
|
86
|
+
unicode="]"
|
87
|
+
horiz-adv-x="600"
|
88
|
+
id="glyph27"><path
|
89
|
+
d="M141.166 -85.0018l168.832 0 0 726.172 -168.832 0 0 72.6616 257.831 0 0 -871.996 -257.831 0 0 73.1624z"
|
90
|
+
id="path29" /></glyph><glyph
|
91
|
+
unicode="["
|
92
|
+
horiz-adv-x="600"
|
93
|
+
id="glyph31"><path
|
94
|
+
d="M458.997 -158.164l-257.831 0 0 871.996 257.831 0 0 -72.6616 -168.993 0 0 -726.172 168.993 0 0 -73.1624z"
|
95
|
+
id="path33" /></glyph><glyph
|
96
|
+
unicode="P"
|
97
|
+
horiz-adv-x="600"
|
98
|
+
id="glyph35"><path
|
99
|
+
d="M176.83 277.833l0 -277.833 -90.8334 0 0 713.84 197.169 0c167.334,0 251.01,-69.6797 251.01,-209.004 0,-71.1679 -22.5002,-126.834 -67.6777,-166.997 -45.0004,-40.0043 -110.499,-60.0064 -196.496,-60.0064l-93.172 0zm0 77.1738l83.0026 0c64.3292,0 110.499,11.6576 138.332,35.1676 27.8329,23.3329 41.8291,59.9887 41.8291,109.826 0,90.8334 -54.9926,136.17 -165.155,136.17l-98.0086 0 0 -281.164z"
|
100
|
+
id="path37" /></glyph><glyph
|
101
|
+
unicode="g"
|
102
|
+
horiz-adv-x="600"
|
103
|
+
id="glyph39"><path
|
104
|
+
d="M549.833 536.17l0 -55.1619 -95.6687 -13.181c21.1747,-27.666 31.6628,-62.3335 31.6628,-104.002 0,-52.4973 -17.3196,-94.1663 -51.9871,-125.319 -34.6675,-31.0108 -82.9979,-46.6863 -144.849,-46.6863 -17.8298,0 -31.8329,1.02047 -41.9808,3.00471 -32.5132,-18.17 -48.8406,-39.8265 -48.8406,-64.998 0,-27.3258 26.3337,-40.9887 78.6609,-40.9887l91.3317 0c56.6642,0 100.006,-12.5007 129.826,-37.5021 30.0187,-25.1715 45.0139,-61.0012 45.0139,-107.489 0,-122.683 -92.012,-184.024 -275.838,-184.024 -71.0074,0 -125.007,13.0109 -161.999,39.1746 -36.8218,26.3337 -55.3319,63.0138 -55.3319,110.182 0,68.9948 39.0045,112.988 117.155,131.81 -31.3226,15.3353 -46.8281,40.3368 -46.8281,75.1743 0,36.51 21.6849,67.8326 64.8279,93.8262 -28.8282,12.0188 -51.6469,32.0029 -68.3145,59.839 -16.4975,27.836 -24.8313,58.1666 -24.8313,90.9916 0,59.3571 17.3196,104.853 51.9871,137.026 34.6675,31.9746 84.0184,47.9902 148.166,47.9902 28.0061,0 52.3272,-3.17478 73.1617,-9.66608l184.676 0zm-259.822 -283.179c72.6515,0 108.991,37.332 108.991,112.166 0,77.8389 -36.6801,116.843 -110.012,116.843 -73.1617,0 -109.813,-39.4864 -109.813,-118.176 0,-73.9838 36.9919,-110.834 110.834,-110.834zm47.8202 -244.146l-91.6719 0c-75.0043,0 -112.336,-32.3431 -112.336,-96.6892 0,-56.6642 44.0218,-84.9821 132.349,-84.9821 128.494,0 192.84,36.3399 192.84,108.821 0,28.6864 -8.19207,48.0186 -24.5195,57.8264 -16.1574,10.0062 -48.5005,15.0235 -96.6608,15.0235z"
|
105
|
+
id="path41" /></glyph><glyph
|
106
|
+
unicode="m"
|
107
|
+
horiz-adv-x="600"
|
108
|
+
id="glyph43"><path
|
109
|
+
d="M477.011 0l0 345.173c0,47.48 -4.33698,80.6735 -12.8409,99.1553 -8.67396,18.5101 -23.1589,27.836 -43.3415,27.836 -28.3179,0 -48.8406,-13.4928 -61.6532,-40.5068 -12.8409,-26.9857 -19.3322,-72.3114 -19.3322,-135.835l0 -295.822 -78.6893 0 0 345.173c0,84.6703 -20.3243,126.991 -61.0012,126.991 -27.3258,0 -46.8281,-13.0109 -58.4784,-38.8344 -11.8487,-25.8235 -17.6881,-77.6688 -17.6881,-155.508l0 -277.822 -78.9727 0 0 536.17 61.9933 0 13.1527 -72.3397 4.84721 0c21.8266,54.68 54.4815,82.0058 98.1632,82.0058 53.0075,0 87.675,-29.5085 104.002,-88.8372l2.83463 0c24.8313,59.3288 60.491,88.8372 106.979,88.8372 41.669,0 72.0279,-14.9952 90.8498,-45.1556 18.8219,-30.0187 28.3179,-80.3334 28.3179,-150.519l0 -350.162 -79.1428 0z"
|
110
|
+
id="path45" /></glyph><glyph
|
111
|
+
unicode="i"
|
112
|
+
horiz-adv-x="600"
|
113
|
+
id="glyph47"><path
|
114
|
+
d="M309.173 756.846c34.4974,0 51.6469,-18.5101 51.6469,-55.6721 0,-18.8503 -5.15902,-32.9951 -15.307,-42.1793 -10.3464,-9.32593 -22.5069,-14.0031 -36.3399,-14.0031 -34.8376,0 -52.3272,18.6802 -52.3272,56.1823 0,37.162 17.4897,55.6721 52.3272,55.6721zm-45.0139 -291.003l-131.328 10.148 0 60.1791 220.166 0 0 -466.325 171.835 -9.83616 0 -60.0091 -428.652 0 0 60.0091 167.98 9.83616 0 395.998z"
|
115
|
+
id="path49" /></glyph><glyph
|
116
|
+
unicode="c"
|
117
|
+
horiz-adv-x="600"
|
118
|
+
id="glyph51"><path
|
119
|
+
d="M518 517.178l-30.1604 -77.1869c-48.8406,18.5101 -92.4939,27.836 -130.846,27.836 -120.84,0 -181.161,-67.3224 -181.161,-201.655 0,-132.179 58.6768,-198.339 176.172,-198.339 51.165,0 103.322,10.1763 156.84,30.3305l0 -78.1507c-43.6816,-19.8424 -97.171,-29.8486 -160.667,-29.8486 -83.6782,0 -148.676,23.6691 -194.852,71.1775 -46.1477,47.3383 -69.335,115.313 -69.335,203.838 0,91.4734 23.6691,161.149 70.8373,208.997 47.1682,47.8202 113.498,71.6594 199.161,71.6594 58.0248,0 112.676,-9.496 164.012,-28.6581z"
|
120
|
+
id="path53" /></glyph><glyph
|
121
|
+
unicode="a"
|
122
|
+
horiz-adv-x="600"
|
123
|
+
id="glyph55"><path
|
124
|
+
d="M436.986 0l-17.9999 74.1539 -3.99683 0c-25.0014,-31.4927 -50.6548,-53.3193 -77.1586,-65.65 -26.3337,-12.1606 -60.3209,-18.34 -101.99,-18.34 -53.0075,0 -94.6766,14.0031 -124.667,42.0092 -30.1604,28.0061 -45.184,67.3224 -45.184,117.665 0,108.169 82.9979,164.834 249.022,169.993l98.9852 3.34486 0 33.8171c0,76.8468 -39.6564,115.171 -118.998,115.171 -47.9902,0 -101.338,-13.3228 -160.156,-39.9966l-30.8408 66.8405c63.8358,31.3226 126.169,46.8281 187,46.8281 73.8421,0 127.331,-14.1731 160.497,-42.3493 32.9951,-28.3179 49.4926,-73.8137 49.4926,-136.317l0 -367.169 -64.0059 0zm-23.8109 262.175l-79.1712 -3.34486c-63.8358,-2.66455 -108.991,-12.6708 -135.835,-29.9904 -26.6738,-17.518 -39.9966,-44.1635 -39.9966,-79.8515 0,-57.9965 32.6549,-86.9947 97.6529,-86.9947 47.8485,0 86.0026,13.3511 114.519,39.8265 28.488,26.5038 42.8312,63.8358 42.8312,112.024l0 48.3304z"
|
125
|
+
id="path57" /></glyph><glyph
|
126
|
+
unicode="e"
|
127
|
+
horiz-adv-x="600"
|
128
|
+
id="glyph59"><path
|
129
|
+
d="M535.178 251.006l-377.998 0c2.66455,-122.172 58.6484,-183.174 167.98,-183.174 63.4957,0 123.675,12.3306 180.679,37.162l0 -78.1507c-53.9997,-24.3495 -113.328,-36.6801 -177.674,-36.6801 -79.8231,0 -143.659,24.3495 -191.507,72.9917 -47.8202,48.6706 -71.6594,115.681 -71.6594,201.003 0,86.6829 21.9967,155.168 66.1602,205.851 44.0218,50.6548 103.01,75.8263 177.023,75.8263 68.9948,0 123.987,-21.6566 165.145,-65.3382 41.1871,-43.6533 61.8516,-101.82 61.8516,-174.33l0 -55.1619zm-376.013 72.1696l279.834 0c0,99.3254 -44.3336,148.988 -132.831,148.988 -89.4892,0 -138.5,-49.6627 -147.004,-148.988z"
|
130
|
+
id="path61" /></glyph><glyph
|
131
|
+
unicode="n"
|
132
|
+
horiz-adv-x="600"
|
133
|
+
id="glyph63"><path
|
134
|
+
d="M433.173 0l0 345.174c0,84.668 -38.835,126.993 -116.345,126.993 -99.8335,0 -149.83,-64.8253 -149.83,-194.334l0 -277.833 -88.8314 0 0 536.16 71.664 0 13.3407 -72.3195 4.83665 0c33.4845,54.6559 88.1582,81.9928 163.986,81.9928 126.674,0 190.011,-65.1619 190.011,-195.663l0 -350.17 -88.8314 0z"
|
135
|
+
id="path65" /></glyph><glyph
|
136
|
+
unicode="o"
|
137
|
+
horiz-adv-x="600"
|
138
|
+
id="glyph67"><path
|
139
|
+
d="M297.835 -9.83275c-70.3352,0 -128.162,25.3348 -173.499,76.0045 -45.4964,50.6697 -68.1738,118.17 -68.1738,202.82 0,85.6778 22.0041,153.178 66.1718,202.679 44.1677,49.5004 103.501,74.162 178.495,74.162 70.8313,0 129.013,-25.1577 174.332,-75.6679 45.1775,-50.3331 67.8371,-117.497 67.8371,-201.173 0,-86.1562 -22.323,-154.33 -67.0045,-203.99 -44.4866,-49.837 -103.997,-74.8352 -178.159,-74.8352zm2.00198 73.8254c100.826,0 151.336,68.3332 151.336,205 0,135.515 -50.8469,203.175 -152.346,203.175 -100.666,0 -150.822,-67.66 -150.822,-203.175 0,-136.666 50.4925,-205 151.832,-205z"
|
140
|
+
id="path69" /></glyph><glyph
|
141
|
+
unicode="h"
|
142
|
+
horiz-adv-x="600"
|
143
|
+
id="glyph71"><path
|
144
|
+
d="M433.173 0l0 345.174c0,84.668 -38.835,126.993 -116.345,126.993 -99.8335,0 -149.83,-64.8253 -149.83,-194.334l0 -277.833 -88.8314 0 0 759.833 88.8314 0 0 -225.657 -3.8268 -70.3352 4.83665 0c33.4845,54.6559 88.1582,81.9928 163.986,81.9928 126.674,0 190.011,-65.1619 190.011,-195.663l0 -350.17 -88.8314 0z"
|
145
|
+
id="path73" /></glyph><glyph
|
146
|
+
unicode="u"
|
147
|
+
horiz-adv-x="600"
|
148
|
+
id="glyph75"><path
|
149
|
+
d="M450.167 0l-13.181 71.8295 -4.81887 0c-34.1573,-54.5099 -88.4971,-81.6656 -163.161,-81.6656 -127.161,0 -190.827,65.3382 -190.827,195.844l0 350.162 88.8089 0 0 -345.173c0,-84.6703 38.3525,-126.991 115.171,-126.991 52.4973,0 90.6797,14.9952 114.831,45.1556 24.0093,30.0187 36.1699,79.6814 36.1699,148.676l0 278.332 88.8372 0 0 -536.17 -71.8295 0z"
|
150
|
+
id="path77" /></glyph><glyph
|
151
|
+
unicode="p"
|
152
|
+
horiz-adv-x="600"
|
153
|
+
id="glyph79"><path
|
154
|
+
d="M165.996 67.8326l-5.83933 0c3.85509,-42.0092 5.83933,-68.3429 5.83933,-79.0011l0 -229.01 -88.8372 0 0 776.348 71.8295 0 13.181 -72.3397 3.82675 0c35.8297,54.68 88.1569,82.0058 157.18,82.0058 65.4799,0 116.815,-24.3495 154.147,-72.9917 37.1903,-48.6706 55.8422,-116.503 55.8422,-203.838 0,-87.8451 -18.6519,-156.33 -56.154,-205.34 -37.332,-49.0107 -88.6672,-73.5019 -153.835,-73.5019 -67.3508,0 -119.678,25.9935 -157.18,77.6688zm0 221.158l0 -19.9841c0,-73.8421 11.3385,-126.509 34.0155,-157.832 22.4786,-31.5211 58.6484,-47.1682 108.169,-47.1682 88.4971,0 132.831,68.6547 132.831,205.992 0,134.843 -44.6737,202.166 -133.851,202.166 -49.4926,0 -84.9821,-14.3432 -106.667,-43.0013 -21.6566,-28.6581 -33.1651,-75.3161 -34.4974,-140.172z"
|
155
|
+
id="path81" /></glyph><glyph
|
156
|
+
unicode="v"
|
157
|
+
horiz-adv-x="600"
|
158
|
+
id="glyph83"><path
|
159
|
+
d="M243.154 0l-203.158 536.17 91.8419 0 117.155 -318.329c27.666,-75.3444 43.9934,-128.182 48.8406,-158.682l3.00471 0c2.15432,14.1731 18.6519,67.1807 49.3225,158.682l116.673 318.329 92.3238 0 -203.158 -536.17 -112.847 0z"
|
160
|
+
id="path85" /></glyph><glyph
|
161
|
+
unicode="r"
|
162
|
+
horiz-adv-x="600"
|
163
|
+
id="glyph87"><path
|
164
|
+
d="M517.178 524.009l-24.0093 -81.1837c-39.9966,14.6834 -76.5066,21.9967 -109.332,21.9967 -53.1776,0 -93.9963,-14.9952 -122.824,-45.1556 -28.8565,-30.1604 -43.1714,-73.672 -43.1714,-130.676l0 -288.99 -89.0073 0 0 536.17 72.3397 0 10.6582 -98.1632 3.99683 0c24.6613,38.6643 51.3351,66.3303 79.5113,82.9979 28.3179,16.6676 63.1555,24.8313 104.484,24.8313 38.5226,0 77.4987,-7.34169 117.354,-21.8266z"
|
165
|
+
id="path89" /></glyph><glyph
|
166
|
+
unicode="t"
|
167
|
+
horiz-adv-x="600"
|
168
|
+
id="glyph91"><path
|
169
|
+
d="M497.998 73.1699l0 -67.3411c-42.3251,-10.3288 -83.3392,-15.6615 -122.989,-15.6615 -117.834,0 -176.848,56.0024 -176.848,168.007l0 310.999 -130.324 0 0 45.9925 130.324 23.8289 37.6657 140.174 51.3429 0 0 -143.009 213.823 0 0 -66.9867 -213.823 0 0 -310.999c0,-63.5143 31.1636,-95.174 93.6681,-95.174 30.3309,0 69.3253,3.33073 117.16,10.1694z"
|
170
|
+
id="path93" /></glyph><glyph
|
171
|
+
unicode="y"
|
172
|
+
horiz-adv-x="600"
|
173
|
+
id="glyph95"><path
|
174
|
+
d="M40.0043 536.16l91.8255 0 128.003 -319.325c26.6636,-66.8273 41.1736,-114.007 43.335,-141.663l2.99412 0c7.51187,36.4964 22.1636,83.9948 44.0082,142.655l116.664 318.333 92.3393 0 -232 -605.999c-21.8447,-56.6579 -47.1795,-99.1602 -76.1817,-127.666 -28.9845,-28.4884 -68.9887,-42.6618 -120.154,-42.6618 -28.0101,0 -55.3292,2.67522 -82.0105,8.16739l0 70.8313c20.1793,-3.8268 42.3429,-5.82879 66.3312,-5.82879 31.3408,0 55.6835,6.66147 73.0104,20.0021 17.5041,13.3229 33.0062,36.3369 46.6657,68.8293l28.329 73.3293 -223.159 540.996z"
|
175
|
+
id="path97" /></glyph></font><style
|
176
|
+
type="text/css"
|
177
|
+
id="style99">
|
178
|
+
|
179
|
+
@font-face { font-family:"Droid Sans Mono";src:url("#FontID0") format(svg)}
|
180
|
+
.fil2 {fill:black}
|
181
|
+
.fil0 {fill:#2B2828}
|
182
|
+
.fil1 {fill:#3465A4}
|
183
|
+
.fnt1 {font-weight:normal;font-size:41.6669;font-family:'Droid Sans Mono'}
|
184
|
+
.fnt0 {font-weight:normal;font-size:66.6661;font-family:'Droid Sans Mono'}
|
185
|
+
.fnt3 {font-weight:normal;font-size:125;font-family:'Droid Sans Mono'}
|
186
|
+
.fnt2 {font-weight:normal;font-size:150;font-family:'Droid Sans Mono'}
|
187
|
+
|
188
|
+
</style><linearGradient
|
189
|
+
y2="141.7533"
|
190
|
+
x2="132.27631"
|
191
|
+
y1="215.5488"
|
192
|
+
x1="174.0737"
|
193
|
+
gradientUnits="userSpaceOnUse"
|
194
|
+
id="linearGradient3448"
|
195
|
+
xlink:href="#XMLID_17_-9"
|
196
|
+
inkscape:collect="always" /><linearGradient
|
197
|
+
id="XMLID_17_-9"
|
198
|
+
gradientUnits="userSpaceOnUse"
|
199
|
+
x1="174.0737"
|
200
|
+
y1="215.5488"
|
201
|
+
x2="132.27631"
|
202
|
+
y2="141.7533"><stop
|
203
|
+
offset="0"
|
204
|
+
style="stop-color:#FB7655"
|
205
|
+
id="stop3272-4" /><stop
|
206
|
+
offset="0"
|
207
|
+
style="stop-color:#FB7655"
|
208
|
+
id="stop3274-5" /><stop
|
209
|
+
offset="0.41"
|
210
|
+
style="stop-color:#E42B1E"
|
211
|
+
id="stop3276-1" /><stop
|
212
|
+
offset="0.99"
|
213
|
+
style="stop-color:#990000"
|
214
|
+
id="stop3278-0" /><stop
|
215
|
+
offset="1"
|
216
|
+
style="stop-color:#990000"
|
217
|
+
id="stop3280-3" /></linearGradient><linearGradient
|
218
|
+
id="XMLID_18_-7"
|
219
|
+
gradientUnits="userSpaceOnUse"
|
220
|
+
x1="194.895"
|
221
|
+
y1="153.5576"
|
222
|
+
x2="141.0276"
|
223
|
+
y2="117.4093"><stop
|
224
|
+
offset="0"
|
225
|
+
style="stop-color:#871101"
|
226
|
+
id="stop3285-8" /><stop
|
227
|
+
offset="0"
|
228
|
+
style="stop-color:#871101"
|
229
|
+
id="stop3287-8" /><stop
|
230
|
+
offset="0.99"
|
231
|
+
style="stop-color:#911209"
|
232
|
+
id="stop3289-6" /><stop
|
233
|
+
offset="1"
|
234
|
+
style="stop-color:#911209"
|
235
|
+
id="stop3291-0" /></linearGradient><linearGradient
|
236
|
+
id="XMLID_19_-4"
|
237
|
+
gradientUnits="userSpaceOnUse"
|
238
|
+
x1="151.79539"
|
239
|
+
y1="217.7852"
|
240
|
+
x2="97.929703"
|
241
|
+
y2="181.638"><stop
|
242
|
+
offset="0"
|
243
|
+
style="stop-color:#871101"
|
244
|
+
id="stop3296-6" /><stop
|
245
|
+
offset="0"
|
246
|
+
style="stop-color:#871101"
|
247
|
+
id="stop3298-7" /><stop
|
248
|
+
offset="0.99"
|
249
|
+
style="stop-color:#911209"
|
250
|
+
id="stop3300-6" /><stop
|
251
|
+
offset="1"
|
252
|
+
style="stop-color:#911209"
|
253
|
+
id="stop3302-0" /></linearGradient><linearGradient
|
254
|
+
id="XMLID_20_-9"
|
255
|
+
gradientUnits="userSpaceOnUse"
|
256
|
+
x1="38.696301"
|
257
|
+
y1="127.3906"
|
258
|
+
x2="47.046902"
|
259
|
+
y2="181.66141"><stop
|
260
|
+
offset="0"
|
261
|
+
style="stop-color:#FFFFFF"
|
262
|
+
id="stop3307-7" /><stop
|
263
|
+
offset="0"
|
264
|
+
style="stop-color:#FFFFFF"
|
265
|
+
id="stop3309-5" /><stop
|
266
|
+
offset="0.23"
|
267
|
+
style="stop-color:#E57252"
|
268
|
+
id="stop3311-9" /><stop
|
269
|
+
offset="0.46"
|
270
|
+
style="stop-color:#DE3B20"
|
271
|
+
id="stop3313-7" /><stop
|
272
|
+
offset="0.99"
|
273
|
+
style="stop-color:#A60003"
|
274
|
+
id="stop3315-8" /><stop
|
275
|
+
offset="1"
|
276
|
+
style="stop-color:#A60003"
|
277
|
+
id="stop3317-5" /></linearGradient><linearGradient
|
278
|
+
id="XMLID_21_-3"
|
279
|
+
gradientUnits="userSpaceOnUse"
|
280
|
+
x1="96.132797"
|
281
|
+
y1="76.715302"
|
282
|
+
x2="99.209602"
|
283
|
+
y2="132.1021"><stop
|
284
|
+
offset="0"
|
285
|
+
style="stop-color:#FFFFFF"
|
286
|
+
id="stop3322-3" /><stop
|
287
|
+
offset="0"
|
288
|
+
style="stop-color:#FFFFFF"
|
289
|
+
id="stop3324-8" /><stop
|
290
|
+
offset="0.23"
|
291
|
+
style="stop-color:#E4714E"
|
292
|
+
id="stop3326-3" /><stop
|
293
|
+
offset="0.56"
|
294
|
+
style="stop-color:#BE1A0D"
|
295
|
+
id="stop3328-7" /><stop
|
296
|
+
offset="0.99"
|
297
|
+
style="stop-color:#A80D00"
|
298
|
+
id="stop3330-9" /><stop
|
299
|
+
offset="1"
|
300
|
+
style="stop-color:#A80D00"
|
301
|
+
id="stop3332-3" /></linearGradient><linearGradient
|
302
|
+
id="XMLID_22_-7"
|
303
|
+
gradientUnits="userSpaceOnUse"
|
304
|
+
x1="147.103"
|
305
|
+
y1="25.521"
|
306
|
+
x2="156.3141"
|
307
|
+
y2="65.216202"><stop
|
308
|
+
offset="0"
|
309
|
+
style="stop-color:#FFFFFF"
|
310
|
+
id="stop3337-8" /><stop
|
311
|
+
offset="0"
|
312
|
+
style="stop-color:#FFFFFF"
|
313
|
+
id="stop3339-7" /><stop
|
314
|
+
offset="0.18"
|
315
|
+
style="stop-color:#E46342"
|
316
|
+
id="stop3341-4" /><stop
|
317
|
+
offset="0.4"
|
318
|
+
style="stop-color:#C82410"
|
319
|
+
id="stop3343-1" /><stop
|
320
|
+
offset="0.99"
|
321
|
+
style="stop-color:#A80D00"
|
322
|
+
id="stop3345-9" /><stop
|
323
|
+
offset="1"
|
324
|
+
style="stop-color:#A80D00"
|
325
|
+
id="stop3347-0" /></linearGradient><linearGradient
|
326
|
+
id="XMLID_23_-9"
|
327
|
+
gradientUnits="userSpaceOnUse"
|
328
|
+
x1="118.9761"
|
329
|
+
y1="11.5415"
|
330
|
+
x2="158.66859"
|
331
|
+
y2="-8.3048"><stop
|
332
|
+
offset="0"
|
333
|
+
style="stop-color:#FFFFFF"
|
334
|
+
id="stop3352-8" /><stop
|
335
|
+
offset="0"
|
336
|
+
style="stop-color:#FFFFFF"
|
337
|
+
id="stop3354-8" /><stop
|
338
|
+
offset="0.54"
|
339
|
+
style="stop-color:#C81F11"
|
340
|
+
id="stop3356-5" /><stop
|
341
|
+
offset="0.99"
|
342
|
+
style="stop-color:#BF0905"
|
343
|
+
id="stop3358-8" /><stop
|
344
|
+
offset="1"
|
345
|
+
style="stop-color:#BF0905"
|
346
|
+
id="stop3360-4" /></linearGradient><linearGradient
|
347
|
+
id="XMLID_24_-3"
|
348
|
+
gradientUnits="userSpaceOnUse"
|
349
|
+
x1="3.9033"
|
350
|
+
y1="113.5547"
|
351
|
+
x2="7.1701999"
|
352
|
+
y2="146.2628"><stop
|
353
|
+
offset="0"
|
354
|
+
style="stop-color:#FFFFFF"
|
355
|
+
id="stop3365-7" /><stop
|
356
|
+
offset="0"
|
357
|
+
style="stop-color:#FFFFFF"
|
358
|
+
id="stop3367-1" /><stop
|
359
|
+
offset="0.31"
|
360
|
+
style="stop-color:#DE4024"
|
361
|
+
id="stop3369-3" /><stop
|
362
|
+
offset="0.99"
|
363
|
+
style="stop-color:#BF190B"
|
364
|
+
id="stop3371-8" /><stop
|
365
|
+
offset="1"
|
366
|
+
style="stop-color:#BF190B"
|
367
|
+
id="stop3373-0" /></linearGradient><linearGradient
|
368
|
+
id="XMLID_25_-9"
|
369
|
+
gradientUnits="userSpaceOnUse"
|
370
|
+
x1="-18.5557"
|
371
|
+
y1="155.10451"
|
372
|
+
x2="135.0152"
|
373
|
+
y2="-2.8092999"><stop
|
374
|
+
offset="0"
|
375
|
+
style="stop-color:#BD0012"
|
376
|
+
id="stop3380-7" /><stop
|
377
|
+
offset="0"
|
378
|
+
style="stop-color:#BD0012"
|
379
|
+
id="stop3382-9" /><stop
|
380
|
+
offset="0.07"
|
381
|
+
style="stop-color:#FFFFFF"
|
382
|
+
id="stop3384-9" /><stop
|
383
|
+
offset="0.17"
|
384
|
+
style="stop-color:#FFFFFF"
|
385
|
+
id="stop3386-3" /><stop
|
386
|
+
offset="0.27"
|
387
|
+
style="stop-color:#C82F1C"
|
388
|
+
id="stop3388-2" /><stop
|
389
|
+
offset="0.33"
|
390
|
+
style="stop-color:#820C01"
|
391
|
+
id="stop3390-4" /><stop
|
392
|
+
offset="0.46"
|
393
|
+
style="stop-color:#A31601"
|
394
|
+
id="stop3392-3" /><stop
|
395
|
+
offset="0.72"
|
396
|
+
style="stop-color:#B31301"
|
397
|
+
id="stop3394-7" /><stop
|
398
|
+
offset="0.99"
|
399
|
+
style="stop-color:#E82609"
|
400
|
+
id="stop3396-1" /><stop
|
401
|
+
offset="1"
|
402
|
+
style="stop-color:#E82609"
|
403
|
+
id="stop3398-2" /></linearGradient><linearGradient
|
404
|
+
id="XMLID_26_-2"
|
405
|
+
gradientUnits="userSpaceOnUse"
|
406
|
+
x1="99.074699"
|
407
|
+
y1="171.0332"
|
408
|
+
x2="52.817699"
|
409
|
+
y2="159.61659"><stop
|
410
|
+
offset="0"
|
411
|
+
style="stop-color:#8C0C01"
|
412
|
+
id="stop3403-0" /><stop
|
413
|
+
offset="0"
|
414
|
+
style="stop-color:#8C0C01"
|
415
|
+
id="stop3405-2" /><stop
|
416
|
+
offset="0.54"
|
417
|
+
style="stop-color:#990C00"
|
418
|
+
id="stop3407-1" /><stop
|
419
|
+
offset="0.99"
|
420
|
+
style="stop-color:#A80D0E"
|
421
|
+
id="stop3409-7" /><stop
|
422
|
+
offset="1"
|
423
|
+
style="stop-color:#A80D0E"
|
424
|
+
id="stop3411-5" /></linearGradient><linearGradient
|
425
|
+
id="XMLID_27_-1"
|
426
|
+
gradientUnits="userSpaceOnUse"
|
427
|
+
x1="178.52589"
|
428
|
+
y1="115.5146"
|
429
|
+
x2="137.43269"
|
430
|
+
y2="78.683998"><stop
|
431
|
+
offset="0"
|
432
|
+
style="stop-color:#7E110B"
|
433
|
+
id="stop3416-7" /><stop
|
434
|
+
offset="0"
|
435
|
+
style="stop-color:#7E110B"
|
436
|
+
id="stop3418-4" /><stop
|
437
|
+
offset="0.99"
|
438
|
+
style="stop-color:#9E0C00"
|
439
|
+
id="stop3420-1" /><stop
|
440
|
+
offset="1"
|
441
|
+
style="stop-color:#9E0C00"
|
442
|
+
id="stop3422-7" /></linearGradient><linearGradient
|
443
|
+
id="XMLID_28_-1"
|
444
|
+
gradientUnits="userSpaceOnUse"
|
445
|
+
x1="193.6235"
|
446
|
+
y1="47.937"
|
447
|
+
x2="173.15421"
|
448
|
+
y2="26.053801"><stop
|
449
|
+
offset="0"
|
450
|
+
style="stop-color:#79130D"
|
451
|
+
id="stop3427-1" /><stop
|
452
|
+
offset="0"
|
453
|
+
style="stop-color:#79130D"
|
454
|
+
id="stop3429-1" /><stop
|
455
|
+
offset="0.99"
|
456
|
+
style="stop-color:#9E120B"
|
457
|
+
id="stop3431-7" /><stop
|
458
|
+
offset="1"
|
459
|
+
style="stop-color:#9E120B"
|
460
|
+
id="stop3433-0" /></linearGradient><radialGradient
|
461
|
+
id="XMLID_29_-4"
|
462
|
+
cx="143.8315"
|
463
|
+
cy="79.388199"
|
464
|
+
r="50.357601"
|
465
|
+
gradientUnits="userSpaceOnUse"><stop
|
466
|
+
offset="0"
|
467
|
+
style="stop-color:#A80D00"
|
468
|
+
id="stop3440-0" /><stop
|
469
|
+
offset="0"
|
470
|
+
style="stop-color:#A80D00"
|
471
|
+
id="stop3442-8" /><stop
|
472
|
+
offset="0.99"
|
473
|
+
style="stop-color:#7E0E08"
|
474
|
+
id="stop3444-5" /><stop
|
475
|
+
offset="1"
|
476
|
+
style="stop-color:#7E0E08"
|
477
|
+
id="stop3446-1" /></radialGradient><radialGradient
|
478
|
+
id="XMLID_30_-6"
|
479
|
+
cx="74.0923"
|
480
|
+
cy="145.75101"
|
481
|
+
r="66.943703"
|
482
|
+
gradientUnits="userSpaceOnUse"><stop
|
483
|
+
offset="0"
|
484
|
+
style="stop-color:#A30C00"
|
485
|
+
id="stop3451-6" /><stop
|
486
|
+
offset="0"
|
487
|
+
style="stop-color:#A30C00"
|
488
|
+
id="stop3453-2" /><stop
|
489
|
+
offset="0.99"
|
490
|
+
style="stop-color:#800E08"
|
491
|
+
id="stop3455-1" /><stop
|
492
|
+
offset="1"
|
493
|
+
style="stop-color:#800E08"
|
494
|
+
id="stop3457-9" /></radialGradient><linearGradient
|
495
|
+
id="XMLID_31_-6"
|
496
|
+
gradientUnits="userSpaceOnUse"
|
497
|
+
x1="26.669901"
|
498
|
+
y1="197.33591"
|
499
|
+
x2="9.9886999"
|
500
|
+
y2="140.742"><stop
|
501
|
+
offset="0"
|
502
|
+
style="stop-color:#8B2114"
|
503
|
+
id="stop3462-4" /><stop
|
504
|
+
offset="0"
|
505
|
+
style="stop-color:#8B2114"
|
506
|
+
id="stop3464-8" /><stop
|
507
|
+
offset="0.43"
|
508
|
+
style="stop-color:#9E100A"
|
509
|
+
id="stop3466-0" /><stop
|
510
|
+
offset="0.99"
|
511
|
+
style="stop-color:#B3100C"
|
512
|
+
id="stop3468-8" /><stop
|
513
|
+
offset="1"
|
514
|
+
style="stop-color:#B3100C"
|
515
|
+
id="stop3470-1" /></linearGradient><linearGradient
|
516
|
+
id="XMLID_32_-0"
|
517
|
+
gradientUnits="userSpaceOnUse"
|
518
|
+
x1="154.6411"
|
519
|
+
y1="9.7979002"
|
520
|
+
x2="192.039"
|
521
|
+
y2="26.305901"><stop
|
522
|
+
offset="0"
|
523
|
+
style="stop-color:#B31000"
|
524
|
+
id="stop3475-2" /><stop
|
525
|
+
offset="0"
|
526
|
+
style="stop-color:#B31000"
|
527
|
+
id="stop3477-2" /><stop
|
528
|
+
offset="0.44"
|
529
|
+
style="stop-color:#910F08"
|
530
|
+
id="stop3479-9" /><stop
|
531
|
+
offset="0.99"
|
532
|
+
style="stop-color:#791C12"
|
533
|
+
id="stop3481-7" /><stop
|
534
|
+
offset="1"
|
535
|
+
style="stop-color:#791C12"
|
536
|
+
id="stop3483-5" /></linearGradient><linearGradient
|
537
|
+
y2="141.7533"
|
538
|
+
x2="132.27631"
|
539
|
+
y1="215.5488"
|
540
|
+
x1="174.0737"
|
541
|
+
gradientUnits="userSpaceOnUse"
|
542
|
+
id="linearGradient6236"
|
543
|
+
xlink:href="#XMLID_17_-9"
|
544
|
+
inkscape:collect="always" /><linearGradient
|
545
|
+
inkscape:collect="always"
|
546
|
+
xlink:href="#XMLID_25_-9"
|
547
|
+
id="linearGradient6479"
|
548
|
+
gradientUnits="userSpaceOnUse"
|
549
|
+
x1="-18.5557"
|
550
|
+
y1="155.10451"
|
551
|
+
x2="135.0152"
|
552
|
+
y2="-2.8092999"
|
553
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
554
|
+
inkscape:collect="always"
|
555
|
+
xlink:href="#XMLID_26_-2"
|
556
|
+
id="linearGradient6481"
|
557
|
+
gradientUnits="userSpaceOnUse"
|
558
|
+
x1="99.074699"
|
559
|
+
y1="171.0332"
|
560
|
+
x2="52.817699"
|
561
|
+
y2="159.61659"
|
562
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
563
|
+
inkscape:collect="always"
|
564
|
+
xlink:href="#XMLID_27_-1"
|
565
|
+
id="linearGradient6483"
|
566
|
+
gradientUnits="userSpaceOnUse"
|
567
|
+
x1="178.52589"
|
568
|
+
y1="115.5146"
|
569
|
+
x2="137.43269"
|
570
|
+
y2="78.683998"
|
571
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
572
|
+
inkscape:collect="always"
|
573
|
+
xlink:href="#XMLID_28_-1"
|
574
|
+
id="linearGradient6485"
|
575
|
+
gradientUnits="userSpaceOnUse"
|
576
|
+
x1="193.6235"
|
577
|
+
y1="47.937"
|
578
|
+
x2="173.15421"
|
579
|
+
y2="26.053801"
|
580
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><radialGradient
|
581
|
+
inkscape:collect="always"
|
582
|
+
xlink:href="#XMLID_29_-4"
|
583
|
+
id="radialGradient6487"
|
584
|
+
gradientUnits="userSpaceOnUse"
|
585
|
+
cx="143.8315"
|
586
|
+
cy="79.388199"
|
587
|
+
r="50.357601"
|
588
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><radialGradient
|
589
|
+
inkscape:collect="always"
|
590
|
+
xlink:href="#XMLID_30_-6"
|
591
|
+
id="radialGradient6489"
|
592
|
+
gradientUnits="userSpaceOnUse"
|
593
|
+
cx="74.0923"
|
594
|
+
cy="145.75101"
|
595
|
+
r="66.943703"
|
596
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
597
|
+
inkscape:collect="always"
|
598
|
+
xlink:href="#XMLID_31_-6"
|
599
|
+
id="linearGradient6491"
|
600
|
+
gradientUnits="userSpaceOnUse"
|
601
|
+
x1="26.669901"
|
602
|
+
y1="197.33591"
|
603
|
+
x2="9.9886999"
|
604
|
+
y2="140.742"
|
605
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
606
|
+
inkscape:collect="always"
|
607
|
+
xlink:href="#XMLID_32_-0"
|
608
|
+
id="linearGradient6493"
|
609
|
+
gradientUnits="userSpaceOnUse"
|
610
|
+
x1="154.6411"
|
611
|
+
y1="9.7979002"
|
612
|
+
x2="192.039"
|
613
|
+
y2="26.305901"
|
614
|
+
gradientTransform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><linearGradient
|
615
|
+
inkscape:collect="always"
|
616
|
+
xlink:href="#XMLID_18_-7"
|
617
|
+
id="linearGradient6495"
|
618
|
+
gradientUnits="userSpaceOnUse"
|
619
|
+
x1="194.895"
|
620
|
+
y1="153.5576"
|
621
|
+
x2="141.0276"
|
622
|
+
y2="117.4093" /><linearGradient
|
623
|
+
inkscape:collect="always"
|
624
|
+
xlink:href="#XMLID_19_-4"
|
625
|
+
id="linearGradient6497"
|
626
|
+
gradientUnits="userSpaceOnUse"
|
627
|
+
x1="151.79539"
|
628
|
+
y1="217.7852"
|
629
|
+
x2="97.929703"
|
630
|
+
y2="181.638" /><linearGradient
|
631
|
+
inkscape:collect="always"
|
632
|
+
xlink:href="#XMLID_20_-9"
|
633
|
+
id="linearGradient6499"
|
634
|
+
gradientUnits="userSpaceOnUse"
|
635
|
+
x1="38.696301"
|
636
|
+
y1="127.3906"
|
637
|
+
x2="47.046902"
|
638
|
+
y2="181.66141" /><linearGradient
|
639
|
+
inkscape:collect="always"
|
640
|
+
xlink:href="#XMLID_21_-3"
|
641
|
+
id="linearGradient6501"
|
642
|
+
gradientUnits="userSpaceOnUse"
|
643
|
+
x1="96.132797"
|
644
|
+
y1="76.715302"
|
645
|
+
x2="99.209602"
|
646
|
+
y2="132.1021" /><linearGradient
|
647
|
+
inkscape:collect="always"
|
648
|
+
xlink:href="#XMLID_22_-7"
|
649
|
+
id="linearGradient6503"
|
650
|
+
gradientUnits="userSpaceOnUse"
|
651
|
+
x1="147.103"
|
652
|
+
y1="25.521"
|
653
|
+
x2="156.3141"
|
654
|
+
y2="65.216202" /><linearGradient
|
655
|
+
inkscape:collect="always"
|
656
|
+
xlink:href="#XMLID_23_-9"
|
657
|
+
id="linearGradient6505"
|
658
|
+
gradientUnits="userSpaceOnUse"
|
659
|
+
x1="118.9761"
|
660
|
+
y1="11.5415"
|
661
|
+
x2="158.66859"
|
662
|
+
y2="-8.3048" /><linearGradient
|
663
|
+
inkscape:collect="always"
|
664
|
+
xlink:href="#XMLID_24_-3"
|
665
|
+
id="linearGradient6507"
|
666
|
+
gradientUnits="userSpaceOnUse"
|
667
|
+
x1="3.9033"
|
668
|
+
y1="113.5547"
|
669
|
+
x2="7.1701999"
|
670
|
+
y2="146.2628" /></defs><text
|
671
|
+
style="font-size:150px;font-weight:normal;fill:#000000;font-family:Droid Sans Mono"
|
672
|
+
id="text109"
|
673
|
+
class="fil2 fnt2"
|
674
|
+
y="116.84798"
|
675
|
+
x="179.64279">IRuby: <tspan
|
676
|
+
style="fill:#800000"
|
677
|
+
id="tspan6534">Notebook</tspan></text>
|
678
|
+
<polygon
|
679
|
+
style="fill:url(#linearGradient6236);fill-rule:evenodd"
|
680
|
+
clip-rule="evenodd"
|
681
|
+
points="198.13,39.95 153.5,130.41 40.38,197.58 186.849,187.641 "
|
682
|
+
id="polygon3282"
|
683
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
684
|
+
style="fill:url(#linearGradient6495);fill-rule:evenodd"
|
685
|
+
clip-rule="evenodd"
|
686
|
+
points="174.5,100.65 140.209,145.93 187.089,187.54 "
|
687
|
+
id="polygon3293"
|
688
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
689
|
+
style="fill:url(#linearGradient6497);fill-rule:evenodd"
|
690
|
+
clip-rule="evenodd"
|
691
|
+
points="95.03,180.3 40.87,197.391 187.259,187.54 "
|
692
|
+
id="polygon3304"
|
693
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
694
|
+
style="fill:url(#linearGradient6499);fill-rule:evenodd"
|
695
|
+
clip-rule="evenodd"
|
696
|
+
points="64.04,121.93 13.34,132.771 41,197.41 "
|
697
|
+
id="polygon3319"
|
698
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
699
|
+
style="fill:url(#linearGradient6501);fill-rule:evenodd"
|
700
|
+
clip-rule="evenodd"
|
701
|
+
points="119,63.14 58.33,120.01 140.2,146.18 "
|
702
|
+
id="polygon3334"
|
703
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
704
|
+
style="fill:url(#linearGradient6503);fill-rule:evenodd"
|
705
|
+
clip-rule="evenodd"
|
706
|
+
points="135.97,17.47 120,69.1 193.32,64.31 "
|
707
|
+
id="polygon3349"
|
708
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
709
|
+
style="fill:url(#linearGradient6505);fill-rule:evenodd"
|
710
|
+
clip-rule="evenodd"
|
711
|
+
points="132.77,19.41 111.49,0.52 166.5,0.77 "
|
712
|
+
id="polygon3362"
|
713
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><polygon
|
714
|
+
style="fill:url(#linearGradient6507);fill-rule:evenodd"
|
715
|
+
clip-rule="evenodd"
|
716
|
+
points="14.13,132.32 2.7,101.62 0,158.09 "
|
717
|
+
id="polygon3375"
|
718
|
+
transform="matrix(0.72787016,0,0,0.72787016,0,-8e-4)" /><path
|
719
|
+
style="fill:#ffffff;fill-rule:evenodd"
|
720
|
+
inkscape:connector-curvature="0"
|
721
|
+
clip-rule="evenodd"
|
722
|
+
d="M 1.41207,73.259327 9.78257,97.002459 46.15425,88.842299 87.67923,50.250629 99.39795,13.02808 80.94572,-8e-4 49.57451,11.739741 c -9.88375,9.193 -29.06313,27.382481 -29.7546,27.724581 -0.6842,0.34938 -12.66495,22.993412 -18.40784,33.795005 z"
|
723
|
+
id="path3377" /><path
|
724
|
+
style="fill:url(#linearGradient6479);fill-rule:evenodd"
|
725
|
+
inkscape:connector-curvature="0"
|
726
|
+
clip-rule="evenodd"
|
727
|
+
d="M 30.80346,30.606145 C 52.22469,9.366884 79.84008,-3.181593 90.43786,7.510822 101.02911,18.203238 89.79734,44.188202 68.37612,65.420173 46.95491,86.652139 19.68161,99.892099 9.0911,89.199679 -1.50669,78.514549 9.38224,51.838115 30.80346,30.606145 z"
|
728
|
+
id="path3400" /><path
|
729
|
+
style="fill:url(#linearGradient6481);fill-rule:evenodd"
|
730
|
+
inkscape:connector-curvature="0"
|
731
|
+
clip-rule="evenodd"
|
732
|
+
d="m 29.84268,143.66622 16.6391,-55.114331 55.25991,17.752751 c -19.98003,18.73537 -42.20191,34.57383 -71.89901,37.36158 z"
|
733
|
+
id="path3413" /><path
|
734
|
+
style="fill:url(#linearGradient6483);fill-rule:evenodd"
|
735
|
+
inkscape:connector-curvature="0"
|
736
|
+
clip-rule="evenodd"
|
737
|
+
d="m 87.75203,50.142169 14.18618,56.191581 c 16.69007,-17.548951 31.66963,-36.415343 39.00584,-59.750855 l -53.19202,3.559274 z"
|
738
|
+
id="path3424" /><path
|
739
|
+
style="fill:url(#linearGradient6485);fill-rule:evenodd"
|
740
|
+
inkscape:connector-curvature="0"
|
741
|
+
clip-rule="evenodd"
|
742
|
+
d="M 140.7992,46.866756 C 146.47659,29.732691 147.78676,5.152522 121.01496,0.588769 L 99.04784,12.722372 140.7992,46.866756 z"
|
743
|
+
id="path3435" /><path
|
744
|
+
style="fill:#9e1209;fill-rule:evenodd"
|
745
|
+
inkscape:connector-curvature="0"
|
746
|
+
clip-rule="evenodd"
|
747
|
+
d="m 0,114.82071 c 0.7861,28.27849 21.1883,28.69992 29.87907,28.94813 L 9.80442,96.885989 0,114.82071 z"
|
748
|
+
id="path3437" /><path
|
749
|
+
style="fill:url(#radialGradient6487);fill-rule:evenodd"
|
750
|
+
inkscape:connector-curvature="0"
|
751
|
+
clip-rule="evenodd"
|
752
|
+
d="m 87.83136,50.229523 c 12.82508,7.882825 38.67248,23.714005 39.19654,24.005157 0.81449,0.458556 11.14369,-17.417938 13.48744,-27.520772 l -52.68398,3.515615 z"
|
753
|
+
id="path3448" /><path
|
754
|
+
style="fill:url(#radialGradient6489);fill-rule:evenodd"
|
755
|
+
inkscape:connector-curvature="0"
|
756
|
+
clip-rule="evenodd"
|
757
|
+
d="m 46.45995,88.551889 22.24371,42.915221 c 13.15262,-7.13313 23.45198,-15.82391 32.88517,-25.13336 L 46.45995,88.551889 z"
|
758
|
+
id="path3459" /><path
|
759
|
+
style="fill:url(#linearGradient6491);fill-rule:evenodd"
|
760
|
+
inkscape:connector-curvature="0"
|
761
|
+
clip-rule="evenodd"
|
762
|
+
d="M 9.71706,96.944229 6.56538,134.47322 c 5.9467,8.12302 14.12797,8.82906 22.70955,8.19581 C 23.06621,127.21634 10.6633,96.318259 9.71706,96.944229 z"
|
763
|
+
id="path3472" /><path
|
764
|
+
style="fill:url(#linearGradient6493);fill-rule:evenodd"
|
765
|
+
inkscape:connector-curvature="0"
|
766
|
+
clip-rule="evenodd"
|
767
|
+
d="m 98.91756,12.816992 44.18899,6.20146 C 140.74825,9.024795 133.50594,2.575855 121.16126,0.559655 l -22.2437,12.257337 z"
|
768
|
+
id="path3485" /></svg>
|