rack 2.2.9 → 3.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rack might be problematic. Click here for more details.

Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +138 -101
  3. data/CONTRIBUTING.md +53 -47
  4. data/MIT-LICENSE +1 -1
  5. data/README.md +287 -0
  6. data/Rakefile +40 -7
  7. data/SPEC.rdoc +166 -125
  8. data/contrib/LICENSE.md +7 -0
  9. data/contrib/logo.webp +0 -0
  10. data/lib/rack/auth/abstract/handler.rb +3 -1
  11. data/lib/rack/auth/abstract/request.rb +3 -1
  12. data/lib/rack/auth/digest/md5.rb +1 -131
  13. data/lib/rack/auth/digest/nonce.rb +1 -54
  14. data/lib/rack/auth/digest/params.rb +1 -54
  15. data/lib/rack/auth/digest/request.rb +1 -43
  16. data/lib/rack/auth/digest.rb +256 -0
  17. data/lib/rack/body_proxy.rb +3 -1
  18. data/lib/rack/builder.rb +60 -42
  19. data/lib/rack/cascade.rb +2 -0
  20. data/lib/rack/chunked.rb +16 -13
  21. data/lib/rack/common_logger.rb +23 -18
  22. data/lib/rack/conditional_get.rb +18 -15
  23. data/lib/rack/constants.rb +62 -0
  24. data/lib/rack/content_length.rb +12 -16
  25. data/lib/rack/content_type.rb +8 -5
  26. data/lib/rack/deflater.rb +40 -26
  27. data/lib/rack/directory.rb +9 -3
  28. data/lib/rack/etag.rb +14 -23
  29. data/lib/rack/events.rb +4 -0
  30. data/lib/rack/file.rb +2 -0
  31. data/lib/rack/files.rb +15 -17
  32. data/lib/rack/head.rb +9 -8
  33. data/lib/rack/headers.rb +154 -0
  34. data/lib/rack/lint.rb +740 -649
  35. data/lib/rack/lock.rb +2 -5
  36. data/lib/rack/logger.rb +2 -0
  37. data/lib/rack/media_type.rb +4 -9
  38. data/lib/rack/method_override.rb +5 -1
  39. data/lib/rack/mime.rb +8 -0
  40. data/lib/rack/mock.rb +1 -271
  41. data/lib/rack/mock_request.rb +166 -0
  42. data/lib/rack/mock_response.rb +124 -0
  43. data/lib/rack/multipart/generator.rb +7 -5
  44. data/lib/rack/multipart/parser.rb +123 -85
  45. data/lib/rack/multipart/uploaded_file.rb +4 -0
  46. data/lib/rack/multipart.rb +20 -40
  47. data/lib/rack/null_logger.rb +9 -0
  48. data/lib/rack/query_parser.rb +76 -44
  49. data/lib/rack/recursive.rb +2 -0
  50. data/lib/rack/reloader.rb +0 -2
  51. data/lib/rack/request.rb +189 -91
  52. data/lib/rack/response.rb +131 -61
  53. data/lib/rack/rewindable_input.rb +24 -5
  54. data/lib/rack/runtime.rb +7 -6
  55. data/lib/rack/sendfile.rb +30 -25
  56. data/lib/rack/show_exceptions.rb +15 -2
  57. data/lib/rack/show_status.rb +17 -7
  58. data/lib/rack/static.rb +8 -8
  59. data/lib/rack/tempfile_reaper.rb +15 -4
  60. data/lib/rack/urlmap.rb +4 -2
  61. data/lib/rack/utils.rb +210 -199
  62. data/lib/rack/version.rb +9 -4
  63. data/lib/rack.rb +5 -76
  64. data/rack.gemspec +6 -6
  65. metadata +19 -31
  66. data/README.rdoc +0 -320
  67. data/bin/rackup +0 -5
  68. data/contrib/rack.png +0 -0
  69. data/contrib/rack.svg +0 -150
  70. data/contrib/rack_logo.svg +0 -164
  71. data/lib/rack/core_ext/regexp.rb +0 -14
  72. data/lib/rack/handler/cgi.rb +0 -59
  73. data/lib/rack/handler/fastcgi.rb +0 -100
  74. data/lib/rack/handler/lsws.rb +0 -61
  75. data/lib/rack/handler/scgi.rb +0 -71
  76. data/lib/rack/handler/thin.rb +0 -36
  77. data/lib/rack/handler/webrick.rb +0 -129
  78. data/lib/rack/handler.rb +0 -104
  79. data/lib/rack/lobster.rb +0 -70
  80. data/lib/rack/server.rb +0 -466
  81. data/lib/rack/session/abstract/id.rb +0 -523
  82. data/lib/rack/session/cookie.rb +0 -204
  83. data/lib/rack/session/memcache.rb +0 -10
  84. data/lib/rack/session/pool.rb +0 -85
data/contrib/rack.svg DELETED
@@ -1,150 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
-
4
- <svg
5
- xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
6
- xmlns:dc="http://purl.org/dc/elements/1.1/"
7
- xmlns:cc="http://creativecommons.org/ns#"
8
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
9
- xmlns:svg="http://www.w3.org/2000/svg"
10
- xmlns="http://www.w3.org/2000/svg"
11
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
- width="744.09448819"
14
- height="1052.3622047"
15
- id="svg2"
16
- version="1.1"
17
- inkscape:version="0.48.3.1 r9886"
18
- sodipodi:docname="rack.svg">
19
- <defs
20
- id="defs4">
21
- <linearGradient
22
- id="linearGradient3837"
23
- osb:paint="solid">
24
- <stop
25
- style="stop-color:#000000;stop-opacity:1;"
26
- offset="0"
27
- id="stop3839" />
28
- </linearGradient>
29
- </defs>
30
- <sodipodi:namedview
31
- id="base"
32
- pagecolor="#ffffff"
33
- bordercolor="#666666"
34
- borderopacity="1.0"
35
- inkscape:pageopacity="0.0"
36
- inkscape:pageshadow="2"
37
- inkscape:zoom="0.98994949"
38
- inkscape:cx="230.49849"
39
- inkscape:cy="656.46253"
40
- inkscape:document-units="px"
41
- inkscape:current-layer="layer1"
42
- showgrid="false"
43
- showguides="false"
44
- inkscape:guide-bbox="true"
45
- inkscape:window-width="1920"
46
- inkscape:window-height="1056"
47
- inkscape:window-x="1920"
48
- inkscape:window-y="24"
49
- inkscape:window-maximized="1">
50
- <sodipodi:guide
51
- orientation="1,0"
52
- position="645.99255,757.10933"
53
- id="guide2995" />
54
- <sodipodi:guide
55
- orientation="1,0"
56
- position="488.40876,686.90373"
57
- id="guide2997" />
58
- <sodipodi:guide
59
- orientation="1,0"
60
- position="176.7767,748.52304"
61
- id="guide2999" />
62
- <sodipodi:guide
63
- orientation="1,0"
64
- position="355.71429,782.85714"
65
- id="guide3005" />
66
- <sodipodi:guide
67
- orientation="0,1"
68
- position="527.14286,642.85714"
69
- id="guide3007" />
70
- <sodipodi:guide
71
- orientation="0,1"
72
- position="431.42857,507.85714"
73
- id="guide3009" />
74
- <sodipodi:guide
75
- orientation="0,1"
76
- position="488.40876,783.57143"
77
- id="guide3011" />
78
- <sodipodi:guide
79
- orientation="0,1"
80
- position="505,372.85714"
81
- id="guide3013" />
82
- </sodipodi:namedview>
83
- <metadata
84
- id="metadata7">
85
- <rdf:RDF>
86
- <cc:Work
87
- rdf:about="">
88
- <dc:format>image/svg+xml</dc:format>
89
- <dc:type
90
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
91
- <dc:title></dc:title>
92
- </cc:Work>
93
- </rdf:RDF>
94
- </metadata>
95
- <g
96
- inkscape:label="Layer 1"
97
- inkscape:groupmode="layer"
98
- id="layer1">
99
- <path
100
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
101
- d="m 176.28125,201.03125 0,0.625 0,395.125 0,0.375 0.34375,0.0937 312.34375,91.6875 0.625,0.1875 0,-0.65625 0.125,-419.09375 0,-0.40625 -0.40625,-0.0937 -312.4375,-67.71875 -0.59375,-0.125 z m 1,1.21875 311.4375,67.5 -0.125,418.0625 -311.3125,-91.375 0,-394.1875 z"
102
- id="path2985"
103
- inkscape:connector-curvature="0" />
104
- <path
105
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
106
- d="m 647.21875,206.59375 -0.6875,0.28125 -157.59375,62.21875 -0.3125,0.125 0,0.34375 0.1875,419.125 0,0.75 0.6875,-0.28125 156.0625,-63.1875 0.3125,-0.125 0,-0.34375 1.34375,-418.15625 0,-0.75 z m -1,1.4375 -1.34375,417.125 -155.0625,62.78125 -0.1875,-418.03125 156.59375,-61.875 z"
107
- id="path2993"
108
- inkscape:connector-curvature="0" />
109
- <path
110
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
111
- d="m 355.6875,137.40625 -0.15625,0.0625 L 176.96875,201.0625 177.3125,202 355.75,138.4375 646.78125,207.53125 647,206.5625 l -291.15625,-69.125 -0.15625,-0.0312 z"
112
- id="path3003"
113
- inkscape:connector-curvature="0" />
114
- <path
115
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
116
- d="m 355.71875,277.53125 -0.125,0.0312 -178.9375,47.96875 -1.8125,0.46875 1.8125,0.5 311.625,83.5 0.15625,0.0312 0.125,-0.0625 157.59375,-53.65625 1.5625,-0.53125 -1.59375,-0.4375 -290.28125,-77.78125 -0.125,-0.0312 z m 0,1.03125 L 644.3125,355.90625 488.375,409 178.71875,326 l 177,-47.4375 z"
117
- id="path3015"
118
- inkscape:connector-curvature="0" />
119
- <path
120
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
121
- d="m 355.21875,240.9375 0,37.125 1,0 0,-37.125 -1,0 z"
122
- id="path3017"
123
- inkscape:connector-curvature="0" />
124
- <path
125
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
126
- d="m 176.28125,202.65625 0,393.28125 1,0 0,-393.28125 -1,0 z"
127
- id="path3019"
128
- inkscape:connector-curvature="0" />
129
- <path
130
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
131
- d="m 355.71875,409 -0.125,0.0312 L 177,455.8125 l -1.78125,0.46875 1.78125,0.5 L 488.28125,545 l 0.15625,0.0312 0.125,-0.0625 156.71875,-56.25 1.46875,-0.53125 -1.53125,-0.40625 -289.375,-78.75 -0.125,-0.0312 z m 0,1.03125 287.6875,78.28125 L 488.375,544 179.03125,456.3125 355.71875,410.03125 z"
132
- id="path3021"
133
- inkscape:connector-curvature="0" />
134
- <path
135
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
136
- d="m 355.71875,544 -0.15625,0.0312 -178.5625,52.3125 0.28125,0.96875 178.4375,-52.28125 289.59375,80.25 0.28125,-0.96875 -289.75,-80.28125 -0.125,-0.0312 z"
137
- id="path3023"
138
- inkscape:connector-curvature="0" />
139
- <path
140
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
141
- d="m 355.21875,374.34375 0,35.15625 1,0 0,-35.15625 -1,0 z"
142
- id="path3025"
143
- inkscape:connector-curvature="0" />
144
- <path
145
- style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:10;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans;stroke-opacity:1;stroke-miterlimit:30;stroke-dasharray:none;stroke-linecap:round;stroke-linejoin:round"
146
- d="m 355.1875,507.03125 0,37.4375 1.03125,0 0,-37.4375 -1.03125,0 z"
147
- id="path3027"
148
- inkscape:connector-curvature="0" />
149
- </g>
150
- </svg>
@@ -1,164 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <svg
4
- xmlns:dc="http://purl.org/dc/elements/1.1/"
5
- xmlns:cc="http://web.resource.org/cc/"
6
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
- xmlns:svg="http://www.w3.org/2000/svg"
8
- xmlns:xlink="http://www.w3.org/1999/xlink"
9
- xmlns="http://www.w3.org/2000/svg"
10
- version="1.1"
11
- x="0px"
12
- y="0px"
13
- viewBox="-480 209.5 750 375"
14
- style="enable-background:new -480 209.5 750 375;"
15
- xml:space="preserve">
16
- <style type="text/css">
17
- .st0{display:none;}
18
- .st1{display:inline;}
19
- .st2{fill:none;stroke:#000000;stroke-width:11.4452;stroke-linejoin:round;}
20
- .st3{fill:none;stroke:#000000;stroke-width:11.6061;stroke-linejoin:round;}
21
- .st4{fill:none;stroke:#000000;stroke-width:7.7374;stroke-linejoin:round;}
22
- .st5{fill:none;stroke:#000000;stroke-width:7.7374;}
23
- .st6{stroke:#000000;stroke-width:5.8905;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:30;}
24
- </style>
25
- <g id="Logo_Text" inkscape:export-ydpi="360" inkscape:export-xdpi="360" inkscape:export-filename="/home/blackbird/Desktop/rack_logo_final.png" inkscape:version="0.44" sodipodi:version="0.32" sodipodi:docname="rack_logo.svg" sodipodi:docbase="/home/blackbird/Desktop" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
26
-
27
- <sodipodi:namedview width="200px" height="100px" inkscape:window-y="24" inkscape:window-x="0" inkscape:window-height="975" inkscape:window-width="1400" inkscape:current-layer="layer1" inkscape:document-units="px" inkscape:pageshadow="2" inkscape:pageopacity="0.0" inkscape:cy="67.007749" inkscape:cx="148.56163" inkscape:zoom="3.959798" objecttolerance="10" guidetolerance="10" gridtolerance="10000" borderopacity="1.0" bordercolor="#666666" pagecolor="#ffffff" id="base">
28
- </sodipodi:namedview>
29
- <path id="text2980" d="M-84.9,419.5v27.1c-2-0.7-4.2-1.1-6.8-1.1c-3,0-5.8,0.7-8.6,2.1c-2.7,1.4-4.9,3.1-6.5,5.3
30
- c-1.2,1.6-2,3.6-2.6,6c-0.4,1.5-0.6,3.6-0.6,6.2v23.5h-33.7v-68.5h31.5v15.3c2.8-5.9,5.8-10.2,9.2-12.6c3.4-2.5,7.6-3.8,12.5-3.8
31
- C-88.7,419.1-86.9,419.2-84.9,419.5 M-33.2,488.7V479c-5.3,7.8-13.2,11.7-23.7,11.7c-7.8,0-13.8-2-18.1-5.9
32
- c-4.3-3.9-6.5-8.9-6.5-14.9c0-4.4,1-8.3,3-11.6c2.1-3.4,5-6.1,8.7-8.1c2.4-1.3,5.7-2.4,10-3.3c4.4-0.9,9.5-1.3,15.5-1.3
33
- c2.7,0,6.2,0.1,10.4,0.3c-0.1-3.1-1.3-5.6-3.7-7.4c-2.4-1.9-6.4-2.8-12-2.8c-3.6,0-7.4,0.4-11.2,1.3c-2.8,0.7-7.1,2.2-12.7,4.5v-19
34
- c5.2-1.5,9.9-2.5,14.3-3.1c4.4-0.6,9.3-0.9,14.6-0.9c8.4,0,15.6,0.8,21.6,2.3c3,0.7,5.7,1.9,8.3,3.4c2.5,1.5,4.5,3.2,6,5.1
35
- c1.5,1.8,2.7,4.2,3.7,7c1,2.8,1.5,6.7,1.5,11.7v40.7H-33.2 M-33,458.2c-5.4,0-9.1,0.1-11.2,0.6c-2.1,0.4-3.8,1.3-5,2.8
36
- c-1.2,1.4-1.8,3-1.8,4.8c0,1.9,0.7,3.6,2.2,5c1.5,1.4,3.3,2.1,5.4,2.1c2.6,0,5-1.1,7.2-3.4c2.2-2.3,3.3-5.5,3.3-9.7
37
- C-32.9,459.8-32.9,459.1-33,458.2 M70.9,421.1v20.4c-5.8-2.4-10.8-3.5-14.9-3.5c-5,0-9,1.5-12,4.4c-3,2.9-4.5,6.7-4.5,11.4
38
- c0,5.3,1.5,9.4,4.5,12.5c3.1,3,7.2,4.6,12.5,4.6c4.3,0,9.3-1.4,15-4.1v20.5c-8.5,2.4-16.9,3.5-25.1,3.5c-6.8,0-13.2-1-19.1-3
39
- c-4.4-1.5-8.3-3.7-11.6-6.5c-3.2-2.9-5.7-6.1-7.5-9.6c-2.5-5-3.8-10.7-3.8-17.1c0-12.1,4.5-21.5,13.4-28.3
40
- c7.1-5.4,16.7-8.1,28.8-8.1C55.1,418.1,63.2,419.1,70.9,421.1 M116.1,447.5l19.3-27.4H173l-23.3,30.4l24.2,38.2h-39l-18.9-33.3
41
- v33.3H82.4v-99.1h33.7V447.5"/>
42
- <path id="text2985" d="M-142.2,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7
43
- c1.4-1.9,2.1-4.2,2.1-7.2c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4
44
- c-0.7,0.2-1.3,0.6-1.8,1c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4h-2.4V535.9 M-128.3,518.7
45
- c0,1-0.1,2-0.3,2.9c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7
46
- c-0.7-0.5-1.3-1.1-1.8-1.9c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6
47
- c0.5-0.8,1.1-1.4,1.8-1.9c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5
48
- C-128.4,516.7-128.3,517.6-128.3,518.7 M-122.7,518.7c0,1.3,0.2,2.6,0.5,3.8c0.4,1.2,0.9,2.2,1.7,3.2c0.7,0.9,1.7,1.6,2.8,2.2
49
- c1.2,0.5,2.5,0.8,4,0.8c1.5,0,2.9-0.3,4-0.8c1.2-0.5,2.1-1.3,2.9-2.2c0.7-0.9,1.3-2,1.6-3.2c0.4-1.2,0.6-2.4,0.6-3.7
50
- c0-1.3-0.2-2.6-0.6-3.7c-0.4-1.2-0.9-2.3-1.6-3.2c-0.7-0.9-1.7-1.6-2.9-2.2c-1.1-0.5-2.5-0.8-4-0.8c-1.5,0-2.9,0.3-4,0.8
51
- c-1.1,0.5-2.1,1.2-2.9,2.2c-0.7,0.9-1.3,2-1.7,3.2C-122.5,516.1-122.7,517.3-122.7,518.7 M-120.1,518.7c0-2.3,0.6-4.2,1.7-5.6
52
- c1.1-1.5,2.7-2.3,4.8-2.3c2,0,3.6,0.8,4.7,2.3c1.1,1.5,1.7,3.4,1.7,5.6c0,2.3-0.6,4.2-1.7,5.7c-1.1,1.5-2.7,2.2-4.7,2.2
53
- c-2,0-3.6-0.7-4.8-2.2C-119.5,522.8-120.1,520.9-120.1,518.7 M-74,509.2h-2.4l-5.4,16.4h-0.1l-5.2-16.4h-2.9l-5.4,16.4h-0.1
54
- l-5.1-16.4h-2.6l6.3,18.9h2.9l5.3-16.4h0.1l5.3,16.4h2.9L-74,509.2 M-58.3,525.1c-0.6,0.4-1.4,0.7-2.6,1c-1.1,0.3-2.1,0.4-2.9,0.4
55
- c-2,0-3.6-0.7-4.7-2c-1.1-1.4-1.7-3.1-1.7-5.2h13.3v-1.2c0-1.3-0.2-2.5-0.5-3.6c-0.3-1.1-0.8-2.1-1.4-3c-0.6-0.9-1.4-1.5-2.4-2
56
- c-1-0.5-2.1-0.7-3.5-0.7c-1.2,0-2.3,0.2-3.3,0.7c-1,0.5-1.9,1.1-2.6,2c-0.7,0.9-1.3,1.9-1.7,3.2c-0.4,1.2-0.6,2.5-0.6,4
57
- c0,1.5,0.2,2.8,0.5,4c0.3,1.2,0.8,2.2,1.5,3.1c0.7,0.9,1.6,1.6,2.7,2.1c1.1,0.5,2.5,0.7,4.1,0.7c0.9,0,1.9-0.1,2.9-0.3
58
- c1-0.2,1.9-0.4,2.7-0.7V525.1 M-70.2,517.3c0-0.8,0.1-1.6,0.4-2.3c0.3-0.8,0.7-1.5,1.1-2.2c0.5-0.6,1.1-1.1,1.8-1.5
59
- c0.7-0.4,1.5-0.6,2.4-0.6c0.9,0,1.6,0.2,2.3,0.6c0.6,0.3,1.1,0.8,1.5,1.4c0.4,0.6,0.7,1.3,0.9,2.1c0.2,0.8,0.3,1.6,0.3,2.4H-70.2
60
- M-52.6,528.1h2.4v-9.3c0-0.9,0.1-1.8,0.2-2.7c0.2-0.9,0.4-1.7,0.8-2.4c0.4-0.7,0.9-1.3,1.5-1.8c0.6-0.4,1.4-0.7,2.3-0.7
61
- c0.7,0,1.3,0.1,1.8,0.2V509c-0.2-0.1-0.5-0.1-0.8-0.1c-0.3,0-0.6-0.1-0.8-0.1c-1.1,0-2.1,0.4-3,1.1c-0.8,0.8-1.5,1.7-2,2.9h-0.1
62
- v-3.6h-2.4c0.1,0.6,0.1,1.2,0.1,1.7c0,0.5,0,1.3,0,2.5V528.1 M-41.9,527.7c1.5,0.6,3.3,0.9,5.5,0.9c0.8,0,1.6-0.1,2.4-0.3
63
- c0.8-0.2,1.5-0.5,2.2-0.9c0.7-0.4,1.2-1,1.6-1.7c0.4-0.7,0.6-1.5,0.6-2.5c0-0.8-0.2-1.6-0.5-2.2c-0.3-0.6-0.8-1.2-1.3-1.6
64
- c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.3-1.3-0.7-2.3-1.1c-1.3-0.6-2.3-1.1-2.9-1.5c-0.6-0.4-0.9-1-0.9-1.7c0-1.1,0.4-1.9,1.1-2.4
65
- c0.7-0.5,1.8-0.7,3.1-0.7c0.7,0,1.4,0.1,2.2,0.3c0.8,0.1,1.5,0.4,2.1,0.6l0.2-2c-0.8-0.3-1.6-0.5-2.6-0.6c-0.9-0.1-1.6-0.2-2.3-0.2
66
- c-0.8,0-1.6,0.1-2.4,0.3c-0.7,0.2-1.4,0.5-2,0.9c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.6-0.5,1.4-0.5,2.3c0,0.7,0.1,1.3,0.4,1.8
67
- c0.3,0.5,0.6,1,1.1,1.4c0.5,0.4,0.9,0.7,1.5,1c0.5,0.3,1.2,0.6,2.1,1c1.5,0.7,2.5,1.3,3.2,1.9c0.7,0.5,1.1,1.3,1.1,2.3
68
- c0,1-0.4,1.9-1.3,2.5c-0.8,0.6-1.9,0.9-3.1,0.9c-1.8,0-3.4-0.4-5.1-1.2L-41.9,527.7 M11.2,509.2H8.8l-5.4,16.4H3.3l-5.2-16.4h-2.9
69
- l-5.4,16.4h-0.1l-5.1-16.4H-18l6.3,18.9h2.9l5.3-16.4h0.1l5.3,16.4h2.9L11.2,509.2 M26.9,525.1c-0.6,0.4-1.4,0.7-2.6,1
70
- c-1.1,0.3-2.1,0.4-2.9,0.4c-2,0-3.6-0.7-4.7-2c-1.1-1.4-1.7-3.1-1.7-5.2h13.3v-1.2c0-1.3-0.2-2.5-0.5-3.6c-0.3-1.1-0.8-2.1-1.4-3
71
- c-0.6-0.9-1.4-1.5-2.4-2c-1-0.5-2.1-0.7-3.5-0.7c-1.2,0-2.3,0.2-3.3,0.7c-1,0.5-1.9,1.1-2.6,2c-0.7,0.9-1.3,1.9-1.7,3.2
72
- c-0.4,1.2-0.6,2.5-0.6,4c0,1.5,0.2,2.8,0.5,4c0.3,1.2,0.8,2.2,1.5,3.1c0.7,0.9,1.6,1.6,2.7,2.1c1.1,0.5,2.5,0.7,4.1,0.7
73
- c0.9,0,1.9-0.1,2.9-0.3c1-0.2,1.9-0.4,2.7-0.7V525.1 M15,517.3c0-0.8,0.1-1.6,0.4-2.3c0.3-0.8,0.7-1.5,1.1-2.2
74
- c0.5-0.6,1.1-1.1,1.8-1.5c0.7-0.4,1.5-0.6,2.4-0.6c0.9,0,1.6,0.2,2.3,0.6c0.6,0.3,1.1,0.8,1.5,1.4c0.4,0.6,0.7,1.3,0.9,2.1
75
- c0.2,0.8,0.3,1.6,0.3,2.4H15 M32.3,528.1h2.4v-3h0.1c1.2,2.3,3.3,3.4,6.1,3.4c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
76
- c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.3-1.3,0.6-1.8,1
77
- c-0.5,0.4-0.9,0.8-1.2,1.2c-0.3,0.4-0.5,0.7-0.6,1h-0.1v-12.1h-2.4V528.1 M46.2,518.7c0,1-0.1,2-0.3,2.9c-0.2,0.9-0.5,1.8-1,2.5
78
- c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9c-0.5-0.8-0.8-1.6-1-2.6
79
- c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.9,0.3-2.8c0.2-0.9,0.5-1.8,1-2.5c0.5-0.8,1.1-1.4,1.8-1.9c0.8-0.5,1.7-0.7,2.7-0.7
80
- c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C46.2,516.7,46.2,517.6,46.2,518.7 M74.9,528.1h2.4
81
- c-0.1-0.6-0.1-1.2-0.2-1.7c0-0.5,0-1.3,0-2.3v-8.3c0-2.5-0.5-4.3-1.6-5.4c-1.1-1.1-2.8-1.7-5.2-1.7c-0.8,0-1.8,0.1-2.9,0.4
82
- c-1.1,0.2-2,0.5-2.8,0.9v2.3c1.7-1,3.6-1.6,5.7-1.6c1.6,0,2.7,0.4,3.4,1.2c0.7,0.8,1,2,1,3.7v1h-0.5c-1.6,0-3.1,0.1-4.4,0.2
83
- c-1.3,0.1-2.5,0.4-3.7,0.8c-1.2,0.4-2.1,1.1-2.9,2c-0.7,0.9-1.1,2.1-1.1,3.6c0,0.5,0.1,1.1,0.2,1.7c0.2,0.6,0.5,1.2,1,1.7
84
- c0.5,0.5,1.1,1,2,1.4c0.9,0.4,1.9,0.6,3.2,0.6c1.3,0,2.5-0.3,3.7-0.9c1.2-0.6,2-1.5,2.5-2.6h0.1V528.1 M74.7,519.7
85
- c0,0.8-0.1,1.5-0.2,2.2c-0.1,0.7-0.3,1.4-0.7,2.1c-0.4,0.7-0.9,1.3-1.8,1.8c-0.8,0.5-1.8,0.7-3.2,0.7c-1.2,0-2.2-0.3-2.9-0.8
86
- c-0.7-0.6-1.1-1.4-1.1-2.6c0-1,0.3-1.8,0.8-2.4c0.5-0.6,1.2-1.1,2.1-1.4c0.9-0.3,1.8-0.5,2.9-0.6c1-0.1,2.1-0.1,3.4-0.1h0.7V519.7
87
- M82.2,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
88
- c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.2-1.3,0.6-1.8,1
89
- c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4h-2.4V535.9 M96.1,518.7c0,1-0.1,2-0.3,2.9
90
- c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9
91
- c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6c0.5-0.8,1.1-1.4,1.8-1.9
92
- c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C96,516.7,96.1,517.6,96.1,518.7
93
- M103,535.9h2.4v-11h0.1c0.6,1.2,1.4,2.2,2.4,2.8c1,0.6,2.2,0.9,3.7,0.9c2.6,0,4.5-0.9,5.9-2.7c1.4-1.9,2.1-4.2,2.1-7.2
94
- c0-3-0.6-5.4-1.9-7.1c-0.7-0.9-1.5-1.6-2.5-2c-1-0.5-2.2-0.7-3.6-0.7c-0.9,0-1.7,0.1-2.4,0.4c-0.7,0.2-1.3,0.6-1.8,1
95
- c-0.5,0.4-0.8,0.8-1.1,1.2c-0.3,0.4-0.5,0.8-0.8,1.2l-0.1,0.1h-0.1l0.2-3.4H103V535.9 M116.9,518.7c0,1-0.1,2-0.3,2.9
96
- c-0.2,0.9-0.5,1.8-1,2.5c-0.4,0.7-1,1.3-1.8,1.8c-0.7,0.4-1.7,0.7-2.7,0.7c-1,0-1.9-0.2-2.6-0.7c-0.7-0.5-1.3-1.1-1.8-1.9
97
- c-0.5-0.8-0.8-1.6-1-2.6c-0.2-0.9-0.3-1.9-0.3-2.8c0-0.9,0.1-1.8,0.3-2.7c0.2-0.9,0.6-1.8,1-2.6c0.5-0.8,1.1-1.4,1.8-1.9
98
- c0.8-0.5,1.7-0.7,2.7-0.7c1.1,0,2,0.2,2.7,0.7c0.8,0.4,1.4,1.1,1.8,1.8c0.5,0.7,0.8,1.6,1,2.5C116.8,516.7,116.9,517.6,116.9,518.7
99
- M124,528.1h2.4v-27.8H124V528.1 M132.3,528.1h2.4v-18.9h-2.4V528.1 M134.7,501h-2.4v3.1h2.4V501 M153.5,509.5
100
- c-0.6-0.2-1.3-0.4-2.1-0.5c-0.8-0.1-1.6-0.2-2.6-0.2c-1.4,0-2.7,0.2-3.9,0.7c-1.2,0.5-2.2,1.1-3.1,2c-0.8,0.9-1.5,1.9-1.9,3.2
101
- c-0.5,1.2-0.7,2.5-0.7,4c0,1.3,0.2,2.6,0.6,3.8c0.4,1.2,1,2.2,1.8,3.2c0.8,0.9,1.8,1.6,2.9,2.2c1.2,0.5,2.5,0.8,4,0.8
102
- c1,0,1.9,0,2.7-0.1c0.8-0.1,1.6-0.2,2.3-0.5l-0.2-2.2c-1.6,0.6-3,0.9-4.4,0.9c-1.1,0-2-0.2-2.9-0.6c-0.9-0.4-1.6-1-2.2-1.7
103
- c-0.6-0.7-1.1-1.6-1.4-2.5c-0.3-1-0.5-2-0.5-3.1c0-2.3,0.6-4.3,1.9-5.7c1.3-1.5,3.1-2.2,5.4-2.2c0.6,0,1.3,0.1,2,0.3
104
- c0.7,0.2,1.5,0.4,2.1,0.7L153.5,509.5 M168.5,528.1h2.4c-0.1-0.6-0.1-1.2-0.2-1.7c0-0.5,0-1.3,0-2.3v-8.3c0-2.5-0.5-4.3-1.6-5.4
105
- c-1.1-1.1-2.8-1.7-5.2-1.7c-0.8,0-1.8,0.1-2.9,0.4c-1.1,0.2-2,0.5-2.8,0.9v2.3c1.7-1,3.6-1.6,5.7-1.6c1.6,0,2.7,0.4,3.4,1.2
106
- c0.7,0.8,1,2,1,3.7v1h-0.5c-1.6,0-3.1,0.1-4.4,0.2c-1.3,0.1-2.5,0.4-3.7,0.8c-1.2,0.4-2.1,1.1-2.9,2c-0.7,0.9-1.1,2.1-1.1,3.6
107
- c0,0.5,0.1,1.1,0.2,1.7c0.2,0.6,0.5,1.2,1,1.7c0.5,0.5,1.1,1,2,1.4c0.9,0.4,1.9,0.6,3.2,0.6c1.3,0,2.5-0.3,3.7-0.9
108
- c1.2-0.6,2-1.5,2.5-2.6h0.1V528.1 M168.3,519.7c0,0.8-0.1,1.5-0.2,2.2c-0.1,0.7-0.3,1.4-0.7,2.1c-0.4,0.7-0.9,1.3-1.8,1.8
109
- c-0.8,0.5-1.8,0.7-3.2,0.7c-1.2,0-2.2-0.3-2.9-0.8c-0.7-0.6-1.1-1.4-1.1-2.6c0-1,0.3-1.8,0.8-2.4c0.5-0.6,1.2-1.1,2.1-1.4
110
- c0.9-0.3,1.8-0.5,2.9-0.6c1-0.1,2.1-0.1,3.4-0.1h0.7V519.7 M184.4,509.2H180v-5.4l-2.4,0.8v4.6h-3.8v2h3.8v11c0,1.1,0,1.9,0.1,2.6
111
- c0.1,0.7,0.3,1.3,0.5,1.9c0.3,0.5,0.7,1,1.3,1.3c0.6,0.3,1.4,0.5,2.4,0.5c0.5,0,1.1-0.1,1.6-0.2c0.6-0.1,1-0.2,1.3-0.3l-0.2-1.9
112
- c-0.4,0.1-0.8,0.3-1.1,0.3c-0.3,0.1-0.7,0.1-1.1,0.1c-0.9,0-1.6-0.3-2-0.9c-0.4-0.6-0.6-1.3-0.6-2.3v-12.2h4.4V509.2 M188.5,528.1
113
- h2.4v-18.9h-2.4V528.1 M190.9,501h-2.4v3.1h2.4V501 M195.3,518.7c0,1.3,0.2,2.6,0.5,3.8c0.4,1.2,0.9,2.2,1.7,3.2
114
- c0.7,0.9,1.7,1.6,2.8,2.2c1.2,0.5,2.5,0.8,4,0.8c1.5,0,2.9-0.3,4-0.8c1.2-0.5,2.1-1.3,2.9-2.2c0.7-0.9,1.3-2,1.6-3.2
115
- c0.4-1.2,0.6-2.4,0.6-3.7s-0.2-2.6-0.6-3.7c-0.4-1.2-0.9-2.3-1.6-3.2c-0.7-0.9-1.7-1.6-2.9-2.2c-1.1-0.5-2.5-0.8-4-0.8
116
- c-1.5,0-2.9,0.3-4,0.8c-1.1,0.5-2.1,1.2-2.9,2.2c-0.7,0.9-1.3,2-1.7,3.2C195.5,516.1,195.3,517.3,195.3,518.7 M198,518.7
117
- c0-2.3,0.6-4.2,1.7-5.6c1.1-1.5,2.7-2.3,4.8-2.3c2,0,3.6,0.8,4.7,2.3c1.1,1.5,1.7,3.4,1.7,5.6c0,2.3-0.6,4.2-1.7,5.7
118
- c-1.1,1.5-2.7,2.2-4.7,2.2c-2,0-3.6-0.7-4.8-2.2C198.5,522.8,198,520.9,198,518.7 M217.6,528.1h2.4v-10.5c0-0.8,0.1-1.7,0.3-2.4
119
- c0.2-0.8,0.5-1.6,1-2.2c0.5-0.7,1.1-1.2,1.8-1.6c0.8-0.4,1.7-0.6,2.7-0.6c1.6,0,2.8,0.5,3.5,1.5c0.7,1,1.1,2.5,1.1,4.3v11.5h2.4
120
- V516c0-2.2-0.5-4-1.6-5.3c-1.1-1.3-2.7-2-5-2c-0.9,0-1.8,0.1-2.5,0.3c-0.7,0.2-1.3,0.5-1.8,0.9c-0.5,0.4-0.8,0.8-1.1,1.2
121
- c-0.3,0.4-0.6,0.9-0.8,1.4h-0.1v-3.4h-2.3c0.1,1,0.2,2.5,0.2,4.4V528.1 M236.8,527.7c1.5,0.6,3.3,0.9,5.5,0.9
122
- c0.8,0,1.6-0.1,2.4-0.3c0.8-0.2,1.5-0.5,2.2-0.9c0.7-0.4,1.2-1,1.6-1.7c0.4-0.7,0.6-1.5,0.6-2.5c0-0.8-0.2-1.6-0.5-2.2
123
- c-0.3-0.6-0.8-1.2-1.3-1.6c-0.5-0.5-1.1-0.9-1.7-1.1c-0.6-0.3-1.3-0.7-2.3-1.1c-1.3-0.6-2.3-1.1-2.9-1.5s-0.9-1-0.9-1.7
124
- c0-1.1,0.4-1.9,1.1-2.4c0.7-0.5,1.8-0.7,3.1-0.7c0.7,0,1.4,0.1,2.2,0.3c0.8,0.1,1.5,0.4,2.1,0.6l0.2-2c-0.8-0.3-1.6-0.5-2.6-0.6
125
- c-0.9-0.1-1.6-0.2-2.3-0.2c-0.8,0-1.6,0.1-2.4,0.3c-0.7,0.2-1.4,0.5-2,0.9c-0.6,0.4-1.1,1-1.4,1.6c-0.3,0.6-0.5,1.4-0.5,2.3
126
- c0,0.7,0.1,1.3,0.4,1.8c0.3,0.5,0.6,1,1.1,1.4c0.5,0.4,0.9,0.7,1.5,1c0.5,0.3,1.2,0.6,2.1,1c1.5,0.7,2.5,1.3,3.2,1.9
127
- c0.7,0.5,1.1,1.3,1.1,2.3c0,1-0.4,1.9-1.3,2.5c-0.8,0.6-1.9,0.9-3.1,0.9c-1.8,0-3.4-0.4-5.1-1.2L236.8,527.7"/>
128
- </g>
129
- <g id="Old_Logo" class="st0">
130
- <g class="st1">
131
- <path id="path2990_1_" class="st2" d="M-434.2,530l1.4-261.6l173.6,30.1l-1.5,258.2L-434.2,530z"/>
132
- <path id="path3877_1_" class="st3" d="M-432,267.9l91.6-30.5l157.1,31.9l-80,26.3L-432,267.9z"/>
133
- <path id="path3879_1_" sodipodi:nodetypes="ccccc" class="st3" d="M-259.8,556.5l75.4-26.6l1.1-260l-74.5,26.7L-259.8,556.5z"/>
134
- <path id="path3881_1_" sodipodi:nodetypes="ccccc" class="st4" d="M-428.7,343.6l87.4-25l153.7,30.6l-70.8,25L-428.7,343.6z"/>
135
- <path id="path3883_1_" sodipodi:nodetypes="ccccc" class="st4" d="M-429.4,448.2l87.4-25l157,25l-75.5,27.2L-429.4,448.2z"/>
136
- <path id="path3887_1_" class="st5" d="M-430.7,528.4l82.4-26.4l161.3,24.5"/>
137
- <path id="path3889_1_" class="st5" d="M-349.3,500l1.1-36.7"/>
138
- <path id="path3891_1_" class="st5" d="M-344.3,421.7l1.5-61.6"/>
139
- <path id="path3893_1_" sodipodi:nodetypes="cc" class="st5" d="M-341.9,317.1l0.3-32"/>
140
- </g>
141
- </g>
142
- <g id="New_Logo">
143
- <g id="layer1_1_" inkscape:groupmode="layer" inkscape:label="Layer 1">
144
- <path id="path2985" inkscape:connector-curvature="0" class="st6" d="M-450.2,275v0.4v232.7v0.2l0.2,0.1l184,54l0.4,0.1v-0.4
145
- l0.1-246.9v-0.2l-0.2-0.1l-184-39.9L-450.2,275z M-449.6,275.8l183.5,39.8l-0.1,246.3L-449.6,508V275.8z"/>
146
- <path id="path2993" inkscape:connector-curvature="0" class="st6" d="M-172.7,278.3l-0.4,0.2l-92.8,36.6l-0.2,0.1v0.2l0.1,246.9
147
- v0.4l0.4-0.2l91.9-37.2l0.2-0.1v-0.2l0.8-246.3V278.3z M-173.3,279.2l-0.8,245.7l-91.3,37l-0.1-246.2L-173.3,279.2z"/>
148
- <path id="path3003" inkscape:connector-curvature="0" class="st6" d="M-344.5,237.6L-344.5,237.6l-105.3,37.5l0.2,0.6l105.1-37.4
149
- l171.4,40.7l0.1-0.6L-344.5,237.6L-344.5,237.6L-344.5,237.6z"/>
150
- <path id="path3015" inkscape:connector-curvature="0" class="st6" d="M-344.5,320.1L-344.5,320.1l-105.5,28.3l-1.1,0.3l1.1,0.3
151
- l183.6,49.2l0.1,0l0.1,0l92.8-31.6l0.9-0.3l-0.9-0.3L-344.5,320.1L-344.5,320.1L-344.5,320.1z M-344.5,320.7l170,45.6l-91.9,31.3
152
- l-182.4-48.9L-344.5,320.7z"/>
153
- <path id="path3017" inkscape:connector-curvature="0" class="st6" d="M-344.8,298.5v21.9h0.6v-21.9H-344.8z"/>
154
- <path id="path3019" inkscape:connector-curvature="0" class="st6" d="M-450.2,276v231.7h0.6V276H-450.2z"/>
155
- <path id="path3021" inkscape:connector-curvature="0" class="st6" d="M-344.5,397.5L-344.5,397.5l-105.3,27.6l-1,0.3l1,0.3
156
- l183.4,52l0.1,0l0.1,0l92.3-33.1l0.9-0.3l-0.9-0.2L-344.5,397.5L-344.5,397.5z M-344.5,398.1l169.5,46.1l-91.3,32.8l-182.2-51.7
157
- L-344.5,398.1z"/>
158
- <path id="path3023" inkscape:connector-curvature="0" class="st6" d="M-344.5,477.1L-344.5,477.1l-105.3,30.8l0.2,0.6l105.1-30.8
159
- l170.6,47.3l0.2-0.6L-344.5,477.1L-344.5,477.1z"/>
160
- <path id="path3025" inkscape:connector-curvature="0" class="st6" d="M-344.8,377.1v20.7h0.6v-20.7H-344.8z"/>
161
- <path id="path3027" inkscape:connector-curvature="0" class="st6" d="M-344.8,455.3v22.1h0.6v-22.1H-344.8z"/>
162
- </g>
163
- </g>
164
- </svg>
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Regexp has `match?` since Ruby 2.4
4
- # so to support Ruby < 2.4 we need to define this method
5
-
6
- module Rack
7
- module RegexpExtensions
8
- refine Regexp do
9
- def match?(string, pos = 0)
10
- !!match(string, pos)
11
- end
12
- end unless //.respond_to?(:match?)
13
- end
14
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Rack
4
- module Handler
5
- class CGI
6
- def self.run(app, **options)
7
- $stdin.binmode
8
- serve app
9
- end
10
-
11
- def self.serve(app)
12
- env = ENV.to_hash
13
- env.delete "HTTP_CONTENT_LENGTH"
14
-
15
- env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
16
-
17
- env.update(
18
- RACK_VERSION => Rack::VERSION,
19
- RACK_INPUT => Rack::RewindableInput.new($stdin),
20
- RACK_ERRORS => $stderr,
21
- RACK_MULTITHREAD => false,
22
- RACK_MULTIPROCESS => true,
23
- RACK_RUNONCE => true,
24
- RACK_URL_SCHEME => ["yes", "on", "1"].include?(ENV[HTTPS]) ? "https" : "http"
25
- )
26
-
27
- env[QUERY_STRING] ||= ""
28
- env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
29
- env[REQUEST_PATH] ||= "/"
30
-
31
- status, headers, body = app.call(env)
32
- begin
33
- send_headers status, headers
34
- send_body body
35
- ensure
36
- body.close if body.respond_to? :close
37
- end
38
- end
39
-
40
- def self.send_headers(status, headers)
41
- $stdout.print "Status: #{status}\r\n"
42
- headers.each { |k, vs|
43
- vs.split("\n").each { |v|
44
- $stdout.print "#{k}: #{v}\r\n"
45
- }
46
- }
47
- $stdout.print "\r\n"
48
- $stdout.flush
49
- end
50
-
51
- def self.send_body(body)
52
- body.each { |part|
53
- $stdout.print part
54
- $stdout.flush
55
- }
56
- end
57
- end
58
- end
59
- end
@@ -1,100 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'fcgi'
4
- require 'socket'
5
-
6
- if defined? FCGI::Stream
7
- class FCGI::Stream
8
- alias _rack_read_without_buffer read
9
-
10
- def read(n, buffer = nil)
11
- buf = _rack_read_without_buffer n
12
- buffer.replace(buf.to_s) if buffer
13
- buf
14
- end
15
- end
16
- end
17
-
18
- module Rack
19
- module Handler
20
- class FastCGI
21
- def self.run(app, **options)
22
- if options[:File]
23
- STDIN.reopen(UNIXServer.new(options[:File]))
24
- elsif options[:Port]
25
- STDIN.reopen(TCPServer.new(options[:Host], options[:Port]))
26
- end
27
- FCGI.each { |request|
28
- serve request, app
29
- }
30
- end
31
-
32
- def self.valid_options
33
- environment = ENV['RACK_ENV'] || 'development'
34
- default_host = environment == 'development' ? 'localhost' : '0.0.0.0'
35
-
36
- {
37
- "Host=HOST" => "Hostname to listen on (default: #{default_host})",
38
- "Port=PORT" => "Port to listen on (default: 8080)",
39
- "File=PATH" => "Creates a Domain socket at PATH instead of a TCP socket. Ignores Host and Port if set.",
40
- }
41
- end
42
-
43
- def self.serve(request, app)
44
- env = request.env
45
- env.delete "HTTP_CONTENT_LENGTH"
46
-
47
- env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
48
-
49
- rack_input = RewindableInput.new(request.in)
50
-
51
- env.update(
52
- RACK_VERSION => Rack::VERSION,
53
- RACK_INPUT => rack_input,
54
- RACK_ERRORS => request.err,
55
- RACK_MULTITHREAD => false,
56
- RACK_MULTIPROCESS => true,
57
- RACK_RUNONCE => false,
58
- RACK_URL_SCHEME => ["yes", "on", "1"].include?(env[HTTPS]) ? "https" : "http"
59
- )
60
-
61
- env[QUERY_STRING] ||= ""
62
- env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
63
- env[REQUEST_PATH] ||= "/"
64
- env.delete "CONTENT_TYPE" if env["CONTENT_TYPE"] == ""
65
- env.delete "CONTENT_LENGTH" if env["CONTENT_LENGTH"] == ""
66
-
67
- begin
68
- status, headers, body = app.call(env)
69
- begin
70
- send_headers request.out, status, headers
71
- send_body request.out, body
72
- ensure
73
- body.close if body.respond_to? :close
74
- end
75
- ensure
76
- rack_input.close
77
- request.finish
78
- end
79
- end
80
-
81
- def self.send_headers(out, status, headers)
82
- out.print "Status: #{status}\r\n"
83
- headers.each { |k, vs|
84
- vs.split("\n").each { |v|
85
- out.print "#{k}: #{v}\r\n"
86
- }
87
- }
88
- out.print "\r\n"
89
- out.flush
90
- end
91
-
92
- def self.send_body(out, body)
93
- body.each { |part|
94
- out.print part
95
- out.flush
96
- }
97
- end
98
- end
99
- end
100
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'lsapi'
4
-
5
- module Rack
6
- module Handler
7
- class LSWS
8
- def self.run(app, **options)
9
- while LSAPI.accept != nil
10
- serve app
11
- end
12
- end
13
- def self.serve(app)
14
- env = ENV.to_hash
15
- env.delete "HTTP_CONTENT_LENGTH"
16
- env[SCRIPT_NAME] = "" if env[SCRIPT_NAME] == "/"
17
-
18
- rack_input = RewindableInput.new($stdin.read.to_s)
19
-
20
- env.update(
21
- RACK_VERSION => Rack::VERSION,
22
- RACK_INPUT => rack_input,
23
- RACK_ERRORS => $stderr,
24
- RACK_MULTITHREAD => false,
25
- RACK_MULTIPROCESS => true,
26
- RACK_RUNONCE => false,
27
- RACK_URL_SCHEME => ["yes", "on", "1"].include?(ENV[HTTPS]) ? "https" : "http"
28
- )
29
-
30
- env[QUERY_STRING] ||= ""
31
- env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
32
- env[REQUEST_PATH] ||= "/"
33
- status, headers, body = app.call(env)
34
- begin
35
- send_headers status, headers
36
- send_body body
37
- ensure
38
- body.close if body.respond_to? :close
39
- end
40
- ensure
41
- rack_input.close
42
- end
43
- def self.send_headers(status, headers)
44
- print "Status: #{status}\r\n"
45
- headers.each { |k, vs|
46
- vs.split("\n").each { |v|
47
- print "#{k}: #{v}\r\n"
48
- }
49
- }
50
- print "\r\n"
51
- STDOUT.flush
52
- end
53
- def self.send_body(body)
54
- body.each { |part|
55
- print part
56
- STDOUT.flush
57
- }
58
- end
59
- end
60
- end
61
- end
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'scgi'
4
- require 'stringio'
5
-
6
- module Rack
7
- module Handler
8
- class SCGI < ::SCGI::Processor
9
- attr_accessor :app
10
-
11
- def self.run(app, **options)
12
- options[:Socket] = UNIXServer.new(options[:File]) if options[:File]
13
- new(options.merge(app: app,
14
- host: options[:Host],
15
- port: options[:Port],
16
- socket: options[:Socket])).listen
17
- end
18
-
19
- def self.valid_options
20
- environment = ENV['RACK_ENV'] || 'development'
21
- default_host = environment == 'development' ? 'localhost' : '0.0.0.0'
22
-
23
- {
24
- "Host=HOST" => "Hostname to listen on (default: #{default_host})",
25
- "Port=PORT" => "Port to listen on (default: 8080)",
26
- }
27
- end
28
-
29
- def initialize(settings = {})
30
- @app = settings[:app]
31
- super(settings)
32
- end
33
-
34
- def process_request(request, input_body, socket)
35
- env = Hash[request]
36
- env.delete "HTTP_CONTENT_TYPE"
37
- env.delete "HTTP_CONTENT_LENGTH"
38
- env[REQUEST_PATH], env[QUERY_STRING] = env["REQUEST_URI"].split('?', 2)
39
- env[HTTP_VERSION] ||= env[SERVER_PROTOCOL]
40
- env[PATH_INFO] = env[REQUEST_PATH]
41
- env[QUERY_STRING] ||= ""
42
- env[SCRIPT_NAME] = ""
43
-
44
- rack_input = StringIO.new(input_body)
45
- rack_input.set_encoding(Encoding::BINARY)
46
-
47
- env.update(
48
- RACK_VERSION => Rack::VERSION,
49
- RACK_INPUT => rack_input,
50
- RACK_ERRORS => $stderr,
51
- RACK_MULTITHREAD => true,
52
- RACK_MULTIPROCESS => true,
53
- RACK_RUNONCE => false,
54
- RACK_URL_SCHEME => ["yes", "on", "1"].include?(env[HTTPS]) ? "https" : "http"
55
- )
56
-
57
- status, headers, body = app.call(env)
58
- begin
59
- socket.write("Status: #{status}\r\n")
60
- headers.each do |k, vs|
61
- vs.split("\n").each { |v| socket.write("#{k}: #{v}\r\n")}
62
- end
63
- socket.write("\r\n")
64
- body.each {|s| socket.write(s)}
65
- ensure
66
- body.close if body.respond_to? :close
67
- end
68
- end
69
- end
70
- end
71
- end