opal-up 0.0.2 → 0.0.4

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.
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>