opal-up 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +209 -0
  3. data/README.md +97 -29
  4. data/bin/up_ruby +4 -0
  5. data/bin/up_ruby_cluster +4 -0
  6. data/ext/up_ext/App.h +606 -0
  7. data/ext/up_ext/AsyncSocket.h +355 -0
  8. data/ext/up_ext/AsyncSocketData.h +87 -0
  9. data/ext/up_ext/BloomFilter.h +83 -0
  10. data/ext/up_ext/ChunkedEncoding.h +236 -0
  11. data/ext/up_ext/ClientApp.h +36 -0
  12. data/ext/up_ext/HttpContext.h +502 -0
  13. data/ext/up_ext/HttpContextData.h +56 -0
  14. data/ext/up_ext/HttpErrors.h +53 -0
  15. data/ext/up_ext/HttpParser.h +680 -0
  16. data/ext/up_ext/HttpResponse.h +578 -0
  17. data/ext/up_ext/HttpResponseData.h +95 -0
  18. data/ext/up_ext/HttpRouter.h +380 -0
  19. data/ext/up_ext/Loop.h +204 -0
  20. data/ext/up_ext/LoopData.h +112 -0
  21. data/ext/up_ext/MoveOnlyFunction.h +377 -0
  22. data/ext/up_ext/PerMessageDeflate.h +315 -0
  23. data/ext/up_ext/ProxyParser.h +163 -0
  24. data/ext/up_ext/QueryParser.h +120 -0
  25. data/ext/up_ext/TopicTree.h +363 -0
  26. data/ext/up_ext/Utilities.h +66 -0
  27. data/ext/up_ext/WebSocket.h +381 -0
  28. data/ext/up_ext/WebSocketContext.h +434 -0
  29. data/ext/up_ext/WebSocketContextData.h +109 -0
  30. data/ext/up_ext/WebSocketData.h +86 -0
  31. data/ext/up_ext/WebSocketExtensions.h +256 -0
  32. data/ext/up_ext/WebSocketHandshake.h +145 -0
  33. data/ext/up_ext/WebSocketProtocol.h +506 -0
  34. data/ext/up_ext/bsd.c +767 -0
  35. data/ext/up_ext/bsd.h +109 -0
  36. data/ext/up_ext/context.c +524 -0
  37. data/ext/up_ext/epoll_kqueue.c +458 -0
  38. data/ext/up_ext/epoll_kqueue.h +67 -0
  39. data/ext/up_ext/extconf.rb +5 -0
  40. data/ext/up_ext/internal.h +224 -0
  41. data/ext/up_ext/libusockets.h +350 -0
  42. data/ext/up_ext/libuwebsockets.cpp +1344 -0
  43. data/ext/up_ext/libuwebsockets.h +396 -0
  44. data/ext/up_ext/loop.c +386 -0
  45. data/ext/up_ext/loop_data.h +38 -0
  46. data/ext/up_ext/socket.c +231 -0
  47. data/ext/up_ext/up_ext.c +930 -0
  48. data/lib/up/bun/rack_env.rb +1 -13
  49. data/lib/up/bun/server.rb +93 -19
  50. data/lib/up/cli.rb +3 -0
  51. data/lib/up/client.rb +68 -0
  52. data/lib/up/ruby/cluster.rb +39 -0
  53. data/lib/up/ruby/cluster_cli.rb +10 -0
  54. data/lib/up/{node → ruby}/rack_cluster.rb +5 -4
  55. data/lib/up/{node → ruby}/rack_server.rb +4 -4
  56. data/lib/up/ruby/server_cli.rb +10 -0
  57. data/lib/up/u_web_socket/cluster.rb +18 -3
  58. data/lib/up/u_web_socket/server.rb +108 -15
  59. data/lib/up/version.rb +1 -1
  60. metadata +72 -30
  61. data/.gitignore +0 -5
  62. data/Gemfile +0 -2
  63. data/bin/up_node +0 -12
  64. data/bin/up_node_cluster +0 -12
  65. data/example_rack_app/Gemfile +0 -3
  66. data/example_rack_app/config.ru +0 -6
  67. data/example_rack_app/rack_app.rb +0 -5
  68. data/example_roda_app/Gemfile +0 -6
  69. data/example_roda_app/config.ru +0 -6
  70. data/example_roda_app/roda_app.rb +0 -37
  71. data/example_sinatra_app/Gemfile +0 -6
  72. data/example_sinatra_app/config.ru +0 -6
  73. data/example_sinatra_app/sinatra_app.rb +0 -7
  74. data/lib/up/node/cluster.rb +0 -39
  75. data/lib/up/node/cluster_cli.rb +0 -15
  76. data/lib/up/node/rack_env.rb +0 -106
  77. data/lib/up/node/server.rb +0 -84
  78. data/lib/up/node/server_cli.rb +0 -15
  79. data/lib/up/u_web_socket/rack_env.rb +0 -101
  80. data/opal-up.gemspec +0 -27
  81. data/up_logo.svg +0 -256
data/opal-up.gemspec DELETED
@@ -1,27 +0,0 @@
1
- lib = File.expand_path('lib', __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require_relative 'lib/up/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'opal-up'
7
- spec.version = Up::VERSION
8
- spec.authors = ['Jan Biedermann']
9
- spec.email = ['jan@kursator.de']
10
-
11
- spec.summary = 'Rack server for Opal'
12
- spec.description = 'High performance Rack server for Opal Ruby'
13
- spec.homepage = ''
14
- spec.license = 'MIT'
15
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test_app|test|spec|features)/}) }
16
- spec.bindir = 'bin'
17
- spec.executables = %w[up up_bun up_cluster up_node up_node_cluster]
18
- spec.require_paths = %w[lib]
19
-
20
- spec.add_dependency 'logger', '~> 1.6.0'
21
- spec.add_dependency 'opal', '>= 1.8.2', '< 3.0.0'
22
- spec.add_dependency 'rack', '~> 3.0.9'
23
- spec.add_dependency 'rackup', '>= 0.2.2', '< 3.0.0'
24
-
25
- spec.add_development_dependency 'rake', '~> 13.1.0'
26
- spec.add_development_dependency 'rspec', '~> 3.12.0'
27
- end
data/up_logo.svg DELETED
@@ -1,256 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
-
4
- <svg
5
- version="1.1"
6
- id="Capa_1"
7
- x="0px"
8
- y="0px"
9
- viewBox="0 0 799.92104 945.28792"
10
- xml:space="preserve"
11
- width="799.92102"
12
- height="945.2879"
13
- xmlns="http://www.w3.org/2000/svg"
14
- xmlns:svg="http://www.w3.org/2000/svg"><defs
15
- id="defs65"><rect
16
- x="222.77943"
17
- y="327.29486"
18
- width="357.86758"
19
- height="243.77267"
20
- id="rect66" /><rect
21
- x="27.871536"
22
- y="730.54065"
23
- width="778.40509"
24
- height="77.992775"
25
- id="rect65" /></defs>
26
- <rect
27
- y="0"
28
- style="clip-rule:evenodd;fill:#a0dbfa;fill-rule:evenodd;stroke-width:1.08707"
29
- width="799.91998"
30
- height="945.2879"
31
- id="rect1"
32
- x="0.001" />
33
- <polygon
34
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
35
- points="658.991,136.939 654.959,136.939 654.959,377.684 646.655,377.684 646.655,136.939 642.378,136.939 650.684,125.153 "
36
- id="polygon1"
37
- transform="translate(0.001,145.36792)" />
38
- <path
39
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
40
- d="m 51.406,361.61492 -10.996,-15.601 -11.853,16.817 v -77.905 H 43.49 l -28.997,-41.142 -14.492,20.562 v 680.942 c 287.066,0 608.08,0 799.92,0 v -667.871 l -23.525,33.38 h 13.71 v 49.736 l -9.558,-13.56 -8.285,11.756 v -97.417 h 14.933 l -28.997,-41.143 -28.998,41.143 h 14.075 v 32.453 l -6.645,-9.426 -19.901,28.237 h 9.66 v 31.023 l -11.389,-16.159 -12.573,17.839 v -58.049 h 14.933 l -28.997,-41.143 -28.997,41.143 h 14.075 v 48.193 l -11.716,-16.623 -28.996,41.143 h 14.074 v 33.128 l -10.901,-15.468 -12.667,17.972 v -82.428 h 14.933 l -28.997,-41.143 -28.997,41.143 h 14.075 v 23.414 l -10.996,-15.601 -11.853,16.818 v -77.905 h 14.933 l -28.997,-41.143 -28.997,41.143 h 14.075 v 48.954 l -9.197,-13.05 -28.244,40.074 h 13.709 v 49.736 l -9.557,-13.56 -8.285,11.756 v -97.417 h 14.932 l -28.997,-41.142 -28.996,41.142 h 14.074 v 32.453 l -6.643,-9.426 -19.901,28.237 h 9.66 v 31.023 l -11.389,-16.159 -12.573,17.839 v -58.049 h 14.933 l -28.997,-41.142 -28.997,41.142 h 14.075 v 48.193 l -11.716,-16.623 -28.997,41.142 h 14.075 v 29.21 l -11.853,-16.817 -11.715,16.623 v -75.811 h 14.932 l -28.997,-41.142 -28.996,41.142 h 14.075 v 23.414 l -10.996,-15.601 -11.853,16.817 v -77.905 h 14.932 l -28.997,-41.143 -28.997,41.143 h 14.075 v 23.9 l -9.197,-13.05 -28.244,40.074 h 13.71 v 49.736 l -9.557,-13.56 -8.286,11.756 v -137.781 h 14.933 l -28.997,-41.142 -28.996,41.142 h 14.075 v 72.818 l -6.644,-9.426 -19.902,28.237 h 9.66 v 31.023 l -11.389,-16.159 -12.573,17.839 v -58.049 h 14.933 l -28.997,-41.142 -28.996,41.142 h 14.075 v 48.193 l -11.715,-16.623 -28.997,41.142 h 14.075 v 22.63 l -12.349,-17.521 -11.22,15.92 v -67.824 h 14.933 l -28.997,-41.142 -29.001,41.143 h 14.075 z"
41
- id="path1" />
42
- <polygon
43
- style="clip-rule:evenodd;fill:#0073a2;fill-rule:evenodd"
44
- points="154.962,396.856 130.926,396.856 130.926,784.116 81.428,784.116 81.428,396.856 55.928,396.856 105.445,326.598 "
45
- id="polygon2"
46
- transform="translate(0.001,145.36792)" />
47
- <polygon
48
- style="clip-rule:evenodd;fill:#f4b200;fill-rule:evenodd"
49
- points="114.003,487.786 89.967,487.786 89.967,784.116 40.468,784.116 40.468,487.786 14.968,487.786 64.485,417.528 "
50
- id="polygon3"
51
- transform="translate(0.001,145.36792)" />
52
- <polygon
53
- style="clip-rule:evenodd;fill:#e95818;fill-rule:evenodd"
54
- points="89.967,487.786 89.967,784.116 81.428,784.116 81.428,441.566 114.003,487.786 "
55
- id="polygon4"
56
- transform="translate(0.001,145.36792)" />
57
- <polygon
58
- style="clip-rule:evenodd;fill:#dd0031;fill-rule:evenodd"
59
- points="195.102,525.469 171.067,525.469 171.067,784.116 121.568,784.116 121.568,525.469 96.068,525.469 145.585,455.211 "
60
- id="polygon5"
61
- transform="translate(0.001,145.36792)" />
62
- <polygon
63
- style="clip-rule:evenodd;fill:#6f3969;fill-rule:evenodd"
64
- points="130.926,784.116 121.568,784.116 121.568,525.469 96.068,525.469 130.926,476.01 "
65
- id="polygon6"
66
- transform="translate(0.001,145.36792)" />
67
- <polygon
68
- style="clip-rule:evenodd;fill:#a1ba24;fill-rule:evenodd"
69
- points="236.166,307.834 212.13,307.834 212.13,784.116 162.631,784.116 162.631,307.834 137.132,307.834 186.649,237.576 "
70
- id="polygon7"
71
- transform="translate(0.001,145.36792)" />
72
- <polygon
73
- style="clip-rule:evenodd;fill:#bf5c2a;fill-rule:evenodd"
74
- points="171.067,525.469 171.067,784.116 162.631,784.116 162.631,479.396 195.102,525.469 "
75
- id="polygon8"
76
- transform="translate(0.001,145.36792)" />
77
- <polygon
78
- style="clip-rule:evenodd;fill:#801d88;fill-rule:evenodd"
79
- points="277.229,222.627 253.193,222.627 253.193,784.116 203.694,784.116 203.694,222.627 178.195,222.627 227.712,152.37 "
80
- id="polygon9"
81
- transform="translate(0.001,145.36792)" />
82
- <polygon
83
- style="clip-rule:evenodd;fill:#916c56;fill-rule:evenodd"
84
- points="212.13,307.834 212.13,784.116 203.694,784.116 203.694,261.761 236.166,307.834 "
85
- id="polygon10"
86
- transform="translate(0.001,145.36792)" />
87
- <polygon
88
- style="clip-rule:evenodd;fill:#ed6500;fill-rule:evenodd"
89
- points="319.225,360.012 295.189,360.012 295.189,784.116 245.69,784.116 245.69,360.012 220.19,360.012 269.707,289.754 "
90
- id="polygon11"
91
- transform="translate(0.001,145.36792)" />
92
- <polygon
93
- style="clip-rule:evenodd;fill:#b74144;fill-rule:evenodd"
94
- points="253.193,784.116 245.69,784.116 245.69,360.012 220.19,360.012 253.193,313.185 "
95
- id="polygon12"
96
- transform="translate(0.001,145.36792)" />
97
- <polygon
98
- style="clip-rule:evenodd;fill:#0073a2;fill-rule:evenodd"
99
- points="360.754,438.811 336.719,438.811 336.719,784.116 287.22,784.116 287.22,438.811 261.72,438.811 311.237,368.553 "
100
- id="polygon13"
101
- transform="translate(0.001,145.36792)" />
102
- <polygon
103
- style="clip-rule:evenodd;fill:#766c51;fill-rule:evenodd"
104
- points="287.22,784.116 287.22,438.811 261.72,438.811 295.189,391.323 295.189,784.116 "
105
- id="polygon14"
106
- transform="translate(0.001,145.36792)" />
107
- <polygon
108
- style="clip-rule:evenodd;fill:#f4b200;fill-rule:evenodd"
109
- points="402.284,289.731 378.248,289.731 378.248,784.116 328.749,784.116 328.749,289.731 303.249,289.731 352.767,219.473 "
110
- id="polygon15"
111
- transform="translate(0.001,145.36792)" />
112
- <polygon
113
- style="clip-rule:evenodd;fill:#7a9350;fill-rule:evenodd"
114
- points="336.719,438.811 336.719,784.116 328.749,784.116 328.749,393.4 360.754,438.811 "
115
- id="polygon16"
116
- transform="translate(0.001,145.36792)" />
117
- <polygon
118
- style="clip-rule:evenodd;fill:#c5007e;fill-rule:evenodd"
119
- points="443.813,385.568 419.777,385.568 419.777,784.116 370.278,784.116 370.278,385.568 344.779,385.568 394.296,315.311 "
120
- id="polygon17"
121
- transform="translate(0.001,145.36792)" />
122
- <polygon
123
- style="clip-rule:evenodd;fill:#dd593e;fill-rule:evenodd"
124
- points="378.248,784.116 370.278,784.116 370.278,385.568 344.779,385.568 378.248,338.08 "
125
- id="polygon18"
126
- transform="translate(0.001,145.36792)" />
127
- <polygon
128
- style="clip-rule:evenodd;fill:#801d88;fill-rule:evenodd"
129
- points="462.372,784.116 412.873,784.116 412.873,494.185 387.373,494.185 436.891,423.926 486.407,494.185 462.372,494.185 "
130
- id="polygon19"
131
- transform="translate(0.001,145.36792)" />
132
- <polygon
133
- style="clip-rule:evenodd;fill:#a30e83;fill-rule:evenodd"
134
- points="419.777,784.116 412.873,784.116 412.873,494.185 387.373,494.185 419.777,448.207 "
135
- id="polygon20"
136
- transform="translate(0.001,145.36792)" />
137
- <polygon
138
- style="clip-rule:evenodd;fill:#dd0031;fill-rule:evenodd"
139
- points="530.066,585.762 506.03,585.762 506.03,784.116 456.532,784.116 456.532,585.762 431.032,585.762 480.55,515.504 "
140
- id="polygon21"
141
- transform="translate(0.001,145.36792)" />
142
- <polygon
143
- style="clip-rule:evenodd;fill:#af0e5c;fill-rule:evenodd"
144
- points="456.532,784.116 456.532,585.762 431.032,585.762 462.372,541.295 462.372,784.116 "
145
- id="polygon22"
146
- transform="translate(0.001,145.36792)" />
147
- <polygon
148
- style="clip-rule:evenodd;fill:#ed6500;fill-rule:evenodd"
149
- points="572.661,424.968 548.625,424.968 548.625,784.116 499.126,784.116 499.126,424.968 473.627,424.968 523.144,354.71 "
150
- id="polygon23"
151
- transform="translate(0.001,145.36792)" />
152
- <polygon
153
- style="clip-rule:evenodd;fill:#e53218;fill-rule:evenodd"
154
- points="506.03,585.762 506.03,784.116 499.126,784.116 499.126,541.861 530.066,585.762 "
155
- id="polygon24"
156
- transform="translate(0.001,145.36792)" />
157
- <polygon
158
- style="clip-rule:evenodd;fill:#0073a2;fill-rule:evenodd"
159
- points="615.255,327.001 591.22,327.001 591.22,784.116 541.721,784.116 541.721,327.001 516.221,327.001 565.738,256.743 "
160
- id="polygon25"
161
- transform="translate(0.001,145.36792)" />
162
- <polygon
163
- style="clip-rule:evenodd;fill:#766c51;fill-rule:evenodd"
164
- points="548.625,424.968 548.625,784.116 541.721,784.116 541.721,381.068 572.661,424.968 "
165
- id="polygon26"
166
- transform="translate(0.001,145.36792)" />
167
- <polygon
168
- style="clip-rule:evenodd;fill:#f4b200;fill-rule:evenodd"
169
- points="657.85,472.887 633.813,472.887 633.813,784.116 584.315,784.116 584.315,472.887 558.815,472.887 608.332,402.629 "
170
- id="polygon27"
171
- transform="translate(0.001,145.36792)" />
172
- <polygon
173
- style="clip-rule:evenodd;fill:#7a9350;fill-rule:evenodd"
174
- points="584.315,784.116 584.315,472.887 558.815,472.887 591.22,426.909 591.22,784.116 "
175
- id="polygon28"
176
- transform="translate(0.001,145.36792)" />
177
- <polygon
178
- style="clip-rule:evenodd;fill:#801d88;fill-rule:evenodd"
179
- points="701.509,571.919 677.473,571.919 677.473,784.116 627.974,784.116 627.974,571.919 602.475,571.919 651.991,501.66 "
180
- id="polygon29"
181
- transform="translate(0.001,145.36792)" />
182
- <polygon
183
- style="clip-rule:evenodd;fill:#ba6744;fill-rule:evenodd"
184
- points="633.813,784.116 627.974,784.116 627.974,571.919 602.475,571.919 633.813,527.452 "
185
- id="polygon30"
186
- transform="translate(0.001,145.36792)" />
187
- <polygon
188
- style="clip-rule:evenodd;fill:#a1ba24;fill-rule:evenodd"
189
- points="744.102,399.412 720.067,399.412 720.067,784.116 670.568,784.116 670.568,399.412 645.068,399.412 694.586,329.153 "
190
- id="polygon31"
191
- transform="translate(0.001,145.36792)" />
192
- <polygon
193
- style="clip-rule:evenodd;fill:#916c56;fill-rule:evenodd"
194
- points="677.473,571.919 677.473,784.116 670.568,784.116 670.568,528.018 701.509,571.919 "
195
- id="polygon32"
196
- transform="translate(0.001,145.36792)" />
197
- <polygon
198
- style="clip-rule:evenodd;fill:#dd0031;fill-rule:evenodd"
199
- points="786.697,511.222 762.661,511.222 762.661,784.116 713.162,784.116 713.162,511.222 687.662,511.222 737.18,440.964 "
200
- id="polygon33"
201
- transform="translate(0.001,145.36792)" />
202
- <polygon
203
- style="clip-rule:evenodd;fill:#bf5c2a;fill-rule:evenodd"
204
- points="713.162,784.116 713.162,511.222 687.662,511.222 720.067,465.244 720.067,784.116 "
205
- id="polygon34"
206
- transform="translate(0.001,145.36792)" />
207
- <path
208
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
209
- d="m 140.554,690.37292 28.997,-41.143 28.997,41.143 h -14.075 v 64.45 l 10.996,-15.602 28.997,41.143 h -14.075 v 23.414 l 10.996,-15.602 11.852,16.817 v -77.905 h -14.932 l 28.997,-41.142 28.997,41.142 h -14.075 v 48.954 l 9.197,-13.05 28.245,40.075 h -13.71 v 49.735 l 9.557,-13.56 8.286,11.757 v -97.417 h -14.933 l 28.997,-41.142 28.997,41.142 h -14.075 v 32.453 l 6.644,-9.427 19.901,28.238 h -9.66 v 31.022 l 11.389,-16.159 12.573,17.839 v -58.049 h -14.933 l 28.997,-41.143 28.997,41.143 H 402.62 v 48.193 l 11.716,-16.623 21.46416,30.45686 5.31084,-6.92086 11.716,16.622 v -45.81 h -14.933 l 28.997,-41.142 28.997,41.142 h -14.075 v 23.414 l 10.996,-15.601 11.853,16.817 v -77.905 h -14.933 l 28.997,-41.143 28.997,41.143 h -14.075 v 23.899 l 9.198,-13.05 28.243,40.075 H 557.38 v 49.735 l 9.557,-13.56 8.286,11.757 v -137.78 H 560.29 l 28.997,-41.142 28.997,41.142 h -14.075 v 72.818 l 6.644,-9.427 19.901,28.238 h -9.66 v 31.022 l 11.39,-16.159 12.572,17.839 v -58.049 h -14.933 l 28.997,-41.143 28.997,41.143 h -14.075 v 48.193 l 11.716,-16.623 22.43456,30.47358 4.83644,-6.22158 11.22,15.92 v -45.824 h -14.932 l 28.997,-41.142 28.996,41.142 h -14.074 v 23.414 l 10.995,-15.601 11.852,16.817 v -77.905 l -11.98653,-0.65137 26.05053,-40.49163 9.773,13.867 v 208.42 H 0 v -195.348 l 28.244,40.074 h -13.71 v 49.735 l 9.557,-13.56 8.286,11.756 v -97.416 H 17.446 l 28.997,-41.143 28.997,41.143 H 61.365 v 32.452 l 6.644,-9.426 19.901,28.237 h -9.66 v 31.022 l 11.389,-16.159 12.573,17.839 v -58.049 H 87.279 l 28.997,-41.142 28.997,41.142 h -14.075 v 48.193 l 11.716,-16.622 12.573,17.839 v -113.481 z"
210
- id="path34" />
211
-
212
- <polygon
213
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
214
- points="73.967,118.991 69.935,118.991 69.935,359.736 61.631,359.736 61.631,118.991 57.354,118.991 65.66,107.205 "
215
- id="polygon60"
216
- transform="translate(0.001,145.36792)" />
217
- <polygon
218
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
219
- points="156.145,37.469 152.112,37.469 152.112,278.214 143.809,278.214 143.809,37.469 139.531,37.469 147.837,25.683 "
220
- id="polygon61"
221
- transform="translate(0.001,145.36792)" />
222
- <polygon
223
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
224
- points="653.848,606.583 649.815,606.583 649.815,756.577 641.512,756.577 641.512,606.583 637.234,606.583 645.541,594.797 "
225
- id="polygon62"
226
- transform="translate(0.001,145.36792)" />
227
- <polygon
228
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
229
- points="132.417,541.98 128.384,541.98 128.384,691.976 120.081,691.976 120.081,541.98 115.803,541.98 124.109,530.194 "
230
- id="polygon63"
231
- transform="translate(0.001,145.36792)" />
232
- <polygon
233
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
234
- points="752.289,592.739 748.256,592.739 748.256,742.734 739.953,742.734 739.953,592.739 735.675,592.739 743.981,580.953 "
235
- id="polygon64"
236
- transform="translate(0.001,145.36792)" />
237
- <polygon
238
- style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd"
239
- points="471.004,75.805 466.972,75.805 466.972,316.55 458.668,316.55 458.668,75.805 454.391,75.805 462.697,64.019 "
240
- id="polygon65"
241
- transform="translate(0.001,145.36792)" />
242
- <text
243
- xml:space="preserve"
244
- id="text65"
245
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:53.3333px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect65);fill:#000000"
246
- transform="translate(-11.999,133.36792)"><tspan
247
- x="27.871094"
248
- y="778.58122"
249
- id="tspan1">UNEXPECTED PROMPTITUDE</tspan></text><text
250
- xml:space="preserve"
251
- id="text66"
252
- style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:192px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect66);fill:#000000"
253
- transform="translate(20.13016,-317.87561)"><tspan
254
- x="222.7793"
255
- y="500.23977"
256
- id="tspan2">UP!</tspan></text></svg>